Skip to content

Handoff: CreatorTrack live-iteration session (2026-07-03)

URL: https://mkdocs.justinsforge.com/memory/handoffs/creatortrack-iteration-2026-07-03/

Continues the overnight overhaul (creatortrack-overhaul-2026-07-03). Justin iterated live on dev for hours; this session ran ~15 more worktree agents + many direct fixes. Handing to a fresh remote worker.

State

  • Everything is on dev.creatortrack.ai (creatortrack-dev, npm run dev = next dev, port 3060, CT_DIST_DIR=.next-dev, WorkingDirectory /home/justinwieb/forge-suite). forge-suite main head at handoff time = 185fbf1. Dev verified healthy (/login, /api/auth/* = 200).
  • Prod (creatortrack-prod :3070) is still on the pre-overhaul build. Both services share the same working dir + the lifeos DB. Promotion is pending Justin's ok: cd ~/forge-suite && npm run build && sudo systemctl restart creatortrack-prod, then flip ~/.forge-secrets/creatortrack-bot.env CREATORTRACK_BASE_URL back to http://localhost:3070 and restart bots.
  • Bots point at dev (CREATORTRACK_BASE_URL=http://localhost:3060). Shared lifeos DB, canonical workspace justin (id 67, pinned). See [[reference_creatortrack_bot_api]].

The loop (how to keep iterating)

  1. Spawn a worktree agent per task: git worktree add -b <branch> ~/forge-suite-wt/<branch> main + ln -sfn ~/forge-suite/node_modules node_modules + cp -r ~/forge-suite/.next .next + cp next-env.d.ts. Agent implements, runs npx next typegen then npx tsc --noEmit (ignore .next-dev/ generated errors), commits to its branch. NEVER git add .next.
  2. Session merges the branch into main, tsc-gates (ignore .next-dev/), removes the worktree.
  3. Deploy: CLEAN-REBUILD dev, do NOT bare-restart. See lesson below.
  4. Group edits by file ownership so parallel agents do not collide; fold same-file follow-ups into the RUNNING agent via SendMessage rather than spawning a colliding one.

CRITICAL LESSON , dev cache corruption

Hammering sudo systemctl restart creatortrack-dev (I did ~25 tonight) corrupts Turbopack's .next-dev incremental cache. It manifested as /api/auth/* returning 404 and Justin seeing "404s across the site" (auth broken). It was NOT a code bug. Fix + prevention: to deploy a merge, do sudo systemctl stop creatortrack-dev && rm -rf ~/forge-suite/.next-dev && sudo systemctl start creatortrack-dev (cold recompile ~30s), then verify /login AND /api/auth/providers == 200. Prefer letting next dev hot-reload (it watches the working dir) and only clean-rebuild after a batch. See [[feedback_next_dev_cache_corruption_on_restart]].

Shipped this session (all on dev)

Notes app overhaul: rename Knowledge->Notes; Apple-style ActionMenu; combined ONE top bar on mobile AND desktop (note actions ride into the Topbar "..."); page "..." now merges into one menu with " Settings" + "General Settings" sections, all "Soon" rows removed, "More Fonts" (22 families, components/workspace/pageFonts.ts); live title + live body-snippet in the sidebar; uniform row height + background-only hover; write-date prefix on rows; centered row "..."; single list overflow; copy-link share; pull-to-refresh; autofocus + keyboard-on-open + create+open quick-note; centered note-loading spinner. Tasks: optional due time + reminder offsets + a real 15-min TimePicker; filter/sort/group (group by list/date/priority, hide/only habits, filter by date, sort by list); habit->task tag-flooding fixed (dedup key moved to hidden prop); /tasks?peek= redirect route + ?peek opens the task. Meals: log time; macro-goal planner (calorie target + presets + %-that-sum-to-100); per-item nutrient donut; day-page Sugar/Added Sugar/Fiber row; caffeine + added sugar end-to-end; removed the ring checkbox glyph. Fitness "Nutrition today" now reads the CreatorTrack Meals log (was Notion via a python bridge). Live polling wired into Notes + set to 6s. AI food logging (bot) now estimates + sends fiber/sugar/added_sugar/caffeine. Emoji picker: dropped the category-emoji strip, browse all under text headers.

OWNER: the ct-custom Opus remote worker owns this whole queue now

Justin handed the full CreatorTrack workstream to ct-custom (spawned 2026-07-03). Work the queue below top-to-bottom, but Justin drives priorities live via Remote Control, so take his interactive asks first. Same loop for everything: worktree agents -> merge to main -> CLEAN-REBUILD dev -> verify /login AND /api/auth/providers == 200.

PENDING / next up (ordered)

  1. Page customization + backlinks (the immediate next task, what the ct-custom worker was spawned for): a. The page "..." menu "Customize page" entry opens a FULL PAGE DESIGNER: background color, GRADIENTS, patterns, textures, and an image/picture, PLUS placeable STICKERS on the page. Justin wants to fully design any page's look. Persist per page (additive node prop) + render on the page (PageBody/PageHeader). Reuse CoverPicker / IconPicker / coverStudioPresets where sensible. b. Reduce the OLD "Customize page" settings to a SINGLE setting , "Show backlinks" , and DEFAULT it OFF on every page (backlinks hidden by default everywhere).
  2. Finish the Notion decommission (plan: notion-decommission-2026-07-02). DONE so far: Phase 1 (habit + goal DEFS migrated), all WRITES cut over (WORKSPACE_WRITE_TARGET=postgres), and 3 read repoints (list_notes / load_active_habits_block / fitness "Nutrition today"). STILL ON NOTION (do these, forge repo + capture door as needed):
  3. Phase 2 remaining READS in forge_telegram_inbox_brain.py: tool_habits_checkin, tool_food_today, tool_food_summary, tool_query_notion/tool_search_notion, and the tasks_form/habits_form/today_form checklist builders , repoint each to CreatorTrack (ctk_ reads or the app APIs), same way list_notes was done.
  4. Phase 3 pipelines/crons: forge_habits_instantiate.py (04:00), forge_morning_report.py, forge_orient.py, forge_time_blocks_tools.py, forge_wellness_daily_summary.py, the Hevy->Notion mirror (forge_hevy_*). Repoint or retire.
  5. Phase 4: once nothing reads Notion, delete forge_notion_api.py, NOTION_DBS, _notion_api, and the n8n notion-* workflows. Grep must return zero live Notion refs.
  6. Do NOT bulk-import Notion CONTENT ([[feedback_no_bulk_notion_import_without_asking]]) , repoint reads, do not copy data.
  7. Promote the whole thing to prod once Justin signs off on dev (npm run build + restart creatortrack-prod; flip bot env CREATORTRACK_BASE_URL to :3070; restart bots).
  8. runtime-QA-pending items agents flagged (iOS keyboard raise, mobile gesture tuning, etc.) , Justin is the device tester.
  9. Hydrate 15-vs-12 reconcile (migrated habit kept Notion's 15-cup goal; Justin made a separate 12-cup goal).

Watch-items

  • One nuance: the merged page "..." header reads " Settings" from the overflow title; Justin may prefer a fixed "Notes Settings" (flag).
  • Do not bulk-import Notion content ([[feedback_no_bulk_notion_import_without_asking]]).
  • ~70 stale worktrees + ct_* DB clones on CT109 still need teardown (disk).

[Claude Code]