Repository navigation
Conversation
divijg19
commented
Oct 4, 2026
divijg19
left a comment
Owner
Author
There was a problem hiding this comment.
v2.6.0: Deterministic Core, Single-Drain Countdown, and Web Release Hardening
This was
linked to
issues
Oct 4, 2026
…ardening Rust core: derive every reported total from the generated steps instead of tracking them separately, make generation numeric-only with a width-preserving duplicate repair, normalize duration onto the shared effective_from grid, and prove digit-width bounds rather than asserting them. Replace the stop signal's busy-wait with a Condvar, roll back a failed spawn, and join without holding the lock. WASM/browser correctness: convert the bridge's u64 session_id and seed to BigInt at the boundary. They were passed as plain numbers, which threw, and the caller swallowed it as "planner unavailable", so every browser session silently ran the JS planner. Add real JS/WASM parity tests against the built package, and remove wasm_bindgen_test_configure!(run_in_browser), which was making the node run execute zero tests without failing. Countdown: drain the progress ring once across the whole countdown instead of three per-count animations, so it cannot rewind, snap, or drift from the digits, and nothing in JS drives it. Rest the blades at one angle per digit and turn once per change rather than sweeping. Pin both mechanisms with tests, plus a stylesheet guard that every class the countdown applies has a rule: jsdom applies no CSS, so a deleted rule previously left the suite green while the ring stopped rendering. Splash: read the timings off the splash element rather than the document root. Custom properties inherit downwards, so the root read returned nothing and every value silently fell back to constants that only agreed by coincidence. Browser runtime: chained monotonic scheduler with stale-event skipping for backgrounded tabs, teardown-before-await, best-effort fullscreen that can no longer kill the Start button, JS fallback digit rotation matching Rust, and allocation cuts in the plan and driver hot paths. Release profile tuned with LTO, one codegen unit and symbol stripping, cutting the binary from 14.2MB to 6.4MB. CI: run wasm clippy and the real wasm tests against the built package, gate the release on a verification job, publish with least privilege, and correct the dependabot frontend ecosystem to bun. The release verify gate also installs the Linux native dependencies now: cargo test and clippy build Tauri's whole GTK and WebKit stack, and without them glib-sys fails inside its build script, so the gate died on a missing system package instead of on anything wrong with the code. build-web deliberately keeps none, since wasm32 compiles tauri out. Verified: 54+95 Rust, 13 wasm, 123 frontend, cargo fmt, Biome, tsc, build:web, and pedantic clippy clean on host and wasm32.
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.
Rust core: derive every reported total from the generated steps instead of tracking them separately, make generation numeric-only with a width-preserving duplicate repair, normalize duration onto the shared effective_from grid, and prove digit-width bounds rather than asserting them. Replace the stop signal's busy-wait with a Condvar, roll back a failed spawn, and join without holding the lock.
WASM/browser correctness: convert the bridge's u64 session_id and seed to BigInt at the boundary. They were passed as plain numbers, which threw, and the caller swallowed it as "planner unavailable", so every browser session silently ran the JS planner. Add real JS/WASM parity tests against the built package, and remove wasm_bindgen_test_configure!(run_in_browser), which was making the node run execute zero tests without failing.
Countdown: drain the progress ring once across the whole countdown instead of three per-count animations, so it cannot rewind, snap, or drift from the digits, and nothing in JS drives it. Rest the blades at one angle per digit and turn once per change rather than sweeping. Pin both mechanisms with tests, plus a stylesheet guard that every class the countdown applies has a rule: jsdom applies no CSS, so a deleted rule previously left the suite green while the ring stopped rendering.
Splash: read the timings off the splash element rather than the document root. Custom properties inherit downwards, so the root read returned nothing and every value silently fell back to constants that only agreed by coincidence.
Browser runtime: chained monotonic scheduler with stale-event skipping for backgrounded tabs, teardown-before-await, best-effort fullscreen that can no longer kill the Start button, JS fallback digit rotation matching Rust, and allocation cuts in the plan and driver hot paths. Release profile tuned with LTO, one codegen unit and symbol stripping, cutting the binary from 14.2MB to 6.4MB.
CI: run wasm clippy and the real wasm tests against the built package, gate the release on a verification job, publish with least privilege, and correct the dependabot frontend ecosystem to bun.
Verified: 54+95 Rust, 13 wasm, 123 frontend, cargo fmt, Biome, tsc, build:web, and pedantic clippy clean on host and wasm32.