Files
hyprcrd/public/plugins
thandClaude Opus 4.6 56c90225cb group delete with confirmation + undo, retry progress bar fix
context-menu: group delete (public/js/modules/context-menu.js):
* When the delete action targets a card that has children (a group
  parent), the confirmation dialog is ALWAYS shown regardless of the
  hyprcrd-confirm-delete setting — group deletion is destructive
  enough that it should never happen accidentally. The dialog lists
  every child card by title and the OK button reads
  "Delete all N" (parent + children counted).
* Children are deleted first (avoids orphan flicker), then the parent.
* Undo: a single pushUndo entry recreates the parent via POST first,
  then all children with parent_id pointing at the new parent id.
  due_date is restored via a follow-up PATCH since POST doesn't
  accept it. Ctrl+Z fully restores the group hierarchy.
* Non-group cards keep the existing behavior (simple confirm if the
  setting is on, single delete, pushCardDelete for undo).

tests (public/plugins/tests/card-interactions.test.js):
* New describe "Card: Group Delete" with two tests:
  - "deleting a group removes parent AND all children": creates a
    parent + 2 children, right-clicks the parent, clicks delete,
    asserts the dialog text contains both child titles, confirms,
    verifies all 3 cards are gone from the API.
  - "Ctrl+Z after group delete restores parent + children": creates
    parent + 1 child, deletes the group, confirms both gone, fires
    Ctrl+Z, finds the restored cards by title, asserts
    child.parent_id === restoredParent.id.
  Both tests save/restore the hyprcrd-confirm-delete localStorage
  value and soft-skip if the parent isn't visible on the board.

runner: retry progress bar (public/plugins/tests/runner.js):
* hideProgress() was called inside runAll() at the end of the first
  pass, which removed the #test-progress element before the retry
  pass started. The retry ran invisibly — "retrying…" never showed.
  Moved hideProgress() out of runAll() into run(), after both the
  first pass and the retry pass are done. The bar now stays visible
  for the whole sequence: first pass fills to 100%, retry resets the
  fill to 0 (via updateProgress(0, total, 'retrying…', false)) and
  fills again for just the failed tests.

chore: bump version to 0.9.10

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 09:34:31 +02:00
..
2026-04-10 07:58:07 +02:00
2026-04-11 13:01:27 +02:00
2026-04-11 01:45:36 +02:00