feat(launch-readiness-batch): UAT drains, navigation refactor, launch infra, trackers
Bundles the rest of the in-flight work from this UAT round into one
checkpoint. Each sub-area is independent; see the headings below.
UAT polish (drained 11 findings from active-uat.md):
- Dialog primitive default bumped sm:max-w-xl/lg:max-w-3xl →
sm:max-w-2xl/lg:max-w-4xl so multi-field forms + PDF previews
aren't cramped at 1440-1920px.
- Notes tab badge aggregation: new countFor{Client,Yacht,Company}
Aggregated helpers in notes.service mirror the listFor*Aggregated
symmetric-reach joins. yacht-tabs + company-tabs render the
badge; client-tabs already had badge support.
- Supplemental-info form polish bundle: BrandedAuthShell gains a
`width: 'sm' | 'md'` prop (md uses min-h-dvh scroll instead of
fixed inset-0 pin so long forms scroll naturally). Form picks up
port branding (logoUrl + backgroundUrl + appName) via
loadByToken. Address fields completed (street + city + region +
postal + country). Port name eyebrow + success-state copy added.
- new-document-menu Upload-file landing toast: per-file completion
emits toast.success with action link to the destination entity
or folder.
- interest-tabs OverviewTab "from client" pill on Email + Phone
rows via new EditableRow `inheritedFrom` prop.
- create-document-wizard subject picker → segmented button strip
(5 types visible at once).
Launch infra:
- UTM column wiring (Init 1b step 4): migration
0089_website_submissions_utm.sql adds utm_source/medium/campaign/
term/content + composite index (port_id, utm_source, received_at)
for per-campaign rollups. website-inquiries intake accepts the
five fields. Residential intake intentionally untouched per audit
scope.
- Invoicing module gate (Init 1c spike): new
invoices-module.service + invoices layout guard + registry entry
invoices_module_enabled (default false). Audit conclusion in
launch-readiness.md: payments table is canonical money path;
/invoices flow is parallel infrastructure now hidden by default.
Smart-back navigation refactor:
- Replaced breadcrumb component with history-aware Back button.
New route-labels.ts + use-smart-back hook +
navigation-history-tracker so back falls through to the parent
route when there's no prior page in history.
- Sidebar / topbar / mobile-topbar adopt the new pattern; old
breadcrumb-store kept for back-compat consumers but the
breadcrumbs component is gone.
- 6 detail pages (admin/errors per-id + codes, invoices/
upload-receipts, reports kind, tenancies detail, analytics
metric, client detail) migrated.
Trackers + docs:
- docs/launch-readiness.md — master pre-launch tracker. Includes
the reports gap audit (cross-cutting filter set, Marketing +
Financial blockers, custom builder remaining entities, scheduled
CSV/XLSX, template scope picker).
- docs/superpowers/audits/active-uat.md — 15 findings flipped
OPEN → SHIPPED locally with fix-applied notes; 4 OPEN remaining
(each blocked on user input or cross-repo).
- CLAUDE.md — minor session notes carried forward.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
29
CLAUDE.md
29
CLAUDE.md
@@ -57,7 +57,8 @@ Reach for these before grinding through tasks manually:
|
||||
- `Explore` for any codebase search that would take > 3 queries
|
||||
- `feature-dev:code-explorer` / `code-architect` / `code-reviewer` for new feature work
|
||||
- **Doctrine**: skills override default behavior except user instructions in this file. If a CLAUDE.md rule conflicts with a skill, this file wins.
|
||||
- **Manual UAT — currently active doc**: `docs/superpowers/audits/active-uat.md` is the **live** findings doc. Every UAT finding the user surfaces in chat lands here regardless of which session captures it. Persists across sessions until the user explicitly says to wrap the round and archive — at which point rename to `YYYY-MM-DD-uat.md` and start a fresh `active-uat.md`. Buckets: Quick fixes (<15min), Medium (15min–2h), Features/larger (>2h), Bugs (severity-tagged). Tag every entry with status: `OPEN | IN PROGRESS | SHIPPED in <hash> | QUEUED | BLOCKED`. Don't ask the format each time. Historical: `alpha-uat-master.md` was the previous master through 2026-05-26 drain.
|
||||
- **Pre-launch tracker**: `docs/launch-readiness.md` is the master pre-launch tracker for the beta phase. Append every launch-blocking initiative or sub-task there with status tags (`OPEN | IN PROGRESS | SHIPPED in <hash> | BLOCKED | DEFERRED`). Read it at the start of any non-trivial task.
|
||||
- **Manual UAT — currently active doc**: `docs/superpowers/audits/active-uat.md` is the **live** findings doc. Every UAT finding the user surfaces in chat lands here regardless of which session captures it. Persists across sessions until the user explicitly says to wrap the round and archive — at which point rename to `YYYY-MM-DD-uat.md` and start a fresh `active-uat.md`. Buckets: Quick fixes (<15min), Medium (15min–2h), Features/larger (>2h), Bugs (severity-tagged). Tag every entry with status: `OPEN | IN PROGRESS | SHIPPED in <hash> | QUEUED | BLOCKED`. Don't ask the format each time.
|
||||
|
||||
## Tech stack (non-obvious choices)
|
||||
|
||||
@@ -209,10 +210,30 @@ Vitest covers unit + integration with mocked externals (`tests/unit/`, `tests/in
|
||||
|
||||
Numbered specs (`01-CONSOLIDATED-SYSTEM-SPEC.md` … `15-DESIGN-TOKENS.md`) in repo root carry the detailed architecture decisions, schema docs, API catalog, and sequence.
|
||||
|
||||
Active plans of record under `docs/`:
|
||||
### Beta-phase tracker (read this first)
|
||||
|
||||
We are in pre-launch beta. **`docs/launch-readiness.md` is the canonical
|
||||
home for every outstanding initiative we need to ship before
|
||||
production cutover.** Read it at the start of any non-trivial task to
|
||||
see what's in flight, what's blocked, and what's been deferred. Append
|
||||
new launch-blocking items there (status tags: `OPEN | IN PROGRESS |
|
||||
SHIPPED in <hash> | BLOCKED | DEFERRED`) — do NOT create a new
|
||||
parallel audit doc. Companion files:
|
||||
|
||||
- `docs/launch-readiness.md` — the master pre-launch tracker (5+
|
||||
initiatives: reports overhaul, marketing pipeline cutover, invoicing
|
||||
audit, codebase + security audit, website integration, e2e testing,
|
||||
data migration)
|
||||
- `docs/reports-content-spec.md` — working spec for the reports
|
||||
initiative (per-category KPIs / charts / tables); referenced by
|
||||
`launch-readiness.md` Initiative 1
|
||||
- `docs/superpowers/audits/active-uat.md` — live UAT findings the user
|
||||
surfaces in chat; persists across sessions until explicit wrap
|
||||
- `docs/BACKLOG.md` — long-tail backlog index (post-launch and
|
||||
general)
|
||||
|
||||
### Domain reference docs
|
||||
|
||||
- `docs/MASTER-PLAN-2026-05-18.md` — current 7-phase post-audit plan
|
||||
- `docs/BACKLOG.md` — single entry point for everything outstanding
|
||||
- `docs/berth-recommender-and-pdf-plan.md` — berths + PDF + send-outs bundle
|
||||
- `docs/eoi-documenso-field-mapping.md` — canonical EoiContext ↔ Documenso/AcroForm mapping
|
||||
- `docs/documenso-integration-audit.md` — full Documenso v1/v2 quirks reference
|
||||
|
||||
Reference in New Issue
Block a user