@carlesandres/house 0.4.5 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +60 -4
- package/README.md +11 -8
- package/package.json +2 -1
- package/src/Browser.tsx +208 -56
- package/src/CommandPalette.tsx +4 -4
- package/src/Footer.tsx +33 -31
- package/src/Header.tsx +1 -1
- package/src/HelpOverlay.tsx +1 -1
- package/src/PromptRow.tsx +7 -5
- package/src/Spinner.tsx +39 -0
- package/src/cli/argv.ts +92 -108
- package/src/config/load.ts +29 -15
- package/src/discovery/filter.ts +44 -12
- package/src/index.tsx +61 -12
- package/src/keymap/browser.ts +11 -4
- package/src/keymap/displayKey.ts +17 -0
- package/src/keymap/keymap.ts +3 -0
- package/src/serve/server.ts +1 -1
- package/src/theme/colors.ts +5 -37
- package/src/theme/types.ts +7 -8
- package/src/tips.ts +93 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,61 @@ The publish workflow (`.github/workflows/publish.yml`) runs on the `release: pub
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.4.7] — 2026-05-27
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `--root <path>` and TOML `defaultRoot` let launches default to a configured browsing root while preserving explicit path arguments.
|
|
14
|
+
- Discovery/indexing status now shows a spinner in the chrome instead of only static text.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- File actions now use uppercase `E` / `O` instead of lowercase `e` / `o`, adding a small amount of friction to edit and open-in-browser actions.
|
|
19
|
+
- Sidebar filtering now applies after a short debounce to reduce churn while typing.
|
|
20
|
+
- Filtered browsing now keeps the first match sticky/selected as results update.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- PTY typing coverage and footer hint tests now match the shifted file-action bindings.
|
|
25
|
+
- CI typechecking now satisfies exact optional prop typing in the release branch.
|
|
26
|
+
|
|
27
|
+
### Docs
|
|
28
|
+
|
|
29
|
+
- Removed the obsolete `CONTEXT.md` glossary and inlined the beta-term explanation into `DESIGN.md` with cleaned-up cross-references.
|
|
30
|
+
- ROADMAP shipped items were pruned after the covered work landed.
|
|
31
|
+
|
|
32
|
+
### Tests
|
|
33
|
+
|
|
34
|
+
- Browser test noise from React act warnings was reduced around the new filter behavior coverage.
|
|
35
|
+
|
|
36
|
+
## [0.4.6] — 2026-05-25
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- Reader empty states now show one tip at a time and rotate through a relevance-ordered set of workflow hints.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- Startup behavior now uses `--focus <sidebar|reader|filter>`, `HOUSE_FOCUS`, and TOML `focus = "..."`; the built-in startup default is now `filter`.
|
|
45
|
+
- Active filter/status metadata now uses the secondary theme token, matching opencode's use of `secondary` for active contextual metadata.
|
|
46
|
+
- UI theme consumers now use the opencode-aligned `primary` token directly for strong emphasis and selected foreground.
|
|
47
|
+
- UI chrome no longer uses house-only aliases (`surface`, `selectedBg`, `selectedBgInactive`), and background/backgroundPanel are no longer reordered by luminance.
|
|
48
|
+
- Sidebar filtering now ranks basename matches above folder-only matches and softly prefers current-folder files over deeper nested paths, while keeping empty-query tree order unchanged.
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
|
|
52
|
+
- Tabbing away from the sidebar filter now lands on the reader without dropping filter mode, and the next `Tab` restores focus to the filter input instead of the sidebar list.
|
|
53
|
+
- Batched key input no longer clears active filter focus unexpectedly during tab cycling.
|
|
54
|
+
|
|
55
|
+
### Docs
|
|
56
|
+
|
|
57
|
+
- Added semantic token usage guidance for supported theme tokens.
|
|
58
|
+
- DESIGN now documents the sidebar filter's basename-first, pure-function ranking model.
|
|
59
|
+
|
|
60
|
+
### Tests
|
|
61
|
+
|
|
62
|
+
- Added headless and PTY regression coverage for filter tab-cycle focus restoration.
|
|
63
|
+
|
|
9
64
|
## [0.4.5] — 2026-05-24
|
|
10
65
|
|
|
11
66
|
### Changed
|
|
@@ -26,7 +81,6 @@ The publish workflow (`.github/workflows/publish.yml`) runs on the `release: pub
|
|
|
26
81
|
|
|
27
82
|
- Discovery visibility controls: new `--show <list>` CLI flag, `HOUSE_SHOW` env var, and TOML `show = ["..."]` config, replacing boolean discovery toggles with explicit categories (`hidden`, `gitignored`).
|
|
28
83
|
- Session visibility toggle: `shift+a` flips discovery between the configured visibility set and showing all categories, preserving selection across the re-walk.
|
|
29
|
-
- Launch-in-filter option: `--start-in-filter` CLI flag, `HOUSE_START_IN_FILTER` env var, and TOML `start_in_filter = true` open the sidebar filter prompt focused at startup.
|
|
30
84
|
|
|
31
85
|
### Changed
|
|
32
86
|
|
|
@@ -46,7 +100,7 @@ The publish workflow (`.github/workflows/publish.yml`) runs on the `release: pub
|
|
|
46
100
|
|
|
47
101
|
### Added
|
|
48
102
|
|
|
49
|
-
- Editor hand-off: press `
|
|
103
|
+
- Editor hand-off: press `E` to open the selected file in `$EDITOR`/`$VISUAL` (`#19`).
|
|
50
104
|
- Sidebar rows now render basename-first with segment-aware parent-path elision, improving scanability in deep trees.
|
|
51
105
|
- `ctrl+\\` clears an active sidebar filter query without leaving filter mode.
|
|
52
106
|
|
|
@@ -180,7 +234,7 @@ The v1 MVP, published as `@carlesandres/openmdr` on npm.
|
|
|
180
234
|
### Added — keymap
|
|
181
235
|
|
|
182
236
|
- `KeyBinding[]` with `id` / `description` / `keys` / `group` / optional `when` / `run`. Single source for both `useKeyboard` dispatch and the help overlay.
|
|
183
|
-
- Bindings: `j`/`k` + arrows, shift-jump, page/half-page, `g`/`G`, `return`/`l`/`→`, `escape`/`h`/`←`, `[`/`]`, `tab`, `\`, `?`, `q`/`ctrl+c`. Reserved (not bound): `/`, `
|
|
237
|
+
- Bindings: `j`/`k` + arrows, shift-jump, page/half-page, `g`/`G`, `return`/`l`/`→`, `escape`/`h`/`←`, `[`/`]`, `tab`, `\`, `?`, `q`/`ctrl+c`. Reserved (not bound): `/`, `r`.
|
|
184
238
|
|
|
185
239
|
### Added — release infra
|
|
186
240
|
|
|
@@ -203,7 +257,9 @@ The v1 MVP, published as `@carlesandres/openmdr` on npm.
|
|
|
203
257
|
|
|
204
258
|
Search, stdin, URL fetching, cross-file link following, `$EDITOR` hand-off, syntax highlighting, persistent config, OS-appearance auto-detect, single-binary distribution (issue [#2](https://github.com/carlesandres/openmdr/issues/2)), Homebrew tap. All tracked.
|
|
205
259
|
|
|
206
|
-
[Unreleased]: https://github.com/carlesandres/house/compare/v0.4.
|
|
260
|
+
[Unreleased]: https://github.com/carlesandres/house/compare/v0.4.7...HEAD
|
|
261
|
+
[0.4.7]: https://github.com/carlesandres/house/compare/v0.4.6...v0.4.7
|
|
262
|
+
[0.4.6]: https://github.com/carlesandres/house/compare/v0.4.5...v0.4.6
|
|
207
263
|
[0.4.5]: https://github.com/carlesandres/house/compare/v0.4.4...v0.4.5
|
|
208
264
|
[0.4.4]: https://github.com/carlesandres/house/compare/v0.4.3...v0.4.4
|
|
209
265
|
[0.4.3]: https://github.com/carlesandres/house/compare/v0.4.2...v0.4.3
|
package/README.md
CHANGED
|
@@ -57,10 +57,10 @@ house [options] <path>
|
|
|
57
57
|
| `--show <list>` | `""` | Reveal normally-skipped entries; comma-separated subset of `hidden`, `gitignored`. Use `--show ""` to clear. |
|
|
58
58
|
| `--sort <mode>` | `dirs-first` | Sidebar order: `dirs-first` or `files-first` |
|
|
59
59
|
| `--sidebar <mode>` | `auto` | Initial sidebar visibility: `auto`, `on`, or `off` |
|
|
60
|
+
| `--focus <mode>` | `filter` | Startup focus: `sidebar`, `reader`, or `filter`. `filter` opens the sidebar filter prompt immediately. |
|
|
60
61
|
| `--serve` | off | Serve the given file as HTML in the browser (skips TUI) |
|
|
61
62
|
| `--port <N>` | OS-assigned | Port for `--serve` |
|
|
62
63
|
| `--no-mdx` | off | Exclude `.mdx` files from discovery |
|
|
63
|
-
| `--start-in-filter` | off | Open the sidebar filter prompt on launch so you can type a query immediately. Press Esc to dismiss. |
|
|
64
64
|
| `--no-update-check` | off | Suppress the "newer version available" check (also via `NO_UPDATE_NOTIFIER=1`) |
|
|
65
65
|
| `--config-path` | — | Print the resolved config-file path and exit |
|
|
66
66
|
| `-h`, `--help` | — | Show help and exit |
|
|
@@ -82,19 +82,19 @@ theme = "tokyonight"
|
|
|
82
82
|
tone = "dark"
|
|
83
83
|
mdx = true
|
|
84
84
|
show = ["hidden", "gitignored"]
|
|
85
|
-
|
|
85
|
+
focus = "filter"
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
Supported keys: `theme`, `tone`, `mdx`, `show`, `
|
|
88
|
+
Supported keys: `theme`, `tone`, `mdx`, `show`, `focus`.
|
|
89
89
|
|
|
90
90
|
`show` is a list of normally-skipped categories to opt into. Known categories: `hidden` (dot-prefixed entries), `gitignored` (entries matched by a `.gitignore`). Default is the empty list. Hard skips (`node_modules`, `.git`, `.venv`) always apply.
|
|
91
91
|
|
|
92
92
|
Precedence, highest to lowest:
|
|
93
93
|
|
|
94
|
-
1. CLI flags (`--theme`, `--tone`, `--no-mdx`, `--show`, `--
|
|
95
|
-
2. Env vars (`HOUSE_THEME`, `HOUSE_TONE`, `HOUSE_MDX`, `HOUSE_SHOW`, `
|
|
94
|
+
1. CLI flags (`--theme`, `--tone`, `--no-mdx`, `--show`, `--focus`)
|
|
95
|
+
2. Env vars (`HOUSE_THEME`, `HOUSE_TONE`, `HOUSE_MDX`, `HOUSE_SHOW`, `HOUSE_FOCUS`)
|
|
96
96
|
3. Config file
|
|
97
|
-
4. Built-in defaults (`opencode` / `dark` / `mdx = true` / `show = []` / `
|
|
97
|
+
4. Built-in defaults (`opencode` / `dark` / `mdx = true` / `show = []` / `focus = "filter"`)
|
|
98
98
|
|
|
99
99
|
`HOUSE_SHOW` takes a comma-separated list (`HOUSE_SHOW=hidden,gitignored`). For `show` specifically, each source completely replaces the next — categories don't merge across layers. Press `shift+a` in the TUI to round-trip between the configured set and the full vocabulary without editing config.
|
|
100
100
|
|
|
@@ -111,8 +111,8 @@ The file is optional — a missing file is fine. Invalid keys, unknown themes, o
|
|
|
111
111
|
| `s` | Toggle sidebar visibility |
|
|
112
112
|
| `?` | Show / dismiss help overlay |
|
|
113
113
|
| `ctrl+p` | Command palette |
|
|
114
|
-
| `
|
|
115
|
-
| `
|
|
114
|
+
| `O` | Open current file in browser as HTML |
|
|
115
|
+
| `E` | Open current file in `$EDITOR` (`$VISUAL` takes precedence) |
|
|
116
116
|
| `t` | Next theme |
|
|
117
117
|
| `T` | Previous theme |
|
|
118
118
|
| `L` | Toggle dark / light tone |
|
|
@@ -149,6 +149,9 @@ The file is optional — a missing file is fine. Invalid keys, unknown themes, o
|
|
|
149
149
|
|
|
150
150
|
Each theme supports dark and light tones. Cycle with `t` / `T`; toggle tone with `L`.
|
|
151
151
|
|
|
152
|
+
For the supported semantic theme tokens and their intended usage, see
|
|
153
|
+
[DESIGN.md §7.5](https://github.com/carlesandres/house/blob/main/DESIGN.md#75-theming).
|
|
154
|
+
|
|
152
155
|
## Inspiration
|
|
153
156
|
|
|
154
157
|
- [glow](https://github.com/charmbracelet/glow) — render markdown on the CLI, with pizzazz
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carlesandres/house",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.7",
|
|
4
4
|
"description": "TUI-first markdown reader on opentui",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
"@effect/atom-react": "4.0.0-beta.70",
|
|
57
57
|
"@opentui/core": "0.2.15",
|
|
58
58
|
"@opentui/react": "0.2.15",
|
|
59
|
+
"commander": "^14.0.3",
|
|
59
60
|
"effect": "4.0.0-beta.70",
|
|
60
61
|
"ignore": "^7.0.5",
|
|
61
62
|
"marked": "^18.0.4",
|