Skip to content

History / Bulk Actions

Revisions

  • Bulk actions: analyst page + developer guide (#910) Bulk-Actions.md — the key map (mouse and keyboard), why plain click starts again, the anchor behaviour that lets a second Shift+click SHRINK a block, the three display modes, and the deliberate edges (desktop only, 100 per batch, subject not bulk-editable). Bulk-Actions-Developer-Guide.md — colour-keyed file table first, then the two decisions that matter: - three selection variables, not one: the anchor is separate so Shift can measure from the last PLAIN click, and the cursor is separate so Ctrl+arrow can move over rows that are not selected (which is what makes Space work). Also why .kb-focus is an outline and never a fill. - bulk writes LOOP TicketsService::updateTicket server-side rather than one UPDATE ... WHERE id IN (...), because changing a ticket is not a column write. The failure mode that buys: a workflow that fires for one ticket and silently not for fifty. Per-ticket access control and correct per-ticket audit fall out for free. Plus the n <= 1 choke point (a real shipped bug: the bar kept saying "5 selected" while one was held), why showToast can't carry progress, the inside/outside rule shared by right-click and drag, why the drag ghost uses real child elements rather than pseudo-elements, and how the whole thing was verified with real modifier-key MouseEvents in headless Chrome. Every file, function, variable, constant and CSS class named in the tables was checked to exist in the repo, and every internal link to resolve. Linked from the sidebar under Tickets and from Tickets.md.

    @edmozley edmozley committed Jul 21, 2026