Cross-platform support: platform-aware update pipeline, POSIX updater ops, and native macOS app build - #10159
Open
jucardi wants to merge 13 commits into
Open
Cross-platform support: platform-aware update pipeline, POSIX updater ops, and native macOS app build#10159jucardi wants to merge 13 commits into
jucardi wants to merge 13 commits into
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Closes final-review findings: documents the pob:// URL delivery limitation (CLI-arg delivery works, Apple-Event delivery to a running instance does not), bundle-internal runtime state discarded on rebuild, the as-built deviations from the design doc, and the pre-upstream-PR checklist for SimpleGraphic feat/macos-build.
# Conflicts: # manifest.xml # src/Classes/Tooltip.lua
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.
Summary
This PR makes the repository cross-platform-capable and adds a native macOS app build path.
It has two logical parts:
1. Cross-platform readiness (standalone, fully backward-compatible):
update_manifest.py/manifest.cfg: platform tagging is now config-driven (part/platformsection options) instead of hardcoding win32, so future per-platform runtime bundles need no client changes. Extensionless files (POSIX executables) are no longer skipped by the glob.manifest.xmlregenerated (attribute changeruntime="win32"→platform="win32"; per-file platform tags on runtime files).UpdateApply.lua: the infinite destination-open retry loop (which spins forever on a POSIX permission error) is now bounded with a clear error; newchmodop preserves executable bits; source handle closed on the error path.UpdateCheck.lua: emitschmodops for extensionless runtime files on non-win32 platforms. Win32 op output is byte-identical (spec-pinned).GetCloudProviderandjit.optare now optional host APIs (alternate hosts like pobfrontend don't provide them).Assets/references (a recurring Linux bug class — it immediately caught and fixed twoAssets/breachicon.png→BreachIcon.pngmismatches).UpdateCheckharness with a fake curl,UpdateApplyop-interpreter specs, and pytest coverage for the manifest generator.Backward compatibility: deployed win32 clients are unaffected. They include a remote
<File>iff it has noplatformattribute or it matches their local platform; addingplatform="win32"to runtime files keeps them selected exactly as before. Verified against the deployed client logic in review.2. Native macOS app build (arm64):
Makefile:test(Docker busted suite),test-python,manifest,macos-runtime,macos-app,run-macos,clean-macos.make macos-appassemblesbuild/macos/Path of Building.appfrom a sibling build of SimpleGraphic: flatContents/MacOS/bundle mirroring the Windowsruntime/layout,pob:URL scheme, ad-hoc codesign.src/Launch.lua; user data stays insrc/). Auto-update is deliberately disabled: the published manifest has no macOS runtime section yet, and an update-enabled macOS install would delete its own native runtime. Updater parity is follow-up work (seedocs/crossPlatform.md).docs/crossPlatform.md(platform model + host contract) and a CONTRIBUTING macOS build section; also fixes a stale-PoE2.exefilename in CONTRIBUTING.Dependency note:
make macos-apprequires the macOS build of SimpleGraphic, submitted as PathOfBuildingCommunity/PathOfBuilding-SimpleGraphic#111 (until it merges, the branch is available at jucardi/PathOfBuilding-SimpleGraphicfeat/macos-build). Everything in part 1 is independent of it.Testing
tests/test_update_manifest.py: 2/2. (tests/test_fix_ascendancy_positions.pyhas 2 pre-existing failures ondev, untouched here.)open-launch, settings persist to the checkout on quit,pob://links launch the app (URL delivery to a running instance is a documented limitation).Known limitations (documented in CONTRIBUTING)
pob://Apple-Event delivery is launch-only/best-effort; the app writesimgui.ini/logs inside its bundle (discarded on rebuild; build data unaffected).🤖 Generated with Claude Code