Skip to content

feat(compact): dual-account mode (o/x), dual Antigravity pools, asymmetric hover crossfade, and pace ticks - #184

Open
fix2it wants to merge 10 commits into
CodeZeno:mainfrom
fix2it:feature/antigravity-hover-crossfade
Open

fix2it wants to merge 10 commits into
CodeZeno:mainfrom
fix2it:feature/antigravity-hover-crossfade

Conversation

@fix2it

@fix2it fix2it commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

This PR brings a comprehensive set of visual and engine enhancements to the Compact Fluent Quad theme and the windowing engine:

  1. Dual-Account Mode (o / x) for Claude Code and OpenAI Codex: enables running two accounts concurrently side-by-side in the taskbar with ultra-compact markers.
  2. Dual Antigravity Pools: displays both Gemini and Claude/GPT pools simultaneously with stacked 5-hour and 7-day gauges and distinct color grading.
  3. Asymmetric 200ms Hover Crossfade: smooth on-demand inspection of weekly limits on hover, eliminating double-exposure ghosting.
  4. Pace Tick Indicator: optional expected usage pace markers with a native context menu toggle.
  5. Engine & Hit-Test Refactoring: consolidated animation ticking, single-lock O(1) hover hit testing, and safe Win32 timer lifecycle.

Preview

ZoomIt 2026-10-29 174917

1. Multi-Account Support (o / x markers)


2. Antigravity Dual Pools & Visual Hierarchy

  • Concurrent Rows:
    • Row 1: Gemini Models (dominant 6 px 5-hour bar + secondary 3 px 7-day bar underneath).
    • Row 2: Claude & GPT Models (dominant 6 px 5-hour bar + secondary 3 px 7-day bar underneath).
  • Color Differentiation:
    • Gemini: Vibrant Teal (#5EEAD4 5h, #0D9488 7d).
    • Claude & GPT: Soft Sky / Steel Blue (#98D0E0 5h, #4A8B9E 7d).
    • Claude Terracotta: Restored standard #D97757 for 5h, with darkened #A44525 for 7d.
  • Solo Mode: If only one pool is enabled, hovering smoothly crossfades between 5h and 7d without mid-transition brightness dips.

3. Asymmetric Hover Crossfade (200 ms)

  • Replaced linear crossfading with asymmetric_crossfade_opacities(progress):
    • Outgoing state fades out quickly ($0.0 \to 0.35$).
    • Incoming state fades in with early lead-in ($0.25 \to 1.0$).
    • Completely eliminates "double-exposure" text ghosting while preventing brightness dips at the midpoint.

4. Pace Ticks

  • Displays a subtle 1 px vertical tick on usage gauges showing the expected pacing for the current time window.
  • Includes context menu toggle ("Show pace" / "Показывать темп") and accounts for late server resets.

5. Architectural & DX Refactoring

  • CrossfadeAnimation::tick_slot: abstracts frame throttling (15 ms), elapsed time interpolation, and slot completion across all providers.
  • Safe Timer Lifecycles: AppState::is_any_crossfade_animating and stop_crossfade_timer_if_idle centralize Win32 WM_TIMER teardown, preventing timer starvation or premature cancellation.
  • $O(1)$ Hit-Testing: tile_hover_at consolidates DPI scaling and surface checks into a single state acquisition per mouse move.
  • Semantic Profile Queries: ProviderAccounts::is_profile_enabled and AppState::is_dual_mode_active.

Verification & Test Suite

  • Full Test Suite: All 612 unit and integration tests pass cleanly (cargo test).
  • Formatting: Checked with cargo fmt --check.
  • Live Verification: Verified on Windows 11 taskbar in both Dark and Light themes.

fix2it and others added 5 commits October 26, 2026 01:07
Draw a 1 px tick on each Claude, Codex and Antigravity 5-hour and weekly
gauge in the compact theme at the share of the window that has elapsed
(remaining mode: 100 - elapsed). The engine exposes
{window}.expected / expected_display / expected_available. Settings menu
gets "Show pace" (on by default, display.show_pace binding).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Allow a minute of slack past the window length so poll latency right
after a reset does not hide the tick; it sits at 0 instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ssfade

Replaces the background 8s / 2s cyclical timer between Antigravity's
Gemini and Claude/GPT pools with an interactive, smooth hover crossfade
on the taskbar tile.

- Show primary pool at rest (Gemini in dual-mode, or the enabled solo pool).
- Smoothly crossfade to the secondary pool over 180 ms while hovered.
- Continuous time-based animation (CrossfadeAnimation) for fluid 60 FPS transitions.
- O(1) cached tile bounds hit-testing in WM_MOUSEMOVE with auto-invalidation on
  theme reload, DPI change, or provider count updates.
- Remove obsolete periodic timer machinery and dual_mode gate leftovers.
- Add comprehensive unit tests for dual and single pool crossfade modes.
@fix2it
fix2it force-pushed the feature/antigravity-hover-crossfade branch from d36b0fe to 57b5923 Compare October 26, 2026 08:42
…sfade and pace ticks

- Claude Code dual profile support (Main and X) with dynamic tile width, styled o/x markers, and warm terracotta color scheme
- Antigravity dual pool layout (Row 1 Gemini, Row 2 External) with 5h session and 7d weekly gauges and pace ticks
- Unified 300ms hover crossfade animation across all three dual-mode providers with coordinated timer lifecycle
- All 64 pace ticks aligned and verified across dark and light themes
- Full 14-locale localization for Claude dual-mode menu controls
@fix2it fix2it changed the title feat(antigravity): reimagined pool alternating — smooth on-demand hover crossfade for dual & single pool modes feat(compact): dual-account mode (o/x), dual Antigravity pools, asymmetric hover crossfade, and pace ticks Oct 29, 2026
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