From adaae1205aa1aee5e283b260a4bd51efd320d0e9 Mon Sep 17 00:00:00 2001 From: Lakshman Patel Date: Tue, 15 Sep 2026 09:30:37 +0530 Subject: [PATCH] docs(tau): reconcile the Tau alignment and parity plans with the code Mark the already-merged items done (tau palette + chrome, frontend contract guard, --cwd, /login, transcript, .agents instructions) and record why the remaining items are not rho-only changes: the user catalog is flux-owned, and footer flattening changes behavior asserted by TestRenderStatusBar_TwoLineAtWidth120. --- docs/plans/rho-tau-alignment.md | 19 +++++++++++-------- docs/plans/tau-feature-parity.md | 30 +++++++++++++++--------------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/docs/plans/rho-tau-alignment.md b/docs/plans/rho-tau-alignment.md index e38d4492..8078ba62 100644 --- a/docs/plans/rho-tau-alignment.md +++ b/docs/plans/rho-tau-alignment.md @@ -33,18 +33,21 @@ does the achievable parts: Tau's palette is a restrained dark theme: near-black panel, single muted accent, generous dim text, no heavy borders. -- [ ] Add a `tau` palette to `internal/theme/theme_palettes.go` +- [x] Add a `tau` palette to `internal/theme/theme_palettes.go` (panel `#0d1117`, ink `#e6edf3`, muted `#8b949e`, accent `#7aa2f7`, subtle line `#21262d`). -- [ ] Register it in `themeRegistry`; make it selectable via `/theme tau`. -- [ ] Reduce chrome: prefer single-line separators over box borders where the +- [x] Register it in `themeRegistry`; make it selectable via `/theme tau`. +- [x] Reduce chrome: prefer single-line separators over box borders where the theme is `tau`. -- [ ] Keep every existing palette intact (no regressions). +- [x] Keep every existing palette intact (no regressions). ## Phase 2 — Tau-style layout (visual) - [ ] Flatten the footer: one status line + one input line (Tau shows a minimal bottom bar, not a multi-row panel). + NOTE: `renderStatusBar` intentionally renders two rows at width >= 100 + and `TestRenderStatusBar_TwoLineAtWidth120` asserts it. Flattening is a + product/visual decision that needs sign-off before changing that test. - [ ] Dim the input border; show the mode as a short prefix rather than a separate row. - [ ] Tighten the welcome block: wordmark + one hint line. @@ -52,17 +55,17 @@ accent, generous dim text, no heavy borders. ## Phase 3 — Architecture tightening (contract) -- [ ] Document the frontend contract in `docs/architecture/frontend-contract.md`: +- [x] Document the frontend contract in `docs/architecture/frontend-contract.md`: `engine.StreamEvent` is the only channel; TUI/daemon/ACP/print are consumers and must not reach into engine internals. -- [ ] Add a testaudit guard asserting `cmd/` TUI files do not import +- [x] Add a testaudit guard asserting `cmd/` TUI files do not import `internal/engine/*` subpackages beyond the public facade types. ## Phase 4 — Verification (twice) -- [ ] Pass 1: `gofumpt v0.10.0`, `goimports`, `go build ./...`, `go vet ./...`, +- [x] Pass 1: `gofumpt v0.10.0`, `goimports`, `go build ./...`, `go vet ./...`, `golangci-lint`, targeted tests for touched packages, boundary guards. -- [ ] Pass 2: independent re-run of the same, plus a fresh-eyes grep for +- [x] Pass 2: independent re-run of the same, plus a fresh-eyes grep for stale references and a manual TUI render check. ## Out of scope (explicitly) diff --git a/docs/plans/tau-feature-parity.md b/docs/plans/tau-feature-parity.md index e7e919d8..65edf68d 100644 --- a/docs/plans/tau-feature-parity.md +++ b/docs/plans/tau-feature-parity.md @@ -15,32 +15,32 @@ Tau offers a documented feature Rho does not. |---|---|---| | Interactive TUI | ✅ Bubble Tea TUI | none | | `-p` print mode | ✅ `-p` | none | -| `--cwd ` run against another project | ❌ missing | **add** | +| `--cwd ` run against another project | ✅ `--cwd` | none | | Built-in tools (read/write/edit/bash) | ✅ 138 tools (superset) | none | | Durable JSONL sessions + resume + branching | ✅ JSONL + DAG branching | none | -| Slash commands (login, model, sessions, compaction, export, theme) | ⚠️ `/model`, `/compact`, `/export`, `/theme` yes; `/login` no | **add `/login`** | +| Slash commands (login, model, sessions, compaction, export, theme) | ✅ `/login` added | none | | `AGENTS.md` project instructions | ✅ | none | | `.tau/` project resources | ✅ `.rho/` | none | -| `.agents/` shared resources | ⚠️ partial (skills/providers/recipes) | **extend to instructions** | +| `.agents/` shared resources | ✅ skills/providers/recipes/hooks/rules/workflows + `.agents/AGENTS.md` instructions | none | | User skills, prompt templates, themes | ✅ | none | | Context accounting + manual/auto compaction | ✅ | none | -| Provider-neutral output: text, JSON, transcript | ⚠️ text + json + stream-json; no transcript | **add transcript** | -| `~/.tau/catalog.toml` custom providers/models, no code changes | ❌ missing | **add `~/.rho/catalog.toml`** | +| Provider-neutral output: text, JSON, transcript | ✅ text + json + stream-json + transcript | none | +| `~/.tau/catalog.toml` custom providers/models, no code changes | ❌ missing | **flux-side** (see below) | | `tau update` | ✅ `rho update` | none | | Installers | ✅ `install.sh` | none | ## Work items -1. **`--cwd` global flag** — change directory before session start; applies to - interactive, `-p`, and `exec`. -2. **`/login` slash command** — Tau's auth entry point; route to Rho's existing - credential/config flow (no new secret handling). -3. **`transcript` output format** — add to `--output-format`; render the turn - as a plain, timestamped transcript. -4. **User catalog `~/.rho/catalog.toml`** — let users add providers/models - without code changes, merged over the flux catalog. -5. **`.agents/` instruction resources** — load `AGENTS.md`-style instructions - from `.agents/` in addition to the existing skill/provider/recipe dirs. +1. ~~**`--cwd` global flag**~~ — done (`cmd/root.go`, applied to interactive, `-p`, and `exec`). +2. ~~**`/login` slash command**~~ — done (`cmd/chat_subcommand_login.go`). +3. ~~**`transcript` output format**~~ — done (`--output-format transcript`). +4. **User catalog `~/.rho/catalog.toml`** — NOT implemented. The model catalog + is owned by the flux engine (`github.com/GrayCodeAI/flux/catalog`), whose + `LoadCatalogOptions` has no user-catalog override. Per `AGENTS.md` + (provider/catalog ownership lives in flux), this must be added in flux and + surfaced through the engine facade before rho can consume it. +5. ~~**`.agents/` instruction resources**~~ — done (`.agents/AGENTS.md` is in + the instruction search path in `internal/config/config.go`). ## Verification (twice)