Skip to content

Fix macOS startup packaging and cross-platform reliability - #9

Merged
lazarevtill merged 11 commits into
mainfrom
codex/reliability-and-ui
Sep 30, 2026
Merged

lazarevtill merged 11 commits into
mainfrom
codex/reliability-and-ui

Conversation

@lazarevtill

@lazarevtill lazarevtill commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

What this changes

An installed macOS build could load libsg_ffi.dylib from a developer checkout. Rebuilding that library could leave the installed Swift bindings incompatible with the native record layout, matching the reported startup trap in addTarget. The app now embeds the static Rust core, and packaging rejects external core dependencies and verifies the bundle signature.

This also addresses confirmed defects found while integrating dependency PRs #5, #6, #7 and #8:

  • Bound SSH authentication, batch duration and output; preserve framing when commands read stdin; refuse authentication when host-key pins cannot be read or saved.
  • Prevent stale polling tasks and command queues from surviving restarts, recompute disconnected health, and prune vanished metric/counter state.
  • Preserve unreadable inventories, update Keychain credentials without deleting working values first, require encrypted Android secret storage, and protect Windows native calls from concurrent disposal.
  • Bound and verify pairing handshakes/transfers, support advertised IPv6 addresses, repair Android/GTK dependency compatibility, and improve navigation, text contrast and connection/error states across the native front-ends.

CI now covers macOS packaging and the Swift/native bridge, and requires live SSH fixtures in Linux jobs. Detailed findings and limits are in docs/RELIABILITY_AUDIT.md.

How it was verified

  • SG_REQUIRE_FIXTURES=1 ./scripts/check.sh passes: format, Clippy, build, 285 Rust tests, lockfile and version checks. The final pairing expiry adjustment also passed targeted tests and workspace Clippy.
  • Built and opened every affected app: native Windows UI and Linux desktop launch checks remain outstanding.
  • Ran against live Debian and Alpine Docker fixtures, including one-round-trip regressions.
Platform Local verification
macOS Signed bundle, no dynamic Rust-core dependency, 10 Swift tests, live technical/summary views.
iOS Simulator build and iPhone 17 Pro launch; live readings, back navigation and Add Host port validation.
Android arm64 APK, 9 JVM tests, emulator fixture launch with no recorded crash. Complete interactive UI testing remains.
Linux Rust 1.89 + GTK/libadwaita container: format, Clippy with warnings denied, 24 unit tests and 4 live engine tests. Desktop rendering remains unverified.
Windows GitHub Actions passed the WinUI build with zero warnings/errors and all 36 tests, including DPAPI and the inventory-recovery regression. Another 25 bridge tests pass locally on macOS with DPAPI excluded. Interactive app launch and installation remain unverified.

Interactive Windows launch/installation, Linux desktop rendering, full Android interaction, iPad and physical iOS device testing remain unverified. No release has been published and the existing installed macOS app has not been replaced.

The automated review finding is addressed: Windows rejects an unreadable inventory before saving credentials or adopting a live target, with regression coverage for preserved secrets and recovery. CI follow-ups select Xcode 16.4 for Swift 6 and make the pairing mock consume its request before closing, avoiding a Windows socket reset.

Invariants

  • Collection installs, writes and modifies nothing on monitored hosts.
  • Samples remain in memory.
  • Metric thresholds, formatting and health wording remain in Rust; native storage failures are reported by the platform layer.
  • A refresh still costs one round trip; live regressions pass.
  • No credential was added to the pairing payload.

dependabot Bot and others added 9 commits September 1, 2026 10:40
Bumps the linux-app group in /apps/linux with 1 update: [russh](https://github.com/warp-tech/russh).


Updates `russh` from 0.62.6 to 0.63.1
- [Release notes](https://github.com/warp-tech/russh/releases)
- [Commits](Eugeny/russh@v0.62.6...v0.63.1)

---
updated-dependencies:
- dependency-name: russh
  dependency-version: 0.63.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: linux-app
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the rust group with 1 update: [russh](https://github.com/warp-tech/russh).


Updates `russh` from 0.62.6 to 0.63.1
- [Release notes](https://github.com/warp-tech/russh/releases)
- [Commits](Eugeny/russh@v0.62.6...v0.63.1)

---
updated-dependencies:
- dependency-name: russh
  dependency-version: 0.63.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the actions group with 1 update: [actions/setup-java](https://github.com/actions/setup-java).


Updates `actions/setup-java` from 5 to 6
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](actions/setup-java@v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the android group in /apps/android with 2 updates: com.android.application and [org.json:json](https://github.com/douglascrockford/JSON-java).


Updates `com.android.application` from 9.3.1 to 9.3.2

Updates `org.json:json` from 20260719 to 20260814
- [Release notes](https://github.com/douglascrockford/JSON-java/releases)
- [Changelog](https://github.com/stleary/JSON-java/blob/master/docs/RELEASES.md)
- [Commits](stleary/JSON-java@2026071...2026081)

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-version: 9.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: android
- dependency-name: org.json:json
  dependency-version: '20260814'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: android
...

Signed-off-by: dependabot[bot] <support@github.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-28T10:22:26.212495Z fc007f0 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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

Copy link
Copy Markdown

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: fc007f0781

ℹ️ 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 apps/windows/ServerGlass.Core/HostStore.cs
@lazarevtill
lazarevtill merged commit fdf2747 into main Sep 30, 2026
6 checks passed
@lazarevtill
lazarevtill deleted the codex/reliability-and-ui branch September 30, 2026 15:43
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