aboutsummaryrefslogtreecommitdiff
path: root/README.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-25 05:00:48 -0500
committerCraig Jennings <c@cjennings.net>2026-05-25 05:00:48 -0500
commit9b17dc89fc25417e207943dafe8bf09ac211ae32 (patch)
treec92779db74b0a4cccc6e38d7307c781aa62e9356 /README.org
parent9f15d1823f388910f695da25ad5878312cc80330 (diff)
downloadpearl-9b17dc89fc25417e207943dafe8bf09ac211ae32.tar.gz
pearl-9b17dc89fc25417e207943dafe8bf09ac211ae32.zip
feat: add pearl-delete-current-comment
Pearl could render, create, and edit comments but not delete one, so removing your own comment meant leaving Emacs for the web app. I added the delete command and filled the reserved C-; L d c keymap slot. pearl-delete-current-comment runs from inside a comment's subtree. It's own-only, reusing the viewer gate from pearl-edit-current-comment: a comment authored by someone else, a bot, or an integration is refused with no commentDelete call. It confirms before the destructive mutation, and on success removes that comment's Org subtree, leaving sibling comments and the issue body untouched. pearl--delete-comment-async mirrors pearl--delete-issue-async. The delete is permanent. I verified Linear's commentDelete against the live API: the comment is not found immediately after, with no restore path, so unlike issueDelete this isn't a recoverable soft delete. Because of that, a comment with unsaved local edits (or no stored hash) gets a stronger "discard your local edits" confirmation rather than the plain prompt. I surfaced it as K in the transient Delete group and as d c in the prefix keymap, and inverted the keymap test that asserted d c was unbound.
Diffstat (limited to 'README.org')
-rw-r--r--README.org5
1 files changed, 3 insertions, 2 deletions
diff --git a/README.org b/README.org
index b2ffbbe..f10233b 100644
--- a/README.org
+++ b/README.org
@@ -19,7 +19,7 @@ Pearl (backronym: *Pearl Edits and Reflects Linear*) brings Linear issues into E
- Keep structured fields in =LINEAR-*= properties: id, URL, team, state, priority, assignee, labels, timestamps, and sync hashes
- Edit descriptions, titles, and your own comments in place, then push them with a three-way conflict check
- Set priority, state, assignee, and labels by command, using Linear ids behind display-name completion
-- Add comments, create issues, delete issues, and open the current issue or view in Linear
+- Add and delete your own comments, create issues, delete issues, and open the current issue or view in Linear
- Refresh the active view from the source recorded in the file, or refresh one issue at point
- Optionally sync Org TODO keyword changes back to Linear workflow states
- Use one transient dispatcher, =M-x pearl-menu=, for the whole command surface
@@ -200,13 +200,14 @@ All issue commands work from anywhere inside an issue subtree.
| =pearl-set-labels= | Replace labels; empty selection clears them |
| =pearl-add-comment= | Add a new Linear comment |
| =pearl-edit-current-comment= | Push edits to one of your own comments |
+| =pearl-delete-current-comment= | Delete one of your own comments after confirming |
| =pearl-delete-current-issue= | Soft-delete the current issue after confirmation |
| =pearl-open-current-issue= | Open the issue URL in a browser |
| =pearl-open-current-view-in-linear= | Open the active view in Linear |
Description, title, and comment pushes use the same conflict gate: unchanged local text sends nothing; a local edit against an unchanged remote pushes; if both local and remote changed since fetch, Pearl refuses to clobber either side and reports the conflict. Destructive conflict choices stash local text in =*pearl-conflict-backup*= first.
-Only comments you authored are editable. Pearl refuses edits to comments from another person, a bot, or an integration before making an API call.
+Only comments you authored are editable or deletable. Pearl refuses edits and deletes to comments from another person, a bot, or an integration before making an API call. A comment delete is permanent (Linear has no restore for it), so deleting a comment with unsaved local edits prompts to confirm discarding them.
*** Org TODO sync