Feat/design system v2 - #2
Merged
Merged
Conversation
- Owner-only Users tab (/admin/users): list staff accounts, suspend/ reactivate, delete, grant/revoke operator roles. Self and owner protected. - MARKETER role: AppRole enum value (migration 0048), demo login, guards, role-filtered nav, marketer "My Dashboard" with assigned leads/ inspections and click-to-chat. Granting Marketer auto-provisions a StaffProfile. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ime, payments hardening
Security
- Enforce nonce-based CSP ('strict-dynamic', no unsafe-eval in prod) via
proxy; hash-pinned theme bootstrap; ESTATEOS_CSP_REPORT_ONLY escape hatch.
- Paystack webhook idempotency: unique WebhookEvent index (migration 0049),
atomic in-transaction dedup, first-success gating so duplicate success
events can never double-decrement balances; never downgrade SUCCESS.
UI system
- Grouped collapsible sidebar nav (admin clusters + buyer portal groups),
shared between desktop sidebar and mobile drawer.
- New primitives: Dialog (portal, focus trap), Select (styled native),
Tabs, DropdownMenu, DataTable (TanStack: sort/search/pagination).
- 9 screens on DataTable (payments, invoices x2, contracts x2, marketers,
audit logs, documents, transactions); all 33 raw <select> files migrated;
bespoke modals unified on Dialog.
Buyer experience
- System-aware dark mode (prefers-color-scheme + live OS sync).
- PWA: manifest, icons, apple-web-app metadata, themed browser chrome.
- Mobile bottom tab bar (Home/Saved/Messages/Payments/Alerts with badges).
- R2 property media through next/image (AVIF/WebP, remotePatterns + CSP
media-host allowlist).
Infrastructure
- Conditional-polling realtime: Redis change counters bumped on publish,
/api/realtime/version endpoint, version-aware LiveSurfaceSync (15s poll,
refresh only on change, graceful fallback to blind polling).
- GitHub Actions CI (test/typecheck/lint/build); fix test glob quoting so
the full suite runs on Linux.
- Dashboard shell query batching (5 sequential rounds -> 3).
- MARKETER label added to team-invitation email ROLE_LABELS.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.