Skip to content

🎨 Palette: 외부 링크 툴팁 다국어 지원 추가 - #197

Open
seonghobae wants to merge 5 commits into
mainfrom
feat/external-link-tooltips-12589893808415607769
Open

🎨 Palette: 외부 링크 툴팁 다국어 지원 추가#197
seonghobae wants to merge 5 commits into
mainfrom
feat/external-link-tooltips-12589893808415607769

Conversation

@seonghobae

@seonghobaeseonghobae commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

💡 What: target="_blank" 속성을 가진 외부 링크에 대해 마우스 오버 시 나타나는 다국어 지원 툴팁(title 속성)을 추가했습니다.
🎯 Why: 새 탭에서 열리는 링크임을 사용자에게 명확히 안내하여 혼란을 방지하고 예측 가능한 브라우징 경험을 제공하기 위해서입니다.
📸 Before/After: 외부 링크 마우스 오버 시 아무 안내가 없었으나, 이제 "새 창에서 열기"(EN: "Opens in new tab") 툴팁이 표시됩니다.
♿ Accessibility: 스크린 리더 사용자에게 링크 동작에 대한 추가 컨텍스트를 제공하며, 시각 장애인 및 인지 장애를 가진 사용자들의 탐색 경험을 돕습니다.


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


Devin Review

Summary by CodeRabbit

  • 접근성 개선

    • 새 탭에서 열리는 외부 링크에 안내 툴팁을 추가했습니다.
    • 한국어와 영어 환경에 맞춰 툴팁 문구가 자동으로 표시됩니다.
  • 문서

    • 외부 링크 접근성 및 다국어 지원 관련 학습 기록을 추가했습니다.

@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

coderabbitaiBot commented Aug 28, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 87d76074-c371-495f-bcba-8a823fa647ac

📥 Commits

Reviewing files that changed from the base of the PR and between 8103aad and ba75619.

📒 Files selected for processing (3)
  • .Jules/palette.md
  • i18n.js
  • index.html

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


📝 Walkthrough

Walkthrough

외부 링크에 새 탭 안내 툴팁을 추가했습니다. 한국어와 영어 번역을 등록했습니다. 언어 변경 시 링크의 title 속성을 갱신합니다.

Changes

새 탭 안내 현지화

Layer / File(s)Summary
title 속성 번역 런타임
i18n.js
한국어와 영어 사전에 common.newTab 번역을 추가했습니다. setLanguagedata-i18n-title 속성을 사용해 title을 갱신합니다.
외부 링크 안내 속성 적용
index.html, .Jules/palette.md
헤더, CTA, 참고문헌, 프로젝트, 푸터의 외부 링크에 titledata-i18n-title 속성을 추가했습니다. 관련 학습 기록을 문서화했습니다.

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

Merge Risk:⚪ Minimal · up to ba756

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)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring 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 …Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ Passed제목은 외부 링크의 다국어 툴팁 지원이라는 주요 변경 사항을 정확하고 간결하게 설명합니다.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
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 1 functions across 1 files. (2 skipped: 2 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/external-link-tooltips-12589893808415607769

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.

@devin-ai-integrationdevin-ai-integrationBot 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.

Devin Review found 3 potential issues.

Devin Review

Comment threadi18n.js
metaDescription: "맥락지혜 연구실은 흩어진 기업 자료를 맥락 안에서 판단 가능한 구조로 바꾸는 AI 의사결정 지원 시스템을 연구하고 만듭니다.",
logoSrc: "assets/context-wisdom-lab-logo.svg",
logoAlt: "맥락지혜 연구실 · Contextual Wisdom Lab",
"common.newTab": "새 창에서 열기",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 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.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment threadi18n.js
Comment on lines 367 to 388

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);
}
}
});
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 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)

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment threadi18n.js
metaDescription: "맥락지혜 연구실은 흩어진 기업 자료를 맥락 안에서 판단 가능한 구조로 바꾸는 AI 의사결정 지원 시스템을 연구하고 만듭니다.",
logoSrc: "assets/context-wisdom-lab-logo.svg",
logoAlt: "맥락지혜 연구실 · Contextual Wisdom Lab",
"common.newTab": "새 창에서 열기",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📝 Info: Tooltip wording: window vs tab

The Korean common.newTab reads '새 창에서 열기' (new window) while the English reads 'Opens in new tab'. Harmless wording mismatch between locales.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Sign up for freeto 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

@seonghobae