Skip to content

Desktop: keep background startup lightweight and prove Linux packaged-shell E2E #5493

Closed

Description

@Ingwannu

Area

Desktop app performance and Linux release confidence.

Why

The Tauri shell now has the correct startup, ownership, drain, updater, and platform-dialog boundaries, but two release questions remain:

  1. A login/autostart launch still navigates the hidden main webview to the full dashboard after the runtime becomes ready. That pays the React dashboard's startup and background-work cost before the user asks to open it.
  2. Linux CI compiles and unit-tests the Rust shell, while the installed-artifact workflow is dispatch-only, lives on dev rather than the default branch, has no registered opencodex-gate-linux runner, and requires already-published artifacts. There is no ordinary hosted proof that the packaged AppImage/deb can show a window, launch the bundled sidecar, become healthy, and drain on close in a session with no tray host.

Proposed work

  • Keep Tauri and the single bundled ocx sidecar; do not add Electron, another daemon, SSH, VM, or multi-window infrastructure.
  • On a hidden autostart launch, retain the lightweight startup surface after Ready and defer loading the full dashboard until the first explicit Open action. Manual launches keep the current immediate dashboard behavior. Startup failures remain visible and retryable.
  • Ensure hidden dashboard/popup surfaces do not retain unnecessary polling; refresh once when shown.
  • Add bounded Linux packaged-shell E2E on GitHub-hosted Ubuntu under Xvfb/dbus. Exercise AppImage and deb payloads without modifying the runner's real home or package database: isolated HOME/CODEX_HOME/OPENCODEX_HOME, packaged binary/resources, real bundled sidecar, health identity, visible window, no-tray close, and confirmed app/runtime exit.
  • Keep the existing self-hosted installed-artifact gate as the later proof for real dpkg/AppImage installation, elevation, takeover, and in-place updates. The hosted E2E must not claim those operations.
  • Record cold/attach readiness time, process-tree RSS, and background request counts as evidence first; set regression budgets only from a reviewed baseline rather than invented thresholds.

Acceptance

  • Linux hosted E2E is bounded, isolated, cleanup-safe, and runs only trusted repository code with read-only workflow permissions.
  • Both package formats exercise the same behavioral assertions and upload a small diagnostic report on failure.
  • No access to /home/ubuntu runtime state and no bare bun test, ocx sync, or daemon restart.
  • Desktop structure documentation distinguishes hosted packaged-shell E2E from the privileged installed-artifact gate.
  • Exact-head CI is green before merge.

@lidge-jun I am taking the Linux packaged-app E2E and the small background-startup efficiency follow-up as separate reviewable PRs. I will keep the release/credential boundary unchanged.

Activity

  1. Ingwannu commented on Sep 22, 2026

    @Ingwannu
    OwnerAuthor

    Progress update:

    • perf(desktop): defer hidden dashboard startup #5498 implements the lightweight hidden-autostart path. Exact-head CI is green; it remains blocked on the required maintainer review and has not been merged.
    • test(desktop): add Linux packaged app E2E #5502 adds the hosted Linux packaged-shell E2E for AppImage and deb payloads. Local real-package runs passed with OCX 2.61.0 (approximately 3170 ms AppImage and 2778 ms deb readiness), visible-window proof, health identity checks, and clean app/runtime drain.
    • test(desktop): add Linux packaged app E2E #5502 is currently running exact-head CI. Because it changes GitHub Actions and release packaging, I explicitly requested security review from @lidge-jun and will not merge it before that review and green exact-head checks.
    • The local full pre-push run for test(desktop): add Linux packaged app E2E #5502 was not fully green (28,462 passed / 35 failed in unchanged launchd, remote-workspace, and release-fixture paths), so the PR records that limitation instead of claiming full-suite success.

    Both branches were based directly on the current dev head when pushed. No user runtime configuration or daemon was modified.

  2. lidge-jun commented on Sep 23, 2026

    @lidge-jun
    Owner

    Partial progress from #5682 (squash-merged as 7f8d538): hidden autostart now defers the dashboard (carrying #5498), and CI boots the real Linux AppImage and deb packages end to end (carrying #5502). Still open: stopping dashboard polling while the window is hidden, and the performance baselines.

  3. added
    priority: P2Medium: provider/client-specific bug with a workaround, bounded enhancement tied to a tracked issue,
    on Sep 24, 2026
  4. lidge-jun commented on Sep 27, 2026

    @lidge-jun
    Owner

    Release train 4 triage (dev 24b2f39b, T4-I-5493): Keeping this open for its remaining measurement acceptance. #5682 delivered lazy hidden autostart and hosted AppImage/deb E2E; #5742 added hidden-window polling control. The desktop shell record includes readiness and RSS but not attach time, background request counts, or a reviewed regression baseline. Record those measurements and a baseline decision, then this tracker can close.

  5. lidge-jun commented on Oct 6, 2026

    @lidge-jun
    Owner

    Maintainer decision (interview 2026-10-06): closing as feature-complete.

    On current dev (f924820652), #5682 (lazy hidden autostart + Linux AppImage/deb E2E) and #5742 (hidden-window polling control) are in. Remaining attach-time / background-request-count / reviewed regression baselines are follow-up measurement work, not required to keep this tracker open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: P2Medium: provider/client-specific bug with a workaround, bounded enhancement tied to a tracked issue,

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions