Changelog

What shipped, and when.

Short, blunt notes. Anti-features stay on purpose; everything else is a delta.

  1. v0.3.92026-05-12

    Twitter env detection + dev probe

    • Trim TWITTER_* values; single isTwitterOAuthConfigured() helper for Sources / X start / token calls.
    • GET /api/integrations/x/debug-env (development only) returns whether the process sees Twitter credentials — no secrets.
  2. v0.3.82026-05-12

    Email URLs, weight slider, X copy

    • Sign-up / magic-link emailRedirectTo uses NEXT_PUBLIC_SITE_URL when set so confirmation links match one dev port.
    • Intent graph weight: controlled client slider updates the label while dragging.
    • Sources: clarify X keys are operator-only; users never paste client id/secret.
  3. v0.3.72026-05-12

    Sign-in: fix NEXT_REDIRECT shown as error

    • Server actions used try/catch around redirect(); Next throws NEXT_REDIRECT — rethrow with isRedirectError so success redirects work.
  4. v0.3.62026-05-10

    Local dev fixes — site origin + watchers

    • Dev: OAuth callback + magic-link URLs use request host/port (trusted localhost only); production still uses NEXT_PUBLIC_SITE_URL.
    • Sign-up / sign-in / OTP: clearer message when Supabase is unreachable (fetch failed).
    • npm run dev:poll + WATCHPACK_POLLING webpack option to reduce EMFILE; docs updated.
  5. v0.3.52026-05-10

    Playtest hygiene

    • `npm run dev:clean` — delete `.next` then start dev (fixes ChunkLoadError / bogus 404s after stale builds).
    • Run only one `next dev` for this repo: multiple ports sharing one `.next` folder corrupt chunks.
    • Middleware: preserved query string when redirecting unauthenticated users to sign-in (e.g. X OAuth `?next=`).
  6. v0.3.42026-05-10

    Sync errors + sign-in redirect safety

    • Bookmark sync failures set SourceConnection syncState to error (visible on Sources) until the next successful sync.
    • Sign-in `next` parameter restricted to same-origin paths to avoid open redirects.
    • docs/integrations/x.md: credits note, verification checklist, OAuth next= allowlist.
  7. v0.3.32026-05-10

    X integration — onboarding + robustness

    • Ensure a Twitter SourceConnection row exists before Sources / OAuth / sync (no more missing-row callback errors).
    • OAuth return path: `/api/integrations/x/start?next=/onboarding/finish` returns to step 4 after connect; allowlist is `/sources` and `/onboarding/finish`.
    • Onboarding finish step: same Connect / Sync / Disconnect controls as Sources.
  8. v0.3.22026-05-10

    Supabase DB + docs

    • Unique index on (userId, url) for CandidateItem — dedupe enforced in Postgres.
    • Added supabase/migrations + docs/supabase-production-checklist.md (Site URL / redirect URLs for scrollcut.com).
  9. v0.3.12026-05-10

    Supabase credentials server-only

    • Replaced NEXT_PUBLIC_SUPABASE_* with SUPABASE_URL + SUPABASE_PUBLISHABLE_KEY (anon key) so project URL and anon key are not bundled into client JavaScript.
    • Removed unused browser Supabase client. See docs/environment.md for Vercel variable names.
  10. v0.3.02026-05-10

    X (Twitter) — OAuth + bookmark sync

    • Connect X from Sources via OAuth 2.0 (PKCE); tokens stored server-side in SourceConnection.
    • Sync now uses bookmarked posts as personalization signals; Disconnect clears tokens.
    • Setup: docs/integrations/x.md — TWITTER_CLIENT_ID / SECRET, NEXT_PUBLIC_SITE_URL callback, optional SUPABASE_SERVICE_ROLE_KEY for flaky session cookies.
  11. v0.2.02026-05-06

    Editorial redesign + multi-step onboarding

    • Reframed the entire UI around an editorial brief — paper background, ink type, clay accent, Newsreader serif headlines.
    • Onboarding split into four routed steps: identity, context, confirm graph, sources & first brief.
    • Brief detail page (/brief/[id]) added with a sticky source rail and a per-component score breakdown.
    • Past briefs page redesigned as an inline-expandable archive with month grouping.
    • Apply queue moved to a 3-lane board with editable due-by and notes.
    • Why-now copy rewritten so reasons read as journalist-grade sentences.
  12. v0.1.02026-04-30

    First MVP

    • Onboarding parses a context dump into editable interest nodes.
    • Daily brief composes opportunities first, with a capped resource lane.
    • Manual URL paste + Notion-preview signal staging working end to end.
    • SQLite + Prisma data model covering UserProfile, IntentNode, SignalEvent, CandidateItem, Recommendation, QueueItem, Digest.
← Back to home