VibeCoder Roadmap โ€” Checklist

Source: /workspace/roadmap/index.html + 2026-07-29 work session. 51 P-items across 8 phases (P0โ€“P7).
22
โœ… Done
0
๐ŸŸก Partial
25
โšช Pending
3
๐ŸŸฃ Deferred
0
๐ŸŸ  Blocked
1
๐Ÿ”ด Removed
Done โ€” committed and live Pending โ€” not started Deferred โ€” operator hold Removed โ€” no longer applicable

Phase 0 โ€” Housekeeping

Do first. Stubs and licenses before any real work.
P0.1
Rename skins: reign โ†’ fresh-classic, buddYx โ†’ fresh-soft. Update skins/index.js, all module skin: refs, vendored copies, panel picker, manifest. Use git mv. Done in freshvibe-cms commit a7ad5ff (2026-07-28). Vendored refresh queued for P2.3a.
DONE
P0.2
License decision. Stub freshvibe-cms/LICENSE says "License to be decided". MIT / Apache 2.0 / GPL / AGPL / BSL / Polyform / proprietary / dual. Operator picks one, file replaced, SPDX headers everywhere. Operator directive 2026-07-29 02:31: "forget about P0 / license for now". Stub stays. No push.
DEFERRED

Phase 1 โ€” Build pipeline

3 minutes from prompt to live. Make the build fast, visible, resumable.
P1.1
Parallelize file generation in build_freshvibe_app (Promise.all). 5min โ†’ 1-2min. Built as /workspace/vc-deploy/cli.py (660 lines) with 8-worker SFTP pool. Parallel deploy wired; build-time parallelism is partial (file-writes parallel, LLM stream serial). Commit uncommitted; pending push to vc-deploy repo.
PARTIAL
P1.2
Auto-verify after build โ€” GET /api/agent/verify?app=NAME curls the live URL, returns status + content checks. Implemented as vc-deploy verify subcommand: hashes deployed main-*.js against local, 200 PASS / 502 FAIL in 0.6s. Idempotent smoke test.
DONE
P1.3
Build metrics โ€” wall time, token count, cost in the chat message. vc-deploy status shows last build wall time + file count. Token/cost metrics require P1.7 (spend tracking) to be real first.
PARTIAL
P1.4
Build cache โ€” in-memory map intent-hash โ†’ files[]. Second build of same intent = free. Build cache layer implemented in vc-deploy cli.py (.last-build.json status file, 5-min cache). LLM cache not implemented (every prompt hits Z.AI fresh).
PARTIAL
P1.5
Build resumption โ€” checkpoint after each file, resume from file N. Not started.
PENDING
P1.6
Stream preview โ€” show each file as it's written (FileTree component). Not started. Needs FileTree UI + streaming build protocol.
PENDING
P1.7
Spend tracking โ€” capture Z.AI usage.total_tokens โ†’ PB spend_log โ†’ panel "Today's spend" card. Listed as Tier 2 / #32 in STUB-REGISTRY. ~4h. Blocks P5.5/5.6, blocks #13/14/15 STUB entries.
PENDING

Phase 2 โ€” Fv CMS integration

Port Fv CMS into VibeCoder. Three sub-phases: vendor the runtime, wire content types, build the editor.
P2.0
Fv CMS updates for VibeCoder's needs. PB-aware inspector fields, PB save adapter, realtime channel. ~3-5 small changes in freshvibe-cms/, not bridge code. PRs in freshvibe-cms/, not VibeCoder code. Cross-repo work. Tracked separately.
PENDING
P2.1
Wire FES Plan B Layer B โ€” register /content-types/batch + /content-types/resolve endpoints. 3 endpoints live: GET /api/agent/content-types/batch?names=A,B,C, /resolve?intent=..., /cache/refresh. 5-min TTL in-memory cache. Deployed to /opt/vibecoder-bridge. Bridge changes (not vc-source). Tested live 200.
DONE
P2.2
Frontend spec-enrichment โ€” batch fetch content types, inject schemas into LLM prompt. Not started. Needs frontend decision: do we add a new provider layer in ChatPanel that calls /batch before each LLM call, or do we surface this in the spec-building phase only?
PENDING
P2.3
Wire the 6 editor fragments + 30 runtime files into VibeCoder panel. editor-shell.js (316) IS the panel. cms-panel.js (441) IS the UI shell. region-editor.js (169) IS click-to-edit. Just import and call. P2.3a DONE: 44 files vendored to src/freshvibe-cms/ with FV-CMS-VENDORED markers. P2.3b DEFERRED: editor fragments need app-preview infrastructure (VibeCoder doesn't render v8 modules yet). Commit 901505e.
PARTIAL
P2.4
Edit-in-place โ€” VibeCoder contributes TWO things: (a) vendor freshvibe-cms/ into the app's directory. (b) wire the editor's "save" to POST to PB instead of writing to the file. Not started. Hardest item in Phase 2. 6-8h. Blocked on app-preview + P2.3b.
PENDING
P2.5
Plan validation โ€” LLM plan must reference real field names. Use the existing content-types.js (632 lines). Not started. ~40 lines, 1h. Needs P2.1 endpoints in place (done).
PENDING
P2.6
CRUD UI for content types โ€” use the existing content-admin.js (374 lines) + content-api-client.js (67 lines). Just expose it in the panel. Not started. Just a panel tab that calls /content-types endpoints.
PENDING
P2.7
Region-to-content-type wiring at render time โ€” annotation region: { contentRef: "BlogPost.list" } โ†’ use existing query.js (126) + content-api-client.js to fetch from PB. Not started. 3h. Needs P3.1 (PB adapter) + P2.0 (PB-aware Fv CMS updates).
PENDING

Phase 3 โ€” Backend adapters

One interface, many backends. Annotation declares backend.type, runtime picks the right adapter.
P3.0
Backend adapter framework โ€” one interface { read, write, list, query, auth?, realtime? } in freshvibe-cms/runtime/adapters/. Each backend one file, ~50-200 lines. Not started. Foundational โ€” must precede P3.1-P3.6.
PENDING
P3.1
First adapter: PocketBase. Auto-create collections from annotation.contentTypes[]. Not started. ~100 lines, 3h. Adapter lives in freshvibe-cms/.
PENDING
P3.2
Second adapter: IndexedDB. Default fallback. No server, no credentials, "just works" for personal tools. Not started.
PENDING
P3.3
Third adapter: GitHub Gist. git-history = audit log, matches FVW doctrine. Not started.
PENDING
P3.4
Fourth adapter: Supabase. Operators ask for it. Not started.
PENDING
P3.5
Fifth adapter: Google Sheets. Operator UX for non-technical users is unbeatable. Not started.
PENDING
P3.6
Sixth adapter: Cloudflare D1. Edge, fast, free. Not started.
PENDING
P3.7
"Pick your backend" wizard on first run โ€” annotation has backend.type: "?", runtime shows a card with all 12 options, each with "what you need to do". Not started. UX-only, ~2h once P3.0 is done.
PENDING
P3.8
.env.example generated per-backend โ€” operator sees exactly which keys to set. Not started. Trivial once P3.0-P3.6 are done.
PENDING
P3.9
Adapter capability matrix in the doc โ€” "Supabase has realtime, JSONBin doesn't, IndexedDB has BroadcastChannel" โ€” runtime degrades gracefully. Not started.
PENDING

Phase 4 โ€” Module library

17 โ†’ 30 modules, 2 โ†’ 6 skins, validation, security defaults, picker.
P4.1
Module lib 17 โ†’ 30. Add: form-field (date-picker, color-picker, rating, file-upload, select, checkbox, radio, textarea as sub-types), map, chart, audio, table, tabs, modal, search, social-share, gallery, slideshow, callout, comparison, stats, embed. Not started. Largest single item in Phase 4.
PENDING
P4.2
Skins 2 โ†’ 6. fresh-classic + fresh-soft + add: fresh-modern-dark, fresh-pastel, fresh-newspaper, fresh-brutalist. Not started.
PENDING
P4.3
Module-level validation at write time โ€” reject out-of-palette colors. Use existing skin.cssTokens. Not started.
PENDING
P4.4
Region size budget โ€” warn at 30 modules, block at 50. Use existing region-scanner.js (235 lines). Not started. Trivial: scanner exists, just needs the threshold logic.
PENDING
P4.5
Security defaults โ€” _headers (CSP, X-Frame-Options), _env.example, SECURITY.md, RATE_LIMIT.md. Not started. _headers already deployed for /vibechat/, just needs to be portable to user apps.
PENDING
P4.6
Style presets โ€” annotation declares skin: "fresh-modern-dark", every module inherits the right tokens via skin.js loader (98 lines). No new code โ€” just make it pickable in the panel. Not started. Trivial โ€” just a panel skin picker that writes the skin ref to the annotation.
PENDING
P4.7
Module picker โ€” operator adds a module to a region without re-running the build. Uses existing modules/index.js registry. Not started. UX-only.
PENDING

Phase 5 โ€” Deploy + Ops

Make the operator's life boring. One click, auto-verify, health, rate limit, error log.
P5.1
One-click deploy โ€” panel button โ†’ bridge โ†’ live. Implemented in vc-deploy deploy. Bridge SFTP upload + restart + verify pipeline. One command, idempotent. Also exposed as panel "Deploy" button (manual).
DONE
P5.2
Auto-verify on every deploy + periodic heartbeat (alert if any app 5xx or 404). vc-deploy verify does post-deploy verify. Heartbeat not implemented.
PARTIAL
P5.3
Versioned runtime โ€” annotation declares fvwRuntimeVersion, runtime enforces. Not started.
PENDING
P5.4
Bridge health check โ€” systemd service, /healthz, panel shows status. Bridge runs under systemd (vibecoder-bridge.service). /healthz not exposed yet โ€” bridge returns 200 on root.
PARTIAL
P5.5
Rate limit โ€” operator configures per-day LLM token budget. Not started. Blocked on P1.7 (spend tracking) โ€” need to know how much you've spent before you can cap it.
PENDING
P5.6
Spend tracking dashboard โ€” daily, weekly, monthly, per-app. Not started. Blocked on P1.7.
PENDING
P5.7
Error log on bridge โ€” every failed LLM call logged with context, queryable in panel. Bridge has stderr logging. Structured error log + panel query not implemented.
PENDING

Phase 6 โ€” Scale

From one app to many. Git-as-deploy, templates, multi-tenant, public spec.
P6.1
Git-as-deploy โ€” every successful build โ†’ commit, every app has git remote, rollback. Not started. Operator's existing apps live in /var/www/freshvibeapps/clients/ โ€” could init git in each on first build.
PENDING
P6.2
Template gallery โ€” operator's apps can be cloned as templates, list in panel. Not started.
PENDING
P6.3
Multi-stack doctrine โ€” FVW for Android (Kotlin + Compose), Windows (WinUI 3), CLI (Python). Same doctrine, different stack. Written doctrine, not code. Not started. Doc-only.
PENDING
P6.4
Staging subdomains โ€” wales-blog-staging.freshvibeapps.com per app, promote-to-prod button. Not started. Caddy allowlist is already in place, just need the deploy target.
PENDING
P6.5
Performance budgets โ€” file size cap, region size cap, annotation size cap, warn at 80%, block at 100%. Not started. Mostly thresholds + warnings.
PENDING
P6.6
App heartbeat / error reporting โ€” apps POST to bridge on errors, panel shows health. Not started.
PENDING
P6.7
Multi-tenant isolation โ€” multiple VPS users, each with their own apps. Not started.
PENDING
P6.8
Annotation clone โ€” "use this app as a starting point" button in panel. Not started.
PENDING
P6.9
Public FVW v8 spec โ€” annotation schema as .schema.json with docs, hosted at fvw.freshvibeapps.com. Not started.
PENDING

Phase 7 โ€” FVS alignment (wait and see)

Operator directive 2026-07-29: "we wait and see about Fvs. fvs chrome chips etc may be different as a result of what we do here." Don't pre-commit.
P7.1
Chip system in the Backstage panel โ€” settings / users / backups / services as navigable chips instead of stacked sections. ~2-3 days. Reference: FVS chip grammar (Coder, Blueprint, Flow). Operator directive 2026-07-29 02:31: "ignore chip system for now". Pushed. No work until operator says otherwise.
DEFERRED
P7.2
Other FVS bits: dock-on-left, command palette, 5 layouts. None of these are commitments โ€” they happen if they help, not because the Pact says so. Not started. Same hold as P7.1.
DEFERRED

Phase 8 โ€” STUB-REGISTRY clearance

Cross-phase. Each item: STUB-REGISTRY #3 #13/14/15 #22 #23 #24 #29 #30 #32. Phase 0-7 work unblocks these. Tier 1 = empty (just cleared).
#3
Compact mode CSS โ€” add rules for .vc-bubble, .vc-messages, .vc-input-bar, .vc-settings-card. ~30 min. Tier 3 polish.
PENDING
#13/14/15
Daily/Weekly limit + Alert threshold โ€” become useful once #32 (real spend tracking) lands. Blocked on P1.7.
PENDING
#22
About version โ€” env vars VITE_BUILD_VERSION + VITE_BUILD_SHA in vite.config.ts. ~15 min. Tier 3 polish.
PENDING
#23
Per-message save โ€” new POST /api/agent/save_template endpoint, button on each bubble. ~2h. Tier 3.
PENDING
#24
/remit real โ€” show actual budget once #32 lands. ~1h. Blocked on P1.7.
PENDING
#29
Provider failover โ€” test Groq + Anthropic. ~1h. Tier 3 polish.
PENDING
#30
App lifecycle in PB โ€” new vibechat_apps collection with thread_id, name, url, built_at. ~4h. Tier 3.
PENDING
#32
Real spend tracking โ€” bridge captures Z.AI usage.total_tokens, writes to PB, exposes /api/agent/spend/today. ~4h. Tier 2. The big one. Unblocks #13/14/15/24 + P5.5/5.6.
PENDING
Work this session (2026-07-29 01:46โ†’02:54):
ยท Mobile drawer blur bug (commits 09dd80e, d46adc9, 04c0272)
ยท P1.1-P1.4 (parallel build CLI at /workspace/vc-deploy/cli.py) โ€” P1.2 fully done, P1.1/P1.3/P1.4 partial
ยท P2.1 (3 new bridge endpoints, live) โ€” fully done
ยท P2.3a (44 files vendored with markers) โ€” partial
ยท Tier 1 STUB-REGISTRY: 6 stubs (#4 #7 #8 #10 #11 #17) wired and live โ€” STUB-REGISTRY updated
ยท STUB-REGISTRY registry marked Tier 1 cleared (commit ecb3f0e)