F2 태그 클릭 (v0.2.1 dogfood-feedback Track #5) #6

Merged
altair823 merged 3 commits from feat/f2-tag-click into main 2026-04-26 02:26:34 +00:00
Owner

요약

로드맵 5번째 — F2 태그 클릭: 칩의 텍스트 클릭은 필터, 별도 × 버튼이 제거 (5초 undo 토스트 동반).

결정

결정
짧은 클릭 필터 (Inbox 가 동일 태그만)
× 클릭 즉시 제거 + 5초 undo
AI/user 태그 동일 동작 (시각만 차이)
Continuity / Pending 카운트 전체 기준

구현 (3 commits)

  • aad9d40 tagFilter store + pure selectFilteredNotes + 4 단위 테스트
  • 8373f06 칩 분리 (텍스트=필터, ×=제거+토스트) + TagUndoToast 컴포넌트 + App 필터 배너
  • c4a7985 promotion

게이트

  • typecheck: 0 errors
  • 단위: 180/180 (176 → +4 신규)
  • e2e: 1/1
  • 스키마 변경: 0
  • 신규 dependency: 0

알려진 제약 (후속 후보)

  • undo 시 복원된 태그의 source 가 user 로 표시됨 (updateAiFields({ tags: string[] }) 가 이름만 받음). v1 는 수용, 후속 spec 에서 source 보존 옵션 검토.
  • 다중 태그 필터, rename, 일괄 작업 — 후속.

다음

로드맵 6번: F3 + F4-E 카피 정리.

🤖 Generated with Claude Code

## 요약 로드맵 5번째 — **F2 태그 클릭**: 칩의 텍스트 클릭은 필터, 별도 × 버튼이 제거 (5초 undo 토스트 동반). ## 결정 | 결정 | 값 | |------|-----| | 짧은 클릭 | 필터 (Inbox 가 동일 태그만) | | × 클릭 | 즉시 제거 + 5초 undo | | AI/user 태그 | 동일 동작 (시각만 차이) | | Continuity / Pending 카운트 | 전체 기준 | ## 구현 (3 commits) - `aad9d40` tagFilter store + pure selectFilteredNotes + 4 단위 테스트 - `8373f06` 칩 분리 (텍스트=필터, ×=제거+토스트) + TagUndoToast 컴포넌트 + App 필터 배너 - `c4a7985` promotion ## 게이트 - typecheck: 0 errors - 단위: 180/180 (176 → +4 신규) - e2e: 1/1 - 스키마 변경: 0 - 신규 dependency: 0 ## 알려진 제약 (후속 후보) - undo 시 복원된 태그의 source 가 user 로 표시됨 (`updateAiFields({ tags: string[] })` 가 이름만 받음). v1 는 수용, 후속 spec 에서 source 보존 옵션 검토. - 다중 태그 필터, rename, 일괄 작업 — 후속. ## 다음 로드맵 6번: **F3 + F4-E** 카피 정리. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
altair823 added 3 commits 2026-04-26 02:26:29 +00:00
Adds `tagFilter: string | null` and `setTagFilter` to the inbox store, plus
an extracted pure `selectFilteredNotes` selector so unit tests can import it
under vitest's `node` environment without dragging `api.ts` (which touches
`window.inkling` at module load).

Tests cover four cases: null filter passes through, single-tag match,
no-match empty result, and any-tag-matches semantics.

F2 dogfood feedback step 1/3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Splits the tag chip into two actions per F2 dogfood feedback:
- short click on chip text → applies the tag to the inbox filter
  (Inbox header shows "🔎 필터: #tag (n개)" banner with ✕ 해제 button)
- × button on chip → immediately removes the tag and surfaces a
  module-level pub/sub undo toast for 5 seconds; clicking the toast
  restores the tag

`TagUndoToast` is a tiny self-contained component: `pushTagUndo()` from
NoteCard publishes an entry, the mounted `<TagUndoToast />` near the
end of `<App>` subscribes and renders it. Auto-dismiss after 5 s,
click-to-undo cancels the timer and runs the restore callback.

AI vs user tags share the same behaviour — only the chip background
colour distinguishes them, matching the F2 decision table.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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) <noreply@anthropic.com>
altair823 merged commit c4a7985456 into main 2026-04-26 02:26:34 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: altair823-org/inkling#6