From b6469055d879cf3d667ba18f0d107f701a265159 Mon Sep 17 00:00:00 2001 From: indifferentketchup Date: Sun, 17 May 2026 20:50:16 +0000 Subject: [PATCH] docs: reconcile roadmap with merged state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v1.8.3 (tool-call compaction), themes-v1, v1.9 (settings pane + per-project defaults + bulk archive), and v1.11 (agents Tier 2) were all marked Planned/in-flight in the roadmap despite being merged on main. Reconcile the Batch summary table and reorder the Order of operations to start at v1.10. Drop the stale "Active work" section — themes-v1 description belongs in the past tense now. Co-Authored-By: Claude Opus 4.7 (1M context) --- boocode_roadmap.md | 472 ++++++++++++++++----------------------------- 1 file changed, 166 insertions(+), 306 deletions(-) diff --git a/boocode_roadmap.md b/boocode_roadmap.md index 4e71309..a3192c7 100644 --- a/boocode_roadmap.md +++ b/boocode_roadmap.md @@ -1,341 +1,201 @@ -# BooCode v1.x — Roadmap +# BooCode — Roadmap -Last updated: 2026-05-16 +Last updated: 2026-05-17 ## Overview -BooCode is a standalone code-chat tool at `/opt/boocode/`. Read-only by design — pick a project, chat with a local LLM that has file-inspection tools, get streaming responses over WebSocket. +BooCode is a standalone code-chat tool at `/opt/boocode/`. Read-only by design in v1.x — pick a project, chat with a local LLM that has file-inspection tools, get streaming responses over WebSocket. Live at `https://code.indifferentketchup.com` (Caddy → Authelia → Tailscale → `100.114.205.53:9500`). **Architectural commitments:** -- No embeddings. The model uses file-view tools (`view_file`, `list_dir`, `grep`, `find_files`) + sidecar analyzers (codecontext, codesight). Walked away from the RAG pipeline May 2026. +- No embeddings. File-view tools + sidecar analyzers replace RAG. - Read-only in v1.x. Write tools land in BooCoder (separate container, post-v1.x). - One Postgres (`boocode_db`), one frontend SPA, container-per-service for new capabilities. -External code lifted from / referenced in: see `boocode_code_review.md` for full inventory. +## Current state ------ +- **main:** v1.8.1 (`b09d0ff` was last known tip prior to v1.8.2). +- **Just merged / committed to main:** v1.8.2 — tool-loop fixes (read-only loop cap raised, "tool loop depth exceeded" error surfaced with continue button, `max_tool_calls` AGENTS.md frontmatter, `messages.metadata` column). +- **In flight RIGHT NOW:** **v1.x-themes** branch — Claude Code implementing 18-theme system. See "Active work" below. + +## Active work + +### v1.x-themes — Theme system (in flight) + +**Spec source:** locked in this session. Anchors below derived from `/mnt/user-data/uploads/boocode-theme-previews.html` (16 themes extracted) + spec §3 family rules for the two missing (`fuchsia-noir`, `midnight-sapphire`). + +**18 themes, grouped:** + +| Family | IDs | +|---|---| +| Neutral dark | obsidian (default), gunmetal | +| Brown / warm | espresso, volcanic-brown | +| Orange / amber | copper, gold | +| Red | oxblood, crimson | +| Purple | elderflower, plum | +| Pink / magenta | steel-pink, fuchsia-noir | +| Green | matrix, sage | +| Blue | cobalt, midnight-sapphire | +| Light-only | ivory, chalk | + +**Dark anchors (bg, card, border, muted-fg, accent):** + +``` +obsidian #0c0c0e #15151a #1f1f23 #6b6b75 #8b5cf6 +gunmetal #0d1117 #161b22 #21262d #7d8590 #388bfd +espresso #1c1410 #241a14 #2e2218 #8a7058 #c8a880 +volcanic-brown #140906 #1e0e0a #2e1610 #7a4030 #cc4a1a +copper #100800 #1c1408 #2e1f0a #8a6040 #b87333 +gold #0e0800 #1a1200 #2a1f00 #a07c30 #d4af37 +oxblood #0a0303 #180606 #2a0808 #7a3028 #8b1a1a +crimson #0e0404 #1a0808 #2e0a0a #8a3030 #dc143c +elderflower #100818 #1c1024 #2c1830 #8a78a0 #b89cd8 +plum #0c0814 #180e20 #241830 #7a4878 #8e4585 +steel-pink #0e0408 #1a080e #2e0c1a #9a4070 #cc33aa +fuchsia-noir #0a0610 #14081a #2a0c2e #8a3878 #ff1493 +matrix #000a00 #031403 #0a200a #208030 #00ff41 +sage #0a0e08 #141a10 #1e2e1a #7a8870 #9caf88 +cobalt #020817 #061434 #0c2244 #3060a0 #0047ab +midnight-sapphire #02050e #060c1f #0e1a36 #4a6088 #1e3a8a +ivory #fdfcf8 #f5f2e8 #e8e4d8 #8a8478 #3a3328 (light-only) +chalk #fafaf7 #f0f0ec #e5e5e0 #75756e #2a2a28 (light-only) +``` + +**Light-variant derivation (for the 16 dark themes):** +- Lightest anchor → background +- Accent darkens ~15% (HSL L − 15pp) +- Foreground = near-black tinted toward family hue +- Surfaces / borders scale up symmetrically + +**Fallback:** `ivory` or `chalk` + dark mode → `obsidian` dark. + +**Token map (shadcn nova set):** +``` +background ← anchor 1 +card / popover ← anchor 2 +border / muted ← anchor 3 +muted-foreground ← anchor 4 +primary / accent ← anchor 5 +foreground ← derived: anchor-5 hue, ~92% L, ~25% S +--destructive ← red family, unchanged across themes +--ring ← per-theme accent +--radius ← 0.5rem locked +fonts ← Inter + JetBrains Mono locked +``` + +**Wiring locked:** +- Schema: `settings.theme_id TEXT NOT NULL DEFAULT 'obsidian'`, `settings.theme_mode TEXT NOT NULL DEFAULT 'dark' CHECK IN ('dark','light','system')` +- API: GET `/api/settings` extended, PATCH whitelists 18 theme ids → 400 otherwise +- CSS: `apps/web/src/styles/themes/*.css` (18 + `_tokens.css`), imported from `globals.css` (NOT `index.css`) +- `.theme-` + `.theme-.dark` composed on `` +- `apps/web/src/lib/theme.ts` (new): `THEMES` const, `applyTheme(id, mode)`, `useTheme()` hook. matchMedia subscribed only when `mode === 'system'` +- `apps/web/src/App.tsx`: `useTheme()` at top +- Settings page: card grid, mode toggle (radio: Dark/Light/System). No header dropdown. +- shadcn primitives: `card`, `radio-group` installed via `pnpm dlx shadcn@latest add`. `button`, `label` already present. +- FOUC mitigation: localStorage cache + inline `