Skip to content

๐ŸŽจ Palette: ์‹œ๊ฐ์  Hover ํ”ผ๋“œ๋ฐฑ ๋ณต์› - #725

Draft
seonghobae wants to merge 18 commits into
masterfrom
palette-ux-improvement-7493497887722020367
Draft

seonghobae wants to merge 18 commits into
masterfrom
palette-ux-improvement-7493497887722020367

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Goal

Generated directory rows must preserve one full-size link target while hover and keyboard focus decorate only the visible human-readable label. Assistive type/context text remains available without becoming the visual decoration target.

Current exact head

  • Head: 8918e136c113ae229b04dd1fa1e39404ac06a82e
  • Base: master@728f0f33323e43573d6664209891099502827d5d
  • Status: Draft / Proposed

Direct repair and evidence

  • Production source replaces structural :last-child coupling with product-owned .entry-label.
  • 978b737c4b889b01b6cd4772dc2f5746ac669601 strengthens the real generated-file contract:
    • visible file name has entry-label;
    • assistive type text remains separately visually-hidden;
    • the hidden span cannot accidentally become the decoration target.
  • docs/product-technical-gap-baseline.md now records PRD/TRD/UML/ERD/Context Map/Gap/Action/status.
  • CHANGELOG.md binds the semantic hover/focus target and assistive-text boundary.
  • Concurrent successors 00e561fdโ€ฆ and 5d8a8cadโ€ฆ each removed the strengthened test, CHANGELOG evidence, and the entire Gap baseline while reverting the finding date. The second regression was repaired by ordinary-forward commits 197b1519โ€ฆ, bcfed1c2โ€ฆ, cf185693โ€ฆ, and 8918e136โ€ฆ; compare against verified 23335a56โ€ฆ is 5 commits ahead / 0 changed files.

Exact-head acceptance matrix

Concern Current evidence Gate
Determinism real generated-file ordering and exact emitted classes Source PASS; hosted CI pending
Semantics visible label separated from assistive type/context text PASS
Accessibility focus-visible rule, full-row outline, reduced-motion and contrast tests PARTIAL; real AT absent
Pointer/touch/keyboard hover/focus source contract only; browser pointer, touch, Tab/Enter replay absent FAIL
Responsive viewport/wrapping source exists; 320/768/desktop screenshots absent FAIL
Locales generated page is Korean; ko/en/ja/zh/vi/es/de/fr authority and wrapping absent FAIL
Large data realistic generation/render median and p95 absent FAIL
Import/export/recovery directory snapshotโ†’escaped HTML and atomic/fallback write exist; crash/permission/reload evidence absent PARTIAL

Exact-head Checks

Figma component ID and Storybook evidence are absent and are not claimed. Keep Draft until terminal exact-head checks, current-head independent approval, and applicable real-browser, AT, responsive, locale, large-data, and recovery evidence exist.


Original task provenance: Jules task 7493497887722020367.

๐Ÿ’ก What: ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ ๋งํฌ์˜ `:last-child` CSS ์„ ํƒ์ž๋ฅผ `.entry-label` ์˜๋ฏธ๋ก ์  ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
๐ŸŽฏ Why: ์‹œ๊ฐ์ ์œผ๋กœ ์ˆจ๊ฒจ์ง„ ์ ‘๊ทผ์„ฑ ์š”์†Œ(`.visually-hidden`)๊ฐ€ DOM ๊ตฌ์กฐ์˜ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€๋˜๋ฉด์„œ, `:last-child`์— ์˜์กดํ•˜๋˜ ๋งํฌ ํ…์ŠคํŠธ์˜ ํ˜ธ๋ฒ„ ๋ฐ‘์ค„(underline) ํšจ๊ณผ๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
๐Ÿ“ธ Before/After: ๋งํฌ ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„ ์‹œ ๋ฐ‘์ค„ ํšจ๊ณผ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ™ฟ Accessibility: ํ™”๋ฉด ํŒ๋…๊ธฐ๋ฅผ ์œ„ํ•œ `.visually-hidden` ํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹œ๊ฐ์  ์ƒํ˜ธ์ž‘์šฉ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์Šคํƒ€์ผ ๊ตฌ์กฐ๋ฅผ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
@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.

@coderabbitai

coderabbitai Bot commented Sep 17, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. ๐ŸŽ‰

โ„น๏ธ Recent review info
โš™๏ธ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 7a8f69a5-2c46-4472-b611-439aace723e2

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between 728f0f3 and 9b439e3.

๐Ÿ“’ Files selected for processing (3)
  • .jules/palette.md
  • src/main/kotlin/html4tree/main.kt
  • src/test/kotlin/html4tree/GeneratedIndexReadabilityTest.kt

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


๐Ÿ“ Walkthrough

Walkthrough

๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก์˜ ๋ผ๋ฒจ span์— entry-label ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ๋ฒ„ ๋ฐ ํ‚ค๋ณด๋“œ ํฌ์ปค์Šค ์Šคํƒ€์ผ์€ span:last-child ๋Œ€์‹  ์ด ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ ์ง€์นจ๊ณผ ์ƒ์„ฑ ๋งˆํฌ์—… ํ…Œ์ŠคํŠธ๋„ ๊ฐฑ์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Changes

์˜๋ฏธ๋ก ์  ๋ผ๋ฒจ ์„ ํƒ์ž

Layer / File(s) Summary
๋ผ๋ฒจ ๋งˆํฌ์—…๊ณผ ์Šคํƒ€์ผ ์—ฐ๊ฒฐ
.jules/palette.md, src/main/kotlin/html4tree/main.kt
ํ˜ธ๋ฒ„ ๋ฐ ํฌ์ปค์Šค ์Šคํƒ€์ผ์ด .entry-label์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋„๋ก ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์™€ ํŒŒ์ผ๋ช… ๋ผ๋ฒจ span์— entry-label ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ƒ์„ฑ ๋งˆํฌ์—… ๊ฒ€์ฆ ๊ฐฑ์‹ 
src/test/kotlin/html4tree/GeneratedIndexReadabilityTest.kt
๋ถ€๋ชจ ๋””๋ ‰ํ† ๋ฆฌ ๋ผ๋ฒจ๊ณผ ํ˜ธ๋ฒ„ ๋ฐ ํฌ์ปค์Šค CSS ๊ฒ€์ฆ์„ entry-label ๊ธฐ๋ฐ˜ ๋ฌธ์ž์—ด์— ๋งž์ถฐ ๊ฐฑ์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Priority: โฌ‡๏ธ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix

Merge Risk: โšช Minimal ยท up to dff64

The accessibility and hover/focus styling update is internally consistent, with no concrete merge-blocking risk identified.

๐Ÿšฅ Pre-merge checks | โœ… 4 | โŒ 1

โŒ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage โš ๏ธ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1 โ€ฆ Write docstrings for the functions missing them to satisfy the coverage threshold.
โœ… Passed checks (4 passed)
Check name Status Explanation
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.
Description Check โœ… Passed Check skipped - CodeRabbitโ€™s high-level summary is enabled.
Title check โœ… Passed ์ œ๋ชฉ์€ .entry-label ์„ ํƒ์ž๋กœ ์‹œ๊ฐ์  ํ˜ธ๋ฒ„ ๋ฐ‘์ค„ ํšจ๊ณผ๋ฅผ ๋ณต์›ํ•˜๋Š” PR์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
โœจ Finishing Touches ๐Ÿ’ก 1
๐Ÿ“ Generate docstrings ๐Ÿ’ก
  • Commit to this branch
  • Create a new PR
๐Ÿงช Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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.

๐Ÿ’ก What: ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ ๋งํฌ์˜ `:last-child` CSS ์„ ํƒ์ž๋ฅผ `.entry-label` ์˜๋ฏธ๋ก ์  ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
๐ŸŽฏ Why: ์‹œ๊ฐ์ ์œผ๋กœ ์ˆจ๊ฒจ์ง„ ์ ‘๊ทผ์„ฑ ์š”์†Œ(`.visually-hidden`)๊ฐ€ DOM ๊ตฌ์กฐ์˜ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€๋˜๋ฉด์„œ, `:last-child`์— ์˜์กดํ•˜๋˜ ๋งํฌ ํ…์ŠคํŠธ์˜ ํ˜ธ๋ฒ„ ๋ฐ‘์ค„(underline) ํšจ๊ณผ๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
๐Ÿ“ธ Before/After: ๋งํฌ ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„ ์‹œ ๋ฐ‘์ค„ ํšจ๊ณผ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ™ฟ Accessibility: ํ™”๋ฉด ํŒ๋…๊ธฐ๋ฅผ ์œ„ํ•œ `.visually-hidden` ํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹œ๊ฐ์  ์ƒํ˜ธ์ž‘์šฉ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์Šคํƒ€์ผ ๊ตฌ์กฐ๋ฅผ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ’ก What: ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ ๋งํฌ์˜ `:last-child` CSS ์„ ํƒ์ž๋ฅผ `.entry-label` ์˜๋ฏธ๋ก ์  ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
๐ŸŽฏ Why: ์‹œ๊ฐ์ ์œผ๋กœ ์ˆจ๊ฒจ์ง„ ์ ‘๊ทผ์„ฑ ์š”์†Œ(`.visually-hidden`)๊ฐ€ DOM ๊ตฌ์กฐ์˜ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€๋˜๋ฉด์„œ, `:last-child`์— ์˜์กดํ•˜๋˜ ๋งํฌ ํ…์ŠคํŠธ์˜ ํ˜ธ๋ฒ„ ๋ฐ‘์ค„(underline) ํšจ๊ณผ๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
๐Ÿ“ธ Before/After: ๋งํฌ ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„ ์‹œ ๋ฐ‘์ค„ ํšจ๊ณผ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ™ฟ Accessibility: ํ™”๋ฉด ํŒ๋…๊ธฐ๋ฅผ ์œ„ํ•œ `.visually-hidden` ํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹œ๊ฐ์  ์ƒํ˜ธ์ž‘์šฉ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์Šคํƒ€์ผ ๊ตฌ์กฐ๋ฅผ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

current exact head 43b45e8b8cddf9cc99f1767dbd188c3f9d39fa98์˜ source fix ๋ฐฉํ–ฅ์€ ๋งž์Šต๋‹ˆ๋‹ค. .entry-label๋กœ ๊ตฌ์กฐ์  :last-child ์˜์กด์„ ์ œ๊ฑฐํ•˜๋ฉด .visually-hidden sibling์ด ์ถ”๊ฐ€๋˜์–ด๋„ intended visible label์„ ์ง์ ‘ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํ˜„์žฌ acceptance๋Š” generated HTML/CSS ๋ฌธ์ž์—ด ์กด์žฌ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์ˆ˜์ค€์ด๋ผ buyer-visible ํšŒ๊ท€๋ฅผ ๋‹ซ์•˜๋‹ค๋Š” ์ฆ๊ฑฐ๋กœ๋Š” ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ…Œ์ŠคํŠธ๋Š” .entry-label markup๊ณผ selector๊ฐ€ ์ถœ๋ ฅ ๋ฌธ์ž์—ด์— ์žˆ๋‹ค๋Š” ๊ฒƒ๋งŒ ๋ณด๋ฏ€๋กœ, stylesheet๊ฐ€ ์‹ค์ œ๋กœ ์ ์šฉ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ selector specificity/order๊ฐ€ ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜ focus state๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ๋Œ€๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์•„๋„ false GREEN์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. PR ๋ณธ๋ฌธ์€ Before/After ๋ฐ accessibility ๊ฐœ์„ ์„ ์ฃผ์žฅํ•˜์ง€๋งŒ current-head browser screenshot/E2E evidence๋Š” ์—†์Šต๋‹ˆ๋‹ค.

Realistic RED / UI Delivery Gate

  • generated index๋ฅผ ์‹ค์ œ Chromium/Firefox/WebKit์—์„œ ์—ด๊ณ  pointer hover ์‹œ directory/file .entry-label computed text-decoration์ด underline์œผ๋กœ ์ „ํ™˜๋˜๋Š”์ง€ ๊ฒ€์ฆ;
  • Tab์œผ๋กœ ๋™์ผ ๋งํฌ์— ์ง„์ž…ํ–ˆ์„ ๋•Œ :focus-visible outline์ด ๋งํฌ ์ „์ฒด์— ๋ณด์ด๊ณ  label underline๋„ ์ ์šฉ๋˜๋ฉฐ, .visually-hidden type/parent description์€ accessibility tree์— ์œ ์ง€๋˜๋Š”์ง€ ๊ฒ€์ฆ;
  • mouse click ๋’ค ๋ถˆํ•„์š”ํ•œ keyboard-focus outline์ด ๊ฐ•์ œ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ;
  • parent .., ASCII ํŒŒ์ผ๋ช…, CJK ํŒŒ์ผ๋ช…, ๊ธด ํŒŒ์ผ๋ช…/text expansion์„ 320/768/desktop ํญ์—์„œ ํ™•์ธํ•˜๊ณ  horizontal overflow/์ž˜๋ฆผ/์ค‘์ฒฉ์ด ์—†์–ด์•ผ ํ•จ;
  • normal/empty directory ์ƒํƒœ๋ฅผ current-head screenshot์œผ๋กœ ๋‚จ๊ธฐ๊ณ  DOM/CSS fixture์™€ ํ•จ๊ป˜ exact SHA์— ๊ฒฐ๋ฐ•.

GREEN์€ ๋ฌธ์ž์—ด assertion์„ ์ œ๊ฑฐํ•˜๋ผ๋Š” ๋œป์ด ์•„๋‹™๋‹ˆ๋‹ค. fast deterministic source contract๋กœ ์œ ์ง€ํ•˜๋˜, ์ตœ์†Œํ•œ ํ•œ browser E2E๊ฐ€ ์‹ค์ œ computed style + keyboard/a11y tree๋ฅผ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. CSS/markup semantics๊ฐ€ ๊ทธ๋Œ€๋กœ๋ผ๋ฉด production delta๋Š” ๋” ํ‚ค์šธ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

๋˜ .jules/palette.md์˜ 2024-05-19 ๊ธฐ๋ก์€ ์ด๋ฒˆ 2026-09-19 generation์˜ finding์ด๋ผ๋ฉด ์‹ค์ œ ๋‚ ์งœ๋กœ currentizeํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. historical evidence๋ฅผ ์˜๋„ํ•œ ๋‚ ์งœ๋ผ๋ฉด ๊ทผ๊ฑฐ๋ฅผ ๋ช…์‹œํ•˜์‹ญ์‹œ์˜ค.

ํ˜„์žฌ ์ƒํƒœ: source-level repair๋Š” plausible, UI Delivery Gate๋Š” browser/current-head evidence ๋ถ€์žฌ๋กœ FAIL์ž…๋‹ˆ๋‹ค. no-op/freshness SHA๋‚˜ ๋ฌธ์ž์—ด test๋งŒ์œผ๋กœ ์™„๋ฃŒ ์ฒ˜๋ฆฌํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๐Ÿ’ก What: ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ ๋งํฌ์˜ `:last-child` CSS ์„ ํƒ์ž๋ฅผ `.entry-label` ์˜๋ฏธ๋ก ์  ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
๐ŸŽฏ Why: ์‹œ๊ฐ์ ์œผ๋กœ ์ˆจ๊ฒจ์ง„ ์ ‘๊ทผ์„ฑ ์š”์†Œ(`.visually-hidden`)๊ฐ€ DOM ๊ตฌ์กฐ์˜ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€๋˜๋ฉด์„œ, `:last-child`์— ์˜์กดํ•˜๋˜ ๋งํฌ ํ…์ŠคํŠธ์˜ ํ˜ธ๋ฒ„ ๋ฐ‘์ค„(underline) ํšจ๊ณผ๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
๐Ÿ“ธ Before/After: ๋งํฌ ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„ ์‹œ ๋ฐ‘์ค„ ํšจ๊ณผ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ™ฟ Accessibility: ํ™”๋ฉด ํŒ๋…๊ธฐ๋ฅผ ์œ„ํ•œ `.visually-hidden` ํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹œ๊ฐ์  ์ƒํ˜ธ์ž‘์šฉ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์Šคํƒ€์ผ ๊ตฌ์กฐ๋ฅผ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
@seonghobae seonghobae added enhancement New feature or request priority: medium Normal-priority or P2 work labels Sep 19, 2026 — with ChatGPT Codex Connector
๐Ÿ’ก What: ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ ๋งํฌ์˜ `:last-child` CSS ์„ ํƒ์ž๋ฅผ `.entry-label` ์˜๋ฏธ๋ก ์  ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
๐ŸŽฏ Why: ์‹œ๊ฐ์ ์œผ๋กœ ์ˆจ๊ฒจ์ง„ ์ ‘๊ทผ์„ฑ ์š”์†Œ(`.visually-hidden`)๊ฐ€ DOM ๊ตฌ์กฐ์˜ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€๋˜๋ฉด์„œ, `:last-child`์— ์˜์กดํ•˜๋˜ ๋งํฌ ํ…์ŠคํŠธ์˜ ํ˜ธ๋ฒ„ ๋ฐ‘์ค„(underline) ํšจ๊ณผ๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
๐Ÿ“ธ Before/After: ๋งํฌ ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„ ์‹œ ๋ฐ‘์ค„ ํšจ๊ณผ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ™ฟ Accessibility: ํ™”๋ฉด ํŒ๋…๊ธฐ๋ฅผ ์œ„ํ•œ `.visually-hidden` ํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹œ๊ฐ์  ์ƒํ˜ธ์ž‘์šฉ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์Šคํƒ€์ผ ๊ตฌ์กฐ๋ฅผ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
@seonghobae
seonghobae marked this pull request as draft September 19, 2026 15:58

Copy link
Copy Markdown
Collaborator Author

Design assurance โ€” exact-head evidence

Current head: 223fded6674d76f9155b9af4910676014a9caf40 (Draft / Proposed)

Fresh source verification confirms that the generated file/parent labels use .entry-label, the screen-reader type/context spans remain separately .visually-hidden, and hover/focus-visible decoration targets only the visible label. Commit 978b737cโ€ฆ strengthens the real generated-output test so a future class collision or hidden-span decoration regression fails.

The new Gap baseline records PRD/TRD/UML/ERD/Context Map and the current acceptance matrix; CHANGELOG is aligned.

Exact-head checks are not yet terminal:

Still required before Ready/merge: current-head independent approval; real Chromium/Firefox/WebKit hover, focus-visible, Tab/Enter, touch and screen-reader replay; 320/768/desktop light/dark screenshots; ko/en/ja/zh/vi/es/de/fr ownership/wrapping evidence; realistic large-directory generation/render median and p95; and permission/crash/replacement/reload recovery evidence.

No Figma/Storybook, release, or GitHub Pages publication is claimed.

@google-labs-jules

Copy link
Copy Markdown

Design assurance โ€” exact-head evidence

Current head: 223fded6674d76f9155b9af4910676014a9caf40 (Draft / Proposed)

Fresh source verification confirms that the generated file/parent labels use .entry-label, the screen-reader type/context spans remain separately .visually-hidden, and hover/focus-visible decoration targets only the visible label. Commit 978b737cโ€ฆ strengthens the real generated-output test so a future class collision or hidden-span decoration regression fails.

The new Gap baseline records PRD/TRD/UML/ERD/Context Map and the current acceptance matrix; CHANGELOG is aligned.

Exact-head checks are not yet terminal:

Still required before Ready/merge: current-head independent approval; real Chromium/Firefox/WebKit hover, focus-visible, Tab/Enter, touch and screen-reader replay; 320/768/desktop light/dark screenshots; ko/en/ja/zh/vi/es/de/fr ownership/wrapping evidence; realistic large-directory generation/render median and p95; and permission/crash/replacement/reload recovery evidence.

No Figma/Storybook, release, or GitHub Pages publication is claimed.

Acknowledged. Thank you for the detailed exact-head evidence and verification.

seonghobae and others added 5 commits September 19, 2026 16:03
๐Ÿ’ก What: ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ ๋งํฌ์˜ `:last-child` CSS ์„ ํƒ์ž๋ฅผ `.entry-label` ์˜๋ฏธ๋ก ์  ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
๐ŸŽฏ Why: ์‹œ๊ฐ์ ์œผ๋กœ ์ˆจ๊ฒจ์ง„ ์ ‘๊ทผ์„ฑ ์š”์†Œ(`.visually-hidden`)๊ฐ€ DOM ๊ตฌ์กฐ์˜ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€๋˜๋ฉด์„œ, `:last-child`์— ์˜์กดํ•˜๋˜ ๋งํฌ ํ…์ŠคํŠธ์˜ ํ˜ธ๋ฒ„ ๋ฐ‘์ค„(underline) ํšจ๊ณผ๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
๐Ÿ“ธ Before/After: ๋งํฌ ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„ ์‹œ ๋ฐ‘์ค„ ํšจ๊ณผ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ™ฟ Accessibility: ํ™”๋ฉด ํŒ๋…๊ธฐ๋ฅผ ์œ„ํ•œ `.visually-hidden` ํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹œ๊ฐ์  ์ƒํ˜ธ์ž‘์šฉ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์Šคํƒ€์ผ ๊ตฌ์กฐ๋ฅผ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

seonghobae commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator Author

Design Assurance exact-head RCA โ€” 8918e136c113ae229b04dd1fa1e39404ac06a82e

Concurrent successors 00e561fdโ€ฆ and 5d8a8cadโ€ฆ each removed the strengthened generated-file assertions, two CHANGELOG lines, the complete 84-line Gap baseline, and/or reverted the finding date. The second regression was repaired only with ordinary-forward commits 197b1519โ€ฆ, bcfed1c2โ€ฆ, cf185693โ€ฆ, and 8918e136โ€ฆ. Fresh compare against verified 23335a56โ€ฆ is 5 commits ahead / 0 changed files. Exact-head CI/Security/Semgrep/CodeQL are queued or pending; browser computed-style, AT, responsive, 8-locale, large-data, recovery, and independent-review gates remain open, so this PR stays Draft.

@google-labs-jules

Copy link
Copy Markdown

Design Assurance exact-head RCA โ€” 23335a5641e2cc3f8f04442321404a4e23190235

Concurrent successor 00e561fdโ€ฆ removed the strengthened generated-file assertions, two CHANGELOG lines, and the complete 84-line Gap baseline. Ordinary-forward commits 0eaa9e69โ€ฆ, bd5cc085โ€ฆ, and 6183303eโ€ฆ restored the exact valid blobs; 23335a56โ€ฆ corrected the newly introduced selector finding date to 2026-09-20. Product source was not enlarged. Exact-head CI/Security/Semgrep/CodeQL are queued or pending. Browser computed-style, AT, responsive, 8-locale, large-data, recovery, and independent-review gates remain open, so this PR stays Draft.

Acknowledged. Thank you for the exact-head RCA and detailing the status.

seonghobae and others added 5 commits September 19, 2026 17:03
๐Ÿ’ก What: ๋””๋ ‰ํ† ๋ฆฌ/ํŒŒ์ผ ๋งํฌ์˜ `:last-child` CSS ์„ ํƒ์ž๋ฅผ `.entry-label` ์˜๋ฏธ๋ก ์  ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
๐ŸŽฏ Why: ์‹œ๊ฐ์ ์œผ๋กœ ์ˆจ๊ฒจ์ง„ ์ ‘๊ทผ์„ฑ ์š”์†Œ(`.visually-hidden`)๊ฐ€ DOM ๊ตฌ์กฐ์˜ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€๋˜๋ฉด์„œ, `:last-child`์— ์˜์กดํ•˜๋˜ ๋งํฌ ํ…์ŠคํŠธ์˜ ํ˜ธ๋ฒ„ ๋ฐ‘์ค„(underline) ํšจ๊ณผ๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
๐Ÿ“ธ Before/After: ๋งํฌ ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„ ์‹œ ๋ฐ‘์ค„ ํšจ๊ณผ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ™ฟ Accessibility: ํ™”๋ฉด ํŒ๋…๊ธฐ๋ฅผ ์œ„ํ•œ `.visually-hidden` ํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹œ๊ฐ์  ์ƒํ˜ธ์ž‘์šฉ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์Šคํƒ€์ผ ๊ตฌ์กฐ๋ฅผ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: medium Normal-priority or P2 work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant