Uh oh!
There was an error while loading. Please reload this page.
🎨 Palette: 외부 링크 툴팁 다국어 지원 추가 - #197
Conversation
👋 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. |
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough외부 링크에 새 탭 안내 툴팁을 추가했습니다. 한국어와 영어 번역을 등록했습니다. 언어 변경 시 링크의 Changes새 탭 안내 현지화
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk:⚪ Minimal · up to This change adds localized tooltips to external links that open in a new tab without affecting application data, permissions, or runtime dependencies. No actionable merge-blocking risk remains after normal checks and review. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation 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 1 functions across 1 files. (2 skipped: 2 unsupported.)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 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 |
| metaDescription: "맥락지혜 연구실은 흩어진 기업 자료를 맥락 안에서 판단 가능한 구조로 바꾸는 AI 의사결정 지원 시스템을 연구하고 만듭니다.", | ||
| logoSrc: "assets/context-wisdom-lab-logo.svg", | ||
| logoAlt: "맥락지혜 연구실 · Contextual Wisdom Lab", | ||
| "common.newTab": "새 창에서 열기", |
There was a problem hiding this comment.
🟡 User-facing change missing CHANGELOG entry
This PR adds a user-facing feature (translated title tooltips on external links) via the new common.newTab key but leaves CHANGELOG.md untouched. The repository convention requires a Korean entry under [Unreleased] for every user-facing change.
Prompt for agents
The repository convention (CLAUDE.md) requires CHANGELOG.md to be updated in Korean under the [Unreleased] section for any user-facing change. This PR introduces user-visible translated tooltips (title attribute) on external links via the new common.newTab i18n key, but CHANGELOG.md was not updated. Add a Korean [Unreleased] entry to CHANGELOG.md describing the addition of multilingual external-link tooltips.
Was this helpful? React with 👍 or 👎 to provide feedback.
| if (!isInitialDefault) { | ||
| if (!i18nNodes) { | ||
| i18nNodes = document.querySelectorAll("[data-i18n]"); | ||
| i18nNodes = document.querySelectorAll("[data-i18n], [data-i18n-title]"); | ||
| } | ||
| // Only update textContent if it actually changed to avoid layout recalculations | ||
| i18nNodes.forEach((node) => { | ||
| const newText = dict[node.dataset.i18n]; | ||
| if (newText && node.textContent !== newText) { | ||
| node.textContent = newText; | ||
| if (node.hasAttribute("data-i18n")) { | ||
| const newText = dict[node.dataset.i18n]; | ||
| if (newText && node.textContent !== newText) { | ||
| node.textContent = newText; | ||
| } | ||
| } | ||
| if (node.hasAttribute("data-i18n-title")) { | ||
| const newTitle = dict[node.dataset.i18nTitle]; | ||
| if (newTitle && node.getAttribute("title") !== newTitle) { | ||
| node.setAttribute("title", newTitle); | ||
| } | ||
| } | ||
| }); | ||
| } |
There was a problem hiding this comment.
📝 Info: Korean-default skip relies on inlined titles matching the dictionary
The initial-load fast path skips all data-i18n-title nodes when the resolved language is Korean, so inlined title="새 창에서 열기" values are trusted to match messages.ko['common.newTab']. They currently match; any future drift would silently go uncorrected on first load.
(Refers to this code)
Was this helpful? React with 👍 or 👎 to provide feedback.
| metaDescription: "맥락지혜 연구실은 흩어진 기업 자료를 맥락 안에서 판단 가능한 구조로 바꾸는 AI 의사결정 지원 시스템을 연구하고 만듭니다.", | ||
| logoSrc: "assets/context-wisdom-lab-logo.svg", | ||
| logoAlt: "맥락지혜 연구실 · Contextual Wisdom Lab", | ||
| "common.newTab": "새 창에서 열기", |
💡 What:
target="_blank"속성을 가진 외부 링크에 대해 마우스 오버 시 나타나는 다국어 지원 툴팁(title속성)을 추가했습니다.🎯 Why: 새 탭에서 열리는 링크임을 사용자에게 명확히 안내하여 혼란을 방지하고 예측 가능한 브라우징 경험을 제공하기 위해서입니다.
📸 Before/After: 외부 링크 마우스 오버 시 아무 안내가 없었으나, 이제 "새 창에서 열기"(EN: "Opens in new tab") 툴팁이 표시됩니다.
♿ Accessibility: 스크린 리더 사용자에게 링크 동작에 대한 추가 컨텍스트를 제공하며, 시각 장애인 및 인지 장애를 가진 사용자들의 탐색 경험을 돕습니다.
PR created automatically by Jules for task 12589893808415607769 started by @seonghobae
Summary by CodeRabbit
접근성 개선
문서