diff --git a/README.md b/README.md index d3c0061..bc29c8e 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ Supported target platforms: OrbitHub is in active development. -- Milestones completed: M0-M5, M7, and M8 -- Current milestone: Milestone 9 (Packaging and Distribution) +- Milestones completed: M0-M5, and M7-M9 +- Current milestone: Milestone 10 (v1.0 Stabilization) - Deferred milestone: Milestone 6 (VNC Fully Working) - Latest checkpoint tag: `v0-m8-done` - VNC implementation milestone (M6) is currently deferred @@ -90,18 +90,35 @@ cmake --build build ./build/orbithub ``` -## Packaging (Linux) +## Packaging + +Detailed packaging instructions for all platforms: +- [docs/BUILDING.md](docs/BUILDING.md) + +Linux (`.deb`): ```bash ./packaging/linux/build-deb.sh ``` -Optional Flatpak bundle: +Linux (Flatpak): ```bash ./packaging/flatpak/build-flatpak.sh ``` +Windows (Inno Setup installer): + +```powershell +.\packaging\windows\build-installer.ps1 +``` + +macOS (`.dmg`): + +```bash +./packaging/macos/build-dmg.sh +``` + ## Dependencies Core dependencies: diff --git a/docs/BUILDING.md b/docs/BUILDING.md index b55ca63..6faafd9 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -106,3 +106,37 @@ sudo apt-get install -y flatpak flatpak-builder Output path: - `dist/flatpak/org.darksingularity.OrbitHub.flatpak` + +## Windows Packaging + +Requires [Inno Setup 6](https://jrsoftware.org/isinfo.php) (`winget install -e --id JRSoftware.InnoSetup`). + +From a configured and built `build\` directory (see Windows build steps above): + +```powershell +.\packaging\windows\build-installer.ps1 +``` + +Output path: +- `dist\windows\OrbitHub-Setup-.exe` + +## macOS Packaging + +Requires `qt@6` from Homebrew (for `macdeployqt`). For a custom volume icon on +the `.dmg`, also install `SetFile` (via Xcode's "Additional Tools", from +[developer.apple.com/download/all](https://developer.apple.com/download/all)) +or `brew install fileicon` — packaging still works without either, just with +the generic disk image icon. + +```bash +./packaging/macos/build-dmg.sh +``` + +This runs `cmake --install`, then `macdeployqt` to bundle Qt frameworks and +plugins into the `.app`, then re-signs the bundle (ad hoc, since there is no +Developer ID certificate) so it passes macOS's launch-time code-integrity +check. The result is unsigned/unnotarized, so first launch requires +right-click → **Open** to bypass Gatekeeper's unidentified-developer warning. + +Output path: +- `dist/macos/OrbitHub-.dmg` diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 2f64982..ec5296e 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -177,12 +177,26 @@ Git: ## Milestone 9 - Packaging and Distribution -Status: Planned +Status: Completed -Planned Scope: -- Build distributable artifacts for Windows/Linux/macOS -- Document runtime dependencies and install prerequisites -- Add reproducible release packaging steps/scripts +Delivered: +- Linux `.deb` (`packaging/linux/build-deb.sh`) and Flatpak (`packaging/flatpak/build-flatpak.sh`) packages, both verified installed and launched with working SSH/RDP +- Renamed the app's reverse-DNS identity from `io.orbithub.OrbitHub` to `org.darksingularity.OrbitHub` (desktop file, AppStream metainfo, Flatpak manifest, macOS bundle identifier) to reflect a domain actually owned by the project +- Fixed Linux taskbar/panel pin matching (`StartupWMClass`) so a pinned launcher merges with its running window instead of creating a duplicate entry +- Replaced the stale, mismatched hand-authored launcher SVG with PNG icons rendered directly from the app's own `createOrbitHubAppIcon()` at each hicolor theme size +- Windows installer via Inno Setup (`packaging/windows/orbithub.iss`, `packaging/windows/build-installer.ps1`), verified installed silently and launched cleanly with no crash events +- macOS `.dmg` via `cmake --install` + `macdeployqt` + `hdiutil` (`packaging/macos/build-dmg.sh`), verified installed and launched after fixing: + - a launch crash caused by `macdeployqt` invalidating the code signature (fixed with ad hoc re-signing) + - a missing-library crash caused by the Linux-only `$ORIGIN` rpath token and vendored dylibs installing outside the `.app` bundle (fixed with `APPLE`-specific `@executable_path`/`Contents/Frameworks` layout) + - the dmg showing the generic disk icon instead of the app icon +- README and `docs/BUILDING.md` Packaging sections documented for all three platforms + +Validation: +- All three installers built, installed, and launched successfully with working SSH/RDP sessions +- Code signing is ad hoc only (no purchased Apple Developer ID or Windows code-signing certificate), so macOS Gatekeeper and Windows SmartScreen still show first-run warnings by design + +Git: +- Tag: Pending user approval ## Milestone 10 - v1.0 Stabilization