Files
zopu-code/docs/handoff-slice1.md
2026-07-27 15:22:16 +05:30

4.7 KiB

Slice 1 Handoff Notes

Date: 2026-07-27 Branch: master at cfdb2efc7 PR: #19 (merged)

What was built

Core product loop

  • Conversation to Signal to proposed Work with exact source provenance.
  • Convex owns durable data: conversationMessages, signals, works, workEvents.
  • Effect validation in @code/work-os package.
  • Flue agent (packages/agents/src/agents/zopu.ts) routes actionable messages through Signal/Work tools.
  • Slice-one tools at packages/agents/src/tools/slice-one.ts.
  • Mobile-first UI at apps/web/src/components/slice-one/slice-one-page.tsx.

Model

  • MiMo V2.5 (xiaomi/mimo-v2.5) via Cheaptricks AI gateway.
  • Provider identity xiaomi gives Flue correct multimodal metadata (text + image).
  • AGENT_MODEL_BASE_URL points at Cheaptricks; API key in .env.
  • Context window 1,048,576; max output tokens 131,076.
  • thinkingLevel: "medium".

Reasoning traces

  • Native Flue reasoning parts render as live "Thinking trace" (open while streaming, collapsed after).
  • Inline <think>...</think> extraction for models that embed thinking in text.
  • No fallback that hides model output.

Image attachments

  • Picker button + hidden file input, up to 4 images at 10 MB each.
  • Base64 conversion into Flue AgentPromptImage.
  • Authenticated blob-URL rendering for historical image replay.
  • Verified live: MiMo read exact text and background color from generated test images.

Mobile keyboard fix

  • Visual viewport hook (use-visual-viewport.ts).
  • Fixed full-screen shell; interactive-widget=resizes-content in viewport meta.
  • Header stays pinned; chat shrinks; composer follows keyboard.
  • Regression tests in frontend-regressions.test.ts and use-visual-viewport.test.ts.

Rendering

  • Streamdown markdown streaming with Mermaid chart support.
  • Tool turns hidden; reasoning-containing tool turns remain visible.
  • Work cards render inline in the conversation timeline with source navigation.

Deployment

  • Cheaptricks staging live at https://zopu.cheaptricks.puter.wtf.
  • Caddy reverse proxy: /api/* to Flue (port 3585), root to web (port 5173).
  • server.allowedHosts: true in apps/web/vite.config.ts for Caddy domain.
  • Convex SITE_URL set to https://zopu.cheaptricks.puter.wtf.
  • Both processes running via nohup on Cheaptricks (PIDs 416955 and 418726).
  • Deployment notes at docs/deployment.md.

Repository cleanup

  • 17 stale worktrees removed (Codex, Paseo, T3).
  • 23 stale local branches deleted.
  • 18 stale remote branches deleted.
  • 6 stale PRs closed (#1, #10, #11, #12, #13, #15).
  • 8 stale issues closed (#4, #5, #6, #7, #8, #9, #14, #17).
  • 0 open PRs, 0 open issues.

Current state

Running

  • Cheaptricks: web on :5173, Flue on :3585, both persistent via nohup.
  • Local Mac: servers stopped. Run bun run dev:tailscale:agents -- --port 3585 and bun run dev:tailscale:web to start.

Git

  • master at cfdb2efc7 on local, Cheaptricks, and remote.
  • Only master branch locally. Two remote branches remain: origin/sai/changes, origin/t3code/explore-primitives-package (not cleaned because they may be owned by other contributors/tools).

Known issues and next steps

  1. Convex SITE_URL is single-valued. Switch it when moving between local and staging:

    cd packages/backend
    npx convex env set SITE_URL 'http://100.101.157.28:5173'   # local
    npx convex env set SITE_URL 'https://zopu.cheaptricks.puter.wtf'  # staging
    
  2. MiMo latency is ~14-20 seconds per turn. This is model-side thinking time, not transport. Streaming works correctly; first reasoning token arrives live. Consider a faster model or lower thinkingLevel if latency becomes a product problem.

  3. Audio/video input not wired. MiMo supports audio and video per its spec, but the composer only accepts images. Adding audio/video would require extending use-chat-images.ts, the file input accept attribute, and the Flue AgentPromptImage type if it does not already cover those media types.

  4. Two remote branches remain. origin/sai/changes and origin/t3code/explore-primitives-package were left because they may be owned by other tools. Delete with git push origin --delete sai/changes t3code/explore-primitives-package if safe.

  5. Convex schema and functions are deployed to the dev deployment befitting-dalmatian-161. No pending migrations.

  6. .env is gitignored on both machines. See docs/deployment.md for the exact templates.

Slice 2 preview

Per docs/slices.md, Slice 2 is "Work Definition and approval" - turning proposed Work into approved Work with structured definitions, acceptance criteria, and the approval flow. The Convex works.ts schema and @code/work-os primitives are already in place to build on.