aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-13 01:21:58 -0500
committerCraig Jennings <c@cjennings.net>2026-06-13 01:21:58 -0500
commit9e426241e1632fe9d5c9ee6c7cb60d11c13ac1fa (patch)
treee0681cca12baba943b14e1e1b94713815302e5b5
parentb8854515811a19babcbce8feb863c35a440ba4ab (diff)
downloadarchsetup-main.tar.gz
archsetup-main.zip
chore(todo): close quick-capture popup task, file scroll-layout follow-upHEADmain
The popup fix shipped in the dotfiles repo (the script now calls cj/quick-capture; the scrolling layout is disabled and Super+Shift+S reassigned to a fullscreen screenshot). I filed the scrolling-layout frame-fit and wrap-around work as a follow-up, and archived the processed cross-project handoff replies.
-rw-r--r--assets/outbox/2026-06-12-1947-from-.emacs.d-org-capture-popup-singlewindow-reply.org25
-rw-r--r--assets/outbox/2026-06-12-2006-from-.emacs.d-quick-capture-script-change.org41
-rw-r--r--assets/outbox/2026-06-13-0117-from-rulesets-inbox-response-wrapup-routing.org12
-rw-r--r--todo.org41
4 files changed, 98 insertions, 21 deletions
diff --git a/assets/outbox/2026-06-12-1947-from-.emacs.d-org-capture-popup-singlewindow-reply.org b/assets/outbox/2026-06-12-1947-from-.emacs.d-org-capture-popup-singlewindow-reply.org
new file mode 100644
index 0000000..7a017c8
--- /dev/null
+++ b/assets/outbox/2026-06-12-1947-from-.emacs.d-org-capture-popup-singlewindow-reply.org
@@ -0,0 +1,25 @@
+#+TITLE: Re: org-capture popup single-window — landed config-side, live in the daemon
+
+* Landed
+
+Fixed config-side in =.emacs.d= (=modules/org-capture-config.el=), not in the quick-capture script. That module already owns the popup-frame handling (the existing =org-capture-after-finalize-hook= that deletes the "org-capture" frame), so the single-window logic belongs next to it.
+
+Root cause matched your analysis exactly: =org-mks= shows =*Org Select*= via =switch-to-buffer-other-window=, and =org-capture-place-template= shows the =CAPTURE-*= buffer via =pop-to-buffer= with an explicit split action — both split the small floating frame.
+
+* The fix
+
+One frame-scoped =display-buffer-alist= entry handles both call sites. Its condition matches when the selected frame is named "org-capture" AND the buffer is =*Org Select*= or a =CAPTURE-*= buffer; its action puts that buffer in the frame's sole window (=delete-other-windows= + =set-window-buffer= on the frame root). Since =display-buffer-alist= outranks the caller's action, it takes over both the menu and the capture buffer.
+
+Scoped to the "org-capture" frame name only — normal in-Emacs captures keep their windows, exactly as the finalize-hook already does.
+
+* State
+
+- Live in the daemon now (live-reloaded), so verification does NOT need an Emacs restart — just press Super+Shift+N.
+- Test coverage: 7 ERT tests in =tests/test-org-capture-config-popup-window.el= — the pure frame+buffer predicate (Normal/Boundary/Error) plus an integration test proving a =CAPTURE-*= buffer lands in a single window through the real =display-buffer= path. Full org-capture-config suite green, no regressions.
+- The change is in the =.emacs.d= working tree, uncommitted for now (Craig pushes at end of session), but it's active in the running daemon regardless.
+
+* Your verify
+
+Per your DOING task, verify end-to-end on ratio: Super+Shift+N, confirm the =*Org Select*= menu fills one window (no top sliver of the last-visited buffer, one modeline), pick a template, confirm the =CAPTURE= buffer also fills one window, then finish/abort and confirm the frame still closes. If anything still splits, send a note back with a fresh grim crop and I'll iterate.
+
+Your evidence screenshot (=popup-crop.png=) was saved durably into =.emacs.d/inbox/= so it survives the /tmp reboot.
diff --git a/assets/outbox/2026-06-12-2006-from-.emacs.d-quick-capture-script-change.org b/assets/outbox/2026-06-12-2006-from-.emacs.d-quick-capture-script-change.org
new file mode 100644
index 0000000..fbaf5fe
--- /dev/null
+++ b/assets/outbox/2026-06-12-2006-from-.emacs.d-quick-capture-script-change.org
@@ -0,0 +1,41 @@
+#+TITLE: Follow-up: point quick-capture at cj/quick-capture (one-line script change)
+
+* Why a follow-up
+
+The single-window fix from the last note is live and stands on its own. But reviewing it surfaced more: the popup's =*Org Select*= menu shows all ten capture templates, and most make no sense launched from the desktop — Link / Link-with-Selection are browser (org-protocol) captures, Epub/PDF need a document buffer (the PDF ones error outright), mu4e Email needs a message. Worse, aborting the menu (q / C-g) or an erroring template leaves the frame orphaned, because Emacs only closes it on a *completed* capture.
+
+So there's now a dedicated entry point that fixes both.
+
+* What changed in .emacs.d
+
+New command =cj/quick-capture= in =modules/org-capture-config.el= (live in the daemon):
+
+- Offers only Task, Bug, and Event.
+- Task and Bug file to the global inbox (a desktop capture has no meaningful project context — the old project-aware target resolved against whatever buffer the daemon last had open).
+- Closes the popup frame on every exit path — abort, error, or finalize — so a stray selection never orphans it.
+
+12 ERT tests cover the template subset, the inbox retarget, and the frame-cleanup on abort/quit/success.
+
+* The one-line script change (archsetup's side)
+
+In =~/.dotfiles/hyprland/.local/bin/quick-capture=, change the =-e= form to call =cj/quick-capture= instead of =org-capture=:
+
+#+begin_src sh
+emacsclient -c \
+ -F '((name . "org-capture") (width . 90) (height . 22))' \
+ -e '(progn (select-frame-set-input-focus (selected-frame)) (cj/quick-capture))'
+#+end_src
+
+Only the final symbol changes: =(org-capture)= becomes =(cj/quick-capture)=. The frame name stays "org-capture" (all the config-side gating keys on it), and the width/height/rules are unchanged.
+
+Until the script is updated, the popup still works with the single-window fix — it just shows the full template menu and keeps the old targets. The menu subset, inbox target, and abort-close only take effect once the script calls =cj/quick-capture=.
+
+* Verify (after the script change)
+
+Super+Shift+N, then:
+- The menu lists only Task / Bug / Event, single window.
+- Task or Bug lands in the global inbox under "Inbox".
+- Event prompts for a date and files to the schedule.
+- Hitting q or C-g at the menu closes the popup (no orphan frame).
+
+If anything's off, send a note back with a fresh crop.
diff --git a/assets/outbox/2026-06-13-0117-from-rulesets-inbox-response-wrapup-routing.org b/assets/outbox/2026-06-13-0117-from-rulesets-inbox-response-wrapup-routing.org
new file mode 100644
index 0000000..26fa332
--- /dev/null
+++ b/assets/outbox/2026-06-13-0117-from-rulesets-inbox-response-wrapup-routing.org
@@ -0,0 +1,12 @@
+#+TITLE: Re: wrap-up inbox/transcript routing request (2026-06-13 handoff)
+
+Filed as a [#B] :feature:spec: TODO in rulesets, spec-bound rather than implemented straight off. The request clears the spec-create Phase 0 bar (more than 6 hours, real design uncertainty, cross-cutting, hard to reverse), so it goes through spec-create first instead of landing as a direct workflow edit.
+
+The design questions the spec has to settle, drawn from your notes plus one you couldn't have seen:
+
+- Earlier in this same session a defer-and-stage router landed in process-inbox.org (the new Skeptical Review files a VERIFY that routes shared-asset proposals). Your router is the general case. The spec reconciles the two so wrap-up doesn't grow two competing "move inbox items to todo.org" mechanisms.
+- Merge into the existing Inbox sanity check or stay a separate optional router (your lean toward separate is captured).
+- The transcript half carries the unresolved source-location dependency and the extract-action-items open question you flagged. Likely splits to vNext so the ready task-routing half isn't held behind it.
+- Project-discovery widening, the recommendation-confidence requirement, and the atomic cross-project move helper are all in the task body.
+
+Your proposal is preserved as the spec source at docs/design/. No archsetup-side work, as you noted. I'll surface the spec for your review when it's drafted.
diff --git a/todo.org b/todo.org
index 522e96d..ff4165c 100644
--- a/todo.org
+++ b/todo.org
@@ -13,20 +13,6 @@ Four levels, matching the Emacs config (=org-highest-priority ?A=, =org-lowest-p
Rule of thumb: A = dated-and-must; B = the active backlog; C = parking lot; D = untriaged. Fixing the undated A/B tasks means either dating them or demoting to C.
* Archsetup Open Work
-** DOING [#B] Org-capture popup frame split (quick-task Super+Shift+N)
-SCHEDULED: <2026-06-12 Fri>
-:PROPERTIES:
-:LAST_REVIEWED: 2026-06-12
-:END:
-The quick-capture popup opens split in two windows — a top sliver of the daemon's last-visited buffer plus the =*Org Select*= menu below — so the two stacked modelines read like tmux status bars. Root cause: =org-mks= displays the template menu via =org-switch-to-buffer-other-window=, splitting the fresh popup frame instead of taking it over.
-
-Coordinating with the .emacs.d project: handoff sent 2026-06-12 18:59 requesting a config-side fix scoped to frames named =org-capture= ([[file:~/.emacs.d/inbox/2026-06-12-1859-from-archsetup-org-capture-popup-frame-split.org][handoff note]], [[file:~/.emacs.d/inbox/2026-06-12-1859-from-archsetup-popup-crop.png][screenshot evidence]]). Waiting on its reply in this project's inbox; then verify the popup end-to-end on ratio (Super+Shift+N → single-window menu → single-window capture buffer). Fallback if .emacs.d declines: carry the fix in the dotfiles =quick-capture= script's =-e= elisp.
-
-Related finding, no change needed: whole-desktop screenshot already exists at CTRL+Super+S (=screenshot fullscreen=, grim fires before the fuzzel menu so popups survive). Possible follow-up decision: rebind Super+Shift+S (currently layout-switch to scrolling) if Craig wants fullscreen capture there.
-
-*** 2026-06-12 Fri @ 20:21:00 -0500 Incorporated .emacs.d's fix and verified end-to-end
-.emacs.d replied same evening with two notes (now in [[file:assets/outbox/2026-06-12-1947-from-.emacs.d-org-capture-popup-singlewindow-reply.org][outbox]] and [[file:assets/outbox/2026-06-12-2006-from-.emacs.d-quick-capture-script-change.org][outbox]]): the single-window fix landed config-side (frame-scoped =display-buffer-alist=, 7 ERT tests, live in the daemon), plus a new =cj/quick-capture= command (Task/Bug/Event only, global-inbox targets, frame closes on every exit path, 12 ERT tests). Our side: test-first one-line change in the dotfiles =quick-capture= script — =(org-capture)= → =(cj/quick-capture)= — suite 15/15 green, live immediately via stow. Verified on ratio with sendshortcut-driven popups + grim: menu single-window with the 3-template subset, capture buffer single-window targeting =CAPTURE-inbox.org=, no orphan frames, nothing leaked into the inbox file. Verification reply + screenshot evidence sent back to .emacs.d. Remaining: commit the dotfiles change (Craig's gate) and the Super+Shift+S rebind decision.
-
** TODO [#B] Scrolling layout: frame fit + wrap-around :hyprland:
Disabled 2026-06-12 (bind and cycle entry points removed; Super+Shift+S reassigned to whole-desktop screenshot). The layout needs real work before it earns its chord back:
- What fits in each frame: column/frame sizing so windows land at usable widths instead of arbitrary slices.
@@ -35,13 +21,6 @@ Disabled 2026-06-12 (bind and cycle entry points removed; Super+Shift+S reassign
The support machinery was deliberately kept for this task: =layout-navigate= and =layout-resize= retain their scrolling branches, =waybar-layout= still renders the scrolling state, and the unbound legacy =cycle-layout= script still lists it. Re-enabling is two lines: add =scrolling= back to =LAYOUTS= in =layout-cycle= and restore a direct-jump bind (the old chord is taken now — pick a new one). The =tests/layout-cycle= suite pins the disabled state and will go red on re-enable, which is the reminder to update it.
-** DONE [#C] Silent notifications for the mic-mute toggle :quick:solo:
-CLOSED: [2026-06-11 Thu]
-:PROPERTIES:
-:LAST_REVIEWED: 2026-06-11
-:END:
-Shipped 2026-06-11 as dotfiles =a4ae4a4=, minutes after filing: =--silent= on all four of mic-toggle's notify calls (Muted/Live/unknown/fail), tests assert the flag on every path (5/5, full suite 15 suites green), and a live round-trip on ratio confirmed the toggle works with the toast and without the chime. velox picks it up on next pull.
-
** TODO [#C] Waybar indicators unevenly spaced :quick:solo:
:PROPERTIES:
:LAST_REVIEWED: 2026-06-09
@@ -1198,3 +1177,23 @@ Shipped 2026-06-10 as dotfiles commit =220dde6=: jchook/ranger-zoxide vendored (
** DONE [#D] Add retry logic to git_install function :quick:
CLOSED: [2026-06-10 Wed]
Already shipped before this review — commit =798b86f= gave git_install the same MAX_INSTALL_RETRIES loop as pacman/aur, with a clean-slate build dir per attempt. The task predates the fix; closing as done.
+** DONE [#B] Org-capture popup frame split (quick-task Super+Shift+N)
+CLOSED: [2026-06-13 Sat] SCHEDULED: <2026-06-12 Fri>
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-12
+:END:
+Resolved: .emacs.d fixed it config-side (single-window display + cj/quick-capture command); archsetup pointed the popup script at cj/quick-capture (8cc1be7). Verified end-to-end on ratio.
+The quick-capture popup opens split in two windows — a top sliver of the daemon's last-visited buffer plus the =*Org Select*= menu below — so the two stacked modelines read like tmux status bars. Root cause: =org-mks= displays the template menu via =org-switch-to-buffer-other-window=, splitting the fresh popup frame instead of taking it over.
+
+Coordinating with the .emacs.d project: handoff sent 2026-06-12 18:59 requesting a config-side fix scoped to frames named =org-capture= ([[file:~/.emacs.d/inbox/2026-06-12-1859-from-archsetup-org-capture-popup-frame-split.org][handoff note]], [[file:~/.emacs.d/inbox/2026-06-12-1859-from-archsetup-popup-crop.png][screenshot evidence]]). Waiting on its reply in this project's inbox; then verify the popup end-to-end on ratio (Super+Shift+N → single-window menu → single-window capture buffer). Fallback if .emacs.d declines: carry the fix in the dotfiles =quick-capture= script's =-e= elisp.
+
+Related finding, no change needed: whole-desktop screenshot already exists at CTRL+Super+S (=screenshot fullscreen=, grim fires before the fuzzel menu so popups survive). Possible follow-up decision: rebind Super+Shift+S (currently layout-switch to scrolling) if Craig wants fullscreen capture there.
+
+*** 2026-06-12 Fri @ 20:21:00 -0500 Incorporated .emacs.d's fix and verified end-to-end
+.emacs.d replied same evening with two notes (now in [[file:assets/outbox/2026-06-12-1947-from-.emacs.d-org-capture-popup-singlewindow-reply.org][outbox]] and [[file:assets/outbox/2026-06-12-2006-from-.emacs.d-quick-capture-script-change.org][outbox]]): the single-window fix landed config-side (frame-scoped =display-buffer-alist=, 7 ERT tests, live in the daemon), plus a new =cj/quick-capture= command (Task/Bug/Event only, global-inbox targets, frame closes on every exit path, 12 ERT tests). Our side: test-first one-line change in the dotfiles =quick-capture= script — =(org-capture)= → =(cj/quick-capture)= — suite 15/15 green, live immediately via stow. Verified on ratio with sendshortcut-driven popups + grim: menu single-window with the 3-template subset, capture buffer single-window targeting =CAPTURE-inbox.org=, no orphan frames, nothing leaked into the inbox file. Verification reply + screenshot evidence sent back to .emacs.d. Remaining: commit the dotfiles change (Craig's gate) and the Super+Shift+S rebind decision.
+** DONE [#C] Silent notifications for the mic-mute toggle :quick:solo:
+CLOSED: [2026-06-11 Thu]
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-11
+:END:
+Shipped 2026-06-11 as dotfiles =a4ae4a4=, minutes after filing: =--silent= on all four of mic-toggle's notify calls (Muted/Live/unknown/fail), tests assert the flag on every path (5/5, full suite 15 suites green), and a live round-trip on ratio confirmed the toggle works with the toast and without the chime. velox picks it up on next pull.