๐จ Palette: SettingsLayout ๋นํ์ฑํ ๋ฒํผ ์ ๊ทผ์ฑ ํดํ ๊ฐ์ - #1453
๐จ Palette: SettingsLayout ๋นํ์ฑํ ๋ฒํผ ์ ๊ทผ์ฑ ํดํ ๊ฐ์ #1453seonghobae wants to merge 33 commits into
Conversation
SettingsLayout ์ปดํฌ๋ํธ ๋ด OIDC ๋ก๊ทธ์์ ๋ฒํผ๊ณผ ๊ณ์ ์ค์ ์ ์ฅ ๋ฒํผ์ด ๋นํ์ฑํ ์ํ์ผ ๋ ํดํ์ด ๋์ํ์ง ์๋ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. disabled ์์ฑ์ ๊ฐ์ง button ํ๊ทธ์ ์ง์ title์ ๋ถ์ฌํ๋ฉด ๋ง์ฐ์ค ํฌ์ธํฐ ์ด๋ฒคํธ๊ฐ ์ฐจ๋จ๋๊ณ ํค๋ณด๋ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์ ์์ด ์คํฌ๋ฆฐ ๋ฆฌ๋์์ ์ฝ์ ์ ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด: - ๋นํ์ฑํ๋ ๋ฒํผ์ ํฌ์ปค์ค ๊ฐ๋ฅํ `span`์ผ๋ก ๊ฐ์ธ๊ณ `tabIndex`์ `title`์ ์ ์ฉ - ๋ฒํผ ๋นํ์ฑ ์ํ์ผ ๋ ์๊ฐ์ ์ธ ์ปค์ ํผ๋๋ฐฑ์ ์ ์งํ๊ธฐ ์ํด ๋ํผ ์์์ `cursor-not-allowed` ํด๋์ค ์ ์ฉ - ์์ ๋ฒํผ์๋ `pointer-events-none`์ ์ถ๊ฐํ์ฌ ๋ํผ ์์๊ฐ ํธ๋ฒ ์ด๋ฒคํธ๋ฅผ ์ ์์ ์ผ๋ก ์์ ํ๋๋ก ์์
|
๐ 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 New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Warning Review limit reachedNext included review available in 27 minutes. View limit detailsLimit 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. Review configuration: โ๏ธ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ๐ Files selected for processing (2)
No actionable comments were generated in the recent review. ๐ โน๏ธ Recent review infoโ๏ธ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ๐ Files selected for processing (2)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. ๐ WalkthroughWalkthroughThe settings layout tracks OIDC session loading and derives control states for account save, OIDC login, and logout. Controls expose contextual labels, busy and disabled semantics, focusable unavailable wrappers, and pointer suppression. Tests verify pending and completed request states. ChangesSettings control accessibility
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ๐ต Low ยท up to Disabled controls may display an incorrect explanation while input or session state is still loading, which could confuse users relying on the tooltip. The change is otherwise mergeable with explicit owner awareness and follow-up on the state-dependent messaging. ๐ฅ Pre-merge checks | โ 4โ Passed checks (4 passed)
โจ Finishing Touches๐ Generate docstrings
๐งช Generate unit tests (beta)
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. Comment |
|
PR governance metadata gate is not ready for
|
SettingsLayout ์ปดํฌ๋ํธ ๋ด OIDC ๋ก๊ทธ์์ ๋ฒํผ๊ณผ ๊ณ์ ์ค์ ์ ์ฅ ๋ฒํผ์ด ๋นํ์ฑํ ์ํ์ผ ๋ ํดํ์ด ๋์ํ์ง ์๋ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. disabled ์์ฑ์ ๊ฐ์ง button ํ๊ทธ์ ์ง์ title์ ๋ถ์ฌํ๋ฉด ๋ง์ฐ์ค ํฌ์ธํฐ ์ด๋ฒคํธ๊ฐ ์ฐจ๋จ๋๊ณ ํค๋ณด๋ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์ ์์ด ์คํฌ๋ฆฐ ๋ฆฌ๋์์ ์ฝ์ ์ ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด: - ๋นํ์ฑํ๋ ๋ฒํผ์ ํฌ์ปค์ค ๊ฐ๋ฅํ `span`์ผ๋ก ๊ฐ์ธ๊ณ `tabIndex`์ `title`์ ์ ์ฉ - ๋ฒํผ ๋นํ์ฑ ์ํ์ผ ๋ ์๊ฐ์ ์ธ ์ปค์ ํผ๋๋ฐฑ์ ์ ์งํ๊ธฐ ์ํด ๋ํผ ์์์ `cursor-not-allowed` ํด๋์ค ์ ์ฉ - ์์ ๋ฒํผ์๋ `pointer-events-none`์ ์ถ๊ฐํ์ฌ ๋ํผ ์์๊ฐ ํธ๋ฒ ์ด๋ฒคํธ๋ฅผ ์ ์์ ์ผ๋ก ์์ ํ๋๋ก ์์
SettingsLayout ์ปดํฌ๋ํธ ๋ด OIDC ๋ก๊ทธ์์ ๋ฒํผ๊ณผ ๊ณ์ ์ค์ ์ ์ฅ ๋ฒํผ์ด ๋นํ์ฑํ ์ํ์ผ ๋ ํดํ์ด ๋์ํ์ง ์๋ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. disabled ์์ฑ์ ๊ฐ์ง button ํ๊ทธ์ ์ง์ title์ ๋ถ์ฌํ๋ฉด ๋ง์ฐ์ค ํฌ์ธํฐ ์ด๋ฒคํธ๊ฐ ์ฐจ๋จ๋๊ณ ํค๋ณด๋ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์ ์์ด ์คํฌ๋ฆฐ ๋ฆฌ๋์์ ์ฝ์ ์ ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด: - ๋นํ์ฑํ๋ ๋ฒํผ์ ํฌ์ปค์ค ๊ฐ๋ฅํ `span`์ผ๋ก ๊ฐ์ธ๊ณ `tabIndex`์ `title`์ ์ ์ฉ - ๋ฒํผ ๋นํ์ฑ ์ํ์ผ ๋ ์๊ฐ์ ์ธ ์ปค์ ํผ๋๋ฐฑ์ ์ ์งํ๊ธฐ ์ํด ๋ํผ ์์์ `cursor-not-allowed` ํด๋์ค ์ ์ฉ - ์์ ๋ฒํผ์๋ `pointer-events-none`์ ์ถ๊ฐํ์ฌ ๋ํผ ์์๊ฐ ํธ๋ฒ ์ด๋ฒคํธ๋ฅผ ์ ์์ ์ผ๋ก ์์ ํ๋๋ก ์์
SettingsLayout ์ปดํฌ๋ํธ ๋ด OIDC ๋ก๊ทธ์์ ๋ฒํผ๊ณผ ๊ณ์ ์ค์ ์ ์ฅ ๋ฒํผ์ด ๋นํ์ฑํ ์ํ์ผ ๋ ํดํ์ด ๋์ํ์ง ์๋ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. disabled ์์ฑ์ ๊ฐ์ง button ํ๊ทธ์ ์ง์ title์ ๋ถ์ฌํ๋ฉด ๋ง์ฐ์ค ํฌ์ธํฐ ์ด๋ฒคํธ๊ฐ ์ฐจ๋จ๋๊ณ ํค๋ณด๋ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์ ์์ด ์คํฌ๋ฆฐ ๋ฆฌ๋์์ ์ฝ์ ์ ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด: - ๋นํ์ฑํ๋ ๋ฒํผ์ ํฌ์ปค์ค ๊ฐ๋ฅํ `span`์ผ๋ก ๊ฐ์ธ๊ณ `tabIndex`์ `title`์ ์ ์ฉ - ๋ฒํผ ๋นํ์ฑ ์ํ์ผ ๋ ์๊ฐ์ ์ธ ์ปค์ ํผ๋๋ฐฑ์ ์ ์งํ๊ธฐ ์ํด ๋ํผ ์์์ `cursor-not-allowed` ํด๋์ค ์ ์ฉ - ์์ ๋ฒํผ์๋ `pointer-events-none`์ ์ถ๊ฐํ์ฌ ๋ํผ ์์๊ฐ ํธ๋ฒ ์ด๋ฒคํธ๋ฅผ ์ ์์ ์ผ๋ก ์์ ํ๋๋ก ์์
Review follow-up
Exact-head validation: |
I have verified that the updated test I have aligned the implementation of I ran |
SettingsLayout ์ปดํฌ๋ํธ ๋ด OIDC ๋ก๊ทธ์์ ๋ฒํผ๊ณผ ๊ณ์ ์ค์ ์ ์ฅ ๋ฒํผ์ด ๋นํ์ฑํ ์ํ์ผ ๋ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์ ์๊ฑฐ๋, ํดํ์ด ๋์ํ์ง ์๋ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. - ๊ธฐ์กด `span` ๋ํผ + `disabled` ํ์ ์์ ๋ฐฉ์์์, ๋จ์ผ ๋ค์ดํฐ๋ธ ์์์ `aria-disabled`, `aria-describedby`๋ฅผ ์ค์ ํ๊ณ `onClick` ์ด๋ฒคํธ ๋ด์์ ๋์์ ์ ํํ๋ ํจํด์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค. - `sr-only` ์์์ `id`๋ฅผ ๋ถ์ฌํ๊ณ ๊ฐ ์ํ์ ๋ฐ๋ฅธ ์๋ด ๋ฉ์์ง๋ฅผ ์ถ๊ฐํ์ฌ, ํค๋ณด๋ ํ์ ๋ฐ ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฌ์ฉ ์ ์ ๊ทผ ๊ฐ๋ฅํ ์๋ด๋ฅผ ์ ๊ณตํ๋๋ก ํ์ต๋๋ค.
Current-head remediation
Hosted Checks and an eligible independent approval must re-run for this exact head before normal merge. |
Acknowledged. I have pulled the exact head |
Current-head remediation
The change is limited to the affected settings component and its regression test. Hosted checks must be evaluated against this exact head; predecessor approvals and check results are stale. |
Acknowledged. I have reset my local tree to the exact head |
Current-head remediation
The change is limited to the affected settings component and its regression test. Hosted checks must be evaluated against this exact head; predecessor approvals and check results are stale. |
Current-head remediation
The change is limited to the affected settings component and its regression test. Hosted checks must be evaluated against this exact head; predecessor approvals and check results are stale. |
Review finding disposition โ exact head
|
Acknowledged. I have reset my local tree to the exact head |
Acknowledged. Handled in the matching branch update. |
Current-head remediation update
All predecessor review/check evidence is stale after this push; hosted gates must bind to this exact head. |
Acknowledged. Thanks for confirming that the exact head |
Acknowledged. I have reset my local tree to the exact head |
Current-head review dispositionThe remaining Devin note is informational: Decision: |
Acknowledged. Standing by for required Checks and independent approval. |
๐ก ๋ฌด์์ ๋ณ๊ฒฝํ๋์?
SettingsLayout์ปดํฌ๋ํธ์ OIDC ๋ก๊ทธ์์ ๋ฒํผ๊ณผ ๊ณ์ ์ค์ ์ ์ฅ ๋ฒํผ์ ์ ๊ทผ์ฑ(a11y) ํดํ์ ์ถ๊ฐํ์ต๋๋ค. ๋นํ์ฑํ๋ ๋ฒํผ์spanํ๊ทธ๋ก ๊ฐ์ธ๊ณtabIndex์title์ ๋ถ์ฌํ์ฌ ํค๋ณด๋ ๋ด๋น๊ฒ์ด์ ๊ณผ ๋ง์ฐ์ค ํธ๋ฒ ์ ํดํ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋ํ๋๋๋ก ์์ ํ์ต๋๋ค.๐ฏ ์ ํ์ํ๊ฐ์?
๊ธฐ์กด์๋
disabled์์ฑ์ ๊ฐ์ง<button>์๋ฆฌ๋จผํธ์ ์ง์ title์์ฑ์ด ์ค์ ๋์ด ์์ด, ํฌ์ธํฐ ์ด๋ฒคํธ๊ฐ ์ฐจ๋จ๋๊ณ ํค๋ณด๋ ํญ ์์(Tab Order)์์ ์ ์ธ๋์์ต๋๋ค. ์ด๋ก ์ธํด ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฌ์ฉ์์ ๋ง์ฐ์ค ์ฌ์ฉ์ ๋ชจ๋ ๋ฒํผ์ด ๋นํ์ฑํ๋ ์ด์ ๋ฅผ ํ์ธํ ์ ์์์ต๋๋ค.โฟ ์ ๊ทผ์ฑ(Accessibility) ๊ฐ์ ์ฌํญ
span)๋ก ๋ํํ์ฌ ํค๋ณด๋ ์ ๊ทผ์ฑ ํ๋ณด (tabIndex={0}).cursor-not-allowedํผ๋๋ฐฑ์ ๋ํผ๋ก ์ด๋์ํค๊ณ , ๋ด๋ถ ๋ฒํผ์๋pointer-events-none์ ์ ์ฉํ์ฌ ํดํ์ด ์์ ์ ์ผ๋ก ํ์๋๋๋ก ๊ฐ์ .PR created automatically by Jules for task 1327323527225576825 started by @seonghobae
Summary by CodeRabbit