What's new
Every shipped change, straight from this repo's own CHANGELOG.md.
Unreleased / this session (2026-08-07)
- Docs: created the 15 missing canonical documentation files (
PROJECT_STATE.md,TASKS.md,HANDOFF.md,SESSION_LOG.md, this file,ARCHITECTURE.md,FEATURES.md,DATABASE.md,SECURITY.md,DEPLOYMENT.md,TESTING.md,DECISIONS.md,FILE_MAP.md,ROADMAP.md,UI_SYSTEM.md), bringing the repo to the full canonical 17-file set.CLAUDE.md/README.mdalready existed. - Chore: committed a regenerated
favicon.icothat was sitting uncommitted at the start of this session (b861c45).
- Docs: created the 15 missing canonical documentation files (
`057af1a` — Degrade gracefully with no Clerk keys configured
For deploying before the shared backend exists. Added
src/lib/clerkConfigured.ts(checks whetherNEXT_PUBLIC_CLERK_PUBLISHABLE_KEYis set), extractedsrc/components/AppChrome.tsxas a shared header used by both the configured and unconfigured render paths, guardedsrc/proxy.ts(skipsclerkMiddleware()entirely when unconfigured — it throws immediately without a publishable key even for public routes) andsrc/app/layout.tsx(conditionally wraps inClerkProvider). Result: public pages (/,/how-to-use,/sign-in,/sign-up) render fine with an "Backend not connected yet" badge instead of the app 500ing outright.`970500e` — Update how-to-use guide now that Phase 2 is live
Copy-only change to
src/app/how-to-use/page.tsxreflecting the edit + export flow shipped in the previous commit.`acdde7d` — Phase 2: end-of-day text edit + client-side export
- New route
src/app/groups/[groupId]/days/[date]/edit/page.tsx— lists everytext_card/title_cardtimeline item for a finalized day with a per-item Show/Hide toggle and a "Show all"/"Hide all" bulk action (patchestimeline_items.text_visible). - New
src/lib/export/buildVlogVideo.ts— renders the finalized vlog to an MP4 entirely client-side viaffmpeg.wasm, skipping items withtext_visible === falseoutright. - New
src/lib/export/renderTextCard.ts— renders text cards to PNG via Canvas2D (avoids bundling a font file for ffmpeg'sdrawtext). - New
src/lib/export/ffmpegClient.ts— lazy-loads a self-hosted, single-threadedffmpeg.wasmcore frompublic/ffmpeg/(vendored, copied by hand from@ffmpeg/core). - Schema addition referenced:
timeline_items.text_visible(frompocket-vlog/supabase/migrations/0009_web_text_visibility.sql— a migration in the sibling repo, not this one). src/lib/types.ts: addedtext_visibleto theTimelineIteminterface.- Dependencies added:
@ffmpeg/core,@ffmpeg/ffmpeg,@ffmpeg/util.
- New route
`5adecee` — Document the web app
Original
CLAUDE.md(68 lines) and a rewrittenREADME.md, describing the shared-backend model, Phase 1/2 status, and the Clerk middleware deprecation. This is the "2 of 17" baseline this audit started from.`9302464` — Phase 1: web app core loop
Initial commit. Scaffolding (
next.config.ts,tsconfig.json,eslint.config.mjs,.gitignore,.env.local.example) plus:src/app/page.tsx— landing page, redirects signed-in users to/groups.src/app/sign-in/[[...sign-in]]/page.tsx,sign-up/[[...sign-up]]/page.tsx— Clerk catch-all auth routes.src/app/groups/page.tsx— list groups, create a group, join via invite code.src/app/groups/[groupId]/page.tsx— group home: start a daily log, invite, list finalized past days.src/app/groups/[groupId]/capture/page.tsx+src/components/capture/CaptureScreen.tsx— vertical-first camera capture (canvas-cropped 9:16 regardless of source aspect), photo or 3-60s video.src/app/groups/[groupId]/today/page.tsx— today's clips grouped by hour, per-hour remove/restore.src/app/groups/[groupId]/days/[date]/page.tsx— finalized-day slideshow playback.src/app/how-to-use/page.tsx— static onboarding guide.src/components/ProfileGate.tsx— one-time profile-creation gate for/groups/**.src/lib/postgrest.ts,src/lib/railway.ts— typed clients for the two shared backend surfaces.src/lib/time.ts,src/lib/types.ts,src/lib/useProfile.ts— shared helpers.src/proxy.ts— Clerk auth middleware (Next.js 16's renamedmiddleware.ts), protects everything except the public route list.