Skip to content

🎨 Palette: [UX improvement] Fix list item keyboard accessibility - #154

Open
NSEvent wants to merge 3 commits into
mainfrom
palette-interactive-list-a11y-2799901301008972683
Open

🎨 Palette: [UX improvement] Fix list item keyboard accessibility#154
NSEvent wants to merge 3 commits into
mainfrom
palette-interactive-list-a11y-2799901301008972683

Conversation

@NSEvent

@NSEvent NSEvent commented Aug 25, 2026

Copy link
Copy Markdown
Owner

💡 What: Replaced .onTapGesture on list items in MacroListView.swift and ScriptListView.swift with standard SwiftUI Buttons that use .buttonStyle(.plain).

🎯 Why: Using .onTapGesture on generic containers like HStack breaks keyboard interactivity (tab navigation) and VoiceOver semantic roles. For interactive list items, wrapping them in a standard Button preserves these accessibility features.

📸 Before/After: Visually identical, but keyboard navigation and screen readers now recognize the items as buttons.

Accessibility: Restored proper semantic button traits to Macro and Script list rows, ensuring they are navigable by VoiceOver and keyboard users while preserving the full clickable area via .contentShape(Rectangle()).


PR created automatically by Jules for task 2799901301008972683 started by @NSEvent

Summary by CodeRabbit

  • Bug Fixes
    • Improved interaction and accessibility for macro and script list rows.
    • Clicking anywhere on a row now consistently opens its edit view.
    • Preserved full-row hit areas while keeping existing details and edit/delete controls unchanged.

Co-authored-by: NSEvent <44446865+NSEvent@users.noreply.github.com>
@google-labs-jules

Copy link
Copy Markdown
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

Next included review available in 16 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 80227751-6d03-44cc-97a4-c81c52bd78aa

📥 Commits

Reviewing files that changed from the base of the PR and between 3da58d6 and 88e4dfc.

📒 Files selected for processing (3)
  • XboxControllerMapper/XboxControllerMapper/Services/Controller/ControllerService+LED.swift
  • XboxControllerMapper/XboxControllerMapper/Services/Controller/GameControllerDatabase.swift
  • XboxControllerMapper/XboxControllerMapper/Services/Mapping/MappingEngine.swift

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: cdc4137e-3e0c-4059-9891-96bc680c28ba

📥 Commits

Reviewing files that changed from the base of the PR and between 491237a and 3da58d6.

📒 Files selected for processing (3)
  • .Jules/palette.md
  • XboxControllerMapper/XboxControllerMapper/Views/Macros/MacroListView.swift
  • XboxControllerMapper/XboxControllerMapper/Views/Scripts/ScriptListView.swift

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Macro and script list rows now use plain SwiftUI buttons for edit actions instead of container-level tap gestures. Existing row content, layout, and full-row hit areas remain unchanged. The project guidance documents this pattern.

Changes

List row interaction updates

Layer / File(s) Summary
Replace row tap gestures with plain buttons
XboxControllerMapper/XboxControllerMapper/Views/Macros/MacroListView.swift, XboxControllerMapper/XboxControllerMapper/Views/Scripts/ScriptListView.swift, .Jules/palette.md
MacroRow and ScriptRow invoke onEdit through plain buttons. Both rows retain their displayed content, layout, and contentShape(Rectangle()). The guidance documents the button pattern and accessibility behavior.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 3da58

This localized accessibility update changes list rows to standard buttons while preserving their appearance and click area; no actionable merge-blocking risk remains beyond normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: improving keyboard accessibility for list items. The wording is concise and directly matches the replacement of gesture-based rows with accessible SwiftUI…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title clearly identifies the main change: improving keyboard accessibility for list items. The wording is concise and directly matches the replacement of gesture-based rows with accessible SwiftUI buttons.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch palette-interactive-list-a11y-2799901301008972683

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

google-labs-jules Bot and others added 2 commits August 25, 2026 09:09
Co-authored-by: NSEvent <44446865+NSEvent@users.noreply.github.com>
Co-authored-by: NSEvent <44446865+NSEvent@users.noreply.github.com>
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