The shell is about to stop bundling modules (plan in the discussion; separate PR). Once every module arrives through the admin page's catalog, the folder in git is the install — and a booth Mac or Windows PC has no compiler. Today the LTC and SPL helpers only exist because the macOS app build compiles and signs them into the bundle; a catalog install gets source and no tool, which NA's SPL module already shows ("spawn spl-capture ENOENT"), and AB's Xcode tools are broken besides.
What — rules only, no module changes
Rule 3 ("everything the module does runs inside the module") now ends: a native helper — anything that is not JavaScript — ships prebuilt inside the module folder, for Apple silicon macOS and 64-bit Windows; nothing is ever compiled on the machine running ProdDash.
"The shape of a module" shows the layout: bin/<name>-macos-arm64, bin/<name>-win-x64.exe, optional bin/<name>-macos-x86_64, with the source and the script that rebuilds every binary under native/.
New section "Native helpers" gives the contract: pick the binary by process.platform/process.arch at runtime; when there is none, the feature reports itself off in health() and the tile status and everything else keeps working — never build, never search the machine, never ask the operator to install anything; one command-line contract, any language per platform; bump the module version when a binary changes; optimised builds, no debug symbols, a few MB at most (the catalog archive is capped at 80 MB); sign the macOS binary (Apple silicon refuses unsigned code), Windows needs nothing; permissions still come from the launcher. A one-platform helper is a deliberate exception, said in the README and the health line.
CLAUDE.md carries the one-line version of the rule.
Timers (ltc-capture) and SPL Meter (spl-capture) are the two modules this applies to; bringing them to the rule is module work for their own PRs.
## Why
The shell is about to stop bundling modules (plan in the discussion; separate PR). Once every module arrives through the admin page's catalog, the folder in git *is* the install — and a booth Mac or Windows PC has no compiler. Today the LTC and SPL helpers only exist because the macOS app build compiles and signs them into the bundle; a catalog install gets source and no tool, which NA's SPL module already shows ("spawn spl-capture ENOENT"), and AB's Xcode tools are broken besides.
## What — rules only, no module changes
- **Rule 3** ("everything the module does runs inside the module") now ends: a native helper — anything that is not JavaScript — ships **prebuilt** inside the module folder, for **Apple silicon macOS and 64-bit Windows**; nothing is ever compiled on the machine running ProdDash.
- **"The shape of a module"** shows the layout: `bin/<name>-macos-arm64`, `bin/<name>-win-x64.exe`, optional `bin/<name>-macos-x86_64`, with the source and the script that rebuilds every binary under `native/`.
- **New section "Native helpers"** gives the contract: pick the binary by `process.platform`/`process.arch` at runtime; when there is none, the feature reports itself off in `health()` and the tile status and everything else keeps working — never build, never search the machine, never ask the operator to install anything; one command-line contract, any language per platform; bump the module version when a binary changes; optimised builds, no debug symbols, a few MB at most (the catalog archive is capped at 80 MB); sign the macOS binary (Apple silicon refuses unsigned code), Windows needs nothing; permissions still come from the launcher. A one-platform helper is a deliberate exception, said in the README and the health line.
- **CLAUDE.md** carries the one-line version of the rule.
Timers (`ltc-capture`) and SPL Meter (`spl-capture`) are the two modules this applies to; bringing them to the rule is module work for their own PRs.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
The machine running ProdDash is a packaged app or the Windows bundle plus
modules from the admin page's catalog. It has no compiler, and the catalog
delivers exactly the folder that is in the repo — so a module's native
program (audio capture, a decoder) ships already built, inside the module
folder, one file per platform: bin/<name>-macos-arm64 and
bin/<name>-win-x64.exe are required, Intel macOS optional, source and the
script that rebuilds every binary under native/.
The guide's rule 3 now says so, "The shape of a module" shows the layout,
and a new "Native helpers" section gives the contract: pick the binary by
platform at runtime, report the feature off when there is none — never
build, never search the machine, never ask the operator to install
anything — one command-line contract in any language per platform, bump
the version when a binary changes, keep them lean, sign the macOS one.
CLAUDE.md carries the one-line version. Rules only: no module changes here.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
michael
merged commit c37575f662 into main2026-09-29 16:45:38 -04:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why
The shell is about to stop bundling modules (plan in the discussion; separate PR). Once every module arrives through the admin page's catalog, the folder in git is the install — and a booth Mac or Windows PC has no compiler. Today the LTC and SPL helpers only exist because the macOS app build compiles and signs them into the bundle; a catalog install gets source and no tool, which NA's SPL module already shows ("spawn spl-capture ENOENT"), and AB's Xcode tools are broken besides.
What — rules only, no module changes
bin/<name>-macos-arm64,bin/<name>-win-x64.exe, optionalbin/<name>-macos-x86_64, with the source and the script that rebuilds every binary undernative/.process.platform/process.archat runtime; when there is none, the feature reports itself off inhealth()and the tile status and everything else keeps working — never build, never search the machine, never ask the operator to install anything; one command-line contract, any language per platform; bump the module version when a binary changes; optimised builds, no debug symbols, a few MB at most (the catalog archive is capped at 80 MB); sign the macOS binary (Apple silicon refuses unsigned code), Windows needs nothing; permissions still come from the launcher. A one-platform helper is a deliberate exception, said in the README and the health line.Timers (
ltc-capture) and SPL Meter (spl-capture) are the two modules this applies to; bringing them to the rule is module work for their own PRs.🤖 Generated with Claude Code