docs: HANDOFF reflects UX Tier 1 (minus S3) being deployed this push
This commit is contained in:
+8
-6
@@ -4,9 +4,9 @@ Append-only. Newest entries on top. Keep each entry to one screen.
|
||||
|
||||
---
|
||||
|
||||
## 2026-05-15 (pass 17) — UX polish (Tiers 1-3) + production incident-RLS report
|
||||
## 2026-05-15/16 (pass 17) — UX polish Tier 1 (minus S3) + incident-RLS hotfix, both DEPLOYED
|
||||
|
||||
Branch: `main`. `origin/main` = `1340b4c` (incident hotfix, DEPLOYED). 5 local commits ahead (UX polish + docs), unpushed. Safety branch `ux-polish-wip` = old stack tip.
|
||||
Branch: `main`, clean. `origin/main` advanced `4c9b551` -> `1340b4c` (incident hotfix) -> `b8bb213` (UX Tier 1 minus S3 + docs), all deployed via GitHub Actions. Migrations applied through `025`. `pnpm build` clean, `pnpm exec vitest run` 271/271. Safety branch `ux-polish-wip` = pre-restructure stack (deletable once trust established).
|
||||
|
||||
### Production incident-filing RLS report (resolved as far as possible blind)
|
||||
|
||||
@@ -17,11 +17,13 @@ User screenshot: a basic active member filing an incident at `/incidents/new` (a
|
||||
- **DEPLOYED** as a minimal hotfix off `origin/main` (commit `1340b4c`, GitHub Actions run 25953569904 success, 1m0s; deploy.sh ran the idempotent migration runner so `025` applied): `scripts/025` re-asserts the hardened `incidents_insert` verbatim (access-neutral; fixes cause #2 only); `fileIncident` maps an RLS rejection to an actionable message and logs detail server-side. `scripts/schema.sql` already matched (no change).
|
||||
- **Still needs user verification:** retry filing an incident on prod. If it still fails, cause #2 is excluded; run the SQL below to confirm #1 vs #3.
|
||||
|
||||
### UX polish (Tiers 1-3; local only, NOT deployed)
|
||||
### UX polish — Tier 1 minus S3 DEPLOYED
|
||||
|
||||
- Full UI/UX audit done (5 partitioned agents, code-level; no live browser). User chose: implement Tiers 1-3, pause before 4-5; sidebar nav stays as-is (no role-filtering); comments get one-level nesting + edit (Tier 5, deferred).
|
||||
- Local commits (build+test green 271/271 each): (1) `3360f54` accessible sidebar/drawer + distinct Ops icon + skip link + BrandMark; (2) `92ba6fb` shared `PageTitle`/`SectionTitle` across 21 files; (3) `f885ac7` shared `Empty` across ~18 empty states (projects gains one); (4) `1db9434` shared accessible `confirm()` (ConfirmProvider/useConfirm) replacing all 13 `window.confirm`; (5) `075b274` S6 unlayered `:focus-visible` ring + S5 >=44px tap targets at named hotspots + S8 28 form-field id/htmlFor + search aria-labels + S7 claim/complete/delete/link handlers now toast `result.error`. Plus preexisting `fa71d9a` (HANDOFF doc, not this session's) and doc commits `64d7d62`/`ea49e21`.
|
||||
- **Tier 1 remaining = S3 only:** convert hand-rolled modals to the existing Radix `components/ui/dialog.tsx` (focus trap/ESC/aria for free). Targets: `ops/ops-client.tsx` (4: KbModal, AddSecretModal, AreaLeadModal, KB-view), `members/tasks/projects/payments/contacts-client.tsx` (1 add/edit modal each), `settings/settings-client.tsx` (integration-credentials modal ~569-660). Each is a `fixed inset-0` div with local open-state; swap to `<Dialog open onOpenChange>` + `DialogContent`, keep the form/handlers. Do modal-by-modal with a gate per group. **Tier 2** (founder first-run guided dashboard when space empty; onboarding Skills controlled value + required-ack hint) and **Tier 3** (secrets copy + auto re-hide + clear-on-unmount; permissions matrix read-only notice + per-checkbox aria-label; OpsAclEditor `aria-pressed`/check/toast) not started; Tier 3 is presentational-only inside the RLS guardrail. None of the UX commits are pushed; deploy decision pending. `ux-polish-wip` branch backs up the pre-restructure stack and can be deleted once trust is established.
|
||||
- Full UI/UX audit done (5 partitioned agents, code-level; no live browser). User chose: implement Tiers 1-3, pause before 4-5; sidebar nav stays as-is (no role-filtering); comments get one-level nesting + edit (Tier 5, deferred). Findings report grouped Tier 1 systemic / 2 first-run / 3 security-adjacent / 4 brand / 5 per-surface.
|
||||
- Deployed commits (each was build+test green): `3360f54` sidebar/drawer a11y + distinct Ops icon + skip link + BrandMark; `92ba6fb` shared `PageTitle`/`SectionTitle` (21 files); `f885ac7` shared `Empty` (~18 states, projects gained one); `1db9434` shared accessible confirm (ConfirmProvider/useConfirm) replacing all 13 `window.confirm`; `075b274` `:focus-visible` ring (unlayered, in `app/globals.css`) + 44px tap targets at named hotspots + 28 form-field id/htmlFor + search aria-labels + claim/complete/delete/link handlers toast `result.error`. Plus preexisting `fa71d9a` (a prior HANDOFF doc, not this session) and doc commits.
|
||||
- **Not browser-verified (no live browser this session):** smoke-test on prod the two behavior-changing pieces — the shared confirm dialog on every destructive action (delete member/role/tier/area/invite/onboarding-step/secret/KB/comment/project/contact/thread) and the mobile drawer (open/ESC/scroll-lock/focus); also eyeball the global focus ring and the dense-row tap-target `-my-2` spacing.
|
||||
- **Tier 1 remaining = S3 only:** convert hand-rolled modals to the existing Radix `components/ui/dialog.tsx` (focus trap/ESC/aria for free). Targets: `ops/ops-client.tsx` (4: KbModal, AddSecretModal, AreaLeadModal, KB-view), `members/tasks/projects/payments/contacts-client.tsx` (1 add/edit modal each), `settings/settings-client.tsx` (integration-credentials modal ~569-660). Each is a `fixed inset-0` div with local open-state; swap to `<Dialog open onOpenChange>` + `DialogContent`, keep the form/handlers verbatim. Do modal-by-modal with a build+test gate per group.
|
||||
- **Tier 2** (founder first-run guided dashboard when the space is empty; onboarding Skills controlled value + required-ack hint) and **Tier 3** (secrets copy + auto re-hide + clear-on-unmount; permissions matrix read-only notice + per-checkbox aria-label; OpsAclEditor `aria-pressed`/check/toast) not started. Tier 3 is presentational-only and must stay inside the RLS guardrail (no change to reveal action, `user_has_permission`, `ops_acl`, self-change trigger).
|
||||
|
||||
### Pending decision / next step
|
||||
|
||||
|
||||
Reference in New Issue
Block a user