feat(linux-egui): native EGUI parity host - #1060
Merged
H-Chris233 merged 221 commits intoSep 27, 2026
Merged
Conversation
6 of 7 tasks
…tauri-parity Upstream Beta.3 brings the desktop panel refresh, encrypted cloud sync and the macOS streaming input rework. Nine conflicts were resolved: - ci.yml: keep the reusable linux-egui-package job (it already runs the upstream linux-core-contract commands) and take upstream's workflow_dispatch guard. - Cargo.lock: took upstream's pins; the workspace resolves cleanly. - lib.rs: keep both the selection-polish-preview event constants and the new macOS less-computer positioned flag. - QaPanel.tsx: took upstream's rewritten capsule shell and re-applied the 润色结果 mode (state, listeners, Escape handling, render branch) on top of it, using the new qa-panel.css classes. - SelectionPolishPreview.tsx: kept our deletion (the preview reuses the QA panel now) and verified nothing imports it. - coordinator.rs / hotkey_loops.rs / side_aware_combo.rs / core_adapters.rs: took upstream's new structure and error handling, then re-applied our removal of the Tauri Linux host (fcitx5 plugin bridge, Linux insertion, side-combo rejection), which Linux no longer builds. Verified: openless-core 1036 tests, openless-linux-egui 186+132 tests, tsc --noEmit clean, frontend test runner green, 52 node contract tests green, release build reports OpenLess 2.0.0-Beta.3-101.
Beta.3's encrypted-sync store called tokio::spawn directly, which needs an ambient runtime and defeats the TaskSpawner seam the runtime gate enforces. The store now takes the injected spawner and awaits an owned operation through a channel, so dropping the caller still cannot cancel journalled work. Also teach the gate which module files are test-only: files declared by `#[cfg(test)] mod x;` (including a `#[path]` include inside a test module) were reported as production and broke the Linux job. The gate now classifies them transitively and reports every violation instead of stopping at the first. Refreshes the Linux package revision to 102.
The repository holds 14 GB of caches against GitHub's 10 GB limit, so the least recently used entries were evicted and jobs such as the Linux egui check started from a cold dependency tree (~10 minutes). Pull requests no longer store their own copy of the platform dependency trees; they restore the base branch cache, which only branch pushes and tags write. The Linux job keeps its own cache, saves it even when the test step fails, and builds without debug info so the cache stays small and links stay fast.
Every push of a linux-egui-only change re-ran the macOS, Windows and Android Tauri jobs plus the Rust 1.88 MSRV compile, although those builds cannot reach that code. A 'changes' job now feeds scripts/ci-changed-areas.sh, which decides per area whether the change set can affect it and always answers 'true' when the diff is unreadable - a skipped platform check must be provably out of scope, not the result of a failed lookup. Push, tag and manual runs stay fully verified. The contract test drives the script against real git diffs in both directions. Also bounds every job with timeout-minutes (a stuck run previously held a runner for 24 hours) and stops publishing Linux deb/rpm artifacts on plain push runs, where only the pull request and tag runs have consumers. README now states the MSRV policy that CI actually enforces: 1.88 for openless-core and src-tauri on macOS and Windows, stable for the Linux host (which requires 1.95 because of egui).
The repository was holding 14 GB of caches against GitHub's 10 GB limit, so the least recently used scopes were evicted silently and jobs started from a cold dependency tree: the same cargo test step costs 148 s restored and 579 s cold. Pull request runs no longer store their own copy of the platform trees, and this adds the rest of the policy: ci-cache-usage.sh reports usage per scope, --prune deletes only scopes of closed or merged pull requests (open, branch and tag scopes stay untouched), and cache-maintenance.yml runs it weekly. docs/ci-trigger-and-cache-policy.md records the measured sizes, the per-platform budget, the key layout and the release pre-warm step so the duplication is not reintroduced.
The Linux job is the most expensive single job in a Linux pull request, and a documentation-only change set cannot reach the host build, its tests or the deb/rpm chain. The reusable workflow now takes a 'scope' input (default 'full'), so push, tag and release callers keep building everything while the pull request run passes 'none' for prose-only change sets. Gated runs leave checkout and the version assertion in place, so the job stays a well-formed no-op.
Collaborator
Author
|
@H-Chris233 能不能先审查合并一下,我现在总得解决tauri的冲突 |
The first run of the gating skipped the Linux job although the change set contained code: the detect step never wrote the 'linux' output, so the reusable workflow received an empty scope. Two fixes: - The detect step computes every area in one loop, and each gate now skips only on an explicit 'false' (an empty or unreadable output runs the job); the Linux job's scope input defaults to a full build. - The contract test reads ci.yml and the reusable workflow and asserts that every area is published as a job output, that each gate is fail-open, and that the reusable workflow defaults to a full build. Removing the 'linux' output again makes that test fail, which is the regression it should catch.
Collaborator
|
开始审查 |
HKLHaoBin
added a commit
to HKLHaoBin/openless
that referenced
this pull request
Sep 27, 2026
Resolve content conflicts: - cloud_sync_e2ee_store: keep beta spawn_owned (TaskSpawner seam) - linux-egui main/host_contract: take beta (Open-Less#1060 parity + capsule liveness) - Cargo.toml: keep Android wry vendor patch; drop deleted wayland-scanner patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up before merge