Skip to content

1.49.0: close several sessions at once — a visible selection mode, one question for the set, and review fixes - #70

Closed
writingdeveloper wants to merge 1 commit into
mainfrom
feat/multi-close-and-select
Closed

writingdeveloper wants to merge 1 commit into
mainfrom
feat/multi-close-and-select

Conversation

@writingdeveloper

Copy link
Copy Markdown
Owner

Close several sessions at once

The sidebar could already close a hand-picked set of sessions — after a Ctrl+click that nothing on screen mentioned. So most decks were closed one row at a time.

  • A Select button above the session groups (and Select… in every row's ⋯ menu) turns on a selection mode: every row shows a checkbox, a plain click picks a row instead of opening it, the box on a group heading picks the whole group (opened in full first), Shift+click picks a range, Select all opens every group and picks everything. Close asks once; Done / Esc leave; Delete closes the picked rows. Ctrl+click and Shift+click work as before. The selection itself is a pure model in src/shared/sessionSelection.ts, with tests.
  • Local, remote, background and saved rows mix freely, and the one question says what the set holds (2 on this PC · 3 on SIHYEONG-4080 · 1 background · 4 saved). Tiles go in one batch and the pane settles once at the end; closes on other PCs that refuse are one line, not a stack; background sessions close machines side by side, one after another within a machine, with one progress line and one summary.
  • A tile attached to a Claude background session used to leave the session running on close (its row came straight back). The question now offers to end the session too, ticked by default. One picked row asks that row's own question.

The Background listing no longer starts a process on every poll

claude agents --json --all (~340 ms, a 300 MB executable) ran every poll on every PC. DevDeck now reads the job records under ~/.claude/jobs first: no records → no sessions and no process; records unchanged → the last answer for up to five minutes; only a change runs the command. Tested against a real temporary folder.

From a review of the sidebar and the close flows

  • The confirmation could be answered by an Enter aimed at the quick-open field (Ctrl+Shift+P moved focus behind it). Chords no longer leave the question, an Enter from outside only brings focus back, auto-repeat is ignored, a second question never stacks on the first (the row's ⋯ menu closes first; the dialog sits above every menu), and focus goes back after Cancel.
  • A row's ⋯ menu was clipped by the session list when the list was short (one session: only "Close" showed). It is placed against the window now.
  • Keyboard focus in a ⋯ button, an open menu item or a group heading's controls was dropped whenever rows reordered; it is put back.
  • Forgetting a saved entry offers Undo; bulk flows (restore all for an offline PC, closing a group on a PC that refuses) show one line for the set; a pinned row wears its pin; section names exclude the heading's buttons; aria-pressed only while picking; Korean group confirmations use the same register; the selection bar's Close is styled as destructive (the class had no CSS).

Verification

  • npx tsc --noEmit, vitest 1557 passed (131 files), check:docs pass.
  • node qa/screenshot.mjs pass (0 console / page errors), new npm run qa:multi-close 24/24 (selection mode end to end, no agent needed).

🤖 Generated with Claude Code

https://claude.ai/code/session_01LdbKDr2tTfCLAZv7WbV8kX

…e question for the set, and review fixes

The sidebar could already close a hand-picked set of sessions, but only
after a Ctrl+click nothing on screen mentioned, so decks were closed one
row at a time.

- A Select button above the session groups (and "Select…" in every row's
  ⋯ menu) turns on a selection mode: checkboxes on rows, a plain click
  picks instead of opening, the box on a group heading picks the whole
  group (opened in full first), Shift+click ranges, Select all opens every
  group; Close / Done / Esc / Delete. Ctrl+click and Shift+click still work.
  The selection is a pure model in src/shared/sessionSelection.ts.
- Local, remote, background and saved rows close after one question that
  says what is where ("2 on this PC · 3 on 4080 · 1 background · 4 saved").
  Tiles go in one batch and the pane settles once; remote refusals are one
  line; background sessions close machines side by side with one progress
  line and one summary. A tile attached to a Claude background session can
  end the session too (checkbox, on by default). One picked row asks that
  row's own question.
- The Background listing looks at ~/.claude/jobs first: no records means
  no claude process at all, unchanged records reuse the last answer for up
  to five minutes.
- From a review of the sidebar and close flows: the confirmation could be
  answered by an Enter aimed at the quick-open field (chords no longer
  leave it, auto-repeat is ignored, one question at a time, focus goes back
  after Cancel); a row's ⋯ menu was clipped on short lists (placed against
  the window now); focus in the ⋯ button, a menu item or a heading control
  was dropped when rows reordered; Forget offers Undo; bulk flows toast one
  line instead of one per row; a pinned row wears its pin; section names,
  aria-pressed, Korean register, the chip-danger style that had no CSS.
- qa/multi-close.mjs drives the mode end to end (24 checks).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LdbKDr2tTfCLAZv7WbV8kX
writingdeveloper added a commit that referenced this pull request Oct 28, 2026
…e question for the set, and review fixes (#70)

The sidebar could already close a hand-picked set of sessions, but only
after a Ctrl+click nothing on screen mentioned, so decks were closed one
row at a time.

- A Select button above the session groups (and "Select…" in every row's
  ⋯ menu) turns on a selection mode: checkboxes on rows, a plain click
  picks instead of opening, the box on a group heading picks the whole
  group (opened in full first), Shift+click ranges, Select all opens every
  group; Close / Done / Esc / Delete. Ctrl+click and Shift+click still work.
  The selection is a pure model in src/shared/sessionSelection.ts.
- Local, remote, background and saved rows close after one question that
  says what is where ("2 on this PC · 3 on 4080 · 1 background · 4 saved").
  Tiles go in one batch and the pane settles once; remote refusals are one
  line; background sessions close machines side by side with one progress
  line and one summary. A tile attached to a Claude background session can
  end the session too (checkbox, on by default). One picked row asks that
  row's own question.
- The Background listing looks at ~/.claude/jobs first: no records means
  no claude process at all, unchanged records reuse the last answer for up
  to five minutes.
- From a review of the sidebar and close flows: the confirmation could be
  answered by an Enter aimed at the quick-open field (chords no longer
  leave it, auto-repeat is ignored, one question at a time, focus goes back
  after Cancel); a row's ⋯ menu was clipped on short lists (placed against
  the window now); focus in the ⋯ button, a menu item or a heading control
  was dropped when rows reordered; Forget offers Undo; bulk flows toast one
  line instead of one per row; a pinned row wears its pin; section names,
  aria-pressed, Korean register, the chip-danger style that had no CSS.
- qa/multi-close.mjs drives the mode end to end (24 checks).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LdbKDr2tTfCLAZv7WbV8kX
@writingdeveloper

Copy link
Copy Markdown
Owner Author

Squash-merged to main as 3add191 and tagged v1.49.0; the Release workflow builds the 3-OS assets from the tag.

@writingdeveloper
writingdeveloper deleted the feat/multi-close-and-select branch October 28, 2026 02:39
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.

1 participant