Commit graph

250 commits

Author SHA1 Message Date
Yun Chan
7953706142 feat(release): publish desktop updates from a tag through one feed
Desktop clients had two competing update sources: the runtime pointed at a
legacy GitLab registry while the Forgejo packages were filled in by
hardcoded, version-pinned scripts. Operators could not tell which feed was
authoritative, and no release could be reproduced from a tag.

Auto-update now reads a single canonical Forgejo registry feed, updated by
a version-agnostic publisher that runs from the tag on Forgejo, GitLab, and
GitHub CI alike. Channel, minimum supported version, forced install,
full-versus-delta thresholds, staged rollout, and a remote kill switch come
from one policy file the client fetches alongside the feed. Tag creation is
gated on a clean tree, matching version surfaces, and a changelog section.
2026-09-16 23:23:00 +09:00
Yun Chan
65ecc7aabc chore: keep release checkouts free of build output and dev automation
Release packaging walked a working tree that still carried .NET build
output, Playwright run artifacts, and one-off browser automation scripts.
Those files are not source, could not be reproduced from the commit, and
made a clean-tree release gate impossible.

Build output and test run directories are now ignored and untracked, and
developer-only automation/scratch material moved under a single ignored
`scripts/local/` directory. A stale admin bundle that no HTML referenced
was dropped from the API server web root.
2026-09-16 23:22:38 +09:00
Yun Chan
aa5fc5b7d9 docs: finalize mobile release handoff 2026-08-30 09:50:07 +09:00
Yun Chan
784c9c291e docs: record mobile production audit 2026-08-30 09:37:40 +09:00
Yun Chan
1f71cf6fae ci: allow protected mobile candidate 2026-08-30 09:20:49 +09:00
Yun Chan
4872d6f6c5 docs(release): update 1.1.0 launch metadata
Some checks failed
deploy-site / deploy (push) Failing after 10m53s
2026-08-29 20:16:49 +09:00
Yun Chan
0a8cf4396f feat(play): finalize store graphics and copy 2026-08-29 20:11:54 +09:00
Yun Chan
563d4cb1de fix(ci): make mobile Gradle wrapper executable 2026-08-29 19:25:09 +09:00
Yun Chan
6a9608c447 ci: bootstrap Linux release toolchains 2026-08-29 19:19:19 +09:00
Yun Chan
30d51278c9 build(release): forbid unsigned Windows artifacts 2026-08-29 19:07:16 +09:00
Yun Chan
ec5aec758b fix(release): retire legacy capture publisher 2026-08-29 19:04:07 +09:00
Yun Chan
547d4ad97a security: remove credential automation from releases 2026-08-29 19:00:44 +09:00
Yun Chan
f342ea8640 fix(release): sync legacy mobile version 2026-08-29 18:55:27 +09:00
Yun Chan
3e9e04f68c ci(release): require trusted Windows signing 2026-08-29 18:49:08 +09:00
Yun Chan
5205dcdfa9 feat(release): prepare 1.1.0 candidate 2026-08-29 18:33:45 +09:00
Yun Chan
5a34f66981 feat(admin): 예전/최신 어드민 통합 — 실데이터 복원 + 인증 아키텍처 정리
예전 배포본(HEAD)의 상세 기능을 새 아키텍처(인증=.NET 백엔드, 데이터=Supabase)
위에 실데이터로 복원. 예전 HEAD는 서명 쿠키를 거부하고 위조 쿠키는 통과시키는
인증 결함이 있었고, 삭제된 페이지 다수는 백엔드 호출 0인 하드코딩 목업이었음.

인증/세션
- 로그인 이메일 전용화(username 폐지), 에러 키별 안내 메시지
- ADMIN_COOKIE_SECURE 옵션: TLS 없는 LAN HTTP 배포에서 Secure 쿠키 유실로
  로그인이 유지되지 않던 문제 해결 (login/logout route, admin-session, compose, .env.example)
- Supabase 미설정 시 우아한 저하: isSupabaseAdminConfigured + UnavailableAdminPanel

기능 복원 (실데이터)
- Release Hub: Forgejo API 실데이터(다운로드 수/SHA-256 체크섬/릴리스 이력)
- Ad Monetization: 데스크톱 미디에이션 10개 어댑터 로스터(fail-closed) + ad_reward_claims 통계
- License Issuer: 서버사이드 Ed25519 서명(/api/admin/license, super_admin 전용),
  개인키는 ADMIN_LICENSE_PRIVATE_KEY env로만, 발급 감사를 .NET AdminAuditEntries에 기록
- Service Models: STT 7종/LLM 5종 프리셋 드롭다운 + 자동채움
- 대시보드 ARR/MRR KPI: Supabase 구독 실집계(티어 월단가 기반)
- 사용자 상세 티어별 기능 배지(pro_plus 조건부)

.NET
- SuperAdminOnly 정책 추가, /api/admin/license-audit 엔드포인트, LicenseAuditDto
2026-08-23 23:38:08 +09:00
Yun Chan
a9c9a1ca6e fix(mobile): prevent supabaseUrl crash on startup with fallback auth config 2026-08-20 23:29:10 +09:00
Yun Chan
9b24bbc576 chore(api-server): sync built site to wwwroot 2026-08-20 23:23:08 +09:00
Yun Chan
692338926d fix(site): link mobile APK and desktop EXE directly to Forgejo release attachments
Some checks failed
deploy-site / deploy (push) Failing after 28s
deploy-site-windows / deploy-win (push) Successful in 41s
2026-08-20 23:04:53 +09:00
Yun Chan
3e4ca38926 fix(mobile-rn): bundle offline index.android.bundle into release APK and sign with v2/v3 scheme
Some checks are pending
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Waiting to run
2026-08-20 23:02:26 +09:00
Yun Chan
55d03baf6b feat(site): implement dynamic client OS negotiation for Hero and CTA download buttons
Some checks failed
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Failing after 24s
2026-08-20 22:57:38 +09:00
Yun Chan
4865387d7f feat(release): publish complete desktop and mobile signed release v1.0.0
Some checks are pending
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Waiting to run
2026-08-20 22:50:19 +09:00
Yun Chan
eedbe97d02 fix(desktop): clean single-instance lock exit and suppress devtools console crash
Some checks are pending
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Waiting to run
2026-08-20 22:48:58 +09:00
Yun Chan
0dc6a1dc93 test(e2e): add live multi-tab electron screen verification script
Some checks failed
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Failing after 20s
2026-08-20 22:33:46 +09:00
Yun Chan
9b2b83b2ab test(desktop): add automated Playwright Electron real-app E2E verification suites
Some checks failed
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Failing after 21s
2026-08-20 22:27:49 +09:00
Yun Chan
63b97c4761 feat(updater): overhaul cross-platform auto-update with user consent, blockmap diffs, skip version, and mobile update manager
Some checks failed
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Failing after 19s
2026-08-20 22:17:14 +09:00
Yun Chan
d4dc498448 fix(site): completely remove Launch Sandbox menu and mockup pages
Some checks are pending
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Waiting to run
2026-08-20 22:11:29 +09:00
Yun Chan
9b8dbdaffa fix(site): link fresh signed APK zip with cache busting in download section
Some checks failed
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Failing after 18s
2026-08-20 22:07:40 +09:00
Yun Chan
781a896d02 build(android): configure production RSA-2048 release keystore with APK Signature Scheme v2/v3
Some checks failed
deploy-site-windows / deploy-win (push) Waiting to run
deploy-site / deploy (push) Failing after 21s
2026-08-20 21:58:07 +09:00
Yun Chan
7e264dca37 feat(mobile): overhaul mobile app with Pro paywall, rewarded video refill, iOS permissions, and build APK
Some checks failed
deploy-site-windows / deploy-win (push) Successful in 48s
deploy-site / deploy (push) Failing after 24s
2026-08-20 21:49:05 +09:00
Yun Chan
e87567fa90 ci: add .forgejo/workflows/deploy-site.yml for Cloudflare Pages auto-deployment to d3ro.chanpaca.net
Some checks failed
deploy-site-windows / deploy-win (push) Successful in 31s
deploy-site / deploy (push) Failing after 35s
2026-08-20 17:16:12 +09:00
Yun Chan
9dd52f0626 feat: integrate official download and releases section directly into the main homepage
Some checks failed
Deploy Landing Page / build (push) Waiting to run
Deploy Landing Page / deploy (push) Blocked by required conditions
CI Pipeline / Code Quality & Typecheck (push) Successful in 3m3s
CI Pipeline / Test Suite (ubuntu-latest) (push) Successful in 1m5s
CI Pipeline / Build Validation (admin) (push) Successful in 1m22s
CI Pipeline / Test Suite (macos-latest) (push) Failing after 5s
CI Pipeline / Test Suite (windows-latest) (push) Failing after 2m6s
CI Pipeline / Build Validation (desktop) (push) Successful in 4m1s
2026-08-20 17:11:52 +09:00
Yun Chan
abd26e91af feat: add /download and /releases routes in apps/web and sync binary distribution
Some checks are pending
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Deploy Landing Page / deploy (push) Blocked by required conditions
2026-08-20 17:06:51 +09:00
Yun Chan
7879d493ea feat: add high-end download center and admin release management hub
Some checks are pending
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Deploy Landing Page / deploy (push) Blocked by required conditions
2026-08-20 11:24:58 +09:00
Yun Chan
708e20f747 feat: complete release preparation, 10+ ad mediation, CI/CD, and docker deployment
Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped
2026-08-20 11:12:05 +09:00
Yun Chan
5cd1de6859 agent update 2026-07-23 11:14:13 +09:00
Yun Chan
4fdf8bfdf8 fix(config): v0.2.1-alpha — CONFIG_DEFAULTS 7키 기본값 누락 핫픽스 (앱 실행 불가)
Some checks failed
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 4s
refactor-wave WS2가 AppConfig 인터페이스에 7키 추가 + as never 16건 제거했으나
CONFIG_DEFAULTS(ConfigService.ts) 기본값 누락 → 기존 사용자 config(0.1.x) 마이그레이션
시 configGet undefined → main 프로세스 .map() 크래시 (v0.2.0-alpha 앱 실행 불가).

수정: CONFIG_DEFAULTS에 7키 기본값 추가.
검증: dev 실행 — main 빌드 + electron start 정상 (수정 전엔 이 단계 크래시).
교훈: 배포 전 dev 실행 + 산물 e2e 필수. typecheck GREEN ≠ 런타임 안전.
2026-07-22 04:06:43 +09:00
Yun Chan
c8fb3abbaf docs(release): Linux(deb/AppImage) 별도 Phase 백로그 명시
- release-guide 알려진 제약 표에 Linux 행 추가 (사이드카/TTS 백엔드 장벽 + Phase 범위)
- project_status v0.2.0 후속에 Linux 별도 Phase 합의 기록 (7대 장벽)
2026-07-22 03:50:34 +09:00
Yun Chan
38a466ea0c docs(release): v0.2.0-alpha — CHANGELOG + Release 운영 가이드
Some checks failed
Build macOS / Build & Package (macOS) (push) Failing after 5s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
- CHANGELOG [0.2.0-alpha] 섹션 (switchboard 스타일, ## [Unreleased] 최상단 정렬,
  Added/Changed/Fixed/Removed/Internal). publish-gitlab-release.mjs가 Release 노트로 자동 추출.
- release-guide.md "Release 페이지 운영" 섹션 추가 (CHANGELOG=Release 노트,
  권장 구조, 릴리스 체크리스트, 버전 정책). switchboard 패턴 벤치마크.
- project_status: v0.2.0-alpha 릴리스 기록
2026-07-22 02:50:26 +09:00
Yun Chan
b1435b0ba5 docs: refactor-wave Wave 2 보고서·현황 (메타)
- docs/REFACTOR_WAVE2_REPORT.md (신규): 정량 산출, 검증, 이월,
  메타 학습 M7-M9, Wave 3 계획, 누적 통계
- memory/project_status.md: Wave 2 섹션 추가
2026-07-22 02:40:08 +09:00
Yun Chan
5b6e7aae6b refactor(main): ipcSuccess/ipcError 헬퍼 통일 + catch(error) 패턴 (WS-PATTERN)
- cloud-sync-handlers 수동 ok/fail -> ipcSuccess/ipcError 헬퍼 (6 핸들러)
- catch {} -> catch(error) 에러 메시지 보강 32건 (11 ipc handler 파일)
KEEP: template-handlers(주석 명시 에러 무시), license-handlers(이미 헬퍼 사용),
       audio-handlers stop().catch(() => {})(의도적 무시)
정책: docs/REFACTOR_POLICY.md DP2
2026-07-22 02:38:23 +09:00
Yun Chan
4c256202f7 chore(deps): 미사용 의존성 8종 제거 + electron-builder Linux 섹션 삭제 (WS-DEPS)
- apps/desktop/package.json에서 8종 제거(각 역추적 0건):
  @mui/icons-material, @d3ro/api-client, fluent-ffmpeg, @types/fluent-ffmpeg,
  pdf-parse, node-record-lpcm16, electron-audio-loopback, @electron-toolkit/preload
- node-record-lpcm16.d.ts 타입 선언 삭제
- electron-builder.yml Linux 섹션 삭제 (CI는 win/mac만 호출)
참고: @mui/icons-material은 @d3ro/ui 트랜시티브로 잔존(desktop 직접 의존에서는 제거)
정책: docs/REFACTOR_POLICY.md DP9
2026-07-22 02:38:10 +09:00
Yun Chan
00a99e4087 refactor(popup): 5종 팝업 _i18n 주입 + 색상 토큰화 (WS-POPUP)
- 4종 팝업(command/history/result/recording-tip) _i18n 주입:
  WindowManager getPopupI18nStrings() + 팝업 script applyI18nToHtml()
- 한국어/영어 하드코딩 -> popup.* i18n 키 (ko/en 17키)
- theme-vars.ts에 --d3-wave-1~9, --d3-status-error/success 토큰 추가 (6 테마)
- 팝업 style.css hex -> CSS var 토큰
- packages/i18n getI18n() (main 프로세스용) 추가
SKIP: caption-overlay _i18n(별도 IPC 구조), wave box-shadow 보간(opacity 단순화)
정책: docs/REFACTOR_POLICY.md DP3, 이식 인사이트 P5
2026-07-22 02:37:58 +09:00
Yun Chan
660e622a93 refactor(ui-native): d3roNativePalette amber->main 개명 (WS-NATIVE)
- packages/ui-native theme.ts accent: amber->main, amberDim->dim, amberGlow->glow (값 보존)
- apps/mobile 20건 + apps/mobile-rn 18건 + ui-native 컴포넌트 9건 = 47 참조 치환
SKIP: Led/PhosphorText/Header color prop 'amber'(의미론적 컴포넌트 API, 별도 마이그레이션)
       green/greenGlow 키(amber계 범위外)
정책: docs/REFACTOR_POLICY.md DP1, 이식 인사이트 P7
2026-07-22 02:37:45 +09:00
Yun Chan
efac690362 refactor(ui): web/admin amber->main 치환 + theme.ts deprecated 별칭 제거 (WS-AMBER)
- apps/web 11건 + apps/admin 10건 accent.amber->main 치환
- packages/ui/src/theme.ts에서 amber/amberDim/amberGlow @deprecated 별칭 제거
  (본체 main/dim/glow 유지). 전 모노레포 amber 잔여 0건 확인.
SKIP: site/src/tokens.ts(별도 토큰 계통, d3roPalette 비의존)
정책: docs/REFACTOR_POLICY.md DP1, 이식 인사이트 P7
2026-07-22 02:37:32 +09:00
Yun Chan
988a222fda docs: refactor-wave Wave 1 정책·보고서·현황 (메타)
- docs/REFACTOR_POLICY.md (신규): 8 결정포인트 + 본 wave 한정 DP9-DP11,
  합의 이력(DRY 3회 / 공격적 DELETE / 전체 typecheck 강제)
- docs/REFACTOR_WAVE1_REPORT.md (신규): 정량 산출, 검증, SKIP/이월,
  메타 학습 M1-M6, Wave 2 계획
- memory/project_status.md: Wave 1 섹션 추가
2026-07-22 02:01:26 +09:00
Yun Chan
87f2dac9e5 refactor(i18n): date 중복 버그 수정 + 고아 키 967건 삭제 (WS4)
- date.today/yesterday 중복 정의(uppercase 잔해 "TODAY"/"YESTERDAY")
  삭제 (ko/en) -> 한국어 사용자에게 잘못된 대문자 표시 버그 해소.
- 고아 키 967건 삭제: ko/en 109건 + 타 10 locale 858건.
- P1 재검증으로 20건 KEEP 전환 (camelCase license.feature 15 +
  nav 5) -- 동적 보간/프로퍼티 패스스루 참조로, typecheck가 잡지
  못하는 런타임 버그 15건 예방.
정책: docs/REFACTOR_POLICY.md DP3, DP9, 이식 인사이트 P1
2026-07-22 01:54:51 +09:00
Yun Chan
078304dda9 refactor(ui): deprecated accent.amber->main 91건 + 매직 리터럴 토큰화 (WS3)
- accent.amber/amberDim/amberGlow -> accent.main/dim/glow 91건 (34파일).
  theme.ts의 @deprecated 별칭 참조 제거 (본체 main 사용).
- inline fontSize/fontWeight -> d3roTypo, borderRadius -> d3roRadius 토큰 37건.
- P4: 화면 고유 수치(스탯 fontSize, 레이아웃 width)는 토큰화 제외.
정책: docs/REFACTOR_POLICY.md DP1, 이식 인사이트 P4
2026-07-22 01:54:37 +09:00
Yun Chan
aef44289a5 refactor(main): IPC 채널 SSOT 일원화 + AppConfig 타입 강화 (WS2)
- ipc-channels.ts SSOT에 9개 그룹/키 추가: INSTRUCTION, SYSTEM_AUDIO,
  POPUP_RESULT/HISTORY/COMMAND/CAPTION, VOICE_PARTIAL, CLIPBOARD, APP,
  VOICE_CONVERSATION.FINISH_LISTENING
- WindowManager/handlers/bootstrap 하드코딩 채널 -> IPC_CHANNELS 교체.
  불일치 4건(result:* vs window:tip*)은 preload 재검증 후 SSOT로 통일.
  notifyRenderer channel: string -> IPCChannel 타입 좁힘.
- AppConfig에 7개 누락 키 추가(customInstructions, llmChains,
  voiceCommandRules, voiceCommandsEnabled, activeInstructionId,
  activeChainId, captionAudioSource) -> as never 16건 제거.
- ChainService/CustomInstructionService/WindowManager dynamic require -> static import.
- services/index.ts 데드 레지스트리 제거 (import 0건).
SKIP: ipcSuccess/ipcError 헬퍼 통일, catch 패턴(별도)
정책: docs/REFACTOR_POLICY.md DP2, DP9
2026-07-22 01:54:18 +09:00
Yun Chan
b820c789bb refactor(ui): 팝업 테마 SSOT 정합 + DS 데드코드 3종 제거 (WS1)
- theme-vars.ts dark/light POPUP_THEME_VARS를 theme.ts RAW와 값 정합:
  v1 잔존 주황(#f25b29) -> 파랑(dark #3b82f6 / light #2563eb),
  --d3-bg-card, --d3-text-dimLabel 동기화. 팝업=렌더러 색상 충돌 해소.
- DS 미사용 3종 제거: MetalDial, ButtonGroup, CrtDisplay + barrel export
  (렌더러 전체 import 0건 재검증)
- StatRing RING_COLORS hex 10종 -> d3roPalette.gradient.wave/tag 토큰
  (다크 고정 -> 테마 전환 대응)
SKIP: theme-vars 평행 SSOT 구조 단일화, theme.ts amber 별칭 제거
  (web/admin/site가 accent.amber 사용 -> 전체 치환 별도 wave)
정책: docs/REFACTOR_POLICY.md DP1, DP9
2026-07-22 01:53:59 +09:00