From c4a79854562426e585f4b33e6304ddd6fd3e43d0 Mon Sep 17 00:00:00 2001 From: altair823 Date: Sun, 26 Apr 2026 11:25:31 +0900 Subject: [PATCH] docs(spec): promote F2 tag click MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Marks F2 in dogfood-feedback as πŸš€ promoted and adds the standalone spec at docs/superpowers/specs/2026-04-26-f2-tag-click.md capturing the mini-brainstorm decisions, scope, and follow-ups (multi-tag filter, rename/merge, source preservation on undo). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../specs/2026-04-25-dogfood-feedback.md | 4 ++- .../specs/2026-04-26-f2-tag-click.md | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 docs/superpowers/specs/2026-04-26-f2-tag-click.md diff --git a/docs/superpowers/specs/2026-04-25-dogfood-feedback.md b/docs/superpowers/specs/2026-04-25-dogfood-feedback.md index ca357e2..d8d2f13 100644 --- a/docs/superpowers/specs/2026-04-25-dogfood-feedback.md +++ b/docs/superpowers/specs/2026-04-25-dogfood-feedback.md @@ -103,7 +103,9 @@ H1 이 미달이면 λ³Έ ν•­λͺ© ❌ rejected. --- -## F2. νƒœκ·Έ 클릭 = μ¦‰μ‹œ μ‚­μ œ + undo λΆ€μž¬ (🌱 raw) +## F2. νƒœκ·Έ 클릭 = μ¦‰μ‹œ μ‚­μ œ + undo λΆ€μž¬ (πŸš€ promoted) + +**μ§„ν–‰ μƒνƒœ:** πŸš€ promoted β†’ `docs/superpowers/specs/2026-04-26-f2-tag-click.md` **발견:** 2026-04-25 dogfood 쀑. 슬라이슀 v0.4 λ™μž‘. diff --git a/docs/superpowers/specs/2026-04-26-f2-tag-click.md b/docs/superpowers/specs/2026-04-26-f2-tag-click.md new file mode 100644 index 0000000..9c395c8 --- /dev/null +++ b/docs/superpowers/specs/2026-04-26-f2-tag-click.md @@ -0,0 +1,31 @@ +# F2 νƒœκ·Έ 클릭 Spec (Promoted) + +**Extracted from:** `2026-04-25-dogfood-feedback.md` F2 +**Plan:** (inline in this PR description) +**Status:** πŸš€ promoted β€” implemented 2026-04-26 + +## κ²°μ • (mini-brainstorm κ²°κ³Ό) + +| κ²°μ • | κ°’ | +|------|-----| +| 짧은 클릭 | ν•„ν„° (Inbox κ°€ 동일 νƒœκ·Έλ§Œ ν‘œμ‹œ) | +| 칩의 Γ— | μ¦‰μ‹œ νƒœκ·Έ 제거 + 5초 undo ν† μŠ€νŠΈ | +| AI/user νƒœκ·Έ | 동일 λ™μž‘ (μ‹œκ°λ§Œ 닀름) | +| undo μ •μ±… | 5초 μžλ™ 사라짐, ν† μŠ€νŠΈ 클릭 μ‹œ μ¦‰μ‹œ 볡원 | +| Continuity / Pending 카운트 | 전체 κΈ°μ€€ (ν•„ν„° λ¬΄μ‹œ) | + +## λ²”μœ„ (PR μ•ˆμ— 포함됨) + +- `src/renderer/inbox/store.ts` μˆ˜μ • (`tagFilter` + `setTagFilter`, `selectFilteredNotes` re-export) +- `src/renderer/inbox/selectFilteredNotes.ts` μ‹ κ·œ β€” 순수 μ…€λ ‰ν„° (`api.ts` 의 `window.inkling` λΆ€μˆ˜νš¨κ³Ό νšŒν”Όλ‘œ vitest `node` ν™˜κ²½ ν˜Έν™˜) +- `src/renderer/inbox/App.tsx` μˆ˜μ • (ν•„ν„° λ°°λ„ˆ + ν•΄μ œ λ²„νŠΌ + `` 마운트) +- `src/renderer/inbox/components/NoteCard.tsx` μˆ˜μ • (μΉ© 뢄리: 클릭 = ν•„ν„° / Γ— = 제거 + undo) +- `src/renderer/inbox/components/TagUndoToast.tsx` (μ‹ κ·œ β€” λͺ¨λ“ˆ λ‹¨μœ„ pub/sub ν† μŠ€νŠΈ) +- `tests/unit/store.tagFilter.test.ts` (μ‹ κ·œ β€” 4 μΌ€μ΄μŠ€) + +## 후속 + +- 닀쀑 νƒœκ·Έ ν•„ν„° (AND/OR) +- νƒœκ·Έ rename / merge / μžλ™μ™„μ„± +- νƒœκ·Έ λ‹¨μœ„ 일괄 μž‘μ—… +- undo μ‹œ μ›λž˜ source(`ai`/`user`) 보쑴 (ν˜„μž¬λŠ” `updateAiFields(tags: string[])` API κ°€ source 정보 미수용 β€” backend κ°€ user 둜 처리)