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
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [Unreleased]

### 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.

## [0.6.0] - 2026-10-07

### Added
Expand Down
9 changes: 9 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,15 @@ files matters more than any single file:
This is the reference shape for user-authored modules too — see
`docs/writing-a-module.md` for the manifest schema and template context.

11. **`internal/tui`** — the Bubble Tea v2 module browser behind
`omnishell tui` (`charm.land/bubbletea/v2`, `charm.land/lipgloss/v2`). It
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
golden files in `internal/tui/testdata`; regenerate them with
`go test ./internal/tui -run Golden -update` and review the diff by eye.

### Key invariants to preserve when touching engine/apply code

- Nothing touches the real system except `apply`, `remove`, `uninstall` (and
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +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 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