Reframe the file as a living register for in-flight dogfood feedback
rather than a single-feature stub. Each item carries a status label
(raw / drafting / ready-for-spec / promoted / rejected) and a fixed
six-slot template (관찰 / 제안 방향 / 결정 대기 / 가설·측정 / 범위 /
영향). Items graduate to their own spec file once mature; the entry
here then collapses to a one-line link.
- F1: Due-date 추출 (drafting) — content from the previous stub
normalized to the new template.
- F2: 태그 클릭 = 즉시 삭제 + undo 부재 (raw) — NoteCard.tsx:110
binds chip onClick to removeTag, no confirm or undo, and there is
no "filter by tag" affordance to match the user's mental model.
Direction: split click=filter, ✕-icon=remove with 5s undo toast.
README docs map updated to point at the new path.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The due-date extraction work originated as feedback during dogfood, but
the dogfood strategy doc itself should stay feature-agnostic — it's the
generic operating manual for the 2-week dogfood, not a feedback log.
- Remove the "시간 표현 포함 노트 수" row from dogfood-strategy §3.1.
- Rephrase the due-date spec stub so H1 / §7 / §9 reference the spec's
own sample-collection plan instead of relying on the dogfood retro.
- Spec is now framed as "independent of slice exit"; entry timing is a
separate decision once an accumulated sample meets H1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Captures the design skeleton, hypotheses, and open questions for the
hybrid (rule-based first → AI fallback) Korean date-phrase extractor.
Schema impact, prompt change, UX copy, and library tradeoffs are
sketched but deferred — formalization waits for slice v0.4 dogfood
Pass and the H1 (time-phrase frequency ≥ 30%) check in week-1 retro.
Cross-link added to dogfood-strategy daily-metric table so the H1
data is collected during dogfood, and to README docs map.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
When the OllamaBanner appears, it was generic enough that the user
couldn't tell whether the env var was missing, the LAN host was
unreachable, the model was uninstalled, or DNS was failing. Log the
resolved endpoint at startup with a `fromEnv` flag so we can confirm
INKLING_OLLAMA_ENDPOINT was actually read, and render the underlying
health-check reason as a small subtitle under the banner copy.
The user-facing primary message still avoids the forbidden tone words
("실패"/"끊김"/"연속 실패"); the diagnostic line is technical and only
appears when status.reason is set.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Vitest needs the node-ABI prebuilt sqlite binary; Electron 41 needs ABI 145.
Add `rebuild:node` / `rebuild:electron` scripts and wire them as
pre-hooks for `test`, `test:e2e`, `start`, `dev`, `test:integration`.
- Smoke test was racing on `firstWindow()`, which non-deterministically
returned the quickcapture window. Strip ELECTRON_RUN_AS_NODE from the
launch env, wait for both windows to register, then pick the inbox by
title and assert the heading via `getByRole`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>