@carlesandres/house 0.3.1 → 0.4.1

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
@@ -1,94 +1,75 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to house land here. Format follows
4
- [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project
5
- follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html) from
6
- v0.1.0 onward.
3
+ All notable changes to house land here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html) from v0.1.0 onward.
7
4
 
8
- The publish workflow (`.github/workflows/publish.yml`) runs on the
9
- `release: published` event, runs `npm publish` via Trusted Publisher,
10
- and lets GitHub auto-generate release notes from commit subjects; this
11
- file is the curated, narrative version.
5
+ The publish workflow (`.github/workflows/publish.yml`) runs on the `release: published` event, runs `npm publish` via Trusted Publisher, and lets GitHub auto-generate release notes from commit subjects; this file is the curated, narrative version.
12
6
 
13
7
  ## [Unreleased]
14
8
 
9
+ ## [0.4.1] — 2026-05-22
10
+
11
+ ### Added
12
+
13
+ - 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.
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 commands derived from the keymap, including quit, sidebar toggle, help, filter, open-in-browser, and theme controls.
20
+ - Palette search uses a small tiered scorer so empty queries stay in keymap order while typed queries rank stronger title and word-boundary matches.
21
+
22
+ ### Fixed
23
+
24
+ - Reader scroll focus is suspended while overlays are open, preventing palette arrow navigation from scrolling the markdown pane behind the modal.
25
+
26
+ ### Tests
27
+
28
+ - Added command-palette interaction coverage plus scroll regression checks.
29
+
15
30
  ## [0.3.1] — 2026-05-17
16
31
 
17
32
  Beta release gates (DESIGN §10.2) closed.
18
33
 
19
34
  ### Fixed
20
35
 
21
- - Language-tagged fenced code blocks no longer disappear while markdown
22
- highlighting settles. `house` now uses opentui `0.2.12`, which includes
23
- markdown/code-block rendering fixes, and the browser pane no longer
24
- remounts markdown for one file while still holding another file's loaded
25
- content.
26
- - Strikethrough text (`~~strike~~`) now renders distinctly (dim + muted
27
- foreground) instead of as plain body text. opentui's syntax-style API
28
- has no true strikethrough attribute; this is the closest visual we can
29
- produce, documented in DESIGN §5.1.
36
+ - Language-tagged fenced code blocks no longer disappear while markdown highlighting settles. `house` now uses opentui `0.2.12`, which includes markdown/code-block rendering fixes, and the browser pane no longer remounts markdown for one file while still holding another file's loaded content.
37
+ - Strikethrough text (`~~strike~~`) now renders distinctly (dim + muted foreground) instead of as plain body text. opentui's syntax-style API has no true strikethrough attribute; this is the closest visual we can produce, documented in DESIGN §5.1.
30
38
 
31
39
  ### Changed
32
40
 
33
41
  - Reduced re-renders and allocations in `Browser` / `Footer` hot paths.
34
- - DESIGN §10.2 test gate rephrased to target the integration surface
35
- house owns (the tree-sitter scope map) rather than re-testing opentui's
36
- renderer; `test/theme-syntax-map.test.ts` enforces scope coverage for
37
- every node type §5.1.3 promises.
42
+ - DESIGN §10.2 test gate rephrased to target the integration surface house owns (the tree-sitter scope map) rather than re-testing opentui's renderer; `test/theme-syntax-map.test.ts` enforces scope coverage for every node type §5.1.3 promises.
38
43
 
39
44
  ### Docs
40
45
 
41
- - README embeds a VHS-generated demo gif; `tape/` holds the source
42
- scripts.
43
- - `CONTRIBUTING.md` documents the `captureSpans()` / `MockTreeSitterClient`
44
- / `TestRecorder` testing patterns and the "before blaming `<markdown>`"
45
- stale-watcher debugging checklist.
46
+ - README embeds a VHS-generated demo gif; `tape/` holds the source scripts.
47
+ - `CONTRIBUTING.md` documents the `captureSpans()` / `MockTreeSitterClient` / `TestRecorder` testing patterns and the "before blaming `<markdown>`" stale-watcher debugging checklist.
46
48
 
47
49
  ## [0.3.0] — 2026-05-16
48
50
 
49
51
  ### Changed
50
52
 
51
- - **Project renamed from `openmdr` to `house`.** The npm package is now
52
- `@carlesandres/house`; `@carlesandres/openmdr` is deprecated and will
53
- not receive further releases. The CLI binary is now `house` (was
54
- `openmdr`). The GitHub repository moved to
55
- `https://github.com/carlesandres/house`; GitHub auto-redirects old
56
- URLs and issue/PR numbers are preserved. The theme schema file moved
57
- to `schema/house-theme.schema.json` and its `$id` is now a GitHub URL
58
- on the new repo.
59
- - `/` is no longer reserved (DESIGN.md §7.3) — it now drives the filter
60
- input.
53
+ - **Project renamed from `openmdr` to `house`.** The npm package is now `@carlesandres/house`; `@carlesandres/openmdr` is deprecated and will not receive further releases. The CLI binary is now `house` (was `openmdr`). The GitHub repository moved to `https://github.com/carlesandres/house`; GitHub auto-redirects old URLs and issue/PR numbers are preserved. The theme schema file moved to `schema/house-theme.schema.json` and its `$id` is now a GitHub URL on the new repo.
54
+ - `/` is no longer reserved (DESIGN.md §7.3) — it now drives the filter input.
61
55
 
62
56
  ### Added
63
57
 
64
- - `--sort <mode>` flag selecting the per-directory group order in the
65
- sidebar. `dirs-first` (the existing default) keeps directories above
66
- files; `files-first` flips it, surfacing top-level files like
67
- `README.md` before nested subtrees.
68
- - `/` opens a filter input at the bottom of the sidebar. Typed
69
- characters narrow the list with a fuzzy subsequence match on the
70
- file's relative path; matches are re-ranked by score (word-boundary
71
- and consecutive-character bonuses). Esc clears the query and closes
72
- the filter; Return closes it and focuses the reader on the highlighted
73
- match.
58
+ - `--sort <mode>` flag selecting the per-directory group order in the sidebar. `dirs-first` (the existing default) keeps directories above files; `files-first` flips it, surfacing top-level files like `README.md` before nested subtrees.
59
+ - `/` opens a filter input at the bottom of the sidebar. Typed characters narrow the list with a fuzzy subsequence match on the file's relative path; matches are re-ranked by score (word-boundary and consecutive-character bonuses). Esc clears the query and closes the filter; Return closes it and focuses the reader on the highlighted match.
74
60
 
75
61
  ## [0.2.1] — 2026-05-13
76
62
 
77
63
  ### Added
78
64
 
79
- - Footer hint row in the browser pane, generated from the keymap so the
80
- visible hints stay in sync with the bindings.
81
- - `ROADMAP.md` as the single index of planned work; footer/header chrome
82
- issues registered there.
65
+ - Footer hint row in the browser pane, generated from the keymap so the visible hints stay in sync with the bindings.
66
+ - `ROADMAP.md` as the single index of planned work; footer/header chrome issues registered there.
83
67
 
84
68
  ### Changed
85
69
 
86
70
  - Sidebar toggle rebound from `\` to `s`.
87
- - Help overlay: theme keys (`t` / `T` / `L`) now cycle while the overlay
88
- is open; the help hint label switches to `close` while the overlay is
89
- showing.
90
- - `DESIGN.md` §5.3 expanded with competitive-review gaps; keys reserved
91
- for history and bookmarks.
71
+ - Help overlay: theme keys (`t` / `T` / `L`) now cycle while the overlay is open; the help hint label switches to `close` while the overlay is showing.
72
+ - `DESIGN.md` §5.3 expanded with competitive-review gaps; keys reserved for history and bookmarks.
92
73
 
93
74
  ### Fixed
94
75
 
@@ -99,42 +80,17 @@ Beta release gates (DESIGN §10.2) closed.
99
80
 
100
81
  ### Added — themes
101
82
 
102
- - **33 bundled JSON themes** selectable via `--theme <id>`: `aura`, `ayu`,
103
- `carbonfox`, `catppuccin`, `catppuccin-frappe`, `catppuccin-macchiato`,
104
- `cobalt2`, `cursor`, `dracula`, `everforest`, `flexoki`, `github`,
105
- `gruvbox`, `kanagawa`, `lucent-orng`, `material`, `matrix`, `mercury`,
106
- `monokai`, `nightowl`, `nord`, `one-dark`, `opencode`, `orng`,
107
- `osaka-jade`, `palenight`, `rosepine`, `solarized`, `synthwave84`,
108
- `tokyonight`, `vercel`, `vesper`, `zenburn`. Token values sourced
109
- directly from each upstream's canonical palette via
110
- `dev/build-themes.ts`.
111
- - **`--tone dark|light`** flag to select the variant of a theme. Defaults
112
- to `dark`. Not all themes have a well-tuned light variant; quality is
113
- best-effort for those.
114
- - **JSON theme format**: each theme is a `{defs, theme: {dark, light}}`
115
- file validated against `schema/openmdr-theme.schema.json`. The format
116
- mirrors opencode's TUI theme shape; `defs` supports variable
117
- substitution.
118
- - **`dev/build-themes.ts`**: fetches themes from the opencode GitHub API,
119
- strips diff tokens, resolves variables, and regenerates `src/theme/loader.ts`.
120
- Supports `GITHUB_TOKEN` and `--dry-run`. Not shipped in the npm package.
121
- - **Runtime theme cycling**: press `t` / `T` to step forward / backward
122
- through all themes without restarting. Press `L` (shift+l) to toggle
123
- between dark and light tone. Works in both browser mode and single-file
124
- mode. Theme changes take effect immediately; syntax highlighting
125
- rebuilds with the new palette.
83
+ - **33 bundled JSON themes** selectable via `--theme <id>`: `aura`, `ayu`, `carbonfox`, `catppuccin`, `catppuccin-frappe`, `catppuccin-macchiato`, `cobalt2`, `cursor`, `dracula`, `everforest`, `flexoki`, `github`, `gruvbox`, `kanagawa`, `lucent-orng`, `material`, `matrix`, `mercury`, `monokai`, `nightowl`, `nord`, `one-dark`, `opencode`, `orng`, `osaka-jade`, `palenight`, `rosepine`, `solarized`, `synthwave84`, `tokyonight`, `vercel`, `vesper`, `zenburn`. Token values sourced directly from each upstream's canonical palette via `dev/build-themes.ts`.
84
+ - **`--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.
85
+ - **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.
86
+ - **`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.
87
+ - **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.
126
88
 
127
89
  ### Changed
128
90
 
129
- - Theme system replaced: derivation engine (`derive.ts`) and the 12
130
- TS-value themes removed in favour of the JSON format above. The
131
- `ColorPalette` interface is unchanged; existing consumers (`Browser`,
132
- `App`, `HelpOverlay`) required no changes beyond the re-render wiring.
133
- - `--theme` default changed from `dark` to `opencode` (the opencode
134
- project's own palette).
135
- - Effect Atoms (`@effect/atom-react`) wired for re-render signalling:
136
- `themeAtom` holds `{ id, tone }`; `RegistryProvider` wraps both render
137
- paths in `index.tsx`.
91
+ - Theme system replaced: derivation engine (`derive.ts`) and the 12 TS-value themes removed in favour of the JSON format above. The `ColorPalette` interface is unchanged; existing consumers (`Browser`, `App`, `HelpOverlay`) required no changes beyond the re-render wiring.
92
+ - `--theme` default changed from `dark` to `opencode` (the opencode project's own palette).
93
+ - Effect Atoms (`@effect/atom-react`) wired for re-render signalling: `themeAtom` holds `{ id, tone }`; `RegistryProvider` wraps both render paths in `index.tsx`.
138
94
 
139
95
  ## [0.1.0] — 2026-05-10
140
96
 
@@ -142,17 +98,13 @@ The v1 MVP, published as `@carlesandres/openmdr` on npm.
142
98
 
143
99
  ### Added — TUI
144
100
 
145
- - Two-pane browser: sidebar + reader, with a focus model, sidebar
146
- visibility toggle (`\`), and a `?` help overlay generated from the
147
- bindings array.
101
+ - Two-pane browser: sidebar + reader, with a focus model, sidebar visibility toggle (`\`), and a `?` help overlay generated from the bindings array.
148
102
  - Single-file mode when invoked on a file path.
149
- - Themes: dark + light as typed `ColorPalette` values, mutable singleton
150
- consumer, selected via `--theme`.
103
+ - Themes: dark + light as typed `ColorPalette` values, mutable singleton consumer, selected via `--theme`.
151
104
 
152
105
  ### Added — discovery
153
106
 
154
- - Recursive walk from the path argument (or cwd), `.md` / `.markdown` /
155
- `.mdx` only.
107
+ - Recursive walk from the path argument (or cwd), `.md` / `.markdown` / `.mdx` only.
156
108
  - Honors `.gitignore` (root + nested).
157
109
  - Hard-skips `node_modules`, `.git`, `.venv` (always, even with `--all`).
158
110
  - Does not follow symlinks.
@@ -163,49 +115,28 @@ The v1 MVP, published as `@carlesandres/openmdr` on npm.
163
115
 
164
116
  ### Added — keymap
165
117
 
166
- - `KeyBinding[]` with `id` / `description` / `keys` / `group` / optional
167
- `when` / `run`. Single source for both `useKeyboard` dispatch and the
168
- help overlay.
169
- - Bindings: `j`/`k` + arrows, shift-jump, page/half-page, `g`/`G`,
170
- `return`/`l`/`→`, `escape`/`h`/`←`, `[`/`]`, `tab`, `\`, `?`,
171
- `q`/`ctrl+c`. Reserved (not bound): `/`, `e`, `o`, `r`.
118
+ - `KeyBinding[]` with `id` / `description` / `keys` / `group` / optional `when` / `run`. Single source for both `useKeyboard` dispatch and the help overlay.
119
+ - 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`.
172
120
 
173
121
  ### Added — release infra
174
122
 
175
- - Distribution as `@carlesandres/openmdr` on npm (Bun runtime required
176
- on user's `PATH`, no compiled binary). Modeled on ghui.
177
- - `.github/workflows/ci.yml`: typecheck, lint, format:check, test,
178
- and `npm pack --dry-run` on every push and PR.
179
- - `.github/workflows/publish.yml`: `release: published` triggers
180
- `npm publish` via Trusted Publisher (OIDC, no token), with a
181
- tag-vs-`package.json`-version assertion before publish.
123
+ - Distribution as `@carlesandres/openmdr` on npm (Bun runtime required on user's `PATH`, no compiled binary). Modeled on ghui.
124
+ - `.github/workflows/ci.yml`: typecheck, lint, format:check, test, and `npm pack --dry-run` on every push and PR.
125
+ - `.github/workflows/publish.yml`: `release: published` triggers `npm publish` via Trusted Publisher (OIDC, no token), with a tag-vs-`package.json`-version assertion before publish.
182
126
  - `.oxfmtrc.json`: pinned formatting so `format:check` is meaningful.
183
127
 
184
128
  ### Added — docs
185
129
 
186
- - `DESIGN.md`: foundational design doc (13 sections; §3 non-goals,
187
- §5.3 deferred, §7.3 reserved keys, §10 v2 gates, §12 deferred
188
- patterns with triggers).
189
- - `README.md`, `CONTRIBUTING.md`, `AGENTS.md` (cookbook for AI
190
- assistants), `LICENSE` (MIT).
191
- - Issue templates (bug + feature + blank), PR template. All
192
- communication routes through GitHub issues.
130
+ - `DESIGN.md`: foundational design doc (13 sections; §3 non-goals, §5.3 deferred, §7.3 reserved keys, §10 v2 gates, §12 deferred patterns with triggers).
131
+ - `README.md`, `CONTRIBUTING.md`, `AGENTS.md` (cookbook for AI assistants), `LICENSE` (MIT).
132
+ - Issue templates (bug + feature + blank), PR template. All communication routes through GitHub issues.
193
133
 
194
134
  ### Added — tests
195
135
 
196
- - 75 headless tests via `testRender` + `captureCharFrame` +
197
- `mockInput`.
136
+ - 75 headless tests via `testRender` + `captureCharFrame` + `mockInput`.
198
137
 
199
138
  ### Out of scope (deliberate, see DESIGN.md §3 / §5.3)
200
139
 
201
- Search, stdin, URL fetching, cross-file link following, `$EDITOR`
202
- hand-off, syntax highlighting, persistent config, OS-appearance
203
- auto-detect, single-binary distribution (issue
204
- [#2](https://github.com/carlesandres/openmdr/issues/2)),
205
- Homebrew tap. All tracked.
206
-
207
- [Unreleased]: https://github.com/carlesandres/house/compare/v0.3.0...HEAD
208
- [0.3.0]: https://github.com/carlesandres/house/compare/v0.2.1...v0.3.0
209
- [0.2.1]: https://github.com/carlesandres/house/compare/v0.2.0...v0.2.1
210
- [0.2.0]: https://github.com/carlesandres/house/compare/v0.1.0...v0.2.0
211
- [0.1.0]: https://github.com/carlesandres/house/releases/tag/v0.1.0
140
+ 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.
141
+
142
+ [Unreleased]: https://github.com/carlesandres/house/compare/v0.4.1...HEAD [0.4.1]: https://github.com/carlesandres/house/compare/v0.4.0...v0.4.1 [0.4.0]: https://github.com/carlesandres/house/compare/v0.3.1...v0.4.0 [0.3.1]: https://github.com/carlesandres/house/compare/v0.3.0...v0.3.1 [0.3.0]: https://github.com/carlesandres/house/compare/v0.2.1...v0.3.0 [0.2.1]: https://github.com/carlesandres/house/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/carlesandres/house/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/carlesandres/house/releases/tag/v0.1.0
package/README.md CHANGED
@@ -1,10 +1,18 @@
1
- # house
1
+ # house
2
2
 
3
- A terminal markdown reader built on [opentui](https://github.com/anomalyco/opentui).
4
- Point it at a directory and navigate its `.md` files without leaving the terminal.
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.
5
4
 
6
5
  ![house demo](tape/house.gif)
7
6
 
7
+ ## Features
8
+
9
+ - **30+ themes** with dark and light tones
10
+ - **Responsive layout**
11
+ - **Fuzzy search** across nested folders (`.gitignore`-aware)
12
+ - **Command palette**
13
+ - **Keyboard-driven**
14
+ - **Open in browser**
15
+
8
16
  Requires [Bun](https://bun.sh) on `PATH`.
9
17
 
10
18
  ## Install
@@ -18,7 +26,7 @@ bun add -g @carlesandres/house
18
26
  ## Upgrade
19
27
 
20
28
  ```bash
21
- npm update -g @carlesandres/house
29
+ npm i -g @carlesandres/house
22
30
  # or
23
31
  bun add -g @carlesandres/house
24
32
  ```
@@ -37,6 +45,32 @@ house [options] <path>
37
45
  |------|---------|-------------|
38
46
  | `--theme <name>` | `opencode` | Starting theme (see list below) |
39
47
  | `--tone dark\|light` | `dark` | Starting tone |
48
+ | `--config-path` | — | Print the resolved config-file path and exit |
49
+
50
+ ## Configuration
51
+
52
+ house reads optional defaults from a TOML file:
53
+
54
+ ```
55
+ $XDG_CONFIG_HOME/house/config.toml (defaults to ~/.config/house/config.toml)
56
+ ```
57
+
58
+ Run `house --config-path` to print the exact location.
59
+
60
+ ```toml
61
+ # ~/.config/house/config.toml
62
+ theme = "tokyonight"
63
+ tone = "dark"
64
+ ```
65
+
66
+ Precedence, highest to lowest:
67
+
68
+ 1. CLI flags (`--theme`, `--tone`)
69
+ 2. Env vars (`HOUSE_THEME`, `HOUSE_TONE`)
70
+ 3. Config file
71
+ 4. Built-in defaults (`opencode` / `dark`)
72
+
73
+ 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.
40
74
 
41
75
  ## Keys
42
76
 
@@ -78,15 +112,9 @@ house [options] <path>
78
112
 
79
113
  ## Themes
80
114
 
81
- 33 built-in themes, all sourced from the
82
- [opencode](https://github.com/anomalyco/opencode) TUI palette:
115
+ 33 built-in themes, all sourced from the [opencode](https://github.com/anomalyco/opencode) TUI palette:
83
116
 
84
- `aura` · `ayu` · `carbonfox` · `catppuccin` · `catppuccin-frappe` ·
85
- `catppuccin-macchiato` · `cobalt2` · `cursor` · `dracula` · `everforest` ·
86
- `flexoki` · `github` · `gruvbox` · `kanagawa` · `lucent-orng` · `material` ·
87
- `matrix` · `mercury` · `monokai` · `nightowl` · `nord` · `one-dark` ·
88
- `opencode` · `orng` · `osaka-jade` · `palenight` · `rosepine` · `solarized` ·
89
- `synthwave84` · `tokyonight` · `vercel` · `vesper` · `zenburn`
117
+ `aura` · `ayu` · `carbonfox` · `catppuccin` · `catppuccin-frappe` · `catppuccin-macchiato` · `cobalt2` · `cursor` · `dracula` · `everforest` · `flexoki` · `github` · `gruvbox` · `kanagawa` · `lucent-orng` · `material` · `matrix` · `mercury` · `monokai` · `nightowl` · `nord` · `one-dark` · `opencode` · `orng` · `osaka-jade` · `palenight` · `rosepine` · `solarized` · `synthwave84` · `tokyonight` · `vercel` · `vesper` · `zenburn`
90
118
 
91
119
  Each theme supports dark and light tones. Cycle with `t` / `T`; toggle tone with `L`.
92
120
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carlesandres/house",
3
- "version": "0.3.1",
3
+ "version": "0.4.1",
4
4
  "description": "TUI-first markdown reader on opentui",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -45,7 +45,8 @@
45
45
  "format:check": "oxfmt --check src/",
46
46
  "test": "bun test",
47
47
  "build:themes": "bun run dev/build-themes.ts",
48
- "repro:pty-codeblocks": "bun run dev/repro-pty-codeblocks.ts"
48
+ "repro:pty-codeblocks": "bun run dev/repro-pty-codeblocks.ts",
49
+ "prepare": "git config core.hooksPath .githooks 2>/dev/null || true"
49
50
  },
50
51
  "dependencies": {
51
52
  "@effect/atom-react": "4.0.0-beta.59",