v0.2.7 — cross-platform 입구 정상화 (F12 deeper + F14 + F15 빌드 + F16) #25
Reference in New Issue
Block a user
Delete Branch "worktree-v027-cross-platform"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
v0.2.7 cut — Windows 트레이 의존을 끊고 macOS/Linux 사용자에게 동등한 입구 제공. 4 개 dogfood 발견 (F12 / F14 / F15 / F16) 한 묶음 처리.
package.jsonlinux target +dist:linuxscript. better-sqlite3 linux-x64 prebuild 가용성 검증 ✅. CLI 부분은 거부 (DB/Ollama race + monorepo 부담 대비 metric 기여 적음).AutostartDiagnostic서비스 (withArgs vs noArgs / executableWillLaunchAtLogin / Windows registry 직접 조회 + silent fallback) + 진단 패널 UI + mismatch 경고 + 재등록 버튼.변경 내역 (Phase 별)
Phase 1: Linux 빌드 (Task 1-3 ✅, Task 4-5 macOS 핸드오프)
66bae5ebetter-sqlite3 linux-x64 prebuild 가용성 검증b1b7bfeelectron-builder linux target (AppImage + deb x64)c9d374adist:linux 1차 빌드 시도 결과 (Windows 호스트 —mksquashfsLinux ELF 실행 불가, macOS 호스트 또는 Docker 필요)Phase 2: 설정 페이지 + IPC (Task 6-13)
5b37529inbox store 에 showSettings state + setShowSettings action91bf98fSettingsPage scaffold — 4 섹션 placeholder + 돌아가기 + RTL/jsdom 테스트 인프라7301f4dAiProviderSection — OllamaSettingsModal 흡수 + 지금 재확인fca28fbAutostartSection 토글5cd38f2BackupSection — 5 버튼 + IPC 핸들러6ab5184InfoSection — 버전 / 데이터 위치 / 정보 복사 + IPC95ed0fbApp.tsx 헤더 톱니바퀴 + showSettings 분기feb7c62IPC inbox:navigate — 외부에서 설정 페이지 진입Phase 3: 트레이 슬림 (Task 14-17)
77effb4TrayCallbacks/TrayState 슬림 + buildMenu 4 항목f30fbddtray.ts 의 showAboutDialog + 자동실행 분기 + 미사용 import 제거9c8ba8acreateTray wiring 3-callback + refreshTray 호출부 슬림 (-165 lines callback dead code)Phase 4: F14 dock fix (Task 18)
3b53cecF14 — macOS dock 클릭 시 hidden inbox 창 show/focusPhase 5: F12 deeper fix (Task 19-24)
3a8137fAutostartDiagnostic — withArgs/noArgs/execPath 수집5f964aaAutostartDiagnostic — Windows registry 조회 + silent fallback39bbf8fsettings:autostart-state IPC 핸들러ce6c5easettings:autostart-set 정식 + 채널 이름 통일 (옛settings:get/set-autostart→settings:autostart-state/-set)c5f2b83App/SettingsPage 테스트 mock 을 새 AutostartResponse 형태로 갱신8a8652eAutostartSection 진단 패널 + mismatch 경고8368286AutostartSection 재등록 버튼Phase 6: cleanup + version bump (Task 25-27)
cffd1ceOllamaSettingsModal 제거 + onOpenOllamaSettings 채널 cleanup. OllamaBanner 의 "설정" 버튼 → setShowSettings(true) 재배선.ccfdbcev0.2.7 — F12/F14/F16 entry 🚀 promoted 마킹 + backlog #45 ✅ 처리 (잔여 24 → 23) + package.json 0.2.6 → 0.2.7.테스트
macOS 핸드오프 (보류)
Phase 1 Task 4-5 (AppImage / deb VM smoke test) 는 Windows 호스트에서 실행 불가 (
mksquashfsLinux ELF). 다음 단계:brew install dpkg fakeroot→npm run dist:linux.Inkling-0.2.7.AppImage+inkling_0.2.7_amd64.deb) Linux VM/WSL2 smoke test (마이그레이션 + 캡처 + Ollama + recall 한 사이클).빌드 fail 시 fallback: AppImage 만 v0.2.7 / deb 는 v0.2.8 또는 Docker
electronuserland/builder.Minor cleanup (v0.2.8 후보 — 본 PR scope 외)
Final reviewer 가 발견한 cosmetic issue 3건:
src/shared/types.ts:119의 stale comment "Task 25 cleanup" (이미 완료됨 — 코멘트만 잔재).BackupSection.tsx의try/catchdead branch (IPC 핸들러가 throw 안 함).src/main/index.ts:80-95의 v0.2.6 autostart 진단 로그 — 이제 AutostartDiagnostic 으로 중복.Test Plan
npm run dist:linux→ AppImage + deb 산출 + Linux VM smoke (마이그레이션 + 캡처 + Ollama + restore)🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
코드 리뷰 — v0.2.7 cross-platform 입구 정상화
Scope: 24 commits / 30 files / +2372 / −434
Spec coverage ✅
v027 design doc 의 모든 섹션이 task 에 매핑되어 구현됨.
코드 품질
Strengths
settingsApi.tsIPC 핸들러 deps-injected (SettingsIpcDeps) — 테스트에서 부분 등록 가능AutostartDiagnostic의 silent fallback 정책 (registry 미스 시null반환) — 사용자 에러 노출 회피, 진단 의도와 정합-165 linesnet)settings:*) + 회귀 테스트 (tests/unit/settingsApi.test.ts:95-96가 옛 채널 미존재 검증)Issues
src/shared/types.ts:119src/renderer/inbox/components/settings/BackupSection.tsxtry/catch (e as Error).message— 현 IPC 핸들러는{ ok: true }만 반환, throw 없음. catch 분기 dead. 실 IPC 실패 시 status 가 항상 "완료" 로 표시되는 misleading risksrc/main/index.ts:80-95AutostartDiagnostic.collectAutostartState()가 동일 정보 제공. 중복Critical / Important 없음.
Architecture
inboxApi.onNavigate채널이 main → renderer 브리지 깔끔 — 트레이 "설정..." 클릭 → SettingsPage 점프 흐름 자연스러움.Risk 잔재
머지 권장 순서
npm run dist:linux산출 + Linux VM smoke (Phase 1 마무리).v0.2.7+ Gitea release cut.Overall
Ready to merge. Spec coverage 완전, 코드 품질 양호, 데드코드/중복 없음, 테스트 460/460 + typecheck 0. Minor 3건은 cosmetic. macOS 빌드 + dogfood 검증은 release cut 의 책임으로 분리, risk 가 PR body 에 명시.
🤖 Reviewed by Claude Opus 4.7 (1M context)
리뷰 minor 3건 반영 —
e19f6a8src/shared/types.ts:119: stale "Task 25 cleanup" 코멘트 제거.BackupSection.tsx: dead try/catch 제거 + status 단순화. IPC 핸들러 5개 모두 자체 try/catch + Notification 으로 결과 알림 확인 (settingsApi.ts의settings:run-*본문 5개 모두 항상{ ok: true } as const반환). 컴포넌트 status 는 "진행 중..." 표시 → 완료 시 null 로 reset (보조 진행 표시).src/main/index.ts:80-95: v0.2.6 #45 startup 진단 로그를AutostartDiagnostic.collectAutostartState()호출로 통합 — single source of truth (SettingsPage 진단 패널과 동일 데이터 소스).460/460 pass, typecheck 0. 머지 가능.