feat: establish Linux development runtime and native CI - #714
Conversation
Greptile SummaryThis change establishes a development-only Linux runtime that reports Bluetooth, input, dwell, and overlay capabilities as unavailable rather than attempting unsupported operations. It keeps the main window recoverable without tray integration, adds Linux-native CI checks, and uses in-memory credentials for persistence tests that do not require a desktop keyring. The Linux start-hidden and close behavior was exercised successfully: start-hidden is disabled when no tray is available, closing requests quit, and the built application remained running under an Xvfb and D-Bus session. The unavailable-runtime reset path, native formatting, strict linting, complete Rust test suite, and debug no-bundle build also completed successfully. No defects were found. Confidence Score: 5/5Safe to merge based on the exercised Linux lifecycle, fail-closed unavailable-feature behavior, native quality checks, test suite, build, and graphical startup probe. No publishable findings remain after execution verified the principal Linux lifecycle and unavailable-feature failure paths. The Rust formatter, strict Clippy checks, complete native test suite, and debug application build all succeeded. Files Needing Attention: No files need corrective attention. Future Linux feature work should continue to validate real Bluetooth hardware, desktop input, and overlay behavior before enabling those capabilities.
What T-Rex did
Reviews (1): Last reviewed commit: "test: retain native storage coverage wit..." | Re-trigger Greptile |
Linux currently cannot compile because its runtime dispatch and cursor-overlay implementation are missing. This provides a development-only Linux runtime that reports Bluetooth and input unavailable, rejects pairing, clears session state, and opens no input device or overlay windows.
The Linux main window stays visible even with
--start-hidden, and closing it follows the existing confirmation flow to quit, so an absent tray host cannot strand the app. Ubuntu 24.04 joins native CI for format, Clippy, tests and a development build. Shared code remains covered by fake-input tests.Stack: #711 (plan) → this PR → #715 (Linux setup/status UX). The base is the planning branch as requested for stacked implementation. BlueZ and actual input support follow separately. Merge in stack order only when explicitly authorized.
Closes #712.
Validation: local formatting, whitespace and frontend checks passed. Independent review of latest head
290712dd8734aeab0232742866a1281f00153447found no actionable issues. All latest-head CI checks passed: Ubuntu, Windows and macOS native checks/builds; frontend; dependency audit; CodeQL; and automated review. Native/frontend CI run.The connection-history test uses an explicit in-memory pairing-token store so it does not require a desktop keyring. Native credential-store tests retain their original adapters and production storage is unchanged.
Linux hardware and graphical runtime behavior have not been qualified. Local native checks were blocked by unavailable GTK/WebKit development packages; native validation runs in CI. No Linux release artifacts or functional Bluetooth/input support are provided by this PR.