Pocket Vlog

What's new

Every shipped change, straight from this repo's own CHANGELOG.md.

  1. 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.md already existed.
    • Chore: committed a regenerated favicon.ico that was sitting uncommitted at the start of this session (b861c45).
  2. `057af1a` — Degrade gracefully with no Clerk keys configured

    For deploying before the shared backend exists. Added src/lib/clerkConfigured.ts (checks whether NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY is set), extracted src/components/AppChrome.tsx as a shared header used by both the configured and unconfigured render paths, guarded src/proxy.ts (skips clerkMiddleware() entirely when unconfigured — it throws immediately without a publishable key even for public routes) and src/app/layout.tsx (conditionally wraps in ClerkProvider). 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.

  3. `970500e` — Update how-to-use guide now that Phase 2 is live

    Copy-only change to src/app/how-to-use/page.tsx reflecting the edit + export flow shipped in the previous commit.

  4. `acdde7d` — Phase 2: end-of-day text edit + client-side export

    • New route src/app/groups/[groupId]/days/[date]/edit/page.tsx — lists every text_card/title_card timeline item for a finalized day with a per-item Show/Hide toggle and a "Show all"/"Hide all" bulk action (patches timeline_items.text_visible).
    • New src/lib/export/buildVlogVideo.ts — renders the finalized vlog to an MP4 entirely client-side via ffmpeg.wasm, skipping items with text_visible === false outright.
    • New src/lib/export/renderTextCard.ts — renders text cards to PNG via Canvas2D (avoids bundling a font file for ffmpeg's drawtext).
    • New src/lib/export/ffmpegClient.ts — lazy-loads a self-hosted, single-threaded ffmpeg.wasm core from public/ffmpeg/ (vendored, copied by hand from @ffmpeg/core).
    • Schema addition referenced: timeline_items.text_visible (from pocket-vlog/supabase/migrations/0009_web_text_visibility.sql — a migration in the sibling repo, not this one).
    • src/lib/types.ts: added text_visible to the TimelineItem interface.
    • Dependencies added: @ffmpeg/core, @ffmpeg/ffmpeg, @ffmpeg/util.
  5. `5adecee` — Document the web app

    Original CLAUDE.md (68 lines) and a rewritten README.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.

  6. `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 renamed middleware.ts), protects everything except the public route list.

Daybreak