docs: record design overhaul waves 2-3 and update feature map
Some checks failed
deploy-site / deploy (push) Waiting to run
ci / 정본·보안·린트·타입·테스트 (push) Failing after 20s
ci / 워크스페이스 빌드 검증 (push) Has been skipped
ci / Supabase Edge Functions + Cloudflare Worker (push) Successful in 29s
ci / .NET API 서버 테스트 (push) Successful in 13s
ci / 모바일 린트·타입·Jest (push) Failing after 3h12m39s

design.md gains the wave 2 (desktop IA) and wave 3 (popups) decisions and
what was deliberately not done. Feature catalog: SHELL-01 settings route,
new SHELL-13 IA, SHELL-14 home, SHELL-15 design system v4. Backlog:
GAP-I18N-02 rows resolved; GAP-UX-01..07 capture the backend follow-ups
reported during the overhaul (meeting notes sync, record query filters,
summary-to-transcript citations, mobile IA, unified search, main-side
cleanups, remaining locales).
This commit is contained in:
Yun Chan 2026-09-28 20:46:24 +09:00
parent 7b1210b5d1
commit 171be8f4e8
3 changed files with 51 additions and 3 deletions

View file

@ -284,3 +284,41 @@
- **옛 토큰 키 삭제 안 함.** glass/gradient/glow/crt 키는 @deprecated 로 남긴다(웹·관리자·데스크톱 수백 곳). 새 코드는 쓰지 않는다.
- **6테마 액센트 통일 안 함.** nord·catppuccin·dracula·solarized 는 사용자가 고른 테마라 고유 액센트 유지, 대비만 보정.
- **`--d3-text-inverse` 정의 안 함.** 웹 앱 17곳이 제목 색으로 오용 중 — 값을 정하면 라이트 테마 제목이 사라진다. 웹 정리 때 함께.
### 2026-09-28 추기 · 물결 ② 데스크톱 구조
- 셸: `AppLayout` = 타이틀바 + `shell/AppSidebar` + 본문. 상태바 삭제(버전·모델은 설정, 시계는 OS, "100% LOCAL PRIVACY ·
ZERO CLOUD SYNC"는 동기화와 모순). 사이드바 맨 아래 한 줄 = 조회한 상태만(로컬 AI 연결/꺼짐/확인 중, 자막·회의 녹음 중).
- 내비 SSOT: `renderer/navigation/app-navigation.tsx` — 라우트 home·records·meetings·conversation·commands·dictionary·
knowledge·settings, `navigate(route, params)`·`back()`·`useRouteRequest(route, handler)`(홈 → 특정 회의/기록 이동).
Ctrl+1..3 = 1급, Ctrl+, = 설정(입력 중 무시). 사이드바 항목은 전부 `<button aria-current>`. 툴팁은 `describeChild`
(MUI 툴팁이 aria-label 을 "Ctrl+1"로 덮어쓰던 것 실측).
- 홈(`pages/HomePage.tsx`): 제목·날짜·받아쓰기 키 → 시작(새 회의·자막) → 막힌 것(조회된 상태만) → 한 줄 요약 →
최근 기록 6 · 최근 회의 4 → 파일 전사 → (무료) 한도 있는 사용량. 카드 없이 제목 + 1px 선.
- 설정: 모달 → 전체 화면(왼쪽 세로 탭 208px + 본문 최대 760px). 본문은 `components/settings/SettingsRows`
(구획 h3 + 행: 왼쪽 라벨·설명 / 오른쪽 컨트롤).
- 공유 부품: PageHeader(h1) · EmptyStateCard · SearchInput("/" 실제 동작, Esc) · ConfirmDialog(되돌릴 수 없는 행동) ·
`notify`(아래 가운데 알림 하나, "삭제했습니다 · 되돌리기" 지연 삭제 — onExpire 는 상태 갱신 함수 밖에서 한 번).
- 라벨 SSOT: `utils/display-labels.ts`(feature·tier·record mode → 번역 키). 문자열 조립 키 금지 — 누락 키가 화면에
키 문자열로 보였다(premium_llm·cloud_sync·team_workspace·team·enterprise).
- 모노 스택에 라틴 모노 다음 Pretendard 를 넣어 한글이 고정폭 한글 폰트로 대체되던 "누 름 유 지" 해소(플랫폼 폰트 실측:
한글 4글리프 Pretendard, 공백 1 Consolas).
- 기록: 날짜 묶음 한 열 목록 + 줄 펼침(요약→본문→태그→행동), 검색·태그·모드·즐겨찾기 필터 동시, 더 불러오기,
한 건 삭제 되돌리기 / 전체 삭제 확인.
### 2026-09-28 추기 · 물결 ③ 받아쓰기 팝업
- 공통 바탕 `popups/_shared/popup-base.css`(Pretendard @font-face, 판 radius 10, 선택 = 옅은 오버레이 + 왼쪽 2px 액센트,
kbd 칩, 감소 모션) + 목록형 `_shared/list-popup.css`. 치수는 `main/windows/popup-list-geometry.ts` 와 짝.
- 녹음 캡슐: 판 모양·단색 막대·입력 0이면 막대 정지·처리 중 무한 막대(꾸며낸 % 폐기)·받아쓰던 문장 흐리게 유지·
"Esc 취소" 안내 · 완료 "입력함" 700ms(`RecordingTipPresenter.onSessionCompleted`). 클릭 취소는 녹음 중에만.
- Esc: `VoiceModeService.requestEscape()`(액션 큐 직렬화) + bootstrap 전역 keydown(수정자 없는 Esc). 앞의 앱에도 Esc 가 전달된다.
- 오류 문구: `@d3ro/core/voice-error-message` 한 곳이 코드 → 종류 분류, 팁과 메인 창 알림이 같은 번역 키.
bootstrap 이 `error.code` 를 넘기지 않아 번역 분기가 한 번도 타지 않던 버그 수정.
- 결과 팝업: 제목(왜 떴는지) · 복사(글자 버튼) · 닫기 · 높이 180px 스크롤. 기록·명령 팝업: 제목·listbox·kbd 힌트,
빈 상태 잘림 해소, 명령 `0` 키 등록. 자막: 테마 무관 어두운 받침은 **의도된 예외**(임의 화면 위 가독성).
- 팝업 테마 'system' → OS 다크 모드로 해석(+ OS 전환 시 재주입), 문서 lang = 앱 언어.
- 사이트 데모(`site/src/components/AppLoopDemo.tsx`)를 새 캡슐과 같게 맞췄다(done 단계, 무한 막대, Esc 안내, 10개 로케일 문구).
### 의도적으로 하지 않은 것 (물결 ②·③)
- **자막 받침 테마화 안 함** — 위 예외.
- **첫 실행 온보딩 Esc 닫기 안 함** — 기존 onboarding-dismiss 정책·테스트 존중, 대신 "나중에 설정" 버튼.
- **다른 8개 로케일 번역 안 함** — ko·en 만 새 문구. 나머지는 en 폴백. 한 번에 번역 맞출 것.