Skip to content

Fix Linux AppImage startup and complete 0.1.2 cache limits - #6

Merged
Shin-Aska merged 1 commit into
feature/0.1.2from
codex/diagnose-and-fix-appimage-startup-freeze
Sep 29, 2026
Merged

Shin-Aska merged 1 commit into
feature/0.1.2from
codex/diagnose-and-fix-appimage-startup-freeze

Conversation

@Shin-Aska

Copy link
Copy Markdown
Owner

Motivation

  • Prevent AppImage startup freezes by eliminating incompatible mixes of bundled GLib/GIO/nghttp2 with host libraries and by supplying a coherent media runtime for WebKit/GStreamer.
  • Make the post-response memory-cache robust and configurable while bounding mounted-view retained post state to a deterministic limit.
  • Add automated AppImage extraction audits and startup smoke tests so future regressions in loader/ABI/plugin interaction are detected in CI.

Description

  • Enforce a consistent AppImage runtime strategy by excluding host ABI boundary libraries via a tauri build wrapper and vendoring vetted linuxdeploy plugin scripts; add scripts/tauri.mjs and scripts/prepare-appimage.mjs to pin and patch gtk/gstreamer bundling behavior and avoid bundling GLib/GObject/GIO/nghttp2.
  • Enable Tauri AppImage media-framework bundling and require the runtime GStreamer plugins while adding scripts/audit-appimage.sh and scripts/smoke-appimage.sh to audit extracted libs and run a headless startup smoke test under xvfb + dbus-run-session.
  • Harden packaging CI by installing missing helper tools (file) and adding an appimage-smoke job that builds the AppImage and runs the audit and smoke scripts on Ubuntu 22.04 and 24.04.
  • Finish and wire a deterministic mounted-view retention policy with src/services/social/retention.ts (500 post-bearing rows per view) and apply it in feed and notification presentation code, while keeping the existing 96-entry SocialReadCache and adding the configurable response-post budgets plumbing.
  • Make preference persistence tolerant: readPostCacheLimit and savePostCacheLimit now gracefully fall back if localStorage is invalid or unavailable, and the UI/tests were updated to reflect the 0.1.2 version and the new Settings entry.
  • Add and extend Playwright tests (tests/social-cache.spec.ts, tests/workspace.spec.ts) to cover LRU eviction by aggregate post budget, immediate eviction when lowering limits, Off semantics, oversized response handling, and deterministic mounted-state bounds; add docs/releases/v0.1.2.md and document the runtime strategy in docs/architecture.md.

Testing

  • Frontend: ran npm ci, npm run lint, npm run check, npm run build and npm run test:ui with the full Playwright suite, producing 87 passing UI tests.
  • Desktop/Rust: ran cargo +1.98.1 fmt --check, cargo +1.98.1 clippy and cargo +1.98.1 test (with NO_PROXY=localhost,127.0.0.1,::1 to avoid an environment proxy routing loopback); unit tests passed (91 Rust tests passed).
  • AppImage packaging: ran npm run tauri -- build --ci --bundles appimage -- --locked to produce src-tauri/target/release/bundle/appimage/Threadline_0.1.2_amd64.AppImage (SHA-256 bf028dac97ffd45052185ebb7c5a3c8c1eae9ec43e5870a56a8fb813fb77e121).
  • AppImage verification: scripts/audit-appimage.sh (extracted library audit) and scripts/smoke-appimage.sh (headless startup smoke) were run against the produced AppImage and succeeded, confirming no undefined symbol, mismatched GIO modules, missing autoaudiosink, or GLib-GObject-CRITICAL diagnostics were emitted.

Codex Task

@Shin-Aska
Shin-Aska merged commit 304cc65 into feature/0.1.2 Sep 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant