Homepage rewrite, contributor recruitment page, character page contribution prompts, and traits feature removal
Homepage hero rewrite - the homepage lead paragraph is replaced with "No spoilers beyond this point." as a dominant headline, larger than the OpenFiction brand mark. The OpenFiction brand block is unchanged; the page now leads with the product promise rather than the name. Supporting copy: "Set your reading progress and we'll filter everything to match - no accidental reveals, no surprises, no ruined moments." Sign-in nudge updated to "Free to explore. Sign in to save your progress and keep your filters across every visit."
Homepage contributor ribbon - a new teal ribbon between the hero and Recently Added strip. Auth-aware copy:
- Logged out: "Think you know <Series A> inside out? <Series B> back to front? Help build the resource you wish you'd had. Join as a contributor →" links to /contribute.
- Logged in: "Ready to contribute? Find pages that need your help. Browse incomplete pages →" links to /characters.
Series names are pulled from the two most recently updated series, with a curated shortlist fallback that rotates daily by day-of-year (Mistborn Era 1, The Stormlight Archive, The Wheel of Time, and seven others).
New /contribute recruitment page - dedicated landing page for contributor sign-up, replacing the direct-to-register behaviour of the homepage ribbon. Full-width atmospheric hero (reuses the homepage hero background rotation) with the same dynamic series names as the ribbon. Four-panel grid explains what contributors can add (character appearances, life events, physical attributes, relationships and more). Additional sections cover how the review workflow works and the path from contributor to curator. Teal CTA band at the bottom links to /register with a secondary sign-in link. Footer "Contribute" link now points to /contribute instead of the support article.
Character page completion indicator visible to all visitors - previously only logged-in contributors could see the "X/6 complete" indicator on character pages. Now visible to everyone (still hidden when spoiler filtering is active to avoid misleading counts). Tabs remain individually clickable and scroll to the corresponding section.
Character page contribution prompts - new prompts below the completion indicator:
- Logged out + incomplete page: "This page is incomplete. Think you know <Character>? Sign up to help fill it in."
- Any visitor + complete (6/6) page: "Something missing or incorrect? Report an issue." - clicking opens the existing feedback dialog (logged-in) or routes through sign-in first (logged-out).
Empty section sign-up CTAs - for logged-out visitors, empty character sections (physical attributes, abilities, occupations, relationships, groups, story arc) now show "No <section name> recorded yet. Know <character>? Sign up to be the first to add them." Previously these sections rendered nothing at all for logged-out visitors. The description section shows a similar CTA when empty.
Report dialog hash deep-link - the EntityFeedbackBar now auto-opens on page load when the URL hash is #report. Enables deep-linking into the report flow from prompts elsewhere on the page, and survives the /login?redirect=…#report round-trip for logged-out visitors.
Reddit social posts use full notes - the "This Day" admin social generator no longer truncates Reddit post bodies to 500 characters; the full life event notes are included with entity-link markup stripped to plain text. The horizontal rule before the footer link was removed.
Book empty state link - the "No appearances yet" notice on book detail pages now includes a "Learn how" link to the adding-appearances support guide alongside the existing "character's page" link.
Homepage container width - the hero container widened from max-w-2xl to max-w-6xl to let the new "No spoilers beyond this point." headline sit without awkward wrapping on mid-size viewports.
Traits and motivations feature removal - the character_traits table and all associated code has been fully removed. The feature was deprecated earlier when traits and motivations were taken out of the public character detail and curator UI, but the database table, API endpoints, Zod schemas, form drawers, entity dot/icon entries, lookup category, and test scaffolding remained. This pass completes the removal: dropped the character_traits table (migration 0059_chunky_cyclops.sql), deleted all trait-related components (character-traits.tsx, editable-character-traits.tsx, trait-form-drawer.tsx), API routes (/api/curator/traits/*, /api/curator/characters/[id]/traits/*), schemas, type exports, the trait_type lookup category, and every reference across queries, helpers, cleanup jobs, restore logic, audit entity types, entity dot/icon maps, contribution review flows, and documentation.