This website requires JavaScript.
8699f81879
chore(style): codebase em-dash sweep + minor layout polish
main
Matt Ciaccio
2026-05-04 22:57:01 +02:00
d62822c284
fix(migration): NocoDB import safety + dedup helpers + lead-source backfill
Matt Ciaccio
2026-05-04 22:56:18 +02:00
089f4a67a4
feat(receipts): upload guide page + scanner head-tag fix
Matt Ciaccio
2026-05-04 22:55:42 +02:00
77ad10ced1
feat(dashboard): custom date range + KPI port-hydration gate
Matt Ciaccio
2026-05-04 22:54:55 +02:00
e598cc0708
feat(layout): unified Inbox + UserMenu extraction
Matt Ciaccio
2026-05-04 22:54:06 +02:00
f5772ce318
feat(analytics): Umami integration with per-port admin settings
Matt Ciaccio
2026-05-04 22:53:06 +02:00
49d34e00c8
feat(website-intake): dual-write endpoint + migration chain repair
Matt Ciaccio
2026-05-04 22:52:33 +02:00
c612bbdfd9
fix(migration): legacy bare-mooring lookup + port-nimara berth backfill
Matt Ciaccio
2026-05-03 21:05:11 +02:00
872c75f1a1
fix(safety): plug 3 EMAIL_REDIRECT_TO leaks + 10 unit tests + live smoke
Matt Ciaccio
2026-05-03 20:55:53 +02:00
c45aac551d
feat(dedup): wire --apply path for NocoDB migration
Matt Ciaccio
2026-05-03 19:53:04 +02:00
9ad1df85d2
fix(residential): mobile card list alongside the desktop table
Matt Ciaccio
2026-05-03 17:24:58 +02:00
8e4d2fc5b4
feat(safety): EMAIL_REDIRECT_TO now also pauses Documenso + webhooks
Matt Ciaccio
2026-05-03 17:24:41 +02:00
78f2f46d41
fix(admin): stack settings rows vertically on phone widths
Matt Ciaccio
2026-05-03 17:24:20 +02:00
3a9419fe10
chore(scripts): backfill client_contacts.value_e164 from value
Matt Ciaccio
2026-05-03 17:24:08 +02:00
b703684285
fix(ux): pass-3 — yacht/company headers, reminder filters wrap, client tab counts
Matt Ciaccio
2026-05-03 17:09:27 +02:00
a792d9a182
fix(ux): pass-2 audit fixes — admin grouping, Duplicates entry, header tooltips
Matt Ciaccio
2026-05-03 16:35:32 +02:00
d7ec2a8507
Merge docs/dedup-migration-design: client dedup + NocoDB migration design doc
Matt Ciaccio
2026-05-03 16:24:30 +02:00
cb83b09b2d
Merge feat/dedup-migration: client dedup library + NocoDB migration script + admin queue
Matt Ciaccio
2026-05-03 16:24:13 +02:00
7574c3b575
chore(migrations): renumber 0020/0021 -> 0021/0022 to avoid clash with berth-parity
feat/dedup-migration
Matt Ciaccio
2026-05-03 16:22:58 +02:00
bb105f5365
Merge feat/mobile-ux-polish: berth/header/tab/contacts mobile fixes
Matt Ciaccio
2026-05-03 16:20:12 +02:00
caafae15dd
Merge feat/berth-schema-parity: NocoDB field parity, 117-berth seed, ports pruned to Port Nimara + Amador
Matt Ciaccio
2026-05-03 16:18:43 +02:00
46c7389930
Merge feat/mobile-foundation: 212 commits of mobile foundation, sales UX, audit fixes
Matt Ciaccio
2026-05-03 16:18:10 +02:00
80fc5932be
chore: ignore tooling caches, scratch screenshots, sister website project
feat/mobile-foundation
Matt Ciaccio
2026-05-03 16:17:13 +02:00
b26b87b2fa
chore(dev): react-grab viewport sync helper for in-page debug toolbar
Matt Ciaccio
2026-05-03 16:15:47 +02:00
88f76b6b04
feat(mobile): rework bottom nav (Dashboard/Berths/Clients/Documents/More)
Matt Ciaccio
2026-05-03 16:15:37 +02:00
a32f41b91d
fix(dashboard): scope h-full to xl + tighter mobile sizing on KPIs
Matt Ciaccio
2026-05-03 16:15:20 +02:00
cf1c8b66db
feat(client): phone-edit row dilation + mobile contacts layout
Matt Ciaccio
2026-05-03 16:15:07 +02:00
596476280d
feat(ui): inline-edit dropdowns auto-open + auto-exit on dismiss
Matt Ciaccio
2026-05-03 16:14:51 +02:00
e9359fc431
feat(client): interests tab + pipeline summary panel + list-row counts
Matt Ciaccio
2026-05-03 16:14:37 +02:00
4767caec01
feat(client): redesign detail header with action chips + condensed meta
Matt Ciaccio
2026-05-03 16:14:19 +02:00
49d92234dd
fix(test): align stage names with consolidated pipeline enum
Matt Ciaccio
2026-05-03 16:14:04 +02:00
cad55e3565
fix(mobile): clipping, dropdown-tabs and stale phone metadata
feat/mobile-ux-polish
Matt Ciaccio
2026-05-03 16:03:56 +02:00
21868ee5fc
feat(berths,seed): polish detail display + prune ports to Port Nimara + Amador
feat/berth-schema-parity
Matt Ciaccio
2026-05-03 15:59:36 +02:00
c7ab816c99
feat(seed): replace 12 hand-rolled berths with 117-row NocoDB snapshot
Matt Ciaccio
2026-05-03 15:41:12 +02:00
e40b6c3d99
feat(berths): full NocoDB field parity, numeric types, sales edit access
Matt Ciaccio
2026-05-03 15:30:32 +02:00
4bcc7f8be6
feat(dedup): runtime surfaces — merge service, at-create suggestion, admin queue (P2)
Matt Ciaccio
2026-05-03 14:59:04 +02:00
18e5c124b0
feat(dedup): NocoDB migration script + tables (P3 dry-run)
Matt Ciaccio
2026-05-03 14:50:01 +02:00
8b077e1999
feat(dedup): normalization + match-finding library (P1)
Matt Ciaccio
2026-05-03 14:28:59 +02:00
36b92eb827
docs(spec): client deduplication and NocoDB migration design
docs/dedup-migration-design
Matt Ciaccio
2026-05-03 14:10:08 +02:00
e2398099c4
test(audit-fixes): cover the new permission and webhook surfaces
Matt Ciaccio
2026-05-02 23:17:08 +02:00
d364b09885
fix(realtime): keep socket through reconnects, stop re-subscribe storm
Matt Ciaccio
2026-05-02 23:11:52 +02:00
57a099acc4
fix(ui): humanize enum labels, format dates, resolve actor names, loading skeleton
Matt Ciaccio
2026-05-02 23:01:35 +02:00
a391934b73
feat(marina): end-reservation UI + global list, yacht tabs, dashboard distinct count
Matt Ciaccio
2026-05-02 23:01:15 +02:00
e3e0e69c04
fix(documenso): expired event, real signer emails, query invalidation, double-fire
Matt Ciaccio
2026-05-02 23:00:58 +02:00
6af2ac9680
fix(auth): harden admin gate, X-Port-Id, portal JWT, saved-views
Matt Ciaccio
2026-05-02 23:00:42 +02:00
a767652d74
feat(sales-ux): triage signals, reminders, realtime toasts, mobile FAB
Matt Ciaccio
2026-05-02 04:09:51 +02:00
c824b2df12
feat(interests): Email / Call / WhatsApp deep-links on interest header
Matt Ciaccio
2026-05-02 03:33:13 +02:00
d197f8b321
feat(eoi): align prerequisites with EOI document structure
Matt Ciaccio
2026-05-02 03:11:14 +02:00
76a7387dcc
fix(ux): batch UX audit fixes across spine pages
Matt Ciaccio
2026-05-02 01:24:15 +02:00
868b1f40c0
fix(nav): drop dedicated EOI route + alerts sidebar entry, fix paginated-URL bug
Matt Ciaccio
2026-05-02 00:30:27 +02:00
dbbd03fd22
feat(sales): admin-configurable EOI signers + richer timeline events
Matt Ciaccio
2026-05-02 00:19:55 +02:00
ba5fb6db5e
feat(sales): EOI queue route + invoice→deposit auto-advance + won/lost outcomes
Matt Ciaccio
2026-05-02 00:01:33 +02:00
886119cbde
refactor(sales): consolidate pipeline stages + wire EOI auto-advance
Matt Ciaccio
2026-05-01 23:33:53 +02:00
0d357731ad
chore(dev): install and wire react-grab
Matt Ciaccio
2026-05-01 16:37:40 +02:00
a75d4f5d69
feat(mobile): redesign topbar + collapse cumbersome page-header on mobile
Matt Ciaccio
2026-05-01 16:34:28 +02:00
0fb7920db5
fix(auth/mobile): support LAN-IP access in dev + edge-to-edge auth bg
Matt Ciaccio
2026-05-01 16:21:59 +02:00
16ad61ce15
fix(mobile): hide duplicate detail-header title on mobile
Matt Ciaccio
2026-05-01 16:09:32 +02:00
d080bc52fa
feat(mobile): touch up new-invoice + scan-receipt forms
Matt Ciaccio
2026-05-01 16:06:09 +02:00
a653c8e039
fix(mobile): wrap detail-header actions on narrow viewports
Matt Ciaccio
2026-05-01 15:48:51 +02:00
7e8110b2ff
feat(mobile): show entity name in mobile topbar on detail pages
Matt Ciaccio
2026-05-01 15:46:32 +02:00
9eadaf035e
fix(mobile): widen ListCard href type to Route
Matt Ciaccio
2026-05-01 15:40:52 +02:00
bcea28cd71
feat(mobile): mobile cards for reminders, audit log, users
Matt Ciaccio
2026-05-01 15:39:06 +02:00
722491a9dd
feat(mobile): mobile cards for yachts, companies, berths, invoices, expenses
Matt Ciaccio
2026-05-01 15:34:04 +02:00
6009ccb7de
feat(mobile): mobile card view for clients + interests lists
Matt Ciaccio
2026-05-01 15:27:53 +02:00
71da6e8fdc
feat(mobile): swap admin page headers to PageHeader
Matt Ciaccio
2026-05-01 12:57:52 +02:00
c405124bc3
feat(mobile): swap reports header to PageHeader
Matt Ciaccio
2026-05-01 12:55:11 +02:00
53cbee1d3d
fix(mobile): tighten Card padding on mobile (p-4 sm:p-6)
Matt Ciaccio
2026-05-01 12:55:09 +02:00
ac7f1db62c
fix(mobile): add horizontal padding to mobile shell main
Matt Ciaccio
2026-05-01 12:45:20 +02:00
5d44f3cfa4
fix(test): raise mobile-audit timeout to 30min for 4-viewport runs
Matt Ciaccio
2026-04-29 15:15:26 +02:00
d0540dca55
fix(build): extract route.ts handlers to handlers.ts (CLAUDE.md convention)
Matt Ciaccio
2026-04-29 15:14:40 +02:00
0e9c24e222
test(visual): add mobile shell snapshot baselines (dashboard + more sheet)
Matt Ciaccio
2026-04-29 14:47:26 +02:00
3aba2181dc
feat(test): extract anchor iPhone device descriptors to shared fixture
Matt Ciaccio
2026-04-29 14:31:51 +02:00
6237ad1567
feat(mobile): add FilterChips primitive (horizontal chip row with Add-filter trigger)
Matt Ciaccio
2026-04-29 14:28:33 +02:00
34916d855e
feat(mobile): add DataView (TanStack table on lg+, card list below) with cardRender callback
Matt Ciaccio
2026-04-29 14:27:17 +02:00
41ae8a328f
feat(mobile): add DetailPageShell with sticky header + mobile sticky-action shelf
Matt Ciaccio
2026-04-29 14:25:45 +02:00
1ff3160eac
feat(mobile): add ActionRow with horizontal-scroll-snap on mobile, wrap on desktop
Matt Ciaccio
2026-04-29 14:24:43 +02:00
5698d742d3
feat(mobile): make PageHeader mobile-aware (stack below sm, hide description when actions present)
Matt Ciaccio
2026-04-29 14:23:40 +02:00
e6ce265be0
fix(mobile): drop positive display rule that overrode desktop shell's flex layout
Matt Ciaccio
2026-04-29 14:20:11 +02:00
19bc2f2a54
feat(mobile): mount MobileLayout alongside desktop shell, remove legacy sidebar mobile-drawer
Matt Ciaccio
2026-04-29 14:18:28 +02:00
b0a11f1785
feat(mobile): add MobileLayout shell composing topbar + content + bottom tabs + more sheet
Matt Ciaccio
2026-04-29 14:16:30 +02:00
3cbf2444fe
feat(mobile): add MoreSheet (3-column grid of long-tail nav items in a bottom drawer)
Matt Ciaccio
2026-04-29 14:15:25 +02:00
0330be1312
feat(mobile): add Drawer (vaul wrapper) for native-feel bottom sheets
Matt Ciaccio
2026-04-29 14:14:18 +02:00
210360738d
feat(mobile): add MobileBottomTabs with 5 fixed tabs (Dashboard/Clients/Yachts/Berths/More)
Matt Ciaccio
2026-04-29 14:13:09 +02:00
4df04e1a58
feat(mobile): add MobileTopbar with title, back-button, and primary-action slots
Matt Ciaccio
2026-04-29 14:12:15 +02:00
0c3baf04c5
feat(mobile): add MobileLayoutProvider context + useMobileChrome hook
Matt Ciaccio
2026-04-29 14:11:27 +02:00
79667b24da
chore(pwa): add placeholder icons (icon-192/512/512-maskable, apple-touch-icon)
Matt Ciaccio
2026-04-29 14:10:14 +02:00
c4fdb29bbe
feat(mobile): render Dialog full-screen below sm, centered modal at sm+
Matt Ciaccio
2026-04-29 14:08:14 +02:00
38527d71fc
feat(mobile): bump touch-target heights on Button/Input/Textarea, keep 16px to prevent iOS zoom
Matt Ciaccio
2026-04-29 14:06:59 +02:00
3fbfba6598
chore(deps): add vaul for native-feel bottom sheets
Matt Ciaccio
2026-04-29 14:05:10 +02:00
e3a835675b
feat(mobile): add useIsMobile() hook backed by matchMedia (visual-test-only)
Matt Ciaccio
2026-04-29 14:04:02 +02:00
1b085f81ed
feat(mobile): add CSS rules to switch shells based on data-form-factor + viewport
Matt Ciaccio
2026-04-29 14:00:49 +02:00
9f786fbcf3
feat(mobile): set data-form-factor body attr from User-Agent in root layout
Matt Ciaccio
2026-04-29 13:59:03 +02:00
906127a292
feat(mobile): add safe-area spacing utilities (pt-safe-top, pb-safe-bottom, etc.)
Matt Ciaccio
2026-04-29 13:56:53 +02:00
737b43589b
feat(mobile): add viewport meta, theme-color, and PWA metadata to root layout
Matt Ciaccio
2026-04-29 13:55:37 +02:00
fbb1f1f366
scaffold(mobile): branch setup — audit harness, spec, plan, gitignore + client-portal cleanup
Matt Ciaccio
2026-04-29 13:49:38 +02:00
ba89b61b3f
fix(security): port-scope clientId/berthId/yachtId on interests + clientRelationships
refactor/data-model
Matt Ciaccio
2026-04-29 04:14:09 +02:00
4eea19a85b
sec: lock down 5 cross-tenant FK gaps from fifth-pass review
Matt Ciaccio
2026-04-29 03:28:31 +02:00
47a1a51832
sec: webhook SSRF guard, IMAP-sync owner check, watcher port membership
Matt Ciaccio
2026-04-29 03:15:39 +02:00
9a5479c2c7
sec: lock down socket.io room subscription + crm-invite cross-tenant ops
Matt Ciaccio
2026-04-29 03:00:55 +02:00
e06fb9545b
sec: lock down 5 cross-tenant IDORs uncovered in second-pass review
Matt Ciaccio
2026-04-29 02:48:43 +02:00