@carlesandres/house 0.4.6 → 0.4.8

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 CHANGED
@@ -6,6 +6,56 @@ The publish workflow (`.github/workflows/publish.yml`) runs on the `release: pub
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.4.8] — 2026-06-02
10
+
11
+ ### Fixed
12
+
13
+ - Discovery scan failures now render short, user-facing footer status instead of raw Effect diagnostics.
14
+ - Partial discovery warnings now show a compact footer trigger that opens root-relative skipped-directory details.
15
+ - Sidebar empty states now distinguish empty roots from zero-match filters with specific copy.
16
+ - Pane frames stay neutral while selected sidebar rows remain highlighted even when the sidebar is inactive.
17
+
18
+ ### Docs
19
+
20
+ - Corrected usage docs and `--help` text: directory browsing is controlled by `--root` / `defaultRoot`; the positional path now seeds the initial browser filter query.
21
+ - Refreshed unified-browser docs, roadmap state, and demo tapes after the single Browser model landed.
22
+ - Added ADR 0001 documenting the decision to keep the current `marked`-based browser preview instead of adopting Streamdown for now.
23
+
24
+ ### Changed
25
+
26
+ - Removed the separate file-target launch path: non-serve launches always open the browser over the discovery root, with any positional path applied as the initial sidebar filter.
27
+
28
+ ### Tests
29
+
30
+ - Added reusable status popover coverage for parent-owned panels, long-line wrapping, and small-viewport clipping.
31
+
32
+ ## [0.4.7] — 2026-05-27
33
+
34
+ ### Added
35
+
36
+ - `--root <path>` and TOML `defaultRoot` let launches default to a configured browsing root while preserving explicit path arguments.
37
+ - Discovery/indexing status now shows a spinner in the chrome instead of only static text.
38
+
39
+ ### Changed
40
+
41
+ - 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.
42
+ - Sidebar filtering now applies after a short debounce to reduce churn while typing.
43
+ - Filtered browsing now keeps the first match sticky/selected as results update.
44
+
45
+ ### Fixed
46
+
47
+ - PTY typing coverage and footer hint tests now match the shifted file-action bindings.
48
+ - CI typechecking now satisfies exact optional prop typing in the release branch.
49
+
50
+ ### Docs
51
+
52
+ - Removed the obsolete `CONTEXT.md` glossary and inlined the beta-term explanation into `DESIGN.md` with cleaned-up cross-references.
53
+ - ROADMAP shipped items were pruned after the covered work landed.
54
+
55
+ ### Tests
56
+
57
+ - Browser test noise from React act warnings was reduced around the new filter behavior coverage.
58
+
9
59
  ## [0.4.6] — 2026-05-25
10
60
 
11
61
  ### Added
@@ -73,7 +123,7 @@ The publish workflow (`.github/workflows/publish.yml`) runs on the `release: pub
73
123
 
74
124
  ### Added
75
125
 
76
- - Editor hand-off: press `e` to open the selected file in `$EDITOR`/`$VISUAL` (`#19`).
126
+ - Editor hand-off: press `E` to open the selected file in `$EDITOR`/`$VISUAL` (`#19`).
77
127
  - Sidebar rows now render basename-first with segment-aware parent-path elision, improving scanability in deep trees.
78
128
  - `ctrl+\\` clears an active sidebar filter query without leaving filter mode.
79
129
 
@@ -101,7 +151,7 @@ The publish workflow (`.github/workflows/publish.yml`) runs on the `release: pub
101
151
 
102
152
  ### Added
103
153
 
104
- - Header chrome: borderless one-row identity strip above the panes carries the ⌂ brand mark and running version. Renders in both directory mode (Browser) and single-file mode (App). Hidden on terminals shorter than 20 rows so tight panes keep the reader breathable.
154
+ - Header chrome: borderless one-row identity strip above the panes carries the ⌂ brand mark and running version. Renders in the Browser UI for both directory and named-file launches. Hidden on terminals shorter than 20 rows so tight panes keep the reader breathable.
105
155
 
106
156
  ## [0.4.0] — 2026-05-21
107
157
 
@@ -175,7 +225,7 @@ Beta release gates (DESIGN §10.2) closed.
175
225
  - **`--tone dark|light`** flag to select the variant of a theme. Defaults to `dark`. Not all themes have a well-tuned light variant; quality is best-effort for those.
176
226
  - **JSON theme format**: each theme is a `{defs, theme: {dark, light}}` file validated against `schema/openmdr-theme.schema.json`. The format mirrors opencode's TUI theme shape; `defs` supports variable substitution.
177
227
  - **`dev/build-themes.ts`**: fetches themes from the opencode GitHub API, strips diff tokens, resolves variables, and regenerates `src/theme/loader.ts`. Supports `GITHUB_TOKEN` and `--dry-run`. Not shipped in the npm package.
178
- - **Runtime theme cycling**: press `t` / `T` to step forward / backward through all themes without restarting. Press `L` (shift+l) to toggle between dark and light tone. Works in both browser mode and single-file mode. Theme changes take effect immediately; syntax highlighting rebuilds with the new palette.
228
+ - **Runtime theme cycling**: press `t` / `T` to step forward / backward through all themes without restarting. Press `L` (shift+l) to toggle between dark and light tone. Works in the Browser UI for both directory and named-file launches. Theme changes take effect immediately; syntax highlighting rebuilds with the new palette.
179
229
 
180
230
  ### Changed
181
231
 
@@ -207,7 +257,7 @@ The v1 MVP, published as `@carlesandres/openmdr` on npm.
207
257
  ### Added — keymap
208
258
 
209
259
  - `KeyBinding[]` with `id` / `description` / `keys` / `group` / optional `when` / `run`. Single source for both `useKeyboard` dispatch and the help overlay.
210
- - Bindings: `j`/`k` + arrows, shift-jump, page/half-page, `g`/`G`, `return`/`l`/`→`, `escape`/`h`/`←`, `[`/`]`, `tab`, `\`, `?`, `q`/`ctrl+c`. Reserved (not bound): `/`, `e`, `o`, `r`.
260
+ - Bindings: `j`/`k` + arrows, shift-jump, page/half-page, `g`/`G`, `return`/`l`/`→`, `escape`/`h`/`←`, `[`/`]`, `tab`, `\`, `?`, `q`/`ctrl+c`. Reserved (not bound): `/`, `r`.
211
261
 
212
262
  ### Added — release infra
213
263
 
@@ -230,7 +280,9 @@ The v1 MVP, published as `@carlesandres/openmdr` on npm.
230
280
 
231
281
  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.
232
282
 
233
- [Unreleased]: https://github.com/carlesandres/house/compare/v0.4.6...HEAD
283
+ [Unreleased]: https://github.com/carlesandres/house/compare/v0.4.8...HEAD
284
+ [0.4.8]: https://github.com/carlesandres/house/compare/v0.4.7...v0.4.8
285
+ [0.4.7]: https://github.com/carlesandres/house/compare/v0.4.6...v0.4.7
234
286
  [0.4.6]: https://github.com/carlesandres/house/compare/v0.4.5...v0.4.6
235
287
  [0.4.5]: https://github.com/carlesandres/house/compare/v0.4.4...v0.4.5
236
288
  [0.4.4]: https://github.com/carlesandres/house/compare/v0.4.3...v0.4.4
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ⌂ house
2
2
 
3
- A terminal markdown reader and navigator — themable and configurable, with a keyboard-driven modern UI. Point it at a directory and browse its `.md` files without leaving the terminal.
3
+ A terminal markdown reader and navigator — themable and configurable, with a keyboard-driven modern UI. Browse a directory of `.md` files without leaving the terminal.
4
4
 
5
5
  ![house demo](tape/house.gif)
6
6
 
@@ -42,10 +42,21 @@ bun add -g @carlesandres/house
42
42
  ## Usage
43
43
 
44
44
  ```
45
- house [options] <path>
45
+ house [query] [options]
46
46
  ```
47
47
 
48
- `<path>` can be a directory (walks for `.md`, `.markdown`, and `.mdx` files) or a single markdown file. Defaults to the current directory if omitted.
48
+ By default, `house` opens the browser over the configured discovery root: the current directory, or the git root when `defaultRoot = "git"` is configured. Use `--root <dir>` to browse a specific directory.
49
+
50
+ `[query]` seeds the initial sidebar filter query. It can be a filename, a relative path, or any path fragment you want to match. It does **not** set the discovery root; use `--root <dir>` for that.
51
+
52
+ Examples:
53
+
54
+ ```bash
55
+ house # browse the configured discovery root
56
+ house README.md # browse with README.md preloaded as the sidebar filter
57
+ house --root docs # browse docs/ as the discovery root
58
+ house --serve README.md
59
+ ```
49
60
 
50
61
  ### Options
51
62
 
@@ -55,10 +66,11 @@ house [options] <path>
55
66
  | `--tone dark\|light` | `dark` | Starting tone |
56
67
  | `--width <N>` | — | Cap rendered markdown width at N columns |
57
68
  | `--show <list>` | `""` | Reveal normally-skipped entries; comma-separated subset of `hidden`, `gitignored`. Use `--show ""` to clear. |
69
+ | `--root <dir>` | current directory | Discovery root to walk; overrides `defaultRoot` config/env |
58
70
  | `--sort <mode>` | `dirs-first` | Sidebar order: `dirs-first` or `files-first` |
59
71
  | `--sidebar <mode>` | `auto` | Initial sidebar visibility: `auto`, `on`, or `off` |
60
72
  | `--focus <mode>` | `filter` | Startup focus: `sidebar`, `reader`, or `filter`. `filter` opens the sidebar filter prompt immediately. |
61
- | `--serve` | off | Serve the given file as HTML in the browser (skips TUI) |
73
+ | `--serve` | off | Serve the positional path as HTML in the browser (skips TUI) |
62
74
  | `--port <N>` | OS-assigned | Port for `--serve` |
63
75
  | `--no-mdx` | off | Exclude `.mdx` files from discovery |
64
76
  | `--no-update-check` | off | Suppress the "newer version available" check (also via `NO_UPDATE_NOTIFIER=1`) |
@@ -83,18 +95,19 @@ tone = "dark"
83
95
  mdx = true
84
96
  show = ["hidden", "gitignored"]
85
97
  focus = "filter"
98
+ defaultRoot = "cwd" # or "git"
86
99
  ```
87
100
 
88
- Supported keys: `theme`, `tone`, `mdx`, `show`, `focus`.
101
+ Supported keys: `theme`, `tone`, `mdx`, `show`, `focus`, `defaultRoot`.
89
102
 
90
103
  `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
104
 
92
105
  Precedence, highest to lowest:
93
106
 
94
- 1. CLI flags (`--theme`, `--tone`, `--no-mdx`, `--show`, `--focus`)
95
- 2. Env vars (`HOUSE_THEME`, `HOUSE_TONE`, `HOUSE_MDX`, `HOUSE_SHOW`, `HOUSE_FOCUS`)
107
+ 1. CLI flags (`--theme`, `--tone`, `--no-mdx`, `--show`, `--focus`, `--root`)
108
+ 2. Env vars (`HOUSE_THEME`, `HOUSE_TONE`, `HOUSE_MDX`, `HOUSE_SHOW`, `HOUSE_FOCUS`, `HOUSE_DEFAULT_ROOT`)
96
109
  3. Config file
97
- 4. Built-in defaults (`opencode` / `dark` / `mdx = true` / `show = []` / `focus = "filter"`)
110
+ 4. Built-in defaults (`opencode` / `dark` / `mdx = true` / `show = []` / `focus = "filter"` / `defaultRoot = "cwd"`)
98
111
 
99
112
  `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
113
 
@@ -109,10 +122,9 @@ The file is optional — a missing file is fine. Invalid keys, unknown themes, o
109
122
  | `q` / `ctrl+c` | Quit |
110
123
  | `tab` | Toggle focus (sidebar ↔ reader) |
111
124
  | `s` | Toggle sidebar visibility |
112
- | `?` | Show / dismiss help overlay |
113
125
  | `ctrl+p` | Command palette |
114
- | `o` | Open current file in browser as HTML |
115
- | `e` | Open current file in `$EDITOR` (`$VISUAL` takes precedence) |
126
+ | `O` | Open current file in browser as HTML |
127
+ | `E` | Open current file in `$EDITOR` (`$VISUAL` takes precedence) |
116
128
  | `t` | Next theme |
117
129
  | `T` | Previous theme |
118
130
  | `L` | Toggle dark / light tone |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carlesandres/house",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "description": "TUI-first markdown reader on opentui",
5
5
  "type": "module",
6
6
  "license": "MIT",