Skip to content

Agent: unify hover feedback and transitions - #1355

Open
matthewrball wants to merge 4 commits into
MaplePrivacyLabs:masterfrom
matthewrball:codex/hover-consistency
Open

matthewrball wants to merge 4 commits into
MaplePrivacyLabs:masterfrom
matthewrball:codex/hover-consistency

Conversation

@matthewrball

@matthewrball matthewrball commented Oct 28, 2026 •

Copy link
Copy Markdown

Why

Composer controls mix coral and neutral hover backgrounds, and hover changes appear instantly across the app. The attachment button and adjacent Integrations control make the mismatch especially visible.

What this PR adds

  • Use neutral hover backgrounds for attachment, dictation, and composer expansion. Preserve recording, enabled-feature, primary-action, and destructive colors where they communicate state.
  • Apply one reversible 120 ms ease-in/ease-out background transition to shared buttons and standalone controls across navigation, menus, settings, dialogs, and the composer.
  • Fade the Projects chevron, filter, and add-folder controls in and out using the same easing, with stable positions and hitboxes. Reuse the sidebar’s hover tracking so scrolling a header away cannot leave its controls stuck visible.
  • Keep pressed feedback and keyboard focus immediate. Reduced motion settles immediately, and settled controls stop requesting animation frames.
  • Preserve existing handlers, element identity, accessibility, selected states, and theme-specific contrast. The action-tray background mask remains immediate so underlying row text cannot show through it.

Closes #1354. This PR targets master independently of #1347 and #1353; simulated merges with both are clean.

Preview

Reported examples from #1354. Ordinary composer controls now follow the existing neutral Integrations treatment; the expander is included.

Attachment before Neutral hover reference Expander before
Original coral attachment hover Existing neutral Integrations hover Original coral composer expand hover

Verification

  • CI on c3cd05eb: agent-lint, agent-test, agent-macos, agent-windows, and required ci-ok all passed.
  • Full app suite on c3cd05eb: 1,148 passed, 0 failed, 2 ignored (cargo test -p maple-agent-app --bin maple-agent --locked -- --test-threads=1).
  • Six motion regressions cover cached-view animation, background and opacity reversal, reduced motion, click delivery, pressed feedback, focus, stable geometry, and idle frame scheduling. Opacity samples use deterministic time.
  • A rendered sidebar regression covers header/action/row hover, menu persistence, and scrolling the header away and back.
  • The existing menu regression refreshes cached debug bounds before its assertions, matching Agent: polish sidebar navigation and settings menu #1347. Menu, keyboard, folding, and scrolling regressions pass in the full suite.
  • Formatting, diff checks, CI path classification, and independent source review passed with no remaining actionable findings.
  • Native macOS fixture smoke before the Projects reveal follow-up verified composer expand/shrink behavior and its neutral hover treatment. The new visibility fade is covered by rendered GPUI tests. A combined local preview with Agent: polish sidebar navigation and settings menu #1347 and Agent: place draft folder selection beside the composer #1353 was also rebuilt from pinned sources and visually checked in one main window, including the sidebar, Settings menu, and folder selector. The preview used isolated state; its explicit launch and single-instance guards passed 17 unit checks and 16 executable-entry checks.
  • Clippy completed without warning denial. It reports the existing 21 Objective-C macro cfg warnings and five nonminimal-boolean warnings; the strict warning-denied gate passed in CI.

Local validation used Rust 1.96.0 on macOS. The final tests used a private temporary directory and disabled incremental compilation to bound disk use. The pinned CI checks now pass across Linux, macOS, and Windows. No dependency, release, or CI configuration is changed.

@matthewrball
matthewrball marked this pull request as ready for review October 28, 2026 22:43
@matthewrball

Copy link
Copy Markdown
Author

@marksftw This is ready for your review. The ordinary hover states use neutral gray with subtle 120 ms easing, including the composer expand/shrink control from the latest example in #1354. Local checks: 1,146 app tests passed (two ignored), independent source review is clear, and the native macOS smoke check passed. CI is awaiting maintainer approval. GitHub won’t let this contributor account assign reviewers, so tagging you here.

@matthewrball
matthewrball marked this pull request as draft October 28, 2026 23:41
@matthewrball
matthewrball marked this pull request as ready for review October 29, 2026 00:15

This branch has not been deployed

No deployments
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.

Agent: unify hover feedback and add subtle transitions

1 participant