Skip to content

preserve(ui): retain hover/focus repair behind #772 - #759

Draft
seonghobae wants to merge 9 commits into
masterfrom
palette/fix-hover-feedback-14924952494992550160
Draft

seonghobae wants to merge 9 commits into
masterfrom
palette/fix-hover-feedback-14924952494992550160

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

Preservation status

  • protected/base: master@728f0f33323e43573d6664209891099502827d5d
  • previous generated head: 5494f764863ef6ce54811df37ea8d834e4b31028
  • exact preservation head: 23c95189e1795eaa1b4ec5e28658d837bc1cdc51
  • lifecycle: open / Draft / zero effective diff
  • canonical stronger owner: fix(ui): restore hover/focus underline to visible entry names #772

이 lane의 유효한 finding은 .visually-hidden type span이 visible filename 뒤에 추가된 뒤 span:last-child가 보이는 filename이 아니라 숨겨진 type span을 가리켜 hover/focus underline이 사라지는 회귀입니다.

Generated candidate의 .entry-label source/test delta는 방향 자체는 유효하지만 retrospective .jules/palette.md를 함께 추가합니다. Canonical #772는 같은 defect를 .entry-name이라는 더 좁은 visible-name 계약, parent entry 처리, focused generated-HTML regression, CHANGELOG, accessible-name 경계와 browser/keyboard acceptance까지 더 강하게 소유합니다.

Generated/intervening history는 삭제하지 않았습니다. 기존 head를 부모로 protected-base tree를 사용하는 ordinary descendant 23c95189...를 만들고 branch를 force=false로 전진시켰습니다. 현재 protected-base 대비 0 files / +0 / -0입니다.

PR-0 규칙상 zero diff만으로 닫지 않습니다. #772 또는 verified successor가 visible-name selector delta, regression, 접근성/keyboard/browser evidence를 정상 protected ancestry에 완전히 승계한 뒤에만 이 predecessor를 완전 승계로 종료합니다.

Delivery Gate

  • 의도성: PASS — visible filename hover/focus feedback 복구 의도는 보존됩니다.
  • 콘텐츠 적합성: PASS — 중복 source와 retrospective doctrine은 current tree에서 제거했습니다.
  • 기능 완전성: FAIL on this lane by design — 구현 authority는 #772입니다.
  • 복원력: FAIL on this lane by design — keyboard/responsive/browser evidence는 #772가 소유합니다.
  • 증거성: FAIL until canonical successor reaches protected ancestry.
  • 고유성: N/A — 기존 directory listing interaction 수리입니다.

Force push, destructive rebase, self-approval, source-neutral rerun, stale GREEN transfer, gate weakening, duplicate source repair는 사용하지 않습니다.

💡 What:
링크 텍스트 엘리먼트에 `.entry-label` 클래스를 명시적으로 추가하고, CSS에서 hover/focus 스타일 선택자를 `span:last-child`에서 `span.entry-label`로 변경했습니다.

🎯 Why:
`<span class="visually-hidden">`을 도입한 후 `span:last-child` 선택자가 더 이상 보이는 텍스트 엘리먼트를 지정하지 않게 되면서 링크에 마우스를 올리거나 키보드 포커스를 줄 때 밑줄이 나타나던 시각적 피드백이 끊어졌기 때문입니다.

📸 Before/After:
Before: 링크에 마우스를 올려도 밑줄이 나타나지 않음.
After: 링크에 마우스를 올리거나 키보드로 포커스 시 링크 텍스트에 밑줄이 표시됨.

♿ Accessibility:
키보드 탐색 시(focus-visible) 제공되는 추가적인 시각적 피드백이 복원되어 시각 장애가 있거나 마우스를 사용할 수 없는 사용자의 접근성이 향상되었습니다.
@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 21, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

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: 6459b426-2724-44e1-8e6a-cfd1d13d61d6

📥 Commits

Reviewing files that changed from the base of the PR and between 728f0f3 and 825297f.

📒 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

생성 HTML의 링크 밑줄 대상을 :last-child에서 .entry-label로 변경했습니다. 상위 디렉터리와 파일명 스팬에 클래스를 추가하고, 관련 테스트와 팔레트 기록을 갱신했습니다.

Changes

링크 레이블 밑줄 처리

Layer / File(s) Summary
레이블 마크업과 CSS 선택자
src/main/kotlin/html4tree/main.kt
Hover 및 focus 밑줄 선택자를 span.entry-label 기준으로 변경했습니다. 상위 디렉터리의 .. 스팬과 파일명 스팬에 entry-label 클래스를 추가했습니다.
테스트와 변경 기록
src/test/kotlin/html4tree/GeneratedIndexReadabilityTest.kt, .jules/palette.md
변경된 HTML 마크업과 CSS 선택자를 테스트 어서션에 반영했습니다. 링크 hover 시각적 피드백 관련 팔레트 항목을 추가했습니다.

Priority: ⬇️ Low

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

Change: Bug fix

Merge Risk: ⚪ Minimal · up to ba783

Hover and keyboard-focus underlines now target visible link labels, restoring the intended feedback without an identified production risk.

🚥 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 제목은 hover/focus 시각적 피드백 복원이라는 주요 변경 사항을 명확하게 설명합니다. #772 참조도 포함하며 간결합니다.
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.

@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.

Fleet exact-head review on 1d91fcba4deab4e6e083e4f5d205b503367a0f7e.

Valid UX finding, but this is not yet a single-writer successor. #756 exact df7d2584309bcfa57ce0dce3320bd9b0e3edae11 is open from the same protected base 728f0f33323e43573d6664209891099502827d5d and modifies the same production selector/name-span seam. #759 is behaviorally stronger in one important respect: it also gives the parent .. visible span a stable semantic class, so the parent link regains the same hover/focus underline. #756, however, carries a valid CHANGELOG delta that #759 does not currently inherit. Merging both would create two parallel writers for the same UI contract; closing #756 before its valid delta is completely inherited would also violate PR-0.

Please converge on one canonical ordinary/non-force successor (preferably this branch if it retains the parent-link fix), and prove exact differential inheritance of every valid source/test/CHANGELOG delta from #756. Keep only one semantic class name (entry-label or entry-name) and one executable contract; do not preserve two equivalent conventions.

Current tests are source-string assertions. For this material UI change, add a current-head browser acceptance that renders the generated index and proves: (1) file/directory links and the parent link visibly underline on hover, (2) keyboard :focus-visible produces the intended visible feedback without styling the .visually-hidden text, (3) focus remains perceivable at 400% zoom/reflow and in forced-colors/high-contrast behavior, and (4) the hidden type label remains available to the accessibility tree while the parent .. stays intentionally hidden from it. A screenshot/E2E receipt from the unchanged exact head is needed before calling the UI Delivery Gate complete.

Also correct the .jules/palette.md provenance date (2024-10-23) unless that is an explicitly cited historical observation; the change itself is 2026-09-22 work.

seonghobae and others added 8 commits September 22, 2026 04:20
💡 What:
링크 텍스트 엘리먼트에 `.entry-label` 클래스를 명시적으로 추가하고, CSS에서 hover/focus 스타일 선택자를 `span:last-child`에서 `span.entry-label`로 변경했습니다.

🎯 Why:
`<span class="visually-hidden">`을 도입한 후 `span:last-child` 선택자가 더 이상 보이는 텍스트 엘리먼트를 지정하지 않게 되면서 링크에 마우스를 올리거나 키보드 포커스를 줄 때 밑줄이 나타나던 시각적 피드백이 끊어졌기 때문입니다.

📸 Before/After:
Before: 링크에 마우스를 올려도 밑줄이 나타나지 않음.
After: 링크에 마우스를 올리거나 키보드로 포커스 시 링크 텍스트에 밑줄이 표시됨.

♿ Accessibility:
키보드 탐색 시(focus-visible) 제공되는 추가적인 시각적 피드백이 복원되어 시각 장애가 있거나 마우스를 사용할 수 없는 사용자의 접근성이 향상되었습니다.
💡 What:
링크 텍스트 엘리먼트에 `.entry-label` 클래스를 명시적으로 추가하고, CSS에서 hover/focus 스타일 선택자를 `span:last-child`에서 `span.entry-label`로 변경했습니다.

🎯 Why:
`<span class="visually-hidden">`을 도입한 후 `span:last-child` 선택자가 더 이상 보이는 텍스트 엘리먼트를 지정하지 않게 되면서 링크에 마우스를 올리거나 키보드 포커스를 줄 때 밑줄이 나타나던 시각적 피드백이 끊어졌기 때문입니다.

📸 Before/After:
Before: 링크에 마우스를 올려도 밑줄이 나타나지 않음.
After: 링크에 마우스를 올리거나 키보드로 포커스 시 링크 텍스트에 밑줄이 표시됨.

♿ Accessibility:
키보드 탐색 시(focus-visible) 제공되는 추가적인 시각적 피드백이 복원되어 시각 장애가 있거나 마우스를 사용할 수 없는 사용자의 접근성이 향상되었습니다.
💡 What:
링크 텍스트 엘리먼트에 `.entry-label` 클래스를 명시적으로 추가하고, CSS에서 hover/focus 스타일 선택자를 `span:last-child`에서 `span.entry-label`로 변경했습니다.

🎯 Why:
`<span class="visually-hidden">`을 도입한 후 `span:last-child` 선택자가 더 이상 보이는 텍스트 엘리먼트를 지정하지 않게 되면서 링크에 마우스를 올리거나 키보드 포커스를 줄 때 밑줄이 나타나던 시각적 피드백이 끊어졌기 때문입니다.

📸 Before/After:
Before: 링크에 마우스를 올려도 밑줄이 나타나지 않음.
After: 링크에 마우스를 올리거나 키보드로 포커스 시 링크 텍스트에 밑줄이 표시됨.

♿ Accessibility:
키보드 탐색 시(focus-visible) 제공되는 추가적인 시각적 피드백이 복원되어 시각 장애가 있거나 마우스를 사용할 수 없는 사용자의 접근성이 향상되었습니다.
💡 What:
링크 텍스트 엘리먼트에 `.entry-label` 클래스를 명시적으로 추가하고, CSS에서 hover/focus 스타일 선택자를 `span:last-child`에서 `span.entry-label`로 변경했습니다.

🎯 Why:
`<span class="visually-hidden">`을 도입한 후 `span:last-child` 선택자가 더 이상 보이는 텍스트 엘리먼트를 지정하지 않게 되면서 링크에 마우스를 올리거나 키보드 포커스를 줄 때 밑줄이 나타나던 시각적 피드백이 끊어졌기 때문입니다.

📸 Before/After:
Before: 링크에 마우스를 올려도 밑줄이 나타나지 않음.
After: 링크에 마우스를 올리거나 키보드로 포커스 시 링크 텍스트에 밑줄이 표시됨.

♿ Accessibility:
키보드 탐색 시(focus-visible) 제공되는 추가적인 시각적 피드백이 복원되어 시각 장애가 있거나 마우스를 사용할 수 없는 사용자의 접근성이 향상되었습니다.
💡 What:
링크 텍스트 엘리먼트에 `.entry-label` 클래스를 명시적으로 추가하고, CSS에서 hover/focus 스타일 선택자를 `span:last-child`에서 `span.entry-label`로 변경했습니다.

🎯 Why:
`<span class="visually-hidden">`을 도입한 후 `span:last-child` 선택자가 더 이상 보이는 텍스트 엘리먼트를 지정하지 않게 되면서 링크에 마우스를 올리거나 키보드 포커스를 줄 때 밑줄이 나타나던 시각적 피드백이 끊어졌기 때문입니다.

📸 Before/After:
Before: 링크에 마우스를 올려도 밑줄이 나타나지 않음.
After: 링크에 마우스를 올리거나 키보드로 포커스 시 링크 텍스트에 밑줄이 표시됨.

♿ Accessibility:
키보드 탐색 시(focus-visible) 제공되는 추가적인 시각적 피드백이 복원되어 시각 장애가 있거나 마우스를 사용할 수 없는 사용자의 접근성이 향상되었습니다.
💡 What:
링크 텍스트 엘리먼트에 `.entry-label` 클래스를 명시적으로 추가하고, CSS에서 hover/focus 스타일 선택자를 `span:last-child`에서 `span.entry-label`로 변경했습니다.

🎯 Why:
`<span class="visually-hidden">`을 도입한 후 `span:last-child` 선택자가 더 이상 보이는 텍스트 엘리먼트를 지정하지 않게 되면서 링크에 마우스를 올리거나 키보드 포커스를 줄 때 밑줄이 나타나던 시각적 피드백이 끊어졌기 때문입니다.

📸 Before/After:
Before: 링크에 마우스를 올려도 밑줄이 나타나지 않음.
After: 링크에 마우스를 올리거나 키보드로 포커스 시 링크 텍스트에 밑줄이 표시됨.

♿ Accessibility:
키보드 탐색 시(focus-visible) 제공되는 추가적인 시각적 피드백이 복원되어 시각 장애가 있거나 마우스를 사용할 수 없는 사용자의 접근성이 향상되었습니다.
💡 What:
링크 텍스트 엘리먼트에 `.entry-label` 클래스를 명시적으로 추가하고, CSS에서 hover/focus 스타일 선택자를 `span:last-child`에서 `span.entry-label`로 변경했습니다.

🎯 Why:
`<span class="visually-hidden">`을 도입한 후 `span:last-child` 선택자가 더 이상 보이는 텍스트 엘리먼트를 지정하지 않게 되면서 링크에 마우스를 올리거나 키보드 포커스를 줄 때 밑줄이 나타나던 시각적 피드백이 끊어졌기 때문입니다.

📸 Before/After:
Before: 링크에 마우스를 올려도 밑줄이 나타나지 않음.
After: 링크에 마우스를 올리거나 키보드로 포커스 시 링크 텍스트에 밑줄이 표시됨.

♿ Accessibility:
키보드 탐색 시(focus-visible) 제공되는 추가적인 시각적 피드백이 복원되어 시각 장애가 있거나 마우스를 사용할 수 없는 사용자의 접근성이 향상되었습니다.
@seonghobae
seonghobae marked this pull request as draft September 24, 2026 03:04
@seonghobae seonghobae changed the title 🎨 Palette: 시각적 Hover 피드백 복원 preserve(ui): retain hover/focus repair behind #772 Sep 24, 2026
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