Skip to content

Bare hub archives for Windows and macOS - #34

Merged
TechnicallyComputers merged 1 commit into
mainfrom
feat/bare-hub-archives
Oct 13, 2026
Merged

TechnicallyComputers merged 1 commit into
mainfrom
feat/bare-hub-archives

Conversation

@TechnicallyComputers

Copy link
Copy Markdown
Member

Why

Only Linux publishes a bare (non-installer) hub archive, so a tool that builds a title app for Windows or macOS (n64lle tools/build_app.sh --platform) has no hub to fetch: hub-manifest.json says "installer only" for those platforms. With these archives, build_app --platform all can fetch the pinned hub for every platform with no flags.

What

  • scripts/package_bare_hub.py: archives the flat hub prefix build-local writes (zip for Windows, tar.gz for macOS), never including the runner. It extracts the archive to a clean directory and requires the archived hub to run and report this release's version/commit, Direct mode, the runner lookup, a title-app mode and the Update page, and to refuse --run-core without --rom (exit 2). It writes the same manifest entry as the Linux packager.
  • build-local.sh / .ps1: --release-version / -ReleaseVersion, so the hub reports the release.
  • release.yml: Windows and macOS jobs package and upload a <platform>-hub artifact; publish expects all four platforms (linux-x86_64, windows-x86_64, macos-arm64, macos-x86_64).
  • hub_manifest.py: only linux-arm64 stays unavailable.
  • docs/RELEASES.md describes the new assets.

Verification, and what is not

  • Run on Linux only: the packager (both formats) against a stand-in prefix with a scripted fake hub, the version-mismatch gate, hub_manifest.py merging the entries, the workflow parsing as YAML.
  • Not run: any Windows or macOS build. The new steps rebuild the hub a second time per job (adds CI time). The first release run on each OS is the first real test.
  • Open question (macOS): the flat prefix keeps Homebrew dylib install names (the title-app kit's bundle_dylibs.sh copies them into an app), so the archive supports building a native .app on a Mac; it is not confirmed as a runnable portable layout.

🤖 Generated with Claude Code

Until now only Linux published a bare (non-installer) hub archive, so a tool
building a title app for Windows or macOS (n64lle tools/build_app.sh
--platform) had no hub to fetch and the manifest said "installer only".

- scripts/package_bare_hub.py archives the flat hub prefix build-local writes
  (zip for Windows, tar.gz for macOS), never including the runner, and gates
  it: the archived hub is extracted to a clean directory and must run and
  report this release's version/commit, Direct mode, the runner lookup, a
  title-app mode and the Update page, and refuse --run-core without --rom.
  It writes the same manifest entry the Linux packager does.
- build-local.sh/.ps1 take --release-version / -ReleaseVersion so the hub
  reports the release.
- release.yml: the Windows and macOS jobs package and upload a <platform>-hub
  artifact; publish expects all four platforms.
- hub_manifest.py: only linux-arm64 stays unavailable.
- docs/RELEASES.md describes the new assets.

Verified on Linux only, against a stand-in prefix. The first release is the
first real run on Windows and macOS.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@TechnicallyComputers
TechnicallyComputers merged commit 297e84e into main Oct 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant