Skip to content

fix(appimage): restore portable offline Linux bundles for v1.9.0 - #2

Merged
Jacobinwwey merged 8 commits into
mainfrom
fix/appimage-catalog-portability
Oct 5, 2026
Merged

Jacobinwwey merged 8 commits into
mainfrom
fix/appimage-catalog-portability

Conversation

@Jacobinwwey

@Jacobinwwey Jacobinwwey commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Summary

The Linux AppImage can fail catalog registration and ordinary-user startup because its metadata links point into the CI checkout, its launcher is not world-executable, RPATH rewriting corrupts the appended pkg server payload, and its glibc requirements exceed the catalog's Ubuntu 22.04 host. Installed Markdown parsing and offline graph layout also fail because the worker resolver omits installed filenames and the simulation worker downloads D3 externally.

This PR fixes those six failures and prepares v1.9.0 for publication:

  • Update Tauri CLI to 2.12.1 for relative metadata links and the updated linuxdeploy launcher permissions; build Linux release artifacts on Ubuntu 22.04.
  • Preserve the completed pkg server at linuxdeploy's supported PATCHELF boundary. Skip only --set-rpath for the exact source-hash-matching server, forward queries and other files, and check the finished AppImage's stored permissions, metadata, icon and byte-identical server before upload.
  • Extend the existing Markdown resolver with installed markdown-worker/markdown-worker.exe names while preserving override/build-name precedence, and load the existing bundled D3 for offline force/DAG layout.
  • Ad-hoc sign the standalone macOS Godot copy, verify its signature and run --version before resource-pack preparation. The upstream executable's embedded signature binds Godot.app's Info.plist; copying it out of the app otherwise causes SIGKILL and invalid Info.plist despite unchanged bytes. The upstream archive and source app remain unchanged.
  • Read the native About dialog's version from app_handle.package_info().version instead of the hardcoded v1.6.0. Tauri supplies the configured application version (1.9.0); no additional version constant or fallback is introduced.
  • Align 1.9.0 metadata and bilingual release notes; retain draft publication until exact-artifact acceptance, refuse overwriting public releases, preserve the original Linux server for verification, and publish npm only after a product release is published. Android remains behind its signing/device gate, and Godot mirror releases cannot replace the product's Latest release.

v1.9.0 (release date: 2026-10-05 UTC) also ships 125 upstream commits since v1.8.0; the release notes describe that broader product scope. Four test assumptions exposed by full regression are corrected: upload completion before teardown, native resource-root fixtures, direct Windows-style reference normalization, and valid zero-millisecond durations. These test corrections do not change production behavior.

Test plan

  • Full Jest run for the source including the About fix: 176/176 suites and 1,797/1,797 tests passed, zero failures/skips/todo, natural exit 0, no suite exclusions, fixed clock or forced exit. Independent review checked every suite and assertion.
  • Strict Tauri/Rust validation of the About change: NOTE_CONNECTION_TAURI_TEST_STRICT=1 npm run test:tauri -- --locked, 34 passed, 0 failed, 1 existing ignored mobile cross-host probe, 0 filtered. The strict command exited 0.
  • Independent About review traced the locked Tauri/codegen version source to the configured application version and confirmed the minimal menu change; scoped Rust formatting, diff and documentation checks passed.
  • Native macOS diagnosis: original Godot.app passes, all five standalone-copy cases reproduce the signature/startup failure, and all five separately signed controls pass strict signature verification and Python/Node launch probes.
  • Version gate 37250352645 passed for ff749c2559974c36e5c7f3bb30faf00ee5887fb4.
  • Desktop CI run 37250352656 passed, including Windows, macOS and Linux, for that source. All five downloaded release assets match this run's artifacts by SHA-256 and size.
  • The final AppImage integrity gate passed in CI and on the downloaded artifact (verify:appimage exit 0). AppImage SHA-256: 1ac08976a86f77ba9e45005c30de7379b870c97a3cc103e760540703177519c3. Packaged server and same-build original server are byte-identical, SHA-256: 59b8bfebc2d059e1c53097bf43bf328da992e9ae2b66213a6003aebb12c7bdcf.
  • End-to-end checks on those exact AppImage bytes in Ubuntu 22.04 x86_64 KVM: the catalog worker exited 0 and reported glibc 2.35. Both native FUSE and extract-and-run modes passed authenticated APIs and native Markdown/pulldown with only loopback networking, actual native About display of 1.9.0, force/DAG layouts with directed edges, real Markdown/Mermaid rendering, and Godot Path Mode entry/return using a two-node, one-edge graph.
  • Both launch modes closed through the window manager after returning from Godot and exited 0. All 26 observed application PIDs, the test namespace and support processes were gone; the native FUSE mount was removed. Extraction caches persisted after exit and were manually removed after an open-file check; runtime manifests were preserved as evidence. Guest shutdown completed normally, with serial-console and host-side confirmation at 2026-10-05T02:36:11Z; QEMU/control sockets were gone and the VM disk was retained.

Linux end-to-end evidence, Windows/macOS build results and the macOS sidecar diagnosis have separate scopes; the latter two do not establish full desktop GUI acceptance. No Android APK/AAB is included without signing and device acceptance. Earlier diagnostic observations include reader/outline placeholders, Mermaid/DAG label presentation issues, and runtime metadata/extraction caches remaining after application exit; hardware GPU/audio and large-corpus performance are outside these packaging checks.

Verification attachments: Linux KVM validation summary and screenshots, SHA256SUMS.txt, source-validation.json and public-ci-manifest.json.

@Jacobinwwey
Jacobinwwey merged commit 72eac89 into main Oct 5, 2026
22 checks 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