5.0 KiB
Feishu Delete Card Implementation Plan
For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
Goal: Add a Feishu card-based multi-select delete flow triggered by /delete without changing existing explicit batch delete command semantics.
Architecture: Introduce a per-session delete-mode state keyed by sessionKey, render a dedicated delete-selection card and confirmation card, and route Feishu card act: callbacks through new delete-mode actions. Keep /list unchanged and keep explicit /delete <args> command execution on the existing code path.
Tech Stack: Go 1.24, core.Engine, shared card builder utilities, Feishu interactive cards, Go testing.
Task 1: Add failing tests for delete-mode card flow
Files:
- Modify:
core/engine_test.go
Step 1: Write the failing test
Add tests for:
/deletewith no args on a card-capable platform renders delete-mode card instead of usage text- delete-mode list toggles selected session IDs through card actions
- confirmation card lists selected sessions
- submit deletes only selected sessions and clears delete-mode state
- cancel returns to normal list/current view and clears state
Step 2: Run test to verify it fails
Run: go test ./core -run 'TestCmdDelete|TestDeleteMode'
Expected: FAIL because delete-mode state and card actions do not exist.
Step 3: Write minimal implementation
Add the smallest delete-mode state and rendering hooks required for the first test to pass before expanding behavior.
Step 4: Run test to verify it passes
Run: go test ./core -run 'TestCmdDelete|TestDeleteMode'
Expected: PASS for the implemented slice.
Step 5: Commit
git add core/engine_test.go core/engine.go core/i18n.go
git commit -m "feat: add delete mode card flow scaffolding"
Task 2: Implement delete-mode state and card rendering
Files:
- Modify:
core/engine.go - Modify:
core/i18n.go - Test:
core/engine_test.go
Step 1: Write the failing test
Add tests covering:
- selected rows remain selected across pagination
- delete-mode footer buttons enable confirmation only when selection exists
- confirmation card back button preserves selection
Step 2: Run test to verify it fails
Run: go test ./core -run 'TestDeleteMode'
Expected: FAIL on missing state transitions or incorrect card rendering.
Step 3: Write minimal implementation
Implement:
- delete-mode state structure
- render function for delete-mode list
- render function for confirmation/result cards
- helper to resolve display names from selected session IDs
Step 4: Run test to verify it passes
Run: go test ./core -run 'TestDeleteMode'
Expected: PASS
Step 5: Commit
git add core/engine.go core/engine_test.go core/i18n.go
git commit -m "feat: render delete selection cards"
Task 3: Wire Feishu card actions to delete-mode behavior
Files:
- Modify:
core/engine.go - Test:
core/engine_test.go - Inspect:
platform/feishu/feishu.go
Step 1: Write the failing test
Add tests for:
act:/delete-mode toggle <id>act:/delete-mode confirmact:/delete-mode backact:/delete-mode submitact:/delete-mode cancel
Step 2: Run test to verify it fails
Run: go test ./core -run 'TestDeleteMode'
Expected: FAIL because action dispatch does not recognize delete-mode actions.
Step 3: Write minimal implementation
Update handleCardNav and executeCardAction to:
- mutate delete-mode state in place
- re-render the correct card after each action
- clear state on submit/cancel
Step 4: Run test to verify it passes
Run: go test ./core -run 'TestDeleteMode'
Expected: PASS
Step 5: Commit
git add core/engine.go core/engine_test.go
git commit -m "feat: wire delete mode card actions"
Task 4: Reuse deletion logic and protect edge cases
Files:
- Modify:
core/engine.go - Test:
core/engine_test.go
Step 1: Write the failing test
Add tests for:
- active session in selected set is blocked and reported
- missing session ID in selected set is reported without aborting the whole batch
- explicit
/delete 1,2,3and/delete 1,3-5,8still use command parsing path
Step 2: Run test to verify it fails
Run: go test ./core -run 'TestCmdDelete|TestDeleteMode'
Expected: FAIL on batch execution/reporting edge cases.
Step 3: Write minimal implementation
Refactor deletion helpers so card-mode submit can delete by selected session ID while sharing reply/result formatting with the command path.
Step 4: Run test to verify it passes
Run: go test ./core -run 'TestCmdDelete|TestDeleteMode'
Expected: PASS
Step 5: Commit
git add core/engine.go core/engine_test.go
git commit -m "feat: execute delete mode batch removal"
Task 5: Run broader verification
Files:
- Test:
core/engine_test.go - Test:
platform/feishu/platform_test.go
Step 1: Run core verification
Run: go test ./core/...
Expected: PASS
Step 2: Run repository verification
Run: go test ./...
Expected: PASS