Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions docs/plans/rho-tau-alignment.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,36 +33,39 @@ 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.
- [ ] Preserve all existing information (model, ctx, cost) in the compact row.

## 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)
Expand Down
30 changes: 15 additions & 15 deletions docs/plans/tau-feature-parity.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,32 +15,32 @@ Tau offers a documented feature Rho does not.
|---|---|---|
| Interactive TUI | ✅ Bubble Tea TUI | none |
| `-p` print mode | ✅ `-p` | none |
| `--cwd <path>` run against another project | ❌ missing | **add** |
| `--cwd <path>` 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)

Expand Down
Loading