Naruon
+Naruon
메일, 첨부, 일정, 작업을 맥락으로 묶어 판단과 실행으로 연결하는 AI 이메일 워크스페이스입니다.
From f38cbcea1497207eb5c71e17e790a138ee910b55 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Fri, 28 Aug 2026 14:20:38 +0000 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=8E=A8=20Palette:=20=EC=99=B8?= =?UTF-8?q?=EB=B6=80=20=EB=A7=81=ED=81=AC=20=ED=88=B4=ED=8C=81=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4=20=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .Jules/palette.md | 4 ++++ i18n.js | 18 ++++++++++++++---- index.html | 32 ++++++++++++++++---------------- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/.Jules/palette.md b/.Jules/palette.md index 8a7cf4c..14e8f07 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -21,3 +21,7 @@ ## 2024-07-15 - Expand clickable area of project cards **Learning:** Using an anchor tag to wrap an entire card (block-level element) can result in verbose and confusing screen reader output. However, restricting the clickable area to just the title makes the UI harder to interact with (violating Fitts's Law). **Action:** Apply `position: relative` to the card container and use a `::after` pseudo-element with `position: absolute; inset: 0;` on the title's anchor tag. This expands the clickable area to the whole card while keeping semantic and accessible HTML structure. + +## 2026-08-28 - 외부 링크에 대한 다국어 툴팁 추가 +**Learning:** 외부 링크(target="_blank")는 시각적으로 화살표 등으로 표시되지 않거나 스크린 리더 사용자가 컨텍스트를 잃기 쉽습니다. HTML의 `title` 속성을 활용하여 외부 링크임을 명시적으로 안내하면 접근성과 사용성이 크게 향상됩니다. 또한, 다국어 사이트의 경우 `title` 속성 또한 동적으로 번역되어야 합니다. +**Action:** 외부 창에서 열리는 링크에는 항상 명확한 안내 툴팁(`title`)을 제공하고, 다국어 지원 스크립트에서 속성 번역 기능을 확장하여 일관된 경험을 제공합니다. diff --git a/i18n.js b/i18n.js index 00b81d3..114e1dd 100644 --- a/i18n.js +++ b/i18n.js @@ -4,6 +4,7 @@ const messages = { metaDescription: "맥락지혜 연구실은 흩어진 기업 자료를 맥락 안에서 판단 가능한 구조로 바꾸는 AI 의사결정 지원 시스템을 연구하고 만듭니다.", logoSrc: "assets/context-wisdom-lab-logo.svg", logoAlt: "맥락지혜 연구실 · Contextual Wisdom Lab", + "common.newTab": "새 창에서 열기", "nav.intro": "소개", "nav.problem": "문제의식", "nav.model": "연구모형", @@ -151,6 +152,7 @@ const messages = { metaDescription: "A research lab building AI decision support systems that connect scattered enterprise material into judgment inside concrete contexts.", logoSrc: "assets/context-wisdom-lab-logo-en.svg", logoAlt: "Contextual Wisdom Lab", + "common.newTab": "Opens in new tab", "nav.intro": "Intro", "nav.problem": "Problem", "nav.model": "Research Model", @@ -365,14 +367,22 @@ function setLanguage(lang) { 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); + } } }); } diff --git a/index.html b/index.html index a2dbbd7..e23a8b9 100644 --- a/index.html +++ b/index.html @@ -42,7 +42,7 @@ 프로젝트 Fork 작업 - GitHub + GitHub
메일, 첨부, 일정, 작업을 맥락으로 묶어 판단과 실행으로 연결하는 AI 이메일 워크스페이스입니다.
PostgreSQL 스키마를 리버스 엔지니어링하고 ERD와 DDL 공유 흐름으로 관리하는 클라우드 MVP입니다.
곡을 섹션, 역할, 템포, 연습 우선순위로 분석하는 로컬 우선 리허설 앱입니다.
긴 녹음을 메타데이터를 보존한 FLAC/Opus 조각으로 변환하는 Python CLI입니다.
스캔된 일본어 신문 PDF를 기사, 제목, 본문, 이미지 구조의 DOM형 JSON으로 파싱하는 API입니다.
트리 편집, 진행률 계산, CSV/JSON, 주간 Gantt를 지원하는 정적 HTML/CSS/JS WBS 플래너입니다.
바이브코딩 앱을 위한 보안 가드레일입니다. AI 개발 도구 규칙, 정적 점검, 리뷰와 수정 프롬프트를 다룹니다.
MLSIRM/MLS2PLM 모형의 시뮬레이션, 적합, 복원 진단을 빠르게 수행하는 Python/Rust 패키지입니다.
DNSBL 게시 기능을 갖춘 Rust 우선 WAF/IDS/AI SOC 게이트웨이입니다.
Founded by - Seongho Bae. + Seongho Bae. Context into judgment. Judgment into action.
From 5b902dd9a1b14cfc26594662c3ee76ce1b98ab59 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Fri, 28 Aug 2026 14:30:53 +0000 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=8E=A8=20Palette:=20=EC=99=B8?= =?UTF-8?q?=EB=B6=80=20=EB=A7=81=ED=81=AC=20=ED=88=B4=ED=8C=81=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4=20=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From b847bef30d49440504d2637cf952c5b51fe9236d Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Fri, 28 Aug 2026 14:44:37 +0000 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=8E=A8=20Palette:=20=EC=99=B8?= =?UTF-8?q?=EB=B6=80=20=EB=A7=81=ED=81=AC=20=ED=88=B4=ED=8C=81=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4=20=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From ba75619a027eaad0af3506c76fee1e8cd15fb0d0 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Fri, 28 Aug 2026 14:58:57 +0000 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=8E=A8=20Palette:=20=EC=99=B8?= =?UTF-8?q?=EB=B6=80=20=EB=A7=81=ED=81=AC=20=ED=88=B4=ED=8C=81=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4=20=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 934f3deadc9dd8c3e85e8c875455da629454de56 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Fri, 28 Aug 2026 15:12:33 +0000 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=8E=A8=20Palette:=20=EC=99=B8?= =?UTF-8?q?=EB=B6=80=20=EB=A7=81=ED=81=AC=20=ED=88=B4=ED=8C=81=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4=20=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit