Skip to content

feat: open a location's lots in bulk mode from its removal refusal (#187) - #280

Merged
plainprogrammer merged 17 commits into
mainfrom
059-bulk-mode-from-location-refusal
Nov 10, 2026
Merged

plainprogrammer merged 17 commits into
mainfrom
059-bulk-mode-from-location-refusal

Conversation

@plainprogrammer

Copy link
Copy Markdown
Owner

Closes #187 (roadmap item 14c). Spec 059, approved by the maintainer at Gates A and B.

What changes

A location that still holds lots refuses its removal. The refusal page now has a primary button, Move them in bulk mode, first in its actions row. It is a POST (POST /locations/:location_id/selection, Locations::SelectionsController#create), never a link (spec 006 FR-1). It opens bulk mode filtered to that location (/collection?bulk=1&location=<id>) with every matching lot selected, so Move to… is one press away. Another account's location answers 404. BulkSelection#restart! gains all: so the selection is written in its one transaction.

The button is on both GET /locations/:id/removal/new and the 409 page of a refused DELETE; not on an empty location's confirmation page or the list.

Supersedes

Spec 041 decision 5, spec 006 FR-4 and Story 4's "Edit many as the only way in", spec 032 AC-5.2 and AC-5.4 (recorded in the index and the area doc, specs untouched).

Screenshots (refusal page of "Blue binder", 12 copies in 3 lots)

Before / after, in docs/specs/059-bulk-mode-from-location-refusal/screenshots/: before-refusal-{desktop,phone}-{light,dark}.jpg, after-refusal-…, and after-bulk-table-… (the page the button opens).

light dark
before, desktop
after, desktop
before, phone (360px)
after, phone (360px)
bulk table, desktop
bulk table, phone

Verification

  • Pre-push hook ran the full bin/ci on db96a5e4 and passed; the suite counts 3064 examples. Targeted run before it: 2130 examples, 0 failures.
  • Implementation review (read-only Opus): SPEC-ALIGNED WITH FINDINGS, 0 blocking, 1 major (closed by the full run), 6 minors (5 taken); recorded in verification.md. Spec and plan each had two Opus review rounds.
  • Worth a look: tab_to moved to spec/support/keyboard_helpers.rb as tab_to_text and no longer matches the focused <body>, so the existing "Back to locations" keyboard check in locations_spec.rb now really tabs.
  • "Bulk mode" is a new term in the UI copy (the label is the maintainer's ruling).

🤖 Generated with Claude Code

plainprogrammer and others added 17 commits November 10, 2026 07:17
Spec 059 (approved at Gate A) and its plan, plus the index row and the
supersession marks on specs 006, 032 and 041.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Blue binder holding 12 copies in 3 lots, light and dark, at 1280px and in a
360px frame. Factory data, placeholder printings.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model, request and system examples for spec 059, the refusal page's
locations_spec example changed to hold the shortcut, and tab_to moved to
spec/support/keyboard_helpers.rb (the body no longer counts as focused).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…h every lot selected (#187)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
#187)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Distillation log row and the index row (Frozen, plan retirement owed).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… (spec 027 D4)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…tion log

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@plainprogrammer
plainprogrammer marked this pull request as ready for review November 10, 2026 14:15
@plainprogrammer plainprogrammer self-assigned this Nov 10, 2026
@plainprogrammer
plainprogrammer merged commit 611c57c into main Nov 10, 2026
9 checks passed
@plainprogrammer
plainprogrammer deleted the 059-bulk-mode-from-location-refusal branch November 10, 2026 14:21
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.

Open a location's lots in bulk mode from its refusal page

1 participant