The company picker gets the building picker's Select all / Deselect all

Staff now get the same footer on both pickers; "Every company" is drawn as every company ticked.

28 Sept 2026 · branch lane-sec-org-picker-select-all · captured against propflow-stage · at 372d0035be

Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · 1 · Before (origin/main): staff at Every company get one button, and nothing ticked

origin/main: staff at Every company see unticked rows and a single Every company button.

Why this is right

This is the staff view on origin/main, with the smoke account (platform staff) at Every company. The rows are drawn unticked, and the footer has a single Every company action where the building picker has Select all / Deselect all. That is the mismatch Gera asked to remove: like the prop dropdown component, when select all selects all … I want that same one for org. Like same UX.

Asserted in the captured DOM — Every company · Done

1 · Before (origin/main): staff at Every company get one button, and nothing ticked
Provenance. Captured from commit 62604dfcdd, read from the worktree the server was started from (/Users/miniclaw/code/PropFlow/propflowai/.claude-worktrees/lane-sec-orgbase) — the server could not report its own commit, so this is the weaker of the two sources. That commit is already merged into origin/main.

2 · 2 · After: Every company is every row ticked, with the building picker's footer

This branch: Every company is every row ticked, with the building picker's footer.

Why this is right

The same staff view on this branch. Every company is drawn the way the building picker draws its all-state: every company ticked. The footer now carries the building picker's actions. Select all is hidden because everything is already ticked, exactly as on the building picker, and Deselect all is offered. The footer names the state (Every company) the way the building picker's footer names its own (All Properties). This was added after critique round 1, where the footer read a bare count. No new wording.

Asserted in the captured DOM — Every company · Deselect all · Done

2 · After: Every company is every row ticked, with the building picker's footer

3 · 3 · After: from one company, both actions are there

From one company, the footer offers Select all and Deselect all.

Why this is right

With one company picked, the company picker's footer shows Select all and Deselect all, the same pair and placement as the building picker in section 5. Pressing Select all here ticks every company and commits the existing Every company state (org=*), never a list of every id, so the eight-company cap never applies. That is pinned by the unit suite, which checks the committed address.

Asserted in the captured DOM — Select all · Deselect all · Done · JPCO

3 · After: from one company, both actions are there

4 · 4 · After: Select all pressed, every company ticked before Done

After Select all: every company ticked, and the footer names Every company.

Why this is right

The same panel after Select all. Every company row is ticked, Select all disappears (all rows are ticked), and Deselect all remains. This is the building picker's behaviour row for row.

Asserted in the captured DOM — Deselect all · Done · Every company

4 · After: Select all pressed, every company ticked before Done

5 · 5 · The reference: the building picker, unchanged by this PR

The building picker, untouched, for comparison.

Why this is right

The top bar's building picker, which this PR does not touch, is shown for comparison with sections 2–4: checkbox rows, and a footer with Copy link · Deselect all · Done (and Select all when not every row is ticked). The two pickers now share one footer and one set of words. They still sit in different places, the company picker in the side-nav corner and the building picker in the top bar, and this PR deliberately does not move either.

Asserted in the captured DOM — Deselect all · Done · Copy link

5 · The reference: the building picker, unchanged by this PR

What changed, and what did not

What changed, what did not, and provenance

Changed: OrgScopeSwitcher no longer passes breadthLabel for staff. Every company is drawn with every row ticked, and Select all maps to that state, not to a capped list. Not changed: ScopePicker, the building picker, customers' pickers, and every label. Deselect all clears the view only and Done waits for a pick, as on the building picker.

Provenance. Captured against each worktree's own dev server bound to propflow-stage (anonymized by construction), signed in as the smoke account (platform staff). Section 1 comes from a dev server on origin/main; sections 2–5 from this branch.

PropFlow Docs