chore(release): murmur installs as one npm command - #142
Merged
Conversation
`npm i -g murmur-radio` (bare "murmur" is a squatted murmur3 lib) now yields a working `murmur` bin. Node refuses to type-strip sources under node_modules, so prepack compiles src/ to dist/ (tsc with rewritten .ts specifiers); dev keeps running src/ directly. The tarball whitelists dist, assets, and the tui client sources — and since a global install ships no tui/node_modules (bun's auto-install is disabled under a node_modules ancestor), the engine runs `bun install` once at first TUI launch, falling back to the plain host when that fetch fails. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The recovery lines said `make setup`, which only exists in a checkout; an npm-installed user has no Makefile. `murmur --setup` is the same conversation and works from both worlds (peer review, codex). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes murmur installable as a one-command CLI:
npm install -g murmur-radio→murmur. No publish performed — the tarball is verified end-to-end and the publish action is left to the maintainer (npm publishfrom a clean checkout).Relates to specs/spec10/10-tui.md (the packaged TUI launch path) and specs/spec03/03-03-guide-harness.md (the setup pointer wording).
What changed
murmur-radio. Baremurmuris taken on the registry (a murmur3 hashing lib, last touched years ago).murmur-radiois free, unscoped (no org to create), says what it is, and the bin inside it is still plainmurmur.murmur-cliwas the runner-up — also free, but says less.dist/, dev stays build-free. The first attempt shipped TS directly on Node's native type-stripping — Node hard-refuses to strip anything undernode_modules(ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING, no flag lifts it). Soprepackcompilessrc/→dist/(tsconfig.build.json,rewriteRelativeImportExtensions) and copies the one.mdprompt tsc won't. Dev and CI still runsrc/directly;dist/is gitignored and exists only inside the tarball.bin:murmur→dist/main.js(shebang carried over fromsrc/main.tsby tsc).fileswhitelist:dist,assets, the TUI client sources (tui/src,tui/assets,tui/package.json,tui/bun.lock,tui/tsconfig.json), plussrc/ipc.ts+src/activity.ts— the two files the TUI imports across the package boundary (Bun runs TS fine; the engine itself uses their compiled copies indist/). specs/scratch/test/scripts/.dev never enter the tarball (62 → 64 files total, pinned bytest/package.test.ts).engines:node >= 24(already declared; now load-bearing for the compiled output's ES2024 target).ensureTuiDeps): a global install ships notui/node_modules, and Bun's auto-install is disabled under anode_modulesancestor — so the engine runsbun installonce at first TUI launch. A failed fetch (offline, read-only global dir) falls back to the plain host with one notice and clears the half-written install so the next boot retries.make setup, which only exists in a checkout — an npm-installed user has no Makefile. They now saymurmur --setup.Acceptance (the no-publish bar)
npm pack→ clean prefixnpm i -g murmur-radio-0.1.0.tgz→murmur --brain stub --voice stub --max-segments 1:ensureTuiDepspopulatedtui/node_modulesvia bun, the full TUI came up, the stub segment aired ("It's late, and it's just you and me on the air tonight…"), and the bounded run exited 0 on its own.Brew formula — evaluated, not done
npm is the better first channel. A brew formula for a Node CLI must vendor every npm dep at build time (
std_npm_args), pin anodedependency, and rebuildnode-web-audio-api's native bindings per platform — ongoing maintenance per release, for the same audience that already has npm. If a brew channel is ever wanted,brew install node && npm i -g murmur-radiois the honest tap-less answer; a real formula only pays off once there are non-Node users to reach.Peer review
Peer review (codex gpt-5.6-sol): 2 findings, 2 applied, 0 dismissed — (P1) failed TUI-deps install left the radio headless instead of plain (now falls back + regression tests), (P2)
make setuppointers useless outside a checkout (nowmurmur --setup).AI coding brief
npm i -g→murmur): pick a free name (baremurmurassumed taken), add bin/files/engines, decide ship-TS-vs-build, keep external binaries out, evaluate brew in the PR body, and verify vianpm pack+ clean-dir install + a stub bounded run — no actual publish. Why: distribution — a user should not need a checkout, pnpm, or the Makefile to start the radio.node_modulesunconditionally. A prompt that asks for anpm pack+ install smoke before choosing the publish shape would have saved the first round trip; the acceptance bar in the request was what caught it, so keeping "install the tarball in a clean prefix and run it" as a hard criterion is worth repeating verbatim in future packaging tasks.🤖 Generated with Claude Code