One Settings entry, four sub-navs

Admin / Property / Organization / Profile — and a Property page that asks for a building instead of guessing one

16 Sept 2026 · branch settings-subnav-p1 · captured against propflow-stage · at 17f770b2e8+local

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 · Organization Settings — /settings is the company, whatever the picker holds

Clicking Settings now opens a sub-rail — Admin / Property / Organization / Profile, in the order the board row names them. The section root is Organization Settings. Until this PR the same URL was Property Settings whenever a building was picked in the TopBar; the rail row you clicked and the page you landed on could disagree. (Admin shows here because a worktree dev server is non-production, where staff-only rows always render.)

Asserted in the captured DOMOrganization Settings · Property · Organization · Profile · Company Name · Follow-ups. The h1 names the level; the three customer-visible sub-rail rows are in the DOM; the company card and the follow-ups landmark are on the page.

Organization Settings — /settings is the company, whatever the picker holds
/settings: the Settings sub-rail with Organization active.

2 · Property Settings, no building picked — the one-target prompt

The unhappy path this PR invents. With All Properties in the picker, /settings/property asks rather than guesses: no first-member-of-the-list, no silent fall-through to the organization page — both were live behaviours of the shared URL. The picker it points at is right there in the top bar.

Asserted in the captured DOMProperty Settings · Pick a property · Choose one in the property picker. The level names itself; the prompt copy is rendered; no building name and no per-property card is on the page.

Property Settings, no building picked — the one-target prompt
/settings/property under All Properties: the prompt, not a building nobody chose.

3 · Property Settings with a building picked — the editor

Pick a building (the stage dataset lists them by address) and the same URL is that building's page — subtitled with its name, keyed by its id, the follow-ups card in edit mode. This is where a policy drawer's All policies → lands when it was opened with a property picked (round-1 finding 2).

Asserted in the captured DOMProperty Settings · 1009 Celeste Avenue · Outlook Calendar · Leasing & tours · Follow-ups. The subtitle carries the picked property; the per-property cards and the follow-ups landmark render.

Property Settings with a building picked — the editor
/settings/property with 1009 Celeste Avenue picked.

4 · Profile — /settings/account, one word in the rail, the h1 and the crumb

SETTINGS_SCOPE_TITLE.user is the one string the sub-rail row, the page h1 and the top-bar crumb all read, so the thing you click and the thing you land on say the same word: Profile.

Asserted in the captured DOMProfile · Time zone. The renamed level names itself in the h1; the personal time-zone row is on the page (the level's content is unchanged).

Profile — /settings/account, one word in the rail, the h1 and the crumb
/settings/account: Profile.

What did not change

No card's contents. No role-based edit restriction on Property or Organization. The company-wide PMS ignored-property roster is read by the Organization page only and never from the picker. Admin keeps its URL under /admin and its gate; its Settings row is staffOnly until p7-domain-override lands the three-named-admins predicate.

PropFlow Docs