10 Commits (6fe8a74e59ef49e3543d1031d2b85d4f686e596d)

Author SHA1 Message Date
I Luk Kim 10fcaec080 feat(ui): 작업·인박스·설정/연동 UI + 전역 다이얼로그
- 설정→연동(계정 추가 메뉴·커넥터 목록·메일/LLM 탭), 작업 칸반·상세·댓글,
  인박스 캡처/분류 개선
- 전역 Dialog(confirm/alert) 컴포넌트로 system alert/confirm 대체
- 작업 라우팅 [[...slug]], 공용 lib(api/auth/nav/types 등)·스타일 갱신, 관련 테스트

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
I Luk Kim ebba607f49 feat(calendar): 실연동 일정·반복(recurrence)·일정 에디터·드래그/뷰 개선
- Google/Outlook 캘린더 실연동 라우터, 회의 머티리얼라이즈 갱신
- 반복 일정·RSVP·알림, EvEditor(생성/편집) 추가, 월/주/일 뷰·미니캘린더 개선
- 라우팅 [[...slug]], 관련 테스트(api_calendar·phase16·views)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
I Luk Kim 9db9ed7242 feat(mail): 집중/기타 분류·아리 정리(비서 다이제스트)·실폴더 + 버그 수정
- 집중/기타: Gmail 기본(primary)+Outlook focused=집중, 프로모션/소셜/업데이트+
  Outlook other=기타. 사이드바 실폴더 미러·받은편지함 탭(집중/기타 안읽음 카운트)
- 아리 정리: 기준 시각 이후 '도착한' 새 메일 기준(읽음 여부 무관 — 폰서 먼저 읽어도
  정리). LLM 배치 분석으로 할 일·일정·답장 카드화. baseline 응답 count
- 버그 수정: ① 처음 보는 폴더 클릭 시 트리 닫힘 → useMail keepPreviousData
  ② 12:28 도착 메일이 아리 정리에 안 뜸(read=1) → 도착 기준으로 전환
  ③ 기타 안읽음 미표시 → MailAccountOut.others + 탭 카운트
- HTML 본문 렌더(MailHtmlBody, 샌드박스 iframe), 라우팅 [[...slug]]

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
I Luk Kim 08ae47f4aa chore: 라이프OS 광역 기능 제거(agents·rag·life·research·trip·errand)
MVP 범위를 메일·일정·작업 중심으로 좁히며 사용하지 않는 서브시스템 일괄 제거.
- 백엔드: agents/·rag/, finance/health/knowledge/chat 커넥터, life/research/trip
  라우터·시드·서비스·errand 워커 잡, 관련 테스트
- 프론트: life/research/trip/errand 페이지·컴포넌트·훅·api·스타일·스펙·테스트

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
I Luk Kim a7f830b420 feat: 포스트-MVP(phase 7~15) + 설정 페이지 전체 구현
자율성 코어(결재함·자동화), 일정·회의, 메일·알림, 리서치·여행(에이전트+RAG),
라이프 케어, 여정·하루마감, 외부 커넥터(mock→real), 능동 에이전트·멀티모달,
프로덕션 하드닝(인증/멀티유저·관측·운영·배포물)까지 phase 7~15 구현.

설정 페이지(/settings) — 좌측 6탭(계정·메일·연결·AI/LLM·외관·데이터/보안):
- LLM 연결 실시간 편집·적용(app_setting 테이블 + runtime_config 인메모리 오버레이),
  연결 테스트(Ollama /api/tags 모델 목록), 보조 프로바이더 읽기전용 표시
- 메일/연결 커넥터 관리, 프로필 편집(PATCH /me), 데이터 ZIP 내보내기, API 토큰 발급/폐기
- env 관리 ops 설정은 읽기전용(가짜 토글 금지)

기타: placeholder→실제 페이지 승격, Shell 풀스크린 /login 전환, stale 테스트 정리.
검증: backend pytest 282 / 마이그레이션 왕복, frontend vitest 177 / build / lint clean, E2E settings 7/7(a11y 0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
Claude 09ed8497f3 Phase 5: 대시보드(Dashboard) 페이지
- 히어로 브리핑(브리핑 노트 HTML 강조 + 추천 칩 3 + 자연어 명령 입력)
- 자연어 명령 → POST capture → 토스트 → /inbox 이동
- 결재함 요약(high-risk 3건, "47분 아껴드렸어요", 대기 N건, 준비중 CTA)
- 인박스 요약(최근 3건, kind별 아이콘, /inbox CTA)
- 오늘 일정(4건·"곧" 배지·accent 바·sched-note) / 할 일(상위 5·"지금" focus·우선순위)
  / 목표(진행 막대·progressbar aria)
- 벤토 그리드(.board 4열) + cardin 진입 애니메이션 + 스켈레톤/빈/에러
- dashboard.css(dash.css+approve.css 이식), DashUser/Weather/... 타입, SWR useDashboard
- 백엔드 보정: EventOut 에 id 추가(React key), task_summary 최상위 미완료 상위 5건으로 제한

검증: 백엔드 pytest 54, 프론트 vitest 49, dashboard e2e 6 + a11y 2,
tsc/eslint/ruff clean, build OK. 라이브 시각 확인(히어로/요약/일정/할일/목표), 콘솔 에러 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
Claude cb028df08a Phase 4: 인박스(Smart Inbox) 페이지
- 멀티모달 캡처 컴포저(텍스트 Enter/보내기 + mic·image 스텁)
- 실시간 AI 분류: POST capture(동기) → 생각중 펄스 → 결과 칩(type/sphere/proj/due/when/extra)
  + 이유 한 줄 + heuristic 폴백 배지("규칙 기반(오프라인)")
- 확인(confirm)=실체화(federation): task → 실제 작업 생성 + 작업 페이지 등장
- 다르게 분류(reclassify) 타입 순환 task→event→idea, 낙관적 미리보기
- 분류 원칙 카드 4건(원문 그대로) + "오늘 어디로 갔나" 행선지 카드(동적 집계)
- sinbox.css 픽셀 이식 + dash-base.css(공유 레이아웃/카드, 대시보드 재사용)
- 서버 컴포넌트 초기 fetch + 클라 낙관적 업데이트/롤백, 전체/업무/개인 필터

검증: 백엔드 pytest 46, 프론트 vitest 42, playwright 28(shell+tasks+inbox+a11y),
tsc/eslint clean, build OK. 인박스→작업 연합 e2e 통과, 4 골든 + 폴백 배지 + voice 스텁 검증.
라이브 시각 확인(컴포저/칩/이유/원칙/행선지).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
Claude d2d7c17ad3 Phase 3: 작업(Tasks) 페이지
- 폴더 트리 사이드바(업무/개인/즐겨찾기) + 무한중첩 프로젝트 + 인라인 새 프로젝트
- 칸반(5컬럼)/리스트 2뷰 + 작업 카드(태그·담당·마감임박·우선순위·진행률·위임칩)
- 상세 드로어(DetailPanel): 리치노트·댓글·하위작업 드릴다운·메타 편집·삭제
  + Auto-Scaffolding(미리보기→적용) + 위임 추천(suggestCollaborator)
- 리스크 레이더(업무 스코프, **굵게→<b> 파서, CTA로 드로어 열기)
- SWR 서버 연동(tree/tasks/risks), 낙관적 mutate, UI상태 ari.tasks.* localStorage 영속
- tasks.css 픽셀 이식, lib/cx.ts, lib/tasks/{api,store,tree}, lib/types 확장
- 백엔드: PATCH 작업 순환참조(self/후손 parent) 400 가드 추가

검증: 백엔드 pytest 46, 프론트 vitest 32, playwright e2e 19(shell+tasks+a11y),
tsc/eslint clean, build OK. axe: color-contrast(레퍼런스 액센트 팔레트)만 제외, 나머지 0.
라이브 시각 확인: 사이드바/칸반/리스크레이더/드로어/scaffold/위임 충실 재현.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
Claude 59e836bba0 Phase 1: 디자인 시스템 & 앱 셸
- tokens.css: dash.css :root + [data-theme=dark] 전체 무손실 이식
- globals.css: 178deg 그라데이션·keep-all 타이포·.topbar/.mainnav/.rail/프리미티브
- 폰트: Onest/DM Mono(next/font) + Pretendard(CDN), 변수 바인딩
- next-themes: data-theme 토글 + ari-theme localStorage 영속 + FOUC 없음
- Icon(중앙 PATHS 맵 60+ 글리프, 누락 가드), Topbar(MAIN 13항목·배지 3/4/6·active pill)
- 프리미티브: GlassCard/Badge/Chip/Button/SegmentToggle/Avatar/SubRail/Placeholder
- 라우팅: / → /dashboard, MVP 3 스텁, (placeholder) 10페이지 "준비 중"
- 이전 phase-0 산출물에 섞인 .playwright-mcp 캡처 제거 + .gitignore 보강

검증: vitest 16 passed, playwright e2e 8 passed(axe light/dark 위반 0),
tsc/eslint clean, next build(13 routes) OK, 라이트/다크 시각 충실도 확인, 콘솔 에러 0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago
Claude 9075b7d1ba Phase 0: 모노레포 스캐폴딩 & 개발환경
- frontend/ (Next.js 16 App Router + TS): layout/폰트, / → /dashboard 리다이렉트,
  styles/tokens.css·globals.css, lib/api.ts·types.ts, vitest 스모크, /api rewrites
- backend/ (FastAPI + SQLite + Ollama): config/db, /api/health, /api/llm/health
  (Ollama on/off 양쪽 200), CORS, alembic init, pytest 2건
- 루트 Makefile/.gitignore/README

검증: pytest 2 passed, vitest 1 passed, ruff/eslint clean, next build OK,
/ → /dashboard 리다이렉트(Playwright), health 200, Ollama reachable, CORS 200

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 months ago