Settings polish: Overview spacer, onboarding ghosts, Onboarding reason

Before (main) and after, TEST company only. The onboarding route ghost (mid-load) could not be photographed on a dev server: the page gates resolve before a frame can be taken. Its variant is pinned by the PageBody guard test instead.

3 Oct 2026 · branch settings-polish · captured against propflow-stage · at 7a58657beb1

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 · Overview, BEFORE (main)

On main, Overview has no header row, so its body starts 16px under the top bar, higher than every other settings page.

Overview before
Provenance. Captured from commit 0408da243c1, read from the worktree the server was started from (/Users/miniclaw/code/PropFlow/pf-settings-before) — 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.
Sections 2–5

2 · Overview, AFTER

An empty box the header row's exact size (data-settings-header-spacer) keeps Overview's body level with every settings page, so Overview to General moves nothing.

Overview after
⚠ Provenance. Captured from commit 7a58657beb1, read from the worktree the server was started from (/Users/miniclaw/code/PropFlow/pf-settings-polish) — the server could not report its own commit, so this is the weaker of the two sources. ⚠ That is the same commit as the rest of this artifact was captured from. If this section is labelled a BEFORE, it is not one — it is the same code as the after.

3 · A normal page (General), AFTER, for the level

General with its header row: its body starts at the same height as Overview's above.

General after
⚠ Provenance. Captured from commit 7a58657beb1, read from the worktree the server was started from (/Users/miniclaw/code/PropFlow/pf-settings-polish) — the server could not report its own commit, so this is the weaker of the two sources. ⚠ That is the same commit as the rest of this artifact was captured from. If this section is labelled a BEFORE, it is not one — it is the same code as the after.

4 · Onboarding section, BEFORE (main): the greyed tab's reason

On main the hover reads "This page covers every property at once. Where an answer can differ by property, the question itself says so." Review on #15875 found that untrue on some module pages.

Cropped to the header: the question rows below list buildings, which this page does not need to show.

Asserted in the captured DOM — This page covers every property at once

Onboarding reason before
Provenance. Captured from commit 0408da243c1, read from the worktree the server was started from (/Users/miniclaw/code/PropFlow/pf-settings-before) — 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.

5 · Onboarding section, AFTER: the greyed tab's reason

The greyed Property tab now says This page has no separate Property view. (hover), true on every Onboarding module page.

Cropped to the header: the question rows below list buildings, which this page does not need to show.

Asserted in the captured DOM — This page has no separate Property view.

Onboarding loaded with reason
⚠ Provenance. Captured from commit 7a58657beb1, read from the worktree the server was started from (/Users/miniclaw/code/PropFlow/pf-settings-polish) — the server could not report its own commit, so this is the weaker of the two sources. ⚠ That is the same commit as the rest of this artifact was captured from. If this section is labelled a BEFORE, it is not one — it is the same code as the after.
PropFlow Docs