71aafa23371a7f1f61c400a5b6e338c72db36638
Task 30 of the slice plan. Replaces the Task 2 placeholder main
entry with the final whenReady wiring:
- profile path resolution + better-sqlite3 open + migrations.
- repo / store / continuity / intent / health constructed
against the open db.
- LocalOllamaProvider reads INKLING_OLLAMA_ENDPOINT for LAN
dogfood, falls back to localhost:11434 otherwise.
- AiWorker registers an onUpdate that fans note:updated through
pushNoteUpdated(getInboxWindow, note).
- NotificationService is plumbed to electron.Notification with
isSupported gating; CaptureService gets the worker.enqueue +
notify.celebrate hooks.
- IPC bindings for both capture and inbox surfaces.
- HotkeyService registers Ctrl/Cmd+Shift+J -> showQuickCapture;
failure logged but not fatal.
- Tray menu '구출한 메모 보기' / '기억 구출하기' / '종료'
with click-to-show-inbox.
- worker.loadFromDb() resumes pending jobs at startup.
- MediaGc runs once and logs the count of removed orphan dirs.
- Two logger.info(..., {...obj} as Record<string, unknown>)
casts at the health and gc result sites to satisfy the
index-signature requirement on logger meta — the result
objects (HealthResult, {removed: number}) are assignment-
compatible with Record<string, unknown> at runtime but TS
refuses without the spread + cast.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
No description provided
Releases
18
Languages
TypeScript
99.6%
HTML
0.3%
JavaScript
0.1%