[verified] Restore Details update retries and live Nix build counts #30
Loading…
Reference in a new issue
No description provided.
Delete branch "astaranix/details-retry-live-progress"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes
internal-jsonthrough the existingnh os build --no-nomcommand. Decode and sanitize structured output, track bounded build aggregate identities, and keep substitution totals separate.Candidate-lock handling, activation order, request authorization, toolkit selection, and C++ source are unchanged. No system update or activation was performed.
Verification
nh 4.4.2/ Nix2.34.8temporary-derivation build emitted structured aggregate counters. Replaying the actual emitted log through the Rust parser, reconciliation, and live view passed.cargo fmt --checkpasses. Clippy has zero new warnings against the unchanged baseline (21 existing unique warnings remain).Existing check limitation
tray-rust-package-auditstill fails its source-text clipboard assertion. The unchanged regular expression matches the unchanged test-onlyiced::advanced::clipboard::Nullhelpers indetails.rson both the baseline and this branch. No clipboard I/O was introduced. The actual packaged desktop and geometry smoke tests above were run separately and passed; this PR does not claim that the entire check set is green.## Fixes - Derive update availability from canonical candidate evidence independently of the aggregate status label. A failed update or reboot reminder no longer disables the top-left Details update button when a candidate is available. - Preserve active-operation, pending-request, permission, stale-observation, and shutdown gates, including the shared duplicate-click latch. - Request Nix `internal-json` through the existing `nh os build --no-nom` command. Decode and sanitize structured output, track bounded build aggregate identities, and keep substitution totals separate. - Reconcile completed/expected build counters only for the active primary service invocation. Show both visible and semantic text as a **Nix estimate**, not a percentage: Nix can revise its expected count. - Keep truthful indeterminate progress when counters are missing, invalid, zero, or their aggregate start was missed by the bounded journal tail. Preserve the raw-output fallback. Candidate-lock handling, activation order, request authorization, toolkit selection, and C++ source are unchanged. No system update or activation was performed. ## Verification - Native aarch64 Nix Rust package: **186 tests passed**. The external-log replay test is deliberately opt-in and was run separately below. - Native no-default-features package: **80 tests passed**. - Real Iced mouse press/release regression for retry after failure in narrow and wide layouts; all 18 Details unit tests also passed with desktop font discovery disabled. - Real unprivileged `nh 4.4.2` / Nix `2.34.8` temporary-derivation build emitted structured aggregate counters. Replaying the actual emitted log through the Rust parser, reconciliation, and live view passed. - **11 selected native Nix outputs/checks realized successfully**: Rust tray, updater, module, shell tests, nh override, request broker, request policy, no-default tests, tray lock, Wayland/X11 desktop smoke, and Details geometry smoke. Built with Rust 1.97.1. - `cargo fmt --check` passes. Clippy has **zero new warnings** against the unchanged baseline (21 existing unique warnings remain). - Independent immutable-tree review passed; the final test-only lint cleanup received a focused follow-up review. ## Existing check limitation `tray-rust-package-audit` still fails its source-text clipboard assertion. The unchanged regular expression matches the unchanged **test-only** `iced::advanced:📋:Null` helpers in `details.rs` on both the baseline and this branch. No clipboard I/O was introduced. The actual packaged desktop and geometry smoke tests above were run separately and passed; this PR does not claim that the entire check set is green.