@carlesandres/house 0.4.13 → 0.5.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 +32 -2
- package/README.md +10 -8
- package/dist/bin.js +92 -0
- package/dist/index.js +10005 -0
- package/package.json +15 -3
- package/src/Browser.tsx +0 -1210
- package/src/CommandPalette.tsx +0 -214
- package/src/Footer.tsx +0 -258
- package/src/Header.tsx +0 -71
- package/src/PromptRow.tsx +0 -51
- package/src/Spinner.tsx +0 -39
- package/src/StatusIndicator.tsx +0 -55
- package/src/StatusPopover.tsx +0 -166
- package/src/brand.ts +0 -7
- package/src/cli/argv.ts +0 -179
- package/src/commands/buildCommands.ts +0 -98
- package/src/commands/paletteOnlyCommands.ts +0 -27
- package/src/commands/score.ts +0 -78
- package/src/commands/types.ts +0 -26
- package/src/config/load.ts +0 -381
- package/src/config/save.ts +0 -95
- package/src/discovery/filter.ts +0 -148
- package/src/discovery/show.ts +0 -48
- package/src/discovery/walk.ts +0 -209
- package/src/index.tsx +0 -464
- package/src/io/clipboard.ts +0 -53
- package/src/io/editor.ts +0 -162
- package/src/io/readFile.ts +0 -14
- package/src/keymap/browser.ts +0 -335
- package/src/keymap/displayKey.ts +0 -17
- package/src/keymap/keymap.ts +0 -95
- package/src/layout/resolve.ts +0 -52
- package/src/layout/sidebarEmptyState.ts +0 -7
- package/src/layout/sidebarRow.ts +0 -69
- package/src/markdown/frontmatter.ts +0 -62
- package/src/serve/css.ts +0 -120
- package/src/serve/openBrowser.ts +0 -19
- package/src/serve/render.ts +0 -56
- package/src/serve/server.ts +0 -166
- package/src/theme/atom.ts +0 -23
- package/src/theme/colors.ts +0 -86
- package/src/theme/loader.ts +0 -110
- package/src/theme/registry.ts +0 -12
- package/src/theme/resolve.ts +0 -168
- package/src/theme/themes/aura.json +0 -58
- package/src/theme/themes/ayu.json +0 -69
- package/src/theme/themes/carbonfox.json +0 -201
- package/src/theme/themes/catppuccin-frappe.json +0 -186
- package/src/theme/themes/catppuccin-macchiato.json +0 -186
- package/src/theme/themes/catppuccin.json +0 -212
- package/src/theme/themes/cobalt2.json +0 -181
- package/src/theme/themes/cursor.json +0 -202
- package/src/theme/themes/dracula.json +0 -172
- package/src/theme/themes/everforest.json +0 -194
- package/src/theme/themes/flexoki.json +0 -190
- package/src/theme/themes/github.json +0 -186
- package/src/theme/themes/gruvbox.json +0 -195
- package/src/theme/themes/kanagawa.json +0 -180
- package/src/theme/themes/lucent-orng.json +0 -186
- package/src/theme/themes/material.json +0 -188
- package/src/theme/themes/matrix.json +0 -180
- package/src/theme/themes/mercury.json +0 -198
- package/src/theme/themes/monokai.json +0 -174
- package/src/theme/themes/nightowl.json +0 -174
- package/src/theme/themes/nord.json +0 -176
- package/src/theme/themes/one-dark.json +0 -184
- package/src/theme/themes/opencode.json +0 -198
- package/src/theme/themes/orng.json +0 -202
- package/src/theme/themes/osaka-jade.json +0 -193
- package/src/theme/themes/palenight.json +0 -175
- package/src/theme/themes/rosepine.json +0 -187
- package/src/theme/themes/solarized.json +0 -180
- package/src/theme/themes/synthwave84.json +0 -179
- package/src/theme/themes/tokyonight.json +0 -196
- package/src/theme/themes/vercel.json +0 -198
- package/src/theme/themes/vesper.json +0 -171
- package/src/theme/themes/zenburn.json +0 -176
- package/src/theme/types.ts +0 -115
- package/src/tips.ts +0 -88
- package/src/ui/middleTruncate.ts +0 -27
- package/src/update/cache.ts +0 -77
- package/src/update/check.ts +0 -165
- package/src/update/compare.ts +0 -41
- package/src/update/notice.ts +0 -29
- package/src/update/runtime.ts +0 -48
- package/src/update/useUpdateNotice.ts +0 -24
package/CHANGELOG.md
CHANGED
|
@@ -2,10 +2,38 @@
|
|
|
2
2
|
|
|
3
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.
|
|
4
4
|
|
|
5
|
-
The publish workflow (`.github/workflows/publish.yml`) runs on the `release: published` event,
|
|
5
|
+
The publish workflow (`.github/workflows/publish.yml`) runs on the `release: published` event, builds per-platform binaries, publishes platform packages then the main package via Trusted Publisher, and lets GitHub auto-generate release notes from commit subjects; this file is the curated, narrative version.
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.5.0] — 2026-07-23
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Added a lightweight `src/standalone.ts` CLI entrypoint for fast `--help` / `--version` exits and future compiled-binary builds.
|
|
14
|
+
- Added `bun run build:standalone` to compile and package per-platform standalone binaries.
|
|
15
|
+
- Added `bun run build:npm-packages` to prepare per-platform binary npm packages.
|
|
16
|
+
- Switched the published `house` bin to a small Node shim that loads the matching optional binary package.
|
|
17
|
+
- Added `bun run build:cli` + `prepack` to publish a bundled `dist/` package.
|
|
18
|
+
- Release publish now builds binaries on native runners (macOS arm64/x64, Linux arm64/x64), publishes the four platform npm packages, then the main package, and attaches `house-*.tar.gz` archives to the GitHub Release.
|
|
19
|
+
- Added `bun run version:set X.Y.Z` and release-time validation to keep the main and platform package versions in sync.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- Publish credentials now use least privilege: build jobs are read-only, while only the final publish job can write release assets or request an npm OIDC token.
|
|
24
|
+
- Manual publish dispatch now rejects refs other than `main` before building or publishing artifacts.
|
|
25
|
+
- Published package `files` now lists only `dist/bin.js` and `dist/index.js`, so standalone/npm binary build outputs under `dist/` are not packed into the main tarball.
|
|
26
|
+
- `build:cli` no longer wipes all of `dist/` (preserves `dist/release` and `dist/npm` during `prepack`).
|
|
27
|
+
|
|
28
|
+
## [0.4.14] — 2026-06-15
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
|
|
32
|
+
- Browser header now shows the active discovery root, and empty states reuse the same canonical root label for consistent launch context.
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- Footer hints are now limited to essential app controls, leaving other actions discoverable through the command palette.
|
|
36
|
+
|
|
9
37
|
## [0.4.13] — 2026-06-15
|
|
10
38
|
|
|
11
39
|
### Added
|
|
@@ -333,7 +361,9 @@ The v1 MVP, published as `@carlesandres/openmdr` on npm.
|
|
|
333
361
|
|
|
334
362
|
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.
|
|
335
363
|
|
|
336
|
-
[Unreleased]: https://github.com/carlesandres/house/compare/v0.
|
|
364
|
+
[Unreleased]: https://github.com/carlesandres/house/compare/v0.5.0...HEAD
|
|
365
|
+
[0.5.0]: https://github.com/carlesandres/house/compare/v0.4.14...v0.5.0
|
|
366
|
+
[0.4.14]: https://github.com/carlesandres/house/compare/v0.4.13...v0.4.14
|
|
337
367
|
[0.4.13]: https://github.com/carlesandres/house/compare/v0.4.12...v0.4.13
|
|
338
368
|
[0.4.12]: https://github.com/carlesandres/house/compare/v0.4.11...v0.4.12
|
|
339
369
|
[0.4.11]: https://github.com/carlesandres/house/compare/v0.4.10...v0.4.11
|
package/README.md
CHANGED
|
@@ -14,29 +14,29 @@ A terminal markdown reader and navigator — themable and configurable, with a k
|
|
|
14
14
|
- **Open in browser**
|
|
15
15
|
- **Open in `$EDITOR`**
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Install with npm or Bun. Prebuilt binaries cover macOS and Linux (arm64/x64); no Bun required to *run* on those platforms.
|
|
18
18
|
|
|
19
19
|
## Runtime requirements
|
|
20
20
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
21
|
+
- **Run:** a prebuilt binary for your platform (pulled in automatically on install). No Bun needed at runtime on supported platforms.
|
|
22
|
+
- **Install:** Node/npm or Bun both work. Prefer `npm install -g` for the normal end-user path.
|
|
23
23
|
|
|
24
|
-
Supported on macOS and Linux
|
|
24
|
+
Supported on macOS and Linux (arm64/x64, glibc Linux). Windows is unsupported and unvalidated (see [#129](https://github.com/carlesandres/house/issues/129)).
|
|
25
25
|
|
|
26
26
|
## Install
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
bun add -g @carlesandres/house
|
|
30
|
-
# npm also works when your local Node/npm combination accepts the dependency graph:
|
|
31
29
|
npm install -g @carlesandres/house
|
|
30
|
+
# or:
|
|
31
|
+
bun add -g @carlesandres/house
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
## Upgrade
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
bun add -g @carlesandres/house
|
|
38
|
-
# npm also works when your local Node/npm combination accepts the dependency graph:
|
|
39
37
|
npm i -g @carlesandres/house
|
|
38
|
+
# or:
|
|
39
|
+
bun add -g @carlesandres/house
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
## Usage
|
|
@@ -119,6 +119,8 @@ The file is optional — a missing file is fine. Invalid keys, unknown themes, o
|
|
|
119
119
|
|
|
120
120
|
## Keys
|
|
121
121
|
|
|
122
|
+
The footer only shows essential app controls (`W`, `q`, `tab`, `s`, `ctrl+p`) to stay quiet. Use the command palette for the rest.
|
|
123
|
+
|
|
122
124
|
### Global
|
|
123
125
|
|
|
124
126
|
| Key | Action |
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawnSync } from "node:child_process"
|
|
3
|
+
import { realpathSync } from "node:fs"
|
|
4
|
+
import { createRequire } from "node:module"
|
|
5
|
+
import { fileURLToPath } from "node:url"
|
|
6
|
+
|
|
7
|
+
const require = createRequire(import.meta.url)
|
|
8
|
+
const pkg = require("../package.json")
|
|
9
|
+
|
|
10
|
+
const supportedTargets = {
|
|
11
|
+
darwin: new Set(["arm64", "x64"]),
|
|
12
|
+
linux: new Set(["arm64", "x64"]),
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const mainBinaryName = "house"
|
|
16
|
+
const fastExitFlags = new Set(["--help", "-h", "--version", "-v", "--config-path"])
|
|
17
|
+
|
|
18
|
+
export const detectLinuxLibc = () => {
|
|
19
|
+
if (process.platform !== "linux") return undefined
|
|
20
|
+
const report = process.report?.getReport?.()
|
|
21
|
+
const header = report?.header
|
|
22
|
+
return typeof header?.glibcVersionRuntime === "string" ? "glibc" : "musl"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const binaryPackageNameFor = (
|
|
26
|
+
platform,
|
|
27
|
+
arch,
|
|
28
|
+
libc = platform === "linux" ? detectLinuxLibc() : undefined,
|
|
29
|
+
) => {
|
|
30
|
+
if (platform in supportedTargets && supportedTargets[platform].has(arch)) {
|
|
31
|
+
if (platform === "linux" && libc !== "glibc") return undefined
|
|
32
|
+
return `${pkg.name}-${platform}-${arch}`
|
|
33
|
+
}
|
|
34
|
+
return undefined
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const resolveBinaryPath = (packageName, resolve = require.resolve) =>
|
|
38
|
+
resolve(`${packageName}/bin/${mainBinaryName}`)
|
|
39
|
+
|
|
40
|
+
export const shouldCaptureOutput = (argv) => argv.some((arg) => fastExitFlags.has(arg))
|
|
41
|
+
|
|
42
|
+
export const main = (
|
|
43
|
+
argv = process.argv.slice(2),
|
|
44
|
+
platform = process.platform,
|
|
45
|
+
arch = process.arch,
|
|
46
|
+
libc = detectLinuxLibc(),
|
|
47
|
+
) => {
|
|
48
|
+
if (argv.includes("--version") || argv.includes("-v")) {
|
|
49
|
+
console.log(pkg.version)
|
|
50
|
+
process.exit(0)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const packageName = binaryPackageNameFor(platform, arch, libc)
|
|
54
|
+
if (packageName === undefined) {
|
|
55
|
+
console.error(
|
|
56
|
+
`house: no prebuilt binary package for ${platform}-${arch}${platform === "linux" ? `-${libc ?? "unknown-libc"}` : ""}`,
|
|
57
|
+
)
|
|
58
|
+
process.exit(1)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
let binaryPath
|
|
62
|
+
try {
|
|
63
|
+
binaryPath = resolveBinaryPath(packageName)
|
|
64
|
+
} catch {
|
|
65
|
+
console.error(
|
|
66
|
+
`house: missing optional dependency ${packageName}; reinstall house to fetch the matching binary package`,
|
|
67
|
+
)
|
|
68
|
+
process.exit(1)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const captureOutput = shouldCaptureOutput(argv)
|
|
72
|
+
const result = spawnSync(binaryPath, argv, {
|
|
73
|
+
stdio: captureOutput ? ["inherit", "pipe", "pipe"] : "inherit",
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
if (captureOutput) {
|
|
77
|
+
if (result.stdout !== null) process.stdout.write(result.stdout)
|
|
78
|
+
if (result.stderr !== null) process.stderr.write(result.stderr)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (result.error !== undefined) {
|
|
82
|
+
console.error(`house: failed to launch ${packageName}: ${result.error.message}`)
|
|
83
|
+
process.exit(1)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
process.exit(result.status ?? 1)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const isMain =
|
|
90
|
+
process.argv[1] !== undefined && realpathSync(process.argv[1]) === fileURLToPath(import.meta.url)
|
|
91
|
+
|
|
92
|
+
if (isMain) main()
|