Skip to content

Add release DMG packaging#71

Open
jmcte wants to merge 3 commits into
mainfrom
codex/issue-45-dmg-install
Open

Add release DMG packaging#71
jmcte wants to merge 3 commits into
mainfrom
codex/issue-45-dmg-install

Conversation

@jmcte
Copy link
Copy Markdown
Contributor

@jmcte jmcte commented May 23, 2026

Summary

  • Closes Roadmap: manual / DMG install path for non-Homebrew users #45 by adding scripts/package-release-dmg.sh to produce dist/apw-macos-<tag>.dmg and a matching .sha256.
  • Wires the release workflow to build, checksum-validate, and upload the DMG alongside the existing tarball.
  • Documents the manual DMG install path with checksum verification, Gatekeeper expectations, and first-use setup.
  • Keeps the mounted DMG available until apw app install completes so the CLI can discover APW.app before copying it into the per-user runtime directory.
  • Adds a shell-safe DMG packaging regression test with a fake hdiutil, including assertions for the staged bin/apw, APW.app, /Applications symlink payload, and the documented install-before-detach ordering.

Verification

  • bash scripts/test-package-release-dmg.sh - passed
  • bash -n scripts/test-package-release-dmg.sh scripts/package-release-dmg.sh - passed
  • bash scripts/ci/run-fast-checks.sh - passed
  • git diff --check - passed

Notes

  • The workflow performs a DMG mount smoke on the macOS release runner. A clean-host Gatekeeper smoke still requires an actual signed/notarized release artifact and hardware/runtime access.

@jmcte jmcte requested a review from pheidon as a code owner May 23, 2026 22:27
@athena-omt athena-omt added area:infra Infrastructure, CI, release, governance, scripts, or repo setup. lane:hephaestus Hephaestus build/repo-ops lane. review:athena Athena review governance requested. risk:medium Medium-risk change; normal care required. state:waiting-checks Waiting for CI/check status to settle. status:needs-review PR is ready for Athena review. labels May 23, 2026
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c362bbaf46

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/INSTALLATION.md Outdated
hdiutil attach apw-macos-vX.Y.Z.dmg
cp -R "/Volumes/APW vX.Y.Z/APW.app" /Applications/APW.app
install -m 0755 "/Volumes/APW vX.Y.Z/bin/apw" /usr/local/bin/apw
hdiutil detach "/Volumes/APW vX.Y.Z"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep DMG mounted until apw app install completes

The new DMG install flow detaches "/Volumes/APW vX.Y.Z" before running apw app install, but native_app::resolve_packaged_native_app_bundle only searches CWD and executable-adjacent locations (for example APW.app beside apw or under ../libexec), not /Applications/APW.app. In this documented sequence, users who installed apw to /usr/local/bin will typically hit “Packaged APW app bundle not found” on first-use setup.

Useful? React with 👍 / 👎.

Comment thread scripts/test-package-release-dmg.sh Outdated
Comment on lines +30 to +33
printf '#!/usr/bin/env bash\necho apw\n' > "$ROOT_DIR/rust/target/release/apw"
chmod +x "$ROOT_DIR/rust/target/release/apw"
printf '#!/usr/bin/env bash\necho APW\n' > "$ROOT_DIR/native-app/dist/APW.app/Contents/MacOS/APW"
chmod +x "$ROOT_DIR/native-app/dist/APW.app/Contents/MacOS/APW"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore overwritten build artifacts in DMG packaging test

This test unconditionally overwrites rust/target/release/apw and the app executable with fake scripts and never restores prior contents, so running fast checks on a developer machine can silently replace real release artifacts and cause later packaging/manual verification to use dummy binaries until a rebuild. Please isolate test fixtures or back up/restore these paths.

Useful? React with 👍 / 👎.

@pheidon pheidon added state:needs-repair PR needs repair before review can proceed. codex:P1 Codex Connector P1 finding. codex:P2 Codex Connector P2 finding. priority:P1 Codex Connector P1; blocks execution until Athena and Ares validate. priority:P2 Codex Connector P2; blocks execution until Athena validates. risk:high High-risk change; validation required. and removed state:waiting-checks Waiting for CI/check status to settle. labels May 24, 2026
@athena-omt athena-omt added the state:waiting-checks Waiting for CI/check status to settle. label May 24, 2026
@jmcte jmcte removed state:waiting-checks Waiting for CI/check status to settle. state:needs-repair PR needs repair before review can proceed. labels May 24, 2026
pheidon
pheidon previously approved these changes May 24, 2026
Copy link
Copy Markdown
Contributor

@pheidon pheidon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved from Pheidon sweep. DMG packaging adds focused packaging/test scripts and release workflow wiring; required checks are green.

@hephaestus-omt hephaestus-omt enabled auto-merge (squash) May 24, 2026 19:16
@athena-omt athena-omt added the state:waiting-checks Waiting for CI/check status to settle. label May 24, 2026
pheidon
pheidon previously approved these changes May 24, 2026
Copy link
Copy Markdown
Contributor

@pheidon pheidon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pheidon approval after Hephaestus repair. Verified worker result: release workflow conflict resolved by preserving both DMG checksum and universal binary validation; conflict marker scan, universal release tests, verify-universal test, and fast checks passed. Auto-merge is enabled and GitHub checks are still running.

jmcte added 3 commits May 24, 2026 20:02
Close #45 by producing a DMG and checksum in the release workflow, documenting the manual install path, and adding a shell-safe packaging regression test.

Verification: test-package-release-dmg, fast checks, release workflow YAML parse, shell syntax checks, and git diff --check.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:infra Infrastructure, CI, release, governance, scripts, or repo setup. codex:P1 Codex Connector P1 finding. codex:P2 Codex Connector P2 finding. lane:hephaestus Hephaestus build/repo-ops lane. priority:P1 Codex Connector P1; blocks execution until Athena and Ares validate. priority:P2 Codex Connector P2; blocks execution until Athena validates. review:athena Athena review governance requested. risk:high High-risk change; validation required. risk:medium Medium-risk change; normal care required. state:waiting-checks Waiting for CI/check status to settle. status:needs-review PR is ready for Athena review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Roadmap: manual / DMG install path for non-Homebrew users

3 participants