@carlesandres/house 0.5.2 → 0.7.0

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,35 @@ The publish workflow (`.github/workflows/publish.yml`) runs on the `release: pub
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.7.0] — 2026-08-30
10
+
11
+ ### Added
12
+
13
+ - `?` opens the command palette outside text inputs (same action as `ctrl+p`), so a single-key discovery path works without stealing `?` from the filter, palette query, or name prompts.
14
+ - `R` (`shift+r`) renames the selected file's basename via the same prompt shell as New file, so nested files stay in place without leaving House.
15
+
16
+ ### Changed
17
+
18
+ - Filter, command palette, and name prompts now use OpenTUI's single-line input, so left/right (and home/end) move the caret instead of only deleting from the end.
19
+
20
+
21
+ ## [0.6.0] — 2026-08-24
22
+
23
+ ### Added
24
+
25
+ - Internal `@house/options` package: a typed catalog for options whose initial values come from CLI, env, and config, and that can be changed during a session. House's scalar config (`theme`, `tone`, `focus`, `defaultRoot`, `width`, `wrap`) now resolves through it.
26
+ - File Navigator browse order is now configurable (`tree` or `recently-modified`) via `--order`, `HOUSE_ORDER`, and the `order` config key. The default is `recently-modified`, so the most recently updated files appear first.
27
+
28
+ ### Changed
29
+
30
+ - `N` now prompts for a file name, creates an empty `.md` at the discovery root, selects it in the File Navigator, and opens it in `$EDITOR` / `$VISUAL`. It no longer launches a nameless editor session in the discovery root.
31
+ - Invalid `defaultRoot` values fail at load instead of warning and falling back to `"cwd"`.
32
+ - Theme and tone cycling now go through the options session and persist via the same catalog policy as other file-backed options.
33
+ - Large-tree File Navigator startup no longer waits for a topology-only warmup: the watcher
34
+ subscribes before the first authoritative scan, missing ignore files are not probed, and the first
35
+ visible batch can paint while the rest of the tree is still scanning.
36
+
37
+
9
38
  ## [0.5.2] — 2026-08-01
10
39
 
11
40
  ### Changed
@@ -14,13 +43,26 @@ The publish workflow (`.github/workflows/publish.yml`) runs on the `release: pub
14
43
  - CI, npm packaging, standalone builds, and release publishing now run through workspace tasks.
15
44
  - Added local GitHub release/API verification with `vercel-labs/emulate`.
16
45
  - Extracted the House-specific sidebar pane from Browser without changing behavior.
17
- - Extracted the controlled file navigator into the private `@house/ui` workspace package while
18
- keeping House's discovery, fuzzy ranking, keyboard routing, and product copy in the app.
46
+ - House now uses the filesystem-aware File Navigator from `@house/ui/file-navigator` and the generic
47
+ `@house/ui/sidebar` presentation boundary.
48
+ - File discovery now stays synchronized with live filesystem changes, with strict extension, hidden,
49
+ ignore, and hard-skip policy applied to scanner membership.
50
+ - File navigation uses the package's fuzzy default behavior, including debounced query projection and
51
+ stable selection through streaming and reordering.
52
+ - Selected-file updates, explicit refreshes, and stale reads are coordinated through reader invalidation
53
+ epochs.
54
+ - Release builds now run filesystem mutation coverage inside the exact House artifact, with static
55
+ Parcel hosts for the four supported targets and installed npm execution without Bun on `PATH`.
56
+ - Large-tree File Navigator startup now avoids redundant entry lookups and metadata work, uses a
57
+ topology-only readiness pass, and preserves scanner order while streaming built-in tree projections.
19
58
 
20
59
  ### Fixed
21
60
 
22
61
  - Streamed matches that rank ahead of the current row no longer change the selected file.
23
62
  - Pressing Return before the filter debounce elapses now opens the post-flush matching file.
63
+ - A stable File Navigator ref now switches to the committed root instead of retaining its first root.
64
+ - Reader loads now reject stale path/epoch completions across selection, root, watcher, editor, and
65
+ teardown changes; coalesced selected-file events trigger one fresh read.
24
66
  - Standalone/npm binaries again render markdown with syntax highlighting. The compile step
25
67
  now embeds OpenTUI's tree-sitter parser worker and sets `OTUI_TREE_SITTER_WORKER_PATH`
26
68
  (same approach as OpenCode; see opentui#807).
@@ -391,7 +433,9 @@ The v1 MVP, published as `@carlesandres/openmdr` on npm.
391
433
 
392
434
  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.
393
435
 
394
- [Unreleased]: https://github.com/carlesandres/house/compare/v0.5.2...HEAD
436
+ [Unreleased]: https://github.com/carlesandres/house/compare/v0.7.0...HEAD
437
+ [0.7.0]: https://github.com/carlesandres/house/compare/v0.6.0...v0.7.0
438
+ [0.6.0]: https://github.com/carlesandres/house/compare/v0.5.2...v0.6.0
395
439
  [0.5.2]: https://github.com/carlesandres/house/compare/v0.5.1...v0.5.2
396
440
  [0.5.1]: https://github.com/carlesandres/house/compare/v0.5.0...v0.5.1
397
441
  [0.5.0]: https://github.com/carlesandres/house/compare/v0.4.14...v0.5.0
package/README.md CHANGED
@@ -55,6 +55,7 @@ Examples:
55
55
  house # browse the configured discovery root
56
56
  house README.md # browse with README.md preloaded as the sidebar filter
57
57
  house --root docs # browse docs/ as the discovery root
58
+ house --order tree # files-before-directories instead of recency
58
59
  house --serve README.md
59
60
  ```
60
61
 
@@ -70,6 +71,7 @@ house --serve README.md
70
71
  | `--show <list>` | `""` | Reveal normally-skipped entries; comma-separated subset of `hidden`, `gitignored`. Use `--show ""` to clear. |
71
72
  | `--root <dir>` | current directory | Discovery root to walk; overrides `defaultRoot` config/env |
72
73
  | `--focus <mode>` | `sidebar` | Startup focus: `sidebar`, `reader`, or `filter`. `filter` opens the sidebar filter prompt immediately. |
74
+ | `--order <mode>` | `recently-modified` | File Navigator browse order when the filter is empty: `tree` or `recently-modified`. |
73
75
  | `--serve` | off | Serve the positional path as HTML in the browser (skips TUI) |
74
76
  | `--port <N>` | OS-assigned | Port for `--serve` |
75
77
  | `--ext <list>` | none | Include extra file extensions (comma-separated) |
@@ -98,24 +100,27 @@ wrap = false
98
100
  show = ["hidden", "gitignored"]
99
101
  focus = "sidebar"
100
102
  defaultRoot = "cwd" # or "git"
103
+ order = "recently-modified" # or "tree"
101
104
  ```
102
105
 
103
- Supported keys: `theme`, `tone`, `extensions`, `width`, `wrap`, `show`, `focus`, `defaultRoot`.
106
+ Supported keys: `theme`, `tone`, `extensions`, `width`, `wrap`, `show`, `focus`, `defaultRoot`, `order`.
104
107
 
105
108
  `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.
106
109
 
107
110
  Precedence, highest to lowest:
108
111
 
109
- 1. CLI flags (`--theme`, `--tone`, `--ext`, `--width`, `--wrap`, `--no-wrap`, `--show`, `--focus`, `--root`)
110
- 2. Env vars (`HOUSE_THEME`, `HOUSE_TONE`, `HOUSE_EXTENSIONS`, `HOUSE_WIDTH`, `HOUSE_WRAP`, `HOUSE_SHOW`, `HOUSE_FOCUS`, `HOUSE_DEFAULT_ROOT`)
112
+ 1. CLI flags (`--theme`, `--tone`, `--ext`, `--width`, `--wrap`, `--no-wrap`, `--show`, `--focus`, `--order`, `--root`)
113
+ 2. Env vars (`HOUSE_THEME`, `HOUSE_TONE`, `HOUSE_EXTENSIONS`, `HOUSE_WIDTH`, `HOUSE_WRAP`, `HOUSE_SHOW`, `HOUSE_FOCUS`, `HOUSE_DEFAULT_ROOT`, `HOUSE_ORDER`)
111
114
  3. Config file
112
- 4. Built-in defaults (`opencode` / `dark` / `extensions = []` / `width = 80` / `wrap = false` / `show = []` / `focus = "sidebar"` / `defaultRoot = "cwd"`)
115
+ 4. Built-in defaults (`opencode` / `dark` / `extensions = []` / `width = 80` / `wrap = false` / `show = []` / `focus = "sidebar"` / `defaultRoot = "cwd"` / `order = "recently-modified"`)
113
116
 
114
117
  `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.
115
118
 
116
119
  `width` is the fixed reader width used when wrapping is enabled. `wrap` controls startup mode; press `w` in the TUI to toggle reader wrapping for the current session without editing config.
117
120
 
118
- The file is optional a missing file is fine. Invalid keys, unknown themes, or malformed TOML fail loudly with a one-line error. Per-project config (`.house/config.toml`) and additional keys are deferred.
121
+ `order` is the File Navigator browse order when no filter query is active. `recently-modified` (default) lists the most recently updated files first, using filesystem modification time, then tree order for ties. `tree` lists files before directories, alphabetically within each group, so current-directory files appear before nested subtrees. An active filter still ranks by relevance first.
122
+
123
+ The file is optional — a missing file is fine. Invalid keys, unknown themes, invalid `defaultRoot`, or malformed TOML fail loudly with a one-line error. Per-project config (`.house/config.toml`) and additional keys are deferred.
119
124
 
120
125
  ## Keys
121
126
 
@@ -128,10 +133,12 @@ The footer only shows essential app controls (`W`, `q`, `tab`, `s`, `ctrl+p`) to
128
133
  | `q` / `ctrl+c` | Quit |
129
134
  | `tab` | Toggle focus (sidebar ↔ reader) |
130
135
  | `s` | Toggle sidebar visibility |
131
- | `ctrl+p` | Command palette |
136
+ | `ctrl+p` / `?` | Command palette (`?` does not fire while typing in filter, palette, or name prompts) |
132
137
  | `w` | Toggle reader wrap |
133
138
  | `O` | Open current file in browser as HTML |
134
139
  | `E` | Open current file in `$EDITOR` (`$VISUAL` takes precedence) |
140
+ | `N` | Prompt for a name, create an empty markdown file at the discovery root, then open it in `$EDITOR` |
141
+ | `R` | Rename the selected file's basename (same folder; does not move) |
135
142
  | `t` | Next theme |
136
143
  | `T` | Previous theme |
137
144
  | `L` | Toggle dark / light tone |