aboutsummaryrefslogtreecommitdiff
path: root/tests/test-selection-framework-keybindings.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-27 21:46:00 -0500
committerCraig Jennings <c@cjennings.net>2026-05-27 21:46:00 -0500
commit2a6ffb0e6a10fdf4fd42fe3e5689f300b25c7cf6 (patch)
tree293e12ed09dbb8f38a921396a13ab1d9d01e53a4 /tests/test-selection-framework-keybindings.el
parentfa924acccc2e85bc39433cae608dcc9292795ed2 (diff)
downloaddotemacs-2a6ffb0e6a10fdf4fd42fe3e5689f300b25c7cf6.tar.gz
dotemacs-2a6ffb0e6a10fdf4fd42fe3e5689f300b25c7cf6.zip
docs(signel): harden initiate-message spec to Ready
I wrote an initiate-message workflow spec on top of the existing Signal client design doc, covering the keymap, name-based picker, message-to-self, and the whole flow. A follow-up review caught three blockers I'd hand-waved: signel had no JSON-RPC success-result dispatch path (so cj/signel--fetch-contacts couldn't actually receive listContacts results), D4's "auto-connect when linked" didn't define what "linked" meant or how process death surfaced, and the contact cache had no ownership or invalidation story. I verified the central one against the fork. signel--dispatch handles only "receive" and error responses, so success results were dropped. Then I folded all three into an Architecture additions subsection: a request-callback table keyed by JSON-RPC id with cleanup on success/error/reconnect, a cj/signel--ensure-started contract with branches for live process / account-set / account-nil, and a cj-owned cj/signel--contact-cache separate from signel's receive-time map. A second review pass caught the remaining sync/async boundary. completing-read is synchronous and the fetch is async. I resolved it with pre-warm on connect plus a bounded accept-process-output fallback for cold caches, so the warm case feels instant and a dead daemon can't hang Emacs. The follow-up re-review then converged to Ready-with-caveats and surfaced one concrete code finding I'd missed: the #2 input-clobber fix has to cover both signel--insert-msg AND signel--insert-system-msg, since both delete from the prompt line through point-max. The pieces-to-build entry and the prompt-preservation regression test now name both paths. A few smaller tightenings landed in the same pass. The listContacts assumption is now a researched fact (verified on 94 contacts), the two open questions on account source and fork remote are marked decided (defcustom in the gitignored local config, local checkout with no remote for now), and a forward-flag in the scope summary names the four notification details to spec before that later slice starts. docs/design/signal-client-review.org carries the review as the closure record. todo.org gets two tasks: a [#B] for the JSON-RPC success-result dispatch (the first build step), and a [#D] for groups in the picker as a vNext after the 1:1 flow is stable. Spec is Ready. Implementation order is pinned to the Pieces-to-build list. RPC dispatch first, then the guard, then fetch/cache, then the picker and keymap, then the clobber fix.
Diffstat (limited to 'tests/test-selection-framework-keybindings.el')
0 files changed, 0 insertions, 0 deletions