@carlesandres/house 0.3.0 → 0.4.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 +55 -2
- package/README.md +43 -13
- package/package.json +6 -4
- package/src/Browser.tsx +371 -67
- package/src/CommandPalette.tsx +126 -0
- package/src/Footer.tsx +65 -38
- package/src/cli/argv.ts +30 -2
- package/src/commands/buildCommands.ts +102 -0
- package/src/commands/paletteOnlyCommands.ts +16 -0
- package/src/commands/score.ts +78 -0
- package/src/commands/types.ts +26 -0
- package/src/config/load.ts +166 -0
- package/src/discovery/walk.ts +59 -20
- package/src/index.tsx +106 -28
- package/src/keymap/browser.ts +26 -11
- package/src/layout/resolve.ts +60 -0
- package/src/theme/colors.ts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
All notable changes to house
|
|
3
|
+
All notable changes to house land here. Format follows
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project
|
|
5
5
|
follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html) from
|
|
6
6
|
v0.1.0 onward.
|
|
@@ -12,6 +12,57 @@ file is the curated, narrative version.
|
|
|
12
12
|
|
|
13
13
|
## [Unreleased]
|
|
14
14
|
|
|
15
|
+
## [0.4.0] — 2026-05-21
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Command palette v1: `ctrl+p` opens a modal palette with visible browser
|
|
20
|
+
commands derived from the keymap, including quit, sidebar toggle, help,
|
|
21
|
+
filter, open-in-browser, and theme controls.
|
|
22
|
+
- Palette search uses a small tiered scorer so empty queries stay in keymap
|
|
23
|
+
order while typed queries rank stronger title and word-boundary matches.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Reader scroll focus is suspended while overlays are open, preventing palette
|
|
28
|
+
arrow navigation from scrolling the markdown pane behind the modal.
|
|
29
|
+
|
|
30
|
+
### Tests
|
|
31
|
+
|
|
32
|
+
- Added command-palette interaction coverage plus scroll regression checks.
|
|
33
|
+
|
|
34
|
+
## [0.3.1] — 2026-05-17
|
|
35
|
+
|
|
36
|
+
Beta release gates (DESIGN §10.2) closed.
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- Language-tagged fenced code blocks no longer disappear while markdown
|
|
41
|
+
highlighting settles. `house` now uses opentui `0.2.12`, which includes
|
|
42
|
+
markdown/code-block rendering fixes, and the browser pane no longer
|
|
43
|
+
remounts markdown for one file while still holding another file's loaded
|
|
44
|
+
content.
|
|
45
|
+
- Strikethrough text (`~~strike~~`) now renders distinctly (dim + muted
|
|
46
|
+
foreground) instead of as plain body text. opentui's syntax-style API
|
|
47
|
+
has no true strikethrough attribute; this is the closest visual we can
|
|
48
|
+
produce, documented in DESIGN §5.1.
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- Reduced re-renders and allocations in `Browser` / `Footer` hot paths.
|
|
53
|
+
- DESIGN §10.2 test gate rephrased to target the integration surface
|
|
54
|
+
house owns (the tree-sitter scope map) rather than re-testing opentui's
|
|
55
|
+
renderer; `test/theme-syntax-map.test.ts` enforces scope coverage for
|
|
56
|
+
every node type §5.1.3 promises.
|
|
57
|
+
|
|
58
|
+
### Docs
|
|
59
|
+
|
|
60
|
+
- README embeds a VHS-generated demo gif; `tape/` holds the source
|
|
61
|
+
scripts.
|
|
62
|
+
- `CONTRIBUTING.md` documents the `captureSpans()` / `MockTreeSitterClient`
|
|
63
|
+
/ `TestRecorder` testing patterns and the "before blaming `<markdown>`"
|
|
64
|
+
stale-watcher debugging checklist.
|
|
65
|
+
|
|
15
66
|
## [0.3.0] — 2026-05-16
|
|
16
67
|
|
|
17
68
|
### Changed
|
|
@@ -172,7 +223,9 @@ auto-detect, single-binary distribution (issue
|
|
|
172
223
|
[#2](https://github.com/carlesandres/openmdr/issues/2)),
|
|
173
224
|
Homebrew tap. All tracked.
|
|
174
225
|
|
|
175
|
-
[Unreleased]: https://github.com/carlesandres/house/compare/v0.
|
|
226
|
+
[Unreleased]: https://github.com/carlesandres/house/compare/v0.4.0...HEAD
|
|
227
|
+
[0.4.0]: https://github.com/carlesandres/house/compare/v0.3.1...v0.4.0
|
|
228
|
+
[0.3.1]: https://github.com/carlesandres/house/compare/v0.3.0...v0.3.1
|
|
176
229
|
[0.3.0]: https://github.com/carlesandres/house/compare/v0.2.1...v0.3.0
|
|
177
230
|
[0.2.1]: https://github.com/carlesandres/house/compare/v0.2.0...v0.2.1
|
|
178
231
|
[0.2.0]: https://github.com/carlesandres/house/compare/v0.1.0...v0.2.0
|
package/README.md
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
# house
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
> is deprecated; install `@carlesandres/house` instead. The CLI binary is
|
|
5
|
-
> now `house` (was `openmdr`).
|
|
6
|
-
|
|
7
|
-
A terminal markdown reader built on [opentui](https://github.com/nicholasgasior/opentui).
|
|
3
|
+
A terminal markdown reader built on [opentui](https://github.com/anomalyco/opentui).
|
|
8
4
|
Point it at a directory and navigate its `.md` files without leaving the terminal.
|
|
9
5
|
|
|
10
|
-
|
|
11
|
-
npx @carlesandres/house docs/
|
|
12
|
-
```
|
|
6
|
+

|
|
13
7
|
|
|
14
8
|
Requires [Bun](https://bun.sh) on `PATH`.
|
|
15
9
|
|
|
@@ -43,6 +37,34 @@ house [options] <path>
|
|
|
43
37
|
|------|---------|-------------|
|
|
44
38
|
| `--theme <name>` | `opencode` | Starting theme (see list below) |
|
|
45
39
|
| `--tone dark\|light` | `dark` | Starting tone |
|
|
40
|
+
| `--config-path` | — | Print the resolved config-file path and exit |
|
|
41
|
+
|
|
42
|
+
## Configuration
|
|
43
|
+
|
|
44
|
+
house reads optional defaults from a TOML file:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
$XDG_CONFIG_HOME/house/config.toml (defaults to ~/.config/house/config.toml)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Run `house --config-path` to print the exact location.
|
|
51
|
+
|
|
52
|
+
```toml
|
|
53
|
+
# ~/.config/house/config.toml
|
|
54
|
+
theme = "tokyonight"
|
|
55
|
+
tone = "dark"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Precedence, highest to lowest:
|
|
59
|
+
|
|
60
|
+
1. CLI flags (`--theme`, `--tone`)
|
|
61
|
+
2. Env vars (`HOUSE_THEME`, `HOUSE_TONE`)
|
|
62
|
+
3. Config file
|
|
63
|
+
4. Built-in defaults (`opencode` / `dark`)
|
|
64
|
+
|
|
65
|
+
The file is optional — a missing file is fine. Invalid keys, unknown themes,
|
|
66
|
+
or malformed TOML fail loudly with a one-line error. Per-project config
|
|
67
|
+
(`.house/config.toml`) and additional keys are deferred.
|
|
46
68
|
|
|
47
69
|
## Keys
|
|
48
70
|
|
|
@@ -52,8 +74,9 @@ house [options] <path>
|
|
|
52
74
|
|-----|--------|
|
|
53
75
|
| `q` / `ctrl+c` | Quit |
|
|
54
76
|
| `tab` | Toggle focus (sidebar ↔ reader) |
|
|
55
|
-
|
|
|
77
|
+
| `s` | Toggle sidebar visibility |
|
|
56
78
|
| `?` | Show / dismiss help overlay |
|
|
79
|
+
| `o` | Open current file in browser as HTML |
|
|
57
80
|
| `t` | Next theme |
|
|
58
81
|
| `T` | Previous theme |
|
|
59
82
|
| `L` | Toggle dark / light tone |
|
|
@@ -64,12 +87,13 @@ house [options] <path>
|
|
|
64
87
|
|-----|--------|
|
|
65
88
|
| `j` / `↓` | Move selection down |
|
|
66
89
|
| `k` / `↑` | Move selection up |
|
|
67
|
-
| `J` | Jump down
|
|
68
|
-
| `K` | Jump up
|
|
69
|
-
| `space` / `ctrl+d` | Page down |
|
|
70
|
-
| `b` / `ctrl+u` | Page up |
|
|
90
|
+
| `J` | Jump down 8 |
|
|
91
|
+
| `K` | Jump up 8 |
|
|
92
|
+
| `space` / `pagedown` / `ctrl+d` | Page down |
|
|
93
|
+
| `b` / `pageup` / `ctrl+u` | Page up |
|
|
71
94
|
| `g` | First file |
|
|
72
95
|
| `G` | Last file |
|
|
96
|
+
| `/` | Filter files (fuzzy match on path) |
|
|
73
97
|
| `↵` / `→` / `l` | Open file (focus reader) |
|
|
74
98
|
|
|
75
99
|
### Reader
|
|
@@ -94,6 +118,12 @@ house [options] <path>
|
|
|
94
118
|
|
|
95
119
|
Each theme supports dark and light tones. Cycle with `t` / `T`; toggle tone with `L`.
|
|
96
120
|
|
|
121
|
+
## Inspiration
|
|
122
|
+
|
|
123
|
+
- [glow](https://github.com/charmbracelet/glow) — render markdown on the CLI, with pizzazz
|
|
124
|
+
- [ghui](https://github.com/kitlangton/ghui) — keyboard-driven terminal UI for GitHub pull requests
|
|
125
|
+
- [hunk](https://github.com/modem-dev/hunk) — review-first terminal diff viewer for agent-authored changesets
|
|
126
|
+
|
|
97
127
|
## License
|
|
98
128
|
|
|
99
129
|
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carlesandres/house",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "TUI-first markdown reader on opentui",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,12 +44,14 @@
|
|
|
44
44
|
"format": "oxfmt src/",
|
|
45
45
|
"format:check": "oxfmt --check src/",
|
|
46
46
|
"test": "bun test",
|
|
47
|
-
"build:themes": "bun run dev/build-themes.ts"
|
|
47
|
+
"build:themes": "bun run dev/build-themes.ts",
|
|
48
|
+
"repro:pty-codeblocks": "bun run dev/repro-pty-codeblocks.ts",
|
|
49
|
+
"prepare": "git config core.hooksPath .githooks 2>/dev/null || true"
|
|
48
50
|
},
|
|
49
51
|
"dependencies": {
|
|
50
52
|
"@effect/atom-react": "4.0.0-beta.59",
|
|
51
|
-
"@opentui/core": "0.2.
|
|
52
|
-
"@opentui/react": "0.2.
|
|
53
|
+
"@opentui/core": "0.2.12",
|
|
54
|
+
"@opentui/react": "0.2.12",
|
|
53
55
|
"effect": "4.0.0-beta.59",
|
|
54
56
|
"ignore": "^7.0.5",
|
|
55
57
|
"marked": "^18.0.3",
|