Skip to content

๐ŸŽจ Palette: [UX improvement] ์Šค์ฝ”์–ด ๋ทฐ์–ด ๋ฒ„ํŠผ ์ ‘๊ทผ์„ฑ ๋ฐ ํˆดํŒ ๊ฐœ์„ #690

Open
seonghobae wants to merge 4 commits into
developfrom
palette/score-viewer-tooltip-a11y-6711654907972493799
Open

๐ŸŽจ Palette: [UX improvement] ์Šค์ฝ”์–ด ๋ทฐ์–ด ๋ฒ„ํŠผ ์ ‘๊ทผ์„ฑ ๋ฐ ํˆดํŒ ๊ฐœ์„ #690
seonghobae wants to merge 4 commits into
developfrom
palette/score-viewer-tooltip-a11y-6711654907972493799

Conversation

@seonghobae

Copy link
Copy Markdown
Collaborator

๐Ÿ’ก What:

  • ScoreView์˜ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฒ„ํŠผ์—์„œ disabled ์†์„ฑ์„ aria-disabled="true"๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์„ค๋ช… title ํˆดํŒ ์ถ”๊ฐ€
  • ScoreView ๋ฐ ScoreViewer์˜ ์•„์ด์ฝ˜ ์ „์šฉ ๋ฒ„ํŠผ(์‚ญ์ œ, ํ™•๋Œ€/์ถ•์†Œ, ์ด์ „/๋‹ค์Œ ํŽ˜์ด์ง€)์— title ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋งˆ์šฐ์Šค ์‚ฌ์šฉ์ž์šฉ ํˆดํŒ ์ œ๊ณต

๐ŸŽฏ Why:

  • ๋„ค์ดํ‹ฐ๋ธŒ disabled ์†์„ฑ์€ ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ํฌ์ปค์Šค์™€ ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๋ฅผ ์ฐจ๋‹จํ•˜์—ฌ ํˆดํŒ(๋น„ํ™œ์„ฑํ™” ์‚ฌ์œ )์„ ์ฝ๊ฑฐ๋‚˜ ๋ณผ ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ฆ
  • ์•„์ด์ฝ˜ ์ „์šฉ ๋ฒ„ํŠผ์— ํˆดํŒ์ด ์—†์–ด ๋งˆ์šฐ์Šค ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์˜ ๊ธฐ๋Šฅ์„ ๋ช…ํ™•ํžˆ ์ธ์ง€ํ•˜๊ธฐ ์–ด๋ ค์›€

๐Ÿ“ธ Before/After:
(N/A - ํˆดํŒ ํ‘œ์‹œ ๋ฐ ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ํฌ์ปค์Šค ๊ฐœ์„ )

โ™ฟ Accessibility:

  • ๋น„ํ™œ์„ฑํ™”๋œ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์Šคํฌ๋ฆฐ ๋ฆฌ๋” ์ดˆ์  ์œ ์ง€ ๋ฐ ์„ค๋ช… ์ œ๊ณต (aria-disabled)
  • ์•„์ด์ฝ˜ ์ „์šฉ ๋ฒ„ํŠผ์— ๋„ค์ดํ‹ฐ๋ธŒ ํˆดํŒ(title)์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ

PR created automatically by Jules for task 6711654907972493799 started by @seonghobae

Copilot AI review requested due to automatic review settings July 22, 2026 14:10
@google-labs-jules

Copy link
Copy Markdown

๐Ÿ‘‹ 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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves ScoreView/ScoreViewer button accessibility and discoverability by adding native tooltips (title) to icon-only controls and using aria-disabled (instead of native disabled) in ScoreView to keep assistive-tech focus and allow hover tooltips for disabled states.

Changes:

  • Added title tooltips to ScoreViewer zoom/fit/page navigation icon buttons.
  • Switched the ScoreView โ€œopen scoreโ€ native button from disabled to aria-disabled and added a disabled-reason tooltip.
  • Updated ScoreView tests to assert aria-disabled instead of native disabled for the โ€œopen scoreโ€ button.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
apps/desktop/src/features/score/ScoreViewer.tsx Adds title tooltips to icon-only controls (zoom/fit/page navigation).
apps/desktop/src/features/score/ScoreView.tsx Uses aria-disabled + tooltip for โ€œopen scoreโ€ when no project is active; adds tooltip to remove action.
apps/desktop/src/features/score/ScoreView.test.tsx Updates assertions to match the new aria-disabled behavior.

๐Ÿ’ก Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 297 to 301
aria-label={t("scoreViewerPrevPage")}
title={t("scoreViewerPrevPage")}
disabled={pageNumber <= 1}
onClick={goToPreviousPage}
>
Comment on lines 311 to 315
aria-label={t("scoreViewerNextPage")}
title={t("scoreViewerNextPage")}
disabled={pageNumber >= pageCount}
onClick={goToNextPage}
>
Comment on lines 199 to 203
onClick={projectId ? () => void handleRemove(projectId, attachment) : undefined}
disabled={!projectId}
aria-label={`${t("scoreRemove")}: ${attachment.fileName}`}
title={`${t("scoreRemove")}: ${attachment.fileName}`}
className="size-10 border-rose-300/25 text-rose-200 hover:bg-rose-400/10"
Copilot AI review requested due to automatic review settings July 22, 2026 14:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 4 changed files in this pull request and generated no new comments.

Copilot AI review requested due to automatic review settings July 22, 2026 15:25

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 6 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (3)

apps/desktop/src/features/score/ScoreViewer.tsx:300

  • disabled on a native <button> prevents the title tooltip from showing (and removes the control from focus), which undermines the tooltip improvement for the prev/next icon buttons when they are disabled. Consider switching to aria-disabled and removing the click handler when disabled (similar to ScoreViewโ€™s pattern).
            disabled={pageNumber <= 1}
            onClick={goToPreviousPage}

apps/desktop/src/features/score/ScoreViewer.tsx:314

  • Same issue as the previous-page control: when disabled is set, browsers wonโ€™t show the title tooltip. Using aria-disabled plus a conditional onClick keeps the tooltip behavior consistent.
            disabled={pageNumber >= pageCount}
            onClick={goToNextPage}

apps/desktop/src/features/score/ScoreView.tsx:203

  • The remove (trash) icon button now has a title, but itโ€™s still rendered with disabled={!projectId}. Disabled buttons generally donโ€™t show native title tooltips because pointer events are blocked, so the tooltip wonโ€™t appear in the exact state where the button is disabled. If you want a tooltip even while disabled, move the title to a non-disabled wrapper element.
                      onClick={projectId ? () => void handleRemove(projectId, attachment) : undefined}
                      disabled={!projectId}
                      aria-label={`${t("scoreRemove")}: ${attachment.fileName}`}
                      title={`${t("scoreRemove")}: ${attachment.fileName}`}
                      className="size-10 border-rose-300/25 text-rose-200 hover:bg-rose-400/10"

"librosa>=0.11.0",
"numba<0.67.0",
"numpy>=1.26",
"setuptools>=83.0.0",
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.

2 participants