94 lines
4.7 KiB
Markdown
94 lines
4.7 KiB
Markdown
# 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:
|
|
```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.
|