Commit Graph

22 Commits

Author SHA1 Message Date
Cursor Agent 3bfd8e29a2
feat(ui): Quiet Ink redesign — teal accent, light/dark
Replace aurora-glass purple with a calm messenger system: off-white/
charcoal canvas, Plus Jakarta Sans, solid teal CTAs, and quieter
panels across signup, chats, contacts, inbox, and settings.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-31 09:01:40 +00:00
Claude bb3106434b
Merge remote-tracking branch 'origin/main'
# Conflicts:
#	mobile/lib/screens/conversation_list_screen.dart
#	mobile/pubspec.lock
2026-07-31 08:23:28 +00:00
Claude 79bce5e671
Redesign UI to a bolder aurora-glass system after visual QA with a real Flutter build
Actually installed the Flutter SDK, built the app (web + a local screenshot
harness through a real backend), and looked at the rendered screens instead
of judging the design from source alone. The previous gradient/glassmorphism
pass read as flat and generic: glass cards barely contrasted against the
pale background, the brand mark was a stock sparkle icon, and buttons were
flat solid fills.

Changes:
- Stronger, more saturated aurora gradient + blurred glow orbs in
  GradientBackdrop for real depth instead of a flat 3-stop pastel.
- Glass cards/inputs get higher-contrast fill/border and a brand-tinted
  shadow so they visibly lift off the backdrop.
- New BrandMark (gradient monogram), GradientText (gradient-filled
  wordmark), and PrimaryGradientButton (gradient CTA with shadow) replace
  the generic Material icon/flat button on splash, signup, onboarding and
  the conversation list empty state.
- Fixed a real pre-existing layout bug found via screenshot: the onboarding
  header badge was a direct ListView child with an explicit width, which
  Flutter's sliver list silently stretches to full width regardless of the
  Container's own width — invisible before because its old flat pale fill
  blended into the background. Wrapped it in Align to restore its intended
  size.

Verified with flutter analyze (0 errors) and flutter test (all passing),
plus manual screenshots of signup, onboarding, conversation list and a live
chat exchanged between two demo users through a real core-backend instance.
2026-07-31 08:16:44 +00:00
Cursor Agent 82a5809d4e
feat(n4): wire FCM token path and document Master secrets
Add PushTokenService with Firebase Messaging fallback to install
placeholders, conditional google-services Gradle plugin, fcm-setup.md,
and mark Android UI checklist api-done via prod e2e 16/16.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-31 04:51:57 +00:00
Cursor Agent c7029ab2cd
feat: finish Track A polish and Track B demo pairing content
Add PATCH contact for missing peer IDs, contacts banner and edit UI,
enrich /demo with pairing steps, and update tester/signup guidance.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-31 04:43:25 +00:00
Cursor Agent 3d00b00de7
feat(mobile): Track A messenger UX — ID chip, contacts chat, L0 draft
Show/copy numeric user ID, require peer ID for contacts, start chat in one tap,
clarify empty states, and route L0 twin drafts into the human composer.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-31 04:36:41 +00:00
Cursor Agent 4a39bc7b7d
feat(deploy): Docker Compose stack for msn.iykyka.com (N2-B)
Add Postgres + internal AI + core-backend + Flutter web (nginx API/WS
proxy). Document Portainer usage and env template; mark N2-B1–B7 done.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-31 02:26:40 +00:00
Claude ce2e38e566
chore: refresh mobile/pubspec.lock after flutter pub get
Transitive dependency version bumps picked up while verifying the merge
actually builds with a real Flutter SDK (analyze/test/build web all pass).
2026-07-31 01:41:45 +00:00
Claude 6743bf0054
Merge origin/main: keep gradient/glassmorphism UI, port demo-invite + boot hardening, purge 분신 branding
- Resolve visual-direction conflicts (app_theme, main.dart, signup/onboarding
  screens, index.html) in favor of the soft-gradient + glassmorphism design;
  drop the competing Twin Shadow palette and TwinTokens usage.
- Port non-visual additions from the parallel branch: CORS middleware,
  FlutterError/PlatformDispatcher crash handlers + boot timeout/fallback
  screen in main.dart, and the shared demo-invite feature
  (core-backend/demo.go, demo_test.go, mobile/lib/config.dart), reskinning
  the demo panel to match the glass UI.
- Rename the shared demo invite code DEMO-BUNSIN -> DEMO-YKAVU on both
  client and server so the tester-facing feature keeps working.
- Purge remaining "분신"/"bunsin" identifiers app-wide: Dart package name
  (bunsin_mobile -> ykavu_mobile), Android applicationId/namespace
  (com.bunsin.bunsin_mobile -> com.ykavu.ykavu_mobile, incl. Kotlin source
  dir move), on-device DB filename, keystore alias/docs, PoC draft-generator
  system prompt, and the static web boot placeholder div.
2026-07-31 01:30:50 +00:00
Claude ebf333d287
제품명 변경(분신→와카뷰) + 소프트 그라디언트/글래스모피즘 UI + 브랜드 로딩 화면
명칭 변경:
- decision-log.md Q6 확정: "분신"(가칭) → "와카뷰 (Ykavu)" — 焚身(분신자살)
  동음이의 리스크도 있었고 메신저 브랜드로 부르기 무거웠음. Master가 최종
  선택한 이름으로 변경(2026-07-31), 파생 문서(AGENTS.md/CLAUDE.md/PRD 등)·
  Flutter 앱 텍스트·web manifest/index.html·AndroidManifest 라벨까지 전부 반영
- ai-service: 본인확인 고정 문구(identity.py)·시스템 프롬프트(generation.py)도
  갱신 — 새 이름 기준으로 "본인이야 와카뷰야?" 류 질문을 감지하도록 정규식도
  같이 손봄(단순 문자열 치환만으론 어미 형태가 안 맞아서 테스트 추가/조정)
- poc/tone-corpus/의 실험용 프롬프트는 의도적으로 그대로 둠(ai-service README에
  이미 명시된 대로 프로덕션과 분리된 실험 도구)

UI/UX:
- mobile/lib/theme/app_theme.dart: 시드 컬러를 인디고/라벤더로 변경, 화면 전체에
  깔리는 소프트 그라디언트(라이트: 라벤더→스카이→핑크 파스텔, 다크: 딥 인디고→
  네이비→플럼) + 카드/인풋/칩을 반투명 "글래스" 서피스로 전환
- mobile/lib/widgets/gradient_backdrop.dart(신규): MaterialApp.builder에 연결해
  모든 화면에 자동으로 그라디언트 배경 적용
- mobile/lib/screens/splash_screen.dart(신규) + main.dart 재구성: 기존엔
  session.restore()를 기다리는 동안 아무 것도 안 그려서 흰 화면/텍스트만 뜨는
  구간이 있었음 — runApp을 먼저 하고 restore 동안 브랜드 스플래시가 뜨도록 변경
- chat_screen·autonomy_settings_screen·data_flow_screen의 커스텀 패널들도
  글래스 스타일로 맞춤

BunsinApp -> YkavuApp (mobile/lib/main.dart, test/widget_test.dart 동기화)

Flutter SDK가 없는 환경이라 flutter analyze/run으로 직접 컴파일 검증은 못했음 —
중괄호/괄호 균형과 기존에 검증된 API 패턴 위주로 신중하게 작성함. go test·
pytest는 전부 통과.
2026-07-31 01:15:42 +00:00
Cursor Agent 17b10a0e8c
feat: show shared DEMO-BUNSIN invite on signup for testers
Seed a reusable demo invite (ALLOW_DEMO_INVITE, default on) and surface it
on the Flutter signup screen with one-tap fill so others can try without
asking for a one-off admin mint.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 08:21:22 +00:00
Cursor Agent 941d600cfd
feat(mobile): Twin Shadow UI for signup and tone onboarding
Apply the approved Twin Shadow direction: forest/mist/paper tokens,
Manrope typography, full-bleed hero atmosphere with dual silhouettes,
brand-first signup copy, and quieter conversation-list alignment.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 08:02:28 +00:00
Claude 6eceef44f8
Merge claude/project-planning-approach-ukdz31: Flutter UI polish 2026-07-30 07:18:50 +00:00
Claude 5ce189a76a
Flutter UI 디자인 다듬기 — 테마 시스템 도입 + 화면별 시각 개선
일관된 디자인 토큰(mobile/lib/theme/app_theme.dart)을 새로 만들고
전체 화면에 적용:
- 라이트/다크 ColorScheme을 명시적으로 정의(기존엔 라이트만 있어서
  다크 모드 기기에서 깨져 보였음), AppBar/Card/입력창/버튼/칩/배너 등
  컴포넌트 테마를 통일. "분신" 뱃지 전용 twin 강조색(amber) 분리
- 화면마다 제각각이던 TextField 테두리를 전부 테마 하나로 통일
  (chat_screen의 L1 편집창에 하드코딩돼 있던 Colors.white70 배경도
  제거 — 다크 모드에서 흰 배경에 흰 글씨로 안 보이던 실제 버그였음)

화면별 개선:
- signup: 로고 마크 + 안내 문구 추가, 아이콘 붙인 입력창
- 대화 목록: 앱바 아이콘 4개를 겹쳐놨던 걸 정리(더보기 메뉴로 이동),
  색상 아바타, 빈 상태 안내, 확장형 FAB
- message_bubble: 좌우 비대칭 말풍선 모양(꼬리 느낌), 타임스탬프 추가,
  분신 뱃지를 아이콘+칩 형태로
- chat: 거부권 버튼에 확인 다이얼로그 추가(실수로 눌러도 되돌릴 수
  없는 동작이라 안전장치), L1/에스컬레이션 패널 카드화
- contacts/inbox/sessions/autonomy_settings/data_flow/onboarding:
  아바타, 섹션 카드, 빈 상태, 화이트리스트 칩 UI 등 톤 통일

주의: 이 작업 환경에는 Flutter SDK가 없어 flutter analyze/run/test로
직접 검증하지 못했음. 아이콘 이름 등은 기존 코드에 이미 쓰인 것 위주로
맞췄지만, 로컬에서 flutter analyze 먼저 돌려보는 걸 권장.
2026-07-30 07:14:25 +00:00
Cursor Agent 43aaa31f3c
fix Flutter Web/Chrome compile by stubbing SQLCipher DB
dart:ffi and SQLCipher cannot compile for Chrome. Split AppDatabase into
native (Drift+SQLCipher) and web in-memory stub via conditional export, and
enable the web platform so flutter run -d chrome works for UI preview.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 07:05:31 +00:00
Cursor Agent 4f2c9df160
Complete Phase 1 C: decisions, invite ops, release path, prototype anchor
- Confirm Q1~Q7 in decision-log (Master-approved Phase C)
- Invite ops doc + note/expiry/batch/revoke APIs and tests
- Android release docs/scripts + optional key.properties signing
- Fix prototype share-link docs anchor (SHARE_URL for Master)

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 05:48:50 +00:00
Cursor Agent 9b02c59dd6
Complete Phase 1 B: encrypted drift DB, FCM notify, session revoke
- Flutter: drift + SQLCipher local store for tone samples/KV with
  secure-storage passphrase; migrate legacy SharedPreferences
- Core: FCM notifyUser on escalation, admin push-test, push metrics,
  DELETE session for multi-device logout
- Docs/roadmap B checkboxes updated; Linux SQLCipher apt notes

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 05:28:39 +00:00
Cursor Agent a51fc1490f
Start Phase 1 B: metrics, identity phrase, data-flow, sessions
- Record draft/escalate latency and error rates on /admin/metrics
- Add minimal /admin/dashboard and full message JSON on send
- Fix identity answers in ai-service with stable copy + tests
- Flutter DataFlowScreen + SessionsScreen; device-token API stub
- Update roadmap B checkboxes after A3 API E2E

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 05:08:08 +00:00
Cursor Agent 7dc4216dad
Record A3 E2E results and add API-level e2e script
scripts/e2e_a3.py exercises the messenger checklist against a live
core-backend (16/16). Mark A3 E2E done; keep Android UI steps in README.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 05:05:53 +00:00
Cursor Agent 5033cb56ea
Implement A3 Flutter polish: conversations, contacts, L1, inbox
Wire conversation list and contacts to A1 APIs, add tone-sample
onboarding skeleton, polish L1 approve UX with editable draft panel,
and add post-hoc escalation inbox. Update roadmap A3 checklist.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 04:55:22 +00:00
Cursor Agent b288d5ed90
Implement Phase 1 A1/A2 APIs and record build plan in roadmap
Add conversation/contact/history/escalation-log endpoints, contact-scoped
whitelist matching, bearer sessions, ADMIN_API_TOKEN guards, and
`go run . migrate`. Update Flutter client to persist/send session tokens
and mark A1/A2 complete in the prioritized checklist.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 04:47:06 +00:00
Cursor Agent e1714ec5d5
Add Flutter mobile client skeleton and defer human PoC to last
Scaffold `mobile/` against core-backend APIs (signup, chat, draft,
veto, retract, autonomy/whitelist). Update roadmap/README/AGENTS so
participant PoC #1/#3 stays the final Phase 1 step after app build.

Co-authored-by: okuma <o0kuma@users.noreply.github.com>
2026-07-30 04:16:41 +00:00