feat(ollama): v0.2.3.1 — in-app endpoint/model 설정 #21
Reference in New Issue
Block a user
Delete Branch "feat/v0231-ollama-settings"
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.3 dogfood unblock 패치.
INKLING_OLLAMA_ENDPOINTenv var 의존 제거 — 트레이/배너에서 직접 endpoint + model 변경 가능. Windows 의 dynamic port 점유 (Hyper-V/WSL2 NAT) 같은 환경 이슈에 즉시 대응.Decisions (mini-brainstorm)
<profileDir>/settings.json, migration v4 회피)자명 결정: precedence settings>env>default / save 전 healthCheck / AbortController + provider re-create / 트레이 + 배너 진입점.
Changes
abort()public methodabort?: () => voidoptional (T3 review 추가)inbox:loadOllamaSettings+inbox:saveOllamaSettings+inbox:openOllamaSettingspushSpec & Plan
docs/superpowers/specs/2026-05-04-v0231-ollama-settings-design.mddocs/superpowers/plans/2026-05-04-v0231-ollama-settings.mdTest Plan
~/Library/Application Support/Inkling/Inkling/profiles/default/)Roadmap
머지 후 v0.2.3.1 binary 재빌드 (Windows + Mac) + Gitea release v0.2.3.1. dogfood soak ≥1주 후 v0.2.4 brainstorm 트리거 시 backlog 38건 + 신규 피드백 + 본 cut의 ollama_settings_changed count-only telemetry 후속 결정 일괄 triage.
Final reviewer 칭찬
- `<profileDir>/settings.json` atomic write (temp + rename) - 손상 JSON / 파일 없음 → 빈 객체 fallback (no throw) - in-memory cache (load 1회 file read) - zod .strict() schema for ollama { endpoint: URL, model: string } - 단위 +6 cases Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Round 1 review (controller-side)
i1 (Important) — save vs periodic tick race
saveOllamaSettings가health.runOnce()후 응답, 동시에 60s 주기 tick 가능.inFlight가드로 race 없지만 modal 닫히기 전에 banner flicker 가능. UX 영향 낮고 정확성 영향 0. acknowledge only, fix 안 함.Inline fixes (m1+m3+m4+n1, 4건)
setOllama()throw (disk full / EPERM 등) 시 raw exception 노출 → IPC handler 가 try/catch 후{ ok: false, reason: 'persist failed: ...' }대칭 응답handleSave첫 줄if (saving) return;— synchronous double-click 가드gemma4:e4bmagic constant →DEFAULT_OLLAMA_MODEL로 hoist (index.ts + modal 공유)Deferred to v0.2.4 backlog
ollama_unreachable.reasontelemetry 우회 PII. v0.2.3.1 의 in-app endpoint UI 가 LAN 사용을 흔하게 만들어 더 두드러짐. v0.2.4 telemetry 하드닝 시 reason masking 정책.Skip 항목
LocalOllamaProvider.abort는?.abort()만 — throw X. defensive 가드 YAGNI. 다른 provider 추가 시 검토.Spec 컴플라이언스
Verdict
APPROVE WITH FIX — m1+m3+m4+n1 inline, m2 backlog → round 2.
- m1 (Minor): saveOllamaSettings IPC가 setOllama throw 시 try/catch → { ok: false, reason: 'persist failed: ...' } 대칭 응답 - m3 (Minor): Modal ESC=close + Enter=save 키 핸들러 + 첫 input autoFocus - m4 (Minor): handleSave 첫 줄 if (saving) return; — sync double-click 가드 - n1 (Nit): 'gemma4:e4b' / 'http://localhost:11434' magic → src/shared/constants.ts 의 DEFAULT_OLLAMA_MODEL / DEFAULT_OLLAMA_ENDPOINT defer to v0.2.4 backlog: - m2: ollama_unreachable.reason 에 endpoint URL 노출 (PII 우회) — telemetry masking 정책 skip: - i1 (race UX): acknowledge only, 정확성 영향 0 - m5 (abort try/catch): 현재 LocalOllamaProvider.abort 는 throw X - m6 (first-boot blocking): 무시 가능 - n2 (offReplace): 현재 listener callsite 0건 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Round 2 — APPROVE
6f95e89d974335(38 → 43, +5건)머지 후 알려줘. closure 단계 (local main sync + 브랜치 정리 + memory backlog status 업데이트 + binary 빌드) 진행.