# 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.