Commit Graph

  • 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
  • 4c5334d471 sec: gate super-admin invite minting, OCR settings, and alert mutations Matt Ciaccio 2026-04-29 02:27:01 +02:00
  • 61e40b5e76 chore(ops): split /api/health (liveness) from /api/ready (readiness) Matt Ciaccio 2026-04-29 02:03:10 +02:00
  • 7f9d90ad05 fix(gdpr): cap export-bundle size at 50MB before upload Matt Ciaccio 2026-04-29 02:00:16 +02:00
  • 5d29bfc153 refactor(services): centralize AuditMeta + transactional setEntityTags helper Matt Ciaccio 2026-04-29 01:58:42 +02:00
  • 43f68ca093 chore(hardening): maintenance jobs, defense-in-depth, redis-backed public rate limit Matt Ciaccio 2026-04-29 01:52:41 +02:00
  • d9557edfc5 docs(spec): GWS inbox-triage exploratory design (not approved for build) Matt Ciaccio 2026-04-29 01:18:15 +02:00
  • 6eb0d3dc92 docs(ops): backup/restore + email deliverability runbooks Matt Ciaccio 2026-04-28 20:10:30 +02:00
  • a3305a94f3 feat(gdpr): staff-triggered client-data export bundle (Article 15) Matt Ciaccio 2026-04-28 20:06:31 +02:00
  • 9dfa04094b feat(rate-limit): per-user limiters for OCR, AI, and exports Matt Ciaccio 2026-04-28 19:56:01 +02:00
  • e7d23b254c feat(ai): per-port token budgets + usage ledger for AI features Matt Ciaccio 2026-04-28 19:53:09 +02:00
  • 2cf1bd9754 feat(ocr): Tesseract.js as default scanner, AI as opt-in per port Matt Ciaccio 2026-04-28 19:46:29 +02:00
  • 46937bbcb9 feat(addresses): full CRUD UI for client + company multi-address Matt Ciaccio 2026-04-28 19:38:43 +02:00
  • 27cdbcc695 chore(i18n): drop legacy free-text country/nationality columns Matt Ciaccio 2026-04-28 19:00:57 +02:00
  • 31fa3d08ec chore(cleanup): Phase 1 — gap closure across audit, alerts, soft-delete, perms Matt Ciaccio 2026-04-28 18:48:22 +02:00
  • 16d98d630e feat(i18n): country/phone/timezone/subdivision primitives + form wiring Matt Ciaccio 2026-04-28 18:13:08 +02:00
  • f52d21df83 feat(phase-b): ship analytics dashboard, alerts, scanner PWA, dedup, audit view Matt Ciaccio 2026-04-28 17:21:55 +02:00
  • 2fa70f4582 merge: PR3 — analytics snapshot service + refresh job (Phase B) Matt Ciaccio 2026-04-28 14:54:48 +02:00
  • 01b201e1a2 feat(analytics): real computations + 15-min snapshot refresh job Matt Ciaccio 2026-04-28 14:54:46 +02:00
  • 94f049c8b8 merge: PR2 — alert rules engine + cron + socket (Phase B) Matt Ciaccio 2026-04-28 14:50:57 +02:00
  • df495133b7 feat(alerts): rule engine, recurring evaluator, socket fanout Matt Ciaccio 2026-04-28 14:50:55 +02:00
  • 639025ebf9 merge: PR1 — Phase B schema + service skeletons (Phase B) Matt Ciaccio 2026-04-28 14:43:03 +02:00
  • e77d55ac50 feat(insights): Phase B schema + service skeletons Matt Ciaccio 2026-04-28 14:43:01 +02:00
  • f1ed2a5f87 docs(spec): Phase B — insights, alerts, and operational awareness Matt Ciaccio 2026-04-28 14:00:01 +02:00
  • 4036c16f39 test(infra): vitest globalSetup teardown purges test-port-* leaks Matt Ciaccio 2026-04-28 13:28:15 +02:00
  • 5f9bbb97bd fix(sidebar): replace floating circular collapse button with blended row Matt Ciaccio 2026-04-28 13:00:20 +02:00
  • 4911083d0f fix(visual): KPITile data-testid + restore residential interest casing Matt Ciaccio 2026-04-28 12:56:32 +02:00
  • 3a7fef59b0 fix(visual): dark-mode-safe borders + sidebar relative + ring-background Matt Ciaccio 2026-04-28 12:24:14 +02:00
  • c081334020 merge: PR10e — visual polish (mobile responsive sweep) (Phase A) Matt Ciaccio 2026-04-28 12:10:22 +02:00
  • 2d1b50745a style(mobile): responsive tabs + table overflow + hub flex-wrap (Phase A) Matt Ciaccio 2026-04-28 12:10:21 +02:00
  • 40ae860a88 merge: PR10d — visual polish (sidebar/topbar) (Phase A) Matt Ciaccio 2026-04-28 12:10:12 +02:00
  • c7ca7c1f96 style(layout): sidebar stripe + topbar gradient + bell spring + search ring Matt Ciaccio 2026-04-28 12:10:11 +02:00
  • 22b019a27e merge: PR10c — visual polish (dashboard) (Phase A) Matt Ciaccio 2026-04-28 12:10:00 +02:00
  • a3424b80d5 style(dashboard): KPITile primitive + gradient PageHeader + tile skeletons Matt Ciaccio 2026-04-28 12:09:59 +02:00
  • 5bcdfefde3 merge: PR10b — visual polish (detail pages) (Phase A) Matt Ciaccio 2026-04-28 12:09:54 +02:00
  • 22f944fde2 style(detail): apply gradient header strip to client/interest/yacht/company/berth/residential/invoice details Matt Ciaccio 2026-04-28 12:09:47 +02:00
  • cda44e721b fix(layout): hoist TooltipProvider to wrap full sidebar tree Matt Ciaccio 2026-04-28 05:08:01 +02:00
  • 0406778c44 fix(api): kill currentPortId persist race + dedupe admin/ports stampede Matt Ciaccio 2026-04-28 04:38:57 +02:00
  • 259cd7b8bb merge: PR11 — realapi spec scaffolds (Phase A) Matt Ciaccio 2026-04-28 02:53:55 +02:00
  • e42b8fde84 test(realapi): Phase A integration spec scaffolds Matt Ciaccio 2026-04-28 02:53:49 +02:00
  • f354f4adab merge: PR10 — visual polish (lists) (Phase A) Matt Ciaccio 2026-04-28 02:52:26 +02:00
  • 38cd36a616 style(lists): apply gradient PageHeader to client/interest/yacht/company/berth lists Matt Ciaccio 2026-04-28 02:52:17 +02:00
  • 77b6ef5026 merge: PR9 — reminder framework polish (Phase A) Matt Ciaccio 2026-04-28 02:50:06 +02:00
  • 978df1c4d7 feat(reminders): cadence-aware framework with auto/manual modes Matt Ciaccio 2026-04-28 02:50:00 +02:00
  • df0b408b7a merge: PR8 — email attachments + system/user senderType (Phase A) Matt Ciaccio 2026-04-28 02:48:17 +02:00
  • 1151768159 feat(email): system/user senderType + attachments Matt Ciaccio 2026-04-28 02:48:11 +02:00
  • 9e69c13202 merge: PR7 — reservation detail + agreement (Phase A) Matt Ciaccio 2026-04-28 02:45:11 +02:00
  • 6212c118e5 feat(reservations): detail page with agreement flow + contract mirror Matt Ciaccio 2026-04-28 02:45:05 +02:00
  • 6795db9aa8 merge: PR6 — create-document wizard MVP (Phase A) Matt Ciaccio 2026-04-28 02:43:05 +02:00
  • d8f0cdd7d2 feat(documents): create-document wizard MVP + service dispatch Matt Ciaccio 2026-04-28 02:43:00 +02:00
  • 2dc53842c0 merge: PR5 — document detail page (Phase A) Matt Ciaccio 2026-04-28 02:39:52 +02:00
  • aa15807063 feat(documents): detail page with signers, watchers, activity, actions Matt Ciaccio 2026-04-28 02:39:46 +02:00