Skip to content

feat: two-tier HUD, transition channels, and a single on/off entry point#123

Merged
P4suta merged 6 commits into
mainfrom
integrate/winrt-blur-hud-anim-v2
Jun 11, 2026
Merged

feat: two-tier HUD, transition channels, and a single on/off entry point#123
P4suta merged 6 commits into
mainfrom
integrate/winrt-blur-hud-anim-v2

Conversation

@P4suta

@P4suta P4suta commented Jun 11, 2026

Copy link
Copy Markdown
Owner

Supersedes #122 (identical content; the merge commit's subject line was rewritten to commitlint's merge-ignore form).

Summary

Integrates the local line of work (two-tier HUD, integer-endpoint transition channels, visiblelast_active state model) with the WinRT backdrop-blur backend that landed in #106#116, then reworks the hotkey UX from hands-on feedback.

Semantic integration

  • SurroundEffect (DimBlack → WhiteWash → Blur on Ctrl+Alt+E) supersedes the parallel local SurroundStyle; Ctrl+Alt+S/CycleStyle are gone.
  • State keeps the local shape (last_active + ToggleOnOff + RejectReason): adjusting anything while Off is rejected with a HUD toast, and BumpOpacity retargets onto the blur σ under the Blur effect.
  • Transition channels ride on the effect model: DimBlack ⇄ WhiteWash crossfades via style_mix, flat ⇄ Blur soft-cuts via the master envelope (brush-kind flips rebuild the sprite pool), and blur σ is deliberately unanimated (baked into the pool signature).
  • Brush::Blur now carries the sampled master-envelope byte, applied via SpriteVisual::SetOpacity through the same perceptual curve as the solid path — show/hide fades under Blur animate without pool rebuilds.
  • The DComp-era HUD improvements (rounded panel, divider rules, fade-envelope multiplication, actual-panel-rect distance fade, topmost early-return, toast dedup) are ported onto the WinRT renderers.
  • The corner mode indicator stays removed (the chip supersedes it); snapshots regenerated.

Hotkey/UX rework

  • Ctrl+Alt+R only flips the on-screen axis (Horizontal ⇄ Vertical); showing/hiding is Ctrl+Alt+H's job alone. While Off the flip is rejected like the other adjustments.
  • The full panel's hotkey guide lists only the currently-actionable keys (Off collapses it to On/Off · HUD detail · Quit).
  • The chip drops all value readouts and keeps only the path to the full guide: the HUD-detail chord while on, Off · Ctrl+Alt+H while off.

Verification

  • Full workspace tests + doctests green; snapshot diffs reviewed (indicator-layer removal + blur opacity only).
  • clippy -D warnings (core/app), rustfmt, cargo doc -D warnings, xtask dep-graph all pass.
  • Verified on hardware via injected chords: effect cycle ×2 → backdrop blur visible, σ bumps under Blur, blur fade on toggle, R-while-Off rejected (no state change), axis flips, clean exits; events.jsonl shows 0 ERROR and no crash dumps.

🤖 Generated with Claude Code

P4suta and others added 6 commits June 11, 2026 10:35
Local development pre-merge snapshot: two-tier HUD (chip/full),
integer-endpoint transition channels (anim.rs), visible->last_active
state model with RejectReason feedback, SurroundStyle dim/bright
crossfade (superseded by SurroundEffect during the merge that follows).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
WinRT backdrop blur × HUD tiers / transition channels.

Semantic integration of two parallel lines of work:

- SurroundEffect (origin) supersedes the local SurroundStyle: the
  DimBlack → WhiteWash → Blur cycle on Ctrl+Alt+E is now the single
  surround selector; Ctrl+Alt+S / CycleStyle are gone.
- State keeps the local shape (last_active + ToggleOnOff + RejectReason);
  CycleEffect and BumpOpacity go through bump_config, so adjusting while
  Off is rejected with a HUD toast, and BumpOpacity retargets onto the
  blur σ under the Blur effect.
- The transition channels ride on top of the effect model: DimBlack ⇄
  WhiteWash crossfades via style_mix, flat ⇄ Blur soft-cuts via the
  master envelope (brush-kind flips rebuild the sprite pool, so no color
  crossfade is possible), and blur σ is deliberately unanimated (it is
  baked into the pool signature).
- The local DComp renderer improvements (rounded HUD panel, divider
  rules, fade-envelope multiplication, actual-panel-rect distance fade,
  topmost early-return, toast dedup) are ported onto the WinRT renderers.
- The corner mode indicator stays removed (the HUD chip supersedes it);
  blur/white-wash snapshots regenerated accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Brush::Blur now carries the sampled master-envelope byte; the WinRT
renderer applies it with SpriteVisual::SetOpacity through the same
perceptual curve as the solid path's composite_alpha. Opacity is not
part of the sprite-pool signature, so show/hide fades under the Blur
effect animate without rebuilding the pool.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- The chip's third segment shows the blur sigma (`H · 28px · blur 9px`)
  under the Blur effect, where opacity is inert — matching the full
  panel's Blur row and what the opacity hotkeys actually adjust.
- Translate the comments the local line of work had left in Japanese
  (anim.rs, tick.rs, hud_frame.rs, overlay_state.rs, wndproc.rs, ...)
  to terse English, following the repo-wide sweep from #118/#119.
- Pin retarget's documented same-target no-op in the proptest
  (prop_assume new_to != to; the deterministic identity test covers the
  no-op branch).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Backtick bare type names in docs, split overlong first doc paragraphs,
allow the 8-arg draw_hud_rows (mirrors HudFrame fields), drop a
tautological i32::MAX prop assertion, and apply rustfmt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ly chip

UI rework from hands-on feedback:

- Ctrl+Alt+R now only flips the on-screen axis (Horizontal ⇄ Vertical);
  it no longer cycles through Off. Showing and hiding the overlay is
  Ctrl+Alt+H's job alone, so the two keys stop overlapping. While Off
  the flip is rejected with the usual HUD toast.
- The full panel's hotkey guide lists only the keys that are currently
  actionable: while Off it collapses to On/Off, HUD detail, and Quit.
- The chip drops mode/thickness/opacity readouts entirely — everything
  it reported is visible on screen. It now only keeps the path to the
  full guide alive: the HUD-detail chord while on, `Off · Ctrl+Alt+H`
  while off.

Verified on hardware via injected chords: R-while-Off rejected (no
state change), H → on, R/R axis flips, H → off, clean exit; ERROR 0,
crash dumps 0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues found.

Scanned Files

None

@P4suta P4suta merged commit d4e4c64 into main Jun 11, 2026
22 checks passed
@P4suta P4suta deleted the integrate/winrt-blur-hud-anim-v2 branch June 11, 2026 03:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant