diff --git a/.cline-context.md b/.cline-context.md index 22a0889..4a0eded 100644 --- a/.cline-context.md +++ b/.cline-context.md @@ -15,6 +15,11 @@ - `src/middleware.ts`: Route-level auth and admin role verification guard. - **Completed So Far:** + - Standardized user-isolated Tag database REST API (`/api/tags`) ensuring private custom tags per account, preventing cross-user data leakage and providing live tag autocomplete (v0.7.2). + - Streamlined Task Drag-and-Drop (DND) interaction model: hovering over a task nests as a subtask, dropping on blank list background elevates to root level, and prevents duplicate/looping trees (v0.7.2). + - Fixed completed task toggle button layout shift and centered list loader animations (v0.7.2). + - Constrained inline title edit double-click trigger zone strictly to task title text span (v0.7.2). + - Integrated i18n localization with language switcher in Admin console (`/admin`), and upgraded placeholders/dialogs across EN/KO/JA to polite, natural phrasing (v0.7.2). - Standardized complete localization across all 3 supported languages (EN, KO, JA) without partial fallback leaks; translated all Settings Modal tabs (Profile, Preferences, Labs, Sync Integrations, Admin) and interactive guides (v0.7.1). - Resolved list header rename layout shift bug where editing list title pushed the completed items toggle button (v0.7.1). - Enhanced Markdown Note Editor preview/editor canvas alignment and unified description typography heights (v0.7.1). diff --git a/AGENTS.md b/AGENTS.md index 470ed79..dae49bb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -85,7 +85,8 @@ src/ | `checkpoint-v0.6.3` | 노션 스타일 6도트 드래그 핸들(`⋮⋮`) & DND 태스크 재정렬, F2 단축키 인라인 제목 수정, 우측 호버 서브태스크 추가 버튼, 6초 플로팅 인터랙티브 실행 취소(Undo) 토스트 배너 탑재, 휴지통 및 로컬 스토리지 트리 중복 버그 수정 | 2026-08-21 | | `checkpoint-v0.6.4` | i18n 모듈러 사전 아키텍처(`types.ts`, `locales/en.ts`, `locales/ko.ts`, `locales/ja.ts`) 분리 및 번역 완성도 100%, 어드민 콘솔(`/admin`) 데모 프리뷰 및 멀티유저 게이트 연동, 설정 모달 Admin 탭 정보 고도화, 사이드바 프로필 메뉴 내 Admin Console 진입점 추가 | 2026-08-21 | | `checkpoint-v0.7.0` | 좌측 사이드바 UI/UX 전면 리디자인(브랜드 로고 SVG, 중앙정렬 매트 검색창, 바닥 밀착 프로필), 뷰 전환(리스트/칸반) 미니멀 원터치 토글 및 실험실 연동 버그 수정, 휴지통 카운트 실시간 동기화 & 기본화면 튕김 버그 수정, 첫 가입 계정 자동 ADMIN 승격 및 실시간 Admin API(/api/admin/users, /api/admin/stats) 구축, 서브태스크 인라인 추가 및 체크박스 Optimistic UI 실시간 렌더링, 메모장 기본 Preview 모드 & 원터치 토글, N-depth 계층형 DND 드래그 앤 드롭 재정렬 및 재귀 하위 태스크 캐스케이드 삭제 지원 | 2026-08-21 | -| `checkpoint-v0.7.1` | **(현재 최신)** 설정 모달(5개 탭 및 가이드/프리뷰 전면) i18n 3개국어(EN/KO/JA) 100% 완전 번역 및 언어 로컬스토리지 영구 기억/자동 감지 적용, 태스크 목록 제목 인라인 수정 시 완료항목 토글 버튼 밀림 flexbox 레이아웃 버그 수정, 메모장 프리뷰/에디터 높이 및 플레이스홀더 타이포그래피 일관성 보정, 우측 상세 패널 우선순위 브라우저 기본 드롭다운을 중앙 퀵애드와 동일한 세련된 컬러 팝오버 칩 UI로 통일 | 2026-08-22 | +| `checkpoint-v0.7.1` | 설정 모달(5개 탭 및 가이드/프리뷰 전면) i18n 3개국어(EN/KO/JA) 100% 완전 번역 및 언어 로컬스토리지 영구 기억/자동 감지 적용, 태스크 목록 제목 인라인 수정 시 완료항목 토글 버튼 밀림 flexbox 레이아웃 버그 수정, 메모장 프리뷰/에디터 높이 및 플레이스홀더 타이포그래피 일관성 보정, 우측 상세 패널 우선순위 브라우저 기본 드롭다운을 중앙 퀵애드와 동일한 세련된 컬러 팝오버 칩 UI로 통일 | 2026-08-22 | +| `checkpoint-v0.7.2` | **(현재 최신)** 태그(Tag) 사용자 계정별 데이터베이스 격리 API 구축(/api/tags), DND 드래그앤드롭 상위 태스크 하위 편입 단일화 및 빈 배경 드롭 1단계 승격 지원, 완료항목 토글 시 로딩 UI 밀림 버그 수정, 인라인 제목 수정 더블클릭 영역 텍스트 한정, 어드민 콘솔 다국어(i18n) 언어 선택기 지원, 친절하고 간결한 톤앤매너 플레이스홀더 전면 적용 | 2026-08-22 | --- diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index 330096f..d4b08a5 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -4,6 +4,7 @@ import Link from "next/link"; import { useSession } from "next-auth/react"; import { getDemoStore } from "@/lib/mockData"; import { useI18n } from "@/lib/i18n"; +import { LanguageSelector } from "@/components/ui/LanguageSelector"; interface AdminUser { id: string; @@ -47,7 +48,7 @@ const INITIAL_DEMO_USERS: AdminUser[] = [ export default function AdminPage() { const { data: session, status } = useSession(); - const { t } = useI18n(); + const { t, lang } = useI18n(); const isDemo = status === "unauthenticated" || !session; @@ -232,18 +233,19 @@ export default function AdminPage() { -
+
+ {isDemo ? ( - ← Back to Demo + ← {lang === "ko" ? "데모로 돌아가기" : lang === "ja" ? "デモに戻る" : "Back to Demo"} ) : ( )} - 🚀 Open Dashboard + 🚀 {lang === "ko" ? "할 일 대시보드" : lang === "ja" ? "タスク一覧" : "Open Dashboard"}
diff --git a/src/components/layout/AppShell.tsx b/src/components/layout/AppShell.tsx index e4d65be..3839005 100644 --- a/src/components/layout/AppShell.tsx +++ b/src/components/layout/AppShell.tsx @@ -5,6 +5,7 @@ import { TaskList, Task, List, User } from "../tasks/TaskList"; import { useUserPrefs, usePrefsStyle } from "@/lib/useUserPrefs"; import { TaskDetail } from "../tasks/TaskDetail"; import { CommandPalette } from "../ui/CommandPalette"; +import { useI18n } from "@/lib/i18n"; import { getDemoStore, saveDemoStore, @@ -58,6 +59,7 @@ export function AppShell({ user, isDemo = false }: AppShellProps) { const [showCompleted, setShowCompleted] = useState(false); const [cmdPaletteOpen, setCmdPaletteOpen] = useState(false); const [refreshKey, setRefreshKey] = useState(0); + const { t } = useI18n(); // Global user preferences (reactive) const { prefs, updatePrefs } = useUserPrefs(); @@ -677,12 +679,12 @@ export function AppShell({ user, isDemo = false }: AppShellProps) {
🗑️ - {undoToast.title || "할 일"}이(가) 삭제되었습니다. + {undoToast.title || t("tasks")} {t("taskUndoHint")}