diff --git a/docs/handoff-slice1.md b/docs/handoff-slice1.md new file mode 100644 index 0000000..50d79cb --- /dev/null +++ b/docs/handoff-slice1.md @@ -0,0 +1,93 @@ +# 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 `...` 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: + ```bash + 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.