Skip to content

feat: add case reorder and delete in Manage tab#56

Merged
Ark0N merged 8 commits intoArk0N:masterfrom
TeigenZhang:feat/case-manage-reorder-delete
Apr 3, 2026
Merged

feat: add case reorder and delete in Manage tab#56
Ark0N merged 8 commits intoArk0N:masterfrom
TeigenZhang:feat/case-manage-reorder-delete

Conversation

@TeigenZhang
Copy link
Copy Markdown
Contributor

Summary

  • Add a Manage tab to the create-case modal with up/down reorder buttons and delete for each case
  • Linked cases are unlinked (folder preserved); CASES_DIR cases are permanently deleted
  • Mobile case picker now has a delete (×) button on each case item
  • Case ordering persisted to ~/.codeman/settings.json via PUT /api/cases/order

Changes

Backend (3 files):

  • DELETE /api/cases/:name — unlink linked cases or delete CASES_DIR cases
  • PUT /api/cases/order — save case ordering to settings.json
  • GET /api/cases now sorts by persisted caseOrder
  • New SSE events: case:deleted, case:order-changed
  • New Zod schema: CaseOrderSchema

Frontend (4 files):

  • Third "Manage" tab in createCaseModal with case list (name, path, ▲/▼/✕ buttons)
  • renderCaseManageList(), moveCaseUp/Down(), deleteCase(), saveCaseOrder()
  • Delete button in mobile case picker bottom sheet
  • CSS for .case-manage-* components

Test plan

  • Open create-case modal → verify 3 tabs: Create New / Link Existing / Manage
  • In Manage tab, verify all cases listed with correct paths
  • Click ▲/▼ to reorder → verify dropdown order updates after refresh
  • Click ✕ to delete a linked case → verify it's removed (folder still exists)
  • Click ✕ to delete a CASES_DIR case → verify folder is deleted
  • Mobile: open case picker → verify ✕ button visible and functional
  • Verify tsc --noEmit and npm run lint pass

Teigen added 8 commits March 30, 2026 16:44
Mobile users cannot press Shift+Tab on virtual keyboards. Add a ⇧Tab
button that sends the escape sequence (\x1b[Z) to the PTY, enabling
mode switching on mobile devices.

Also fix accessory bar overflow on narrow screens by making it
horizontally scrollable with hidden scrollbar.
…on guard

Three fixes from the WIP flicker branch that were lost during master merges:

1. Move viewport clear (\x1b[3J\x1b[H\x1b[2J) inside the dimension-change
   guard so it only fires when cols/rows actually change. Previously every
   resize event cleared the screen even at identical dimensions, causing
   visible flicker with no subsequent Ink redraw to repaint.

2. Sync _lastResizeDims in sendResize() so restoreTerminalSize() doesn't
   trigger a redundant viewport clear on the next throttledResize tick.

3. Add didScroll tracking to touch events — tap (no scroll) now refocuses
   xterm's hidden textarea, fixing mobile keyboard input routing after
   tapping the terminal area.
- Add Tab (forward), Esc, and Option+Enter (newline) buttons
- Reorder buttons: ↑ ↓ 📋 Tab ⇧Tab ⌥Enter Esc /init /clear /compact dismiss
- Unify dismiss button style with arrow buttons (was oversized with custom class)
- Remove unused .accessory-btn-dismiss CSS rules
Support cursor left/right movement on mobile, using the same blue
accessory-btn-arrow style as the existing up/down arrows.
Add a "Manage" tab to the create-case modal with up/down reorder
buttons and delete for each case. Linked cases are unlinked (folder
preserved); CASES_DIR cases are permanently deleted.

Backend:
- DELETE /api/cases/:name — unlink or delete
- PUT /api/cases/order — persist ordering to settings.json
- GET /api/cases now respects saved caseOrder

Frontend:
- Third "Manage" tab in createCaseModal with case list
- Delete button in mobile case picker bottom sheet
- SSE events: case:deleted, case:order-changed
@Ark0N
Copy link
Copy Markdown
Owner

Ark0N commented Apr 3, 2026

Thanks for your work, I will check everything soon :-)

@Ark0N Ark0N merged commit 0e6cd94 into Ark0N:master Apr 3, 2026
1 check passed
@Ark0N
Copy link
Copy Markdown
Owner

Ark0N commented Apr 3, 2026

Thanks @TeigenZhang! Clean feature — fills a real UX gap. Merged. Minor note: the hint says "Drag or use arrows to reorder" but there's no drag-and-drop, only arrows. Might want to update that copy in a follow-up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants