Skip to content
9 changes: 6 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

### Added
- `omnishell tui`: a full-screen terminal UI to browse modules (description,
homepage, package status, platforms, shells) with a `/` filter. Read-only for
now; it needs an interactive terminal. It brings the first runtime
dependencies, Bubble Tea and Lip Gloss, so the binary grows by about 1.5 MiB.
homepage, package status, platforms, shells) with a `/` filter. Space enables
or disables the selected module in `config.toml`, like `enable` / `disable`
(run `apply` afterwards), and modules that cannot run on this host are
dimmed with the reason shown. It needs an interactive terminal. It brings the
first runtime dependencies, Bubble Tea and Lip Gloss, so the binary grows by
about 1.5 MiB.

## [0.6.0] - 2026-10-07

Expand Down
9 changes: 8 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,14 @@ files matters more than any single file:
imports neither `cli` nor `engine`: everything comes through its `Backend`
interface, which `internal/cli/tui.go` implements over `modedit`. The command
refuses a non-terminal and a missing or malformed config before the screen is
taken over. Rendering tests compare `View().Content` (styling stripped) with
taken over. `Update` stays free of I/O: toggling returns a `tea.Cmd` that
writes through `modedit.Enable`/`Disable` and then re-reads only the module
statuses (`Backend.Statuses`; `Modules` probes the package manager and takes
seconds), one write at a time. The `tui` command builds its engine with
`io.Discard` writers, because the runner copies package-manager output to
them and the UI owns the terminal. Any
text that comes from a backend or a manifest (module fields, error messages)
must go through `sanitize` before it is drawn. Rendering tests compare `View().Content` (styling stripped) with
golden files in `internal/tui/testdata`; regenerate them with
`go test ./internal/tui -run Golden -update` and review the diff by eye.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ your system until you run `omnishell apply`.
|----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `omnishell init` | Create the omnishell config and hook it into your shells. Idempotent. | — |
| `omnishell list` | List known modules and their status (enabled/disabled, packages, platforms, shells, source, description). | `--json` (emit a JSON array instead of the table; also includes each module's `homepage`) |
| `omnishell tui` | Browse modules in a full-screen terminal UI: a module list with description, homepage, package status, platforms and shells, plus a `/` filter. Read-only; needs an interactive terminal (exit 2 otherwise). | — |
| `omnishell tui` | Browse and toggle modules in a full-screen terminal UI: a module list with description, homepage, package status, platforms and shells, a `/` filter, and Space to enable or disable the selected module (written to `config.toml` at once, like `enable` / `disable`; run `apply` afterwards). Modules that cannot run on this host are dimmed. Needs an interactive terminal (exit 2 otherwise). | — |
| `omnishell enable <module>` | Enable a module in the config. Does not apply. | — |
| `omnishell disable <module>` | Disable a module in the config. Does not apply. | — |
| `omnishell set <module>.<key> <value>` | Set a module option in the config, validated against that module's option schema. | — |
Expand Down
Loading
Loading