feat(engine): floating liquid-glass touch tab bar #186

Merged
funman300 merged 3 commits from feat/glass-tab-bar into master 2026-07-15 21:59:21 +00:00
Owner

Replaces the docked touch action bar with an iOS-26-style floating glass tab bar (touch layout only; desktop unchanged).

  • ui_glass.rs — the material: translucent sheen (BackgroundGradient), specular rim (BorderGradient), drop shadow (BoxShadow). No shaders, WebGL2-safe; swappable behind glass_surface().
  • assets/hud_icon_svg.rs — five stroke SVG icons through the existing usvg/resvg rasterizer, tinted at spawn.
  • hud_plugin/tab_bar.rs — floating pill (Undo / Draw / Hint / Pause) + detached circular Menu button. Draw is the persistently-expanded accent pill; other labels slide out while pressed (snaps under reduce-motion). Existing marker components kept, so handlers/tooltips/focus/chrome-toggle are untouched. icons: None degrades to text labels.
  • Toast clearance derives from the bar; legacy touch-bar spawn removed.

Verified: 989 lib tests, clippy -D warnings, Android target check, emulator smoke in both Fold postures (bar floats above gesture bar, recenters, Draw fires). Press-expand animation needs a real-device tap check.

🤖 Generated with Claude Code

Replaces the docked touch action bar with an iOS-26-style floating glass tab bar (touch layout only; desktop unchanged). - **ui_glass.rs** — the material: translucent sheen (BackgroundGradient), specular rim (BorderGradient), drop shadow (BoxShadow). No shaders, WebGL2-safe; swappable behind `glass_surface()`. - **assets/hud_icon_svg.rs** — five stroke SVG icons through the existing usvg/resvg rasterizer, tinted at spawn. - **hud_plugin/tab_bar.rs** — floating pill (Undo / **Draw** / Hint / Pause) + detached circular Menu button. Draw is the persistently-expanded accent pill; other labels slide out while pressed (snaps under reduce-motion). Existing marker components kept, so handlers/tooltips/focus/chrome-toggle are untouched. `icons: None` degrades to text labels. - Toast clearance derives from the bar; legacy touch-bar spawn removed. Verified: 989 lib tests, clippy -D warnings, Android target check, emulator smoke in both Fold postures (bar floats above gesture bar, recenters, Draw fires). Press-expand animation needs a real-device tap check. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
funman300 added 3 commits 2026-07-15 21:59:12 +00:00
Layered bevy_ui treatment (sheen gradient, specular BorderGradient rim,
BoxShadow) approximating frosted glass without shaders or backdrop
sampling - WebGL2-safe by construction. Layout callers depend only on
glass_surface() + GLASS_BORDER_PX so the material can be swapped later.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Five white 24-box stroke icons (undo/draw/hint/pause/menu) rasterised
through the existing usvg/resvg pipeline; tinted at spawn time via
ImageNode::color. Avoids FiraMono's missing icon glyphs on Android.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat(engine): replace docked touch bar with floating glass tab bar
Test / fmt (pull_request) Successful in 7s
Test / test (pull_request) Successful in 4m50s
c8fc3e7a09
Touch layout only (desktop bar unchanged): a floating glass pill
(Undo / Draw / Hint / Pause) plus a detached circular Menu button,
margin above the bottom edge on top of the safe-area inset. Draw is
the persistently expanded accent pill (icon + label); other buttons
are icon-only and slide their label out while pressed, snapping under
reduce-motion. Buttons keep the existing marker components so click
handlers, tooltips, focus ring, and chrome toggle work unchanged.
Icons: None degrades to text-fallback labels (MinimalPlugins tests /
SVG regression), keeping the bar fully usable.

Toast stack clearance now derives from TAB_BAR_CLEARANCE_PX; the
legacy touch bar spawn path and primary-button metrics are removed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
funman300 merged commit 5c97913868 into master 2026-07-15 21:59:21 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: funman300/Ferrous-Solitaire#186