-
released this
2026-05-15 06:35:49 +00:00 | 0 commits to main since this releasev0.4.0 — Notebooks + Lifecycle Simplification. 2026-05-15 첫 태그 후 dogfood UX 2회 보완을 force re-tag 로 묶음.
추가 dogfood UX 2회차 (2026-05-15)
dogfood 2일차 피드백:
- 🪄 AI 정리하기 (default notebook batch 분류) — 사이드바 default notebook 선택 시 main 영역 상단에 "🪄 AI 정리하기" 버튼. 클릭 → AI 가 default 의 active 노트들을 한 prompt 에 묶어 분석 → BatchMoveModal 에 noteId 별 추천 notebook + checkbox → 사용자 confirm 후 일괄 moveNote. top N=50 cap, 한국어 prompt, hallucinated notebook 이름은 null 로 coerce.
- 노트북 순서 변경 —
notebooks.sort_order컬럼 (m009 마이그레이션) + NotebookList row hover 시 ↑↓ 버튼. 인접 sort_order swap. drag-drop 은 v0.5+ 후보. - 이동 UX 정리 — NoteCard 의 notebook chip 을 tag 영역 → footer 의 "이동" 버튼 옆으로 이동. tag(키워드) / notebook(컨텍스트) 의미 분리. dropdown 도 위쪽으로 펼침.
추가 dogfood UX 1회차 (2026-05-15)
- NotebookChip 시각 강화 — 청색 배경 + 📓 아이콘 + ▾ caret + dropdown 헤더 "이동할 노트북".
- 헤더 좌측 ☰ 햄버거 버튼 — 마우스 클릭으로 사이드바 토글 (Cmd/Ctrl+B 단축키와 동일).
- 사이드바 default visible — 새 사용자가 처음부터 사이드바 보이게.
- inboxWindow 기본 크기 확장 — 900×720 → 1440×900.
원본 release (2026-05-15)
추가
- Notebook 카테고리 — 좌측 사이드바 (
Cmd+B/Ctrl+B토글), 색 + count badge. m008 마이그레이션이 default "기본" notebook 자동 생성 후 모든 기존 노트 배치. - AI 자동 fit 매칭 — 매 capture 시 AI 가 prompt 의 notebooks 목록을 보고 best-fit 자동 배치. NoteCard 의 chip 으로 1-click 변경.
- Promotion 제안 — 같은 tag 가 3건 이상 default notebook 에 누적되면 "새 notebook 으로 분리할까요?" banner. 24h snooze + 영구 dismiss.
- 사이드바 UX — NotebookCreateModal (이름 + 6색 palette), NotebookList (선택 highlight + count).
- 검색 scope 토글 — "이 노트북" / "모든 노트북" dropdown.
변경
- lifecycle 3분기 —
archivedstatus 제거. 헤더 탭이 Inbox / 완료 / 휴지통 (3탭). selectedNotebookId변경 시 list / counts 자동 refresh.
게이트
- 단위 테스트 877 PASS (m008 + m009 마이그레이션 / NotebookRepository CRUD+reorder / batch classify / BatchMoveModal / NotebookList ↑↓ + 기존 v0.4 회귀 가드)
- typecheck 0 errors
- 신규 npm dependency 0
업그레이드
v0.3.14 인스톨러 위에 v0.4.0 인스톨러를 같은 위치에 실행하면 in-place 업그레이드. m008 (notebooks 도입) + m009 (sort_order) 마이그레이션이 첫 launch 시 자동 실행.
설치
Inkling-0.4.0-arm64.dmg다운로드 → 기존 Inkling.app 위에 덮어쓰기. 코드 서명 skip 이라 첫 실행 시 macOS Gatekeeper 우회 필요할 수 있음.Downloads
-
released this
2026-05-14 05:29:26 +00:00 | 35 commits to main since this releasev0.3.14 release. 2026-05-12 첫 태그 이후 2026-05-14 에 dogfood fixes 7건이 force re-tag 로 같이 묶임. 새 minor 안 늘리고 동일 release notes 확장.
추가 dogfood fixes (2026-05-14)
- fix(capture): QuickCapture blur-on-hide 제거 — ESC / Cmd+Enter 까지 창 유지
- chore(ux): macOS 사용자 위해 Cmd 키 hint 안내
- fix(macos): hidden autostart 시 dock indicator 표출 보장 + 자동실행 mismatch false positive 제거 (macOS 13+ SMAppService 한계 대응)
- feat(notes): 원문 편집 / 이력 복원 시 AI 자동 재처리
- feat(expiry): 마감 알림이 inbox 만 대상 + 오늘 당일 포함 + 헤딩/라벨 개선 + 노트 제목 클릭으로 바로가기
- fix(sync): manifest.exported_at 제거 — 노트 변경 0건 시 no-op push 회피
- feat(settings): 설정 페이지 각 section 에 설명 paragraph + SyncHelpModal 의 기술 용어 풀어쓰기
원본 release (2026-05-12)
AI 처리 fail 원인 가시화. NoteCard failed 노트의 "원인 보기" 접힘 섹션 +
ai_error에 reason/provider prefix 추가. 자세한 내용은 CHANGELOG.md.게이트
단위 테스트 763 PASS · typecheck 0 errors · 신규 npm dependency 0
설치
Inkling-0.3.14-arm64.dmg다운로드 → 기존 Inkling.app 위에 덮어쓰기. 코드 서명 skip 이라 첫 실행 시 macOS Gatekeeper 우회 필요할 수 있음.Downloads
-
v0.3.4 — sync 도움말 cut Stable
released this
2026-05-10 15:02:37 +00:00 | 61 commits to main since this releasev0.3.4 — sync 도움말 cut
semver patch — 데이터/마이그레이션 변경 X. v0.3.0 Cut E (양방향 sync) dogfood 의 결과로, 사용자가 conflict 시나리오에 막힌 순간 도움받을 곳이 부재한 갭을 메운 cut. PR #33 머지.
신규
SyncHelpModal(4 anchor 섹션) — 설정 → 동기화 저장소 → "도움말" 버튼 또는 ConflictModal 의 "자세히 보기 →" 링크에서 진입. 4 카테고리:#main-conflict— 편집/편집·삭제/편집·AI 결과 충돌 결정 트리#auto— fetch+rebase·첫 sync·push 거부·자동 주기 (사용자 개입 X)#silent— NTP 시계 어긋남·동시 수정 회피·자동 sync 실패 silent#setup— URL SSH/HTTPS 형식·잘못된git@https://사례·인증 helper·연결 테스트 실패 troubleshoot·URL 재설정
갱신
ConflictModalinline 설명 — 각 conflict row 의 "내 것 사용" / "원격 사용" 의미를 1-2 줄 인라인 안내 + (옵션) "자세히 보기 →" 링크 (onOpenHelp callback). 기존 caller backward-compatible (optional prop).SyncSection도움말 버튼 — URL row 마지막에 추가. busy (저장/테스트/sync 진행) 중에도 도움말 reachable.README동기화 섹션 통째 재작성 — stale "원격 백업 (F6-L2)" (v0.2.1 MVP, 트레이 "지금 동기화" + 수동git init안내) → "동기화 (Git, F21 Cut E)". 일회 설정 / 일상 사용 / 충돌 해결 (3 케이스) / Silent risk / Troubleshoot.
게이트
- 단위 727 → 738 PASS (+11): SyncHelpModal 7 + ConflictModal 회귀 3 + SyncSection 회귀 1
- typecheck 0 errors
- 신규 npm dependency 0
자산
- Windows:
Inkling-Setup-0.3.4.exe(NSIS, x64) - macOS dmg / Linux AppImage·deb 는 별도 빌드 환경 필요
후속 (deferred)
- ESC key handler (현재 SyncHelpModal / ConflictModal 모두 X + overlay 만, 프로젝트 패턴 정합. 도입 시 양쪽 동시 처리)
- 1주 dogfood soak 후 도움말 텍스트 정합성 1차 갱신
업그레이드
v0.3.3 인스톨러 위에 v0.3.4 인스톨러를 같은 위치에 실행하면 in-place 업그레이드. 스키마 v8 그대로.
Downloads
-
released this
2026-05-10 13:22:54 +00:00 | 72 commits to main since this releasev0.3.3 — Sync configure-sync hotfix
semver patch — 데이터/마이그레이션 변경 X. v0.3.0 Cut E (양방향 sync) dogfood 첫 시도 중 발견된 sync 설정 ENOENT 버그 hotfix 1건.
주요 변경
버그 수정 1건:
- Sync 설정 첫 저장 실패 (
git init failed: cannot change to '...\sync': No such file or directory) — 설정 → 동기화 저장소에서 URL 입력 후 "저장" 클릭 시 syncDir 디렉토리가 없는데git -C <syncDir> init가 호출되어 git 이 chdir 단계에서 죽던 문제.settings:configure-syncIPC 핸들러에mkdir(syncDir, { recursive: true })를git init직전에 추가 (SyncService.runSync()의 동일 패턴 정합화). 결과적으로 "연결 테스트" 버튼이 영영 활성화되지 않던 연쇄 증상 (저장 성공 시에만 url state 채워지고 버튼 enable) 도 자동 해소.
검증
- 단위 테스트:
tests/unit/sync-ipc.test.ts18 PASS (mkdir 호출 순서 회귀 1 추가) - typecheck: 0 errors
- 신규 npm dependency: 0
자산
- Windows:
Inkling-Setup-0.3.3.exe(NSIS, x64) - macOS dmg / Linux AppImage·deb 는 별도 빌드 환경 필요
업그레이드
v0.3.2 인스톨러 위에 v0.3.3 인스톨러를 같은 위치에 실행하면 in-place 업그레이드. 스키마 v8 그대로.
Downloads
- Sync 설정 첫 저장 실패 (
-
v0.3.2 — Cleanup Cut Stable
released this
2026-05-10 08:07:17 +00:00 | 74 commits to main since this releasev0.3.2 — Cleanup Cut
semver patch — 신기능 X. backlog 잔여 23 → 14 (-9 처리, -1 deferred 잔존). 잠재 bug fix + cosmetic + 기록 정리. dogfood baseline 정리.
주요 변경
잠재 bug 4건:
- vocabSet COLLATE NOCASE 정합 (#31) — DB COLLATE NOCASE 와 strict-eq vocabSet 충돌 회피
- time-dependent test flake fix —
NoteRepository.create(now?: Date)signature - PII reason 마스킹 (#39) —
LocalOllamaProvider.healthCheck에서 LAN endpoint URL 노출 회피 - KST_OFFSET_MS inline 5 callsite migrate (#19) — canonical helper 활용
cosmetic 5건:
- 탭 ARIA
aria-pressed→role="tab"+aria-selected(#14) loadExpireddead-code 제거 (#18)- AiWorker per-tag emit
Promise.all병렬화 (#32) - recall IPC
handle→on(#36) — fire-and-forget honest pattern - OllamaSettingsModal 폐기 audit (#41+#42)
기록 정리 2건:
- v0.2.2 stale memory 폐기
- v024-backlog.md 처리 이력 갱신
deferred:
- #20 telemetry .catch silent → debug log (CaptureService logger 미주입)
테스트 / 빌드
- 단위 710 → 723 PASS (+13)
- typecheck 0 errors
- 산출물: Windows exe (NSIS, x64). macOS dmg / Linux AppImage·deb 는 후속 빌드
Schema
m007 (Cut D) 이후 변경 없음.
다음 단계
- 종합 dogfood ≥ 1주 soak (Cut E sync + Cut F vision + cleanup baseline)
- soak 후 신규 발견 + data-dependent 9건 일괄 triage → Cut G (F25 사이드바 + notebook_id) brainstorm
Downloads
-
released this
2026-05-10 03:14:30 +00:00 | 86 commits to main since this releasev0.3.1 — Cut F: 멀티모달 vision AI (F24)
semver patch — vision 추가, 기존 text-only 흐름 영향 X.
자세한 내용은 PR #31 및 spec
docs/superpowers/specs/2026-05-09-v031-cut-f-design.md참조.주요 변경
- F24 멀티모달 vision AI: Ollama vision 모델 (gemma3/gemma4/llava family) 자동 감지 + dropdown 선택 + 이미지 첨부 capture 시 vision path 자동 사용
- 단위 679 → 710 pass (+31), typecheck 0
- 기존 text-only 흐름 backward compat (optional opts)
산출물
- Windows: Inkling-Setup-0.3.1.exe (NSIS, x64)
- macOS dmg / Linux AppImage·deb 는 후속 빌드
Downloads
-
released this
2026-05-09 19:25:30 +00:00 | 100 commits to main since this releasev0.3.0 — Cut E (양방향 git sync + Configure UI + Conflict resolution)
semver MINOR — Major 영역 진입. 기존 push-only
SyncService→ 양방향 6단계 흐름 + Configure UI + Conflict resolution. F21 옵션 A+B+C 적용 ('both' choice 만 v0.3.1+ deferred).주요 변경
- F21-A 자동 rebase:
SyncService.sync()양방향 6단계 = (1) local export → (2) addAll + commit (변경 시) → (3) fetch → (4) rebase onto origin/main → (5) re-import (applySyncFromDir → upsertFromSync) → (6) push. 첫 push (empty remote) 시GitClient.refExists('origin/main')guard 로 rebase skip — "invalid upstream" 에러 회피. - F21-B Configure UI: SettingsPage 의 신규 "동기화 저장소" SyncSection. URL 입력 + 저장 (settings persist + git init + remote add) + 연결 테스트 (
git ls-remote) + 자동 sync 토글 + interval input (default 30분, min 5). - F21-C Conflict UI: rebase 실패 시
git diff --name-only --diff-filter=U+git show :2:<path>(ours) /:3:<path>(theirs) 로 localText/remoteText 채우고 abort. ConflictModal 에서 path 별 "내 것 사용" / "원격 사용" 선택 →resolveConflict→git checkout --ours/--theirs+rebase --continue+ push. NoteRepository.upsertFromSync(sync 전용 3 분기): id 없음 → INSERT (capture revision + tags FTS sync) / id 있음 + raw_text 동일 + source 더 최신 → metadata 갱신 (title_edited_by_user CASE 보존) / id 있음 + raw_text 다름 + source 더 최신 →updateRawText호출 (Cut C single write path → user revision INSERT chain). source 옛 → skip.importNotefork-on-id-collision 회피.- frontmatter 5 필드 round-trip: Cut B (status) + Cut C (note_revisions) 도입 시 export 누락된 5 필드 (status / status_changed_at / move_reason / due_date / due_date_source) 를 Cut E 에서 추가.
ExportNote/ParsedNoteinterface +composeFrontmatter/parseExportNote/noteToExportNote모두 갱신 — F5 round-trip 도 동시에 fix. SyncTimer: settings.sync_interval_min 마다 자동syncSvc.sync(). settings 변경 시 IPC handler 가await timer.reconfigure()(stop + start). interval mode 실패는 silent.before-quit훅에서 stop.
테스트 / 빌드
- 단위: 608 → 679 pass (+71, 1 pre-existing flake
SyncService.test.tstiming test 와 무관):- GitClient 5 (fetch / rebaseOnto / rebaseAbort / hasUncommittedChanges / listConflicts)
- upsertFromSync 5 (3 분기 시나리오)
- frontmatter round-trip + applySyncFromDir 18 (export 7 + import 5 + applySyncFromDir 6)
- SyncService bidirectional 5 (happy / commit-skip / conflict / fetch-fail / not-configured)
- resolveConflict 4 (local / remote / checkout-fail / continue-fail)
- SettingsService sync 6 (3 필드 × get/set + interval validation)
- sync IPC 17 (5 sync 채널 + 2 settings setter)
- SyncSection 4 / ConflictModal 3 / SyncTimer 5
- typecheck: 0 errors
- e2e: 세션 내 미수행 — UI 변경 = SettingsPage SyncSection + ConflictModal — capture/onboarding/banner flow 무관. 다기기 (Mac + Windows) dogfood 필수 — sync 가치는 다기기에서만.
- 산출물:
Inkling-Setup-0.3.0.exe(Windows NSIS x64, signed) - (macOS dmg / Linux AppImage + deb 차후 추가)
Schema 변경
m007 (Cut D) 이후 신규 schema 변경 없음. 양방향 sync 는 m007 이전 schema 호환 —
note_revisions(m006) 와notes_fts(m007) 모두 sync source = 동일 schema 양 기기.메모리 정책 갱신 (Cut E 머지 후 적용)
- 양방향 sync source = path identifier (UUID 아님) — F5 export filename slug,
git checkout --ours/--theirs가 path 받음 upsertFromSync가 sync 전용 in-place update path (importNote 의 fork-on-id-collision 회피)- Single write path 강제 4-path:
note_tagsINSERT (updateAiResult/updateUserAiFields/importNote/upsertFromSync),note_revisionsINSERT (create/updateRawText/importNote/upsertFromSync) 모두 helper 경유 — final review 단계 grep 검증 - timestamp 단조 가정 (NTP) —
upsertFromSync의updatedAtlexicographic compare. v0.3.1+ 에서 vector clock / revision id 검토 가능 - 'sync' edited_by enum 미도입 — sync 가 적용한 raw_text 변경도
'user'revision (의미상 사용자 의도 전파). m008 회피 - 명명 정확성 = UX 정직성 패턴 (Cut E 신규): 데이터 식별자가 실제 의미와 일치해야 UI 가 정직 (Cut E final review 의
noteId → pathrename 사례)
다음 (Cut F)
v0.3.1 Cut F: F24 멀티모달 vision. 다기기 dogfood ≥1주 soak 후 진입.
Risk 잔재
- 다기기 환경 필수: Mac + Windows 양 기기 sync 환경에서만 dogfood 가치 검증
- 인증 외부 의존: SSH key / git credential helper. Configure UI 의 "연결 테스트" 가 첫 진입점
- timestamp 단조 가정: NTP 부재 + 양 기기 시계 어긋남 시 잘못된 skip/update risk
- silent interval-mode failures: SyncTimer 가 sync 실패 silent — last-error surface 미구현
- conflict 'both' deferred: v0.3.1+ revision branch 분기 정책과 함께
- e2e 본 세션 미수행: 머지 후 main 에서 검증 권장
Downloads
- F21-A 자동 rebase:
-
released this
2026-05-09 15:53:17 +00:00 | 113 commits to main since this releasev0.2.11 — Cut D (FTS5 search + 회고 view)
recall 핵심 가치 도달 cut. F19 의 6 옵션 중 A (FTS5 search) + D (일/주/월 회고 view) 적용. B/C/E/F 는 v0.3+ deferred.
주요 변경
- F19-A FTS5 search: SQLite FTS5 가상 테이블
notes_fts(note_id UNINDEXED + raw_text + ai_title + ai_summary + tags + tokenize='unicode61'). m007 마이그레이션 + AFTER INSERT/UPDATE/DELETE 트리거 3개 (notes 컬럼 자동 sync). 기존status != 'trashed'노트 backfill (note_tags JOIN GROUP_CONCAT). 헤더 SearchBox (200ms debounce) + clearSearch on empty + inbox view 결과 렌더 분기. 빈 query → 기본 list. multi-token = implicit AND. FTS5 special char ("*():) sanitize. - F19-D 일/주/월 회고 view:
useInbox.view에'review-daily' | 'review-weekly' | 'review-monthly'추가.reviewAggregate(period, now)(totalCount + recentNotes(50) + tagCounts(DESC) + dueProgress(passed/pending KST today 기준)).computeCutoff가 KST 자정 ISO 반환. ReviewView 컴포넌트 (period 라벨 + tag bar + due progress + 최근 NoteCard) + 헤더<select>dropdown 진입. - NoteRepository.search(query, opts):
sanitizeFtsQuery+notes_fts MATCH+ ORDER BY rank + LIMIT cap (1..200). defaultstatus != 'trashed',opts.status명시 시 해당 status 만. - single write path 강제 (Cut C 도입 + Cut D 보강):
notes_fts.tags컬럼은 트리거 자동 sync 안 함 —rebuildFtsTagsForNote(noteId)private 헬퍼가 single write path.note_tagsINSERT/DELETE 하는 모든 path (updateAiResult/updateUserAiFields/importNote) 가 transaction 끝에서 헬퍼 호출. final review 단계에서 importNote 누락 발견 → 패치 (735d549). - AI 정책 무변: AiWorker
findById(id).rawTextsource 코드 무수정. raw_text 가변 (Cut C) 의 trigger AFTER UPDATE 가 자동 sync.
테스트 / 빌드
- 단위: 569 → 608 pass (+39):
- m007 마이그레이션 6
- rebuildFtsTagsForNote (updateAiResult / updateUserAiFields) 2
- ftsHelpers (sanitize + computeCutoff) 7
- search 6
- reviewAggregate 5
- IPC handlers 3
- store 3
- SearchBox 2
- ReviewView 3
- importNote tags sync (final review fix) 2
- typecheck: 0 errors
- e2e: 세션 내 미수행 (worktree node_modules 비어 있어 prebuild path 실패; UI 변경 = 헤더 SearchBox + 회고 dropdown + ReviewView 만, capture/onboarding/banner 무관 — main 머지 후 검증)
- 산출물:
Inkling-Setup-0.2.11.exe(Windows NSIS x64, signed) - (macOS dmg / Linux AppImage + deb 차후 추가)
Schema 마이그레이션
- m007:
notes_ftsFTS5 가상 테이블 + 트리거 3개 (raw_text/ai_title/ai_summary 자동 sync) + 기존status != 'trashed'노트 backfill (note_tags JOIN GROUP_CONCAT). transaction 안 단일 exec (runMigrations wrap). 외래키 안전 (FTS5 가상 테이블은 FK 없음, trigger 의 OLD/NEW 만 사용)
메모리 정책 갱신 (Cut D 머지 후 적용)
- search source =
notes.raw_text/ai_title/ai_summary/ tags csv (FTS5 인덱스 latest only — Cut C revision X). raw_text 가변 정책과 일관 - single write path 강제 (Cut D 보강): tags 변경 path =
updateAiResult/updateUserAiFields/importNote3곳, 모두rebuildFtsTagsForNote호출 보장 — invariant 검증 완료 - 회고 cutoff = KST 자정 ISO (
computeCutoff). dueProgress 비교 = KST today (kstTodayIso) - trashed 노트 FTS row 잔존 + query-level 필터 (별도 cleanup 안 함 — YAGNI)
- regression 회귀 검사 패턴 (Cut D 확립): spec 단계에서 invariant 강제 항목 listing → implementation 단계 모든 entry point 점검 → final review 단계 spec invariant 항목 별 검증. importNote 같은 secondary path 누락 회귀 방지 (Cut C 의 capture revision 누락, Cut D 의 tags sync 누락 — 동일 패턴)
다음 (Cut E)
v0.3.0 Cut E: F21 양방향 sync + Configure UI + conflict. dogfood 1주 soak 후 진입.
Downloads
- F19-A FTS5 search: SQLite FTS5 가상 테이블
-
released this
2026-05-09 14:53:33 +00:00 | 124 commits to main since this releasev0.2.10 — Cut C (raw_text 가변 + revision history)
load-bearing invariant 변경 cut. 메모리 정책
raw_text 불변폐기 →raw_text 가변+note_revisions테이블에 변경 이력 보존 + 옛 버전 회수 UI. F20 promoted.주요 변경
- F20 raw_text 가변: NoteCard 의 "원문 보기" 영역에 inline textarea 편집 + 저장/취소.
inboxApi.updateRawText→NoteRepository.updateRawText가notes.raw_text갱신 +note_revisions에edited_by='user'새 row INSERT (단일 transaction). 빈 문자열 reject (IPC{ ok: false, reason: 'empty' }). - note_revisions 테이블 (m006):
(rev_id PK AUTOINCREMENT, note_id FK→notes(id) ON DELETE CASCADE, raw_text, edited_at, edited_by CHECK IN ('user','capture')).idx_note_revisions_note_id (note_id, edited_at DESC). 기존 모든 노트edited_by='capture'로 backfill (edited_at = created_at). - 회수 UI: NoteCard "이력" 버튼 →
RevisionHistoryModal— rev 목록 (capture/user 라벨 + 시각) + 각 row "회수" 버튼 + window.confirm dialog →restoreRevision. 옛 raw_text 가 새 user revision 으로 INSERT (linear chain 보존). - AI 정책 무변: 재실행 input = current
notes.raw_text(latest). 옛 revision 미사용. AiWorkerfindById(id).rawTextsource 코드 무수정. - importNote capture revision 보장 (final review fix): F5 import 후 first user edit 시 import 시점 본문이
note_revisions에 없어 history 에서 사라지는 회귀 발견 →importNotetransaction 안 INSERT 추가 + insert/fork path 모두 적용.create+importNote가 모든 INSERT INTO notes path 이며, 둘 다 capture revision 보장 (single write path 패턴).
테스트 / 빌드
- 단위: 548 → 569 pass (+21):
- m006 마이그레이션 5
NoteRepository.createcapture revision 1updateRawText2 /listRevisions1 /restoreRevision2- IPC handlers 4
- NoteCard 편집 1
- RevisionHistoryModal 2
findById회귀 (AI source) 1importNotecapture revision (final review) 2
- typecheck: 0 errors
- e2e: 세션 내 미수행 (NoteCard 내부 + 신규 modal 만, capture/onboarding/banner 영향 X)
- 산출물:
Inkling-Setup-0.2.10.exe(Windows NSIS x64, signed) - (macOS dmg / Linux AppImage + deb 차후 추가)
Schema 마이그레이션
- m006:
note_revisions테이블 신설 + index + 기존 노트 capture backfill (edited_at = created_at). FK ON DELETE CASCADE — notes 영구 삭제 시 revision 자동 정리. transaction 안 단일 exec (runMigrations wrap)
메모리 정책 변경 (Cut C 머지 후 갱신 완료)
→raw_text 불변raw_text 가변+note_revisions보존 (사용자 편집 + 옛 버전 회���)- AI 재실행 input = current latest
notes.raw_text(옛 revision X) "raw_text invariant guard" (importNote 의 fork-on-conflict 사유)→ fork-on-id-collision (sync determinism) — 동일 id 가 두 distinct baseline 가리키지 않도록
다음 (Cut D)
v0.2.11 Cut D: F19 FTS5 search + 회고 view. dogfood 1주 soak 후 진입.
Downloads
- F20 raw_text 가변: NoteCard 의 "원문 보기" 영역에 inline textarea 편집 + 저장/취소.
-
released this
2026-05-09 08:59:19 +00:00 | 135 commits to main since this releasev0.2.9 — Cut B (status 4분기 + 사유 + Ollama-less)
데이터 모델 정비 cut. F17 (status 4분기 + AI 자동 분류) + F18 (자유 텍스트 사유) + F23 (Ollama-less wizard + raw-only fallback).
주요 변경
- F17 status 4분기: notes.status (active/completed/archived/trashed) 컬럼 추가 — m004 마이그레이션. 기존 deleted_at != NULL 노트는 status='trashed' 로 자동 migrate. 4탭 UI (Inbox/완료/보관/휴지통) + count badge. NoteCard 의 "이동 ▾" dropdown + MoveStatusModal (사유 입력 + 4 status 버튼 + AI 자동 분류 추천).
- F18 자유 텍스트 사유: notes.move_reason 컬럼 + Modal textarea. preset X — friction 최소.
- F23 Ollama-less 모드: ai_status 'disabled' enum (m005 migration — CHECK 제약 relax via SQLite table recreate). CaptureService 가 settings.ai_enabled=false 시 disabled 상태 + pending_jobs skip. 첫 launch OnboardingWizard 3 옵션 (AI 사용 / 원문만 / 나중에 설정) + Ollama 설치 가이드 link. AiProviderSection 토글 + ON 전환 후 "기존 disabled N건 처리" 버튼. NoteCard fallback (raw_text 첫 줄 title) + Banner/HealthChecker ai_enabled=false 시 비활성.
- classifyStatus AI: InferenceProvider.generateRaw optional 메서드 + Ollama
/api/generate format:json활용. 실패/무효 응답 시 'archived' fallback (안전한 default).
테스트 / 빌드
- 단위: 472 → 548 pass (+76)
- typecheck: 0 errors
- e2e: 1/1 pass (smoke + OnboardingWizard dismiss step)
- 산출물:
Inkling-Setup-0.2.9.exe(Windows NSIS x64, signed) - (macOS dmg / Linux AppImage + deb 차후 추가)
Schema 마이그레이션
- m004: notes ADD COLUMN (status / status_changed_at / move_reason) + 기존 deleted_at != NULL → status='trashed' migrate
- m005: notes 테이블 recreate — ai_status CHECK 제약 'disabled' 포함 (외래키 ON DELETE CASCADE 안전)
다음 (Cut C)
v0.2.10 Cut C: F20 raw_text 가변 (revision history) — load-bearing invariant 변경. 사용자 메모 본문 수정 + 옛 버전 회수 가능. dogfood 1주 soak 후 진입.
Downloads