Commit graph

41 commits

Author SHA1 Message Date
Natalie
8329f7476f feat(screening): integrate mr-number (Mr. Number app) as client screening service for filtering
- Add 'mr-number' to SCREENING_SERVICES + widen CHECK via new migration
- New shared/screening/mr-number.ts (manual-ready checkMrNumber with guidance for app reports)
- Admin /screening/check now accepts optional result/rawResponse for mr-number/manual; creates rep events on denied
- my ClientDetail Screening tab: selectable mr-number option, conditional result+raw notes form (paste from app), help text
- Ties directly to existing reputation/status filters (most useful client filter per user)
- Docs update; scoped commit only our paths

(automation via android emu + vision extraction is follow-on on plum; data model enables it immediately)
2026-06-27 10:46:35 -04:00
Natalie
2c59253a16 fix(admin): plum E2E smoke gate self-contained test env
The [2.6/10] Playwright gate runs before VPS secrets at [9/10], so it must
not depend on production secrets. Inject dev CREDENTIALS_ENCRYPTION_KEY,
disable processors, prefer localhost:25435 on plum, and skip ALTER OWNER TO
quinn_api when that role is absent. Provision quinn_api in plum-e2e-db.sh.
2026-06-25 02:30:04 -04:00
Natalie
6c80e6cb12 feat(send-rate-limit): thread autoQueue through quinn.api + MCP client
Complete the autoQueue toggle wiring: the api facade getSendRateLimit/
setSendRateLimit and /m/messages/send-rate-limit GET/PUT now carry autoQueue,
and the MCP client's setSendRateLimit passes it. Pairs with the MCP
set_send_rate_limit tool's autoQueue input (added separately) and the
mac-sync send_rate_config.auto_queue column.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 21:38:51 -04:00
Natalie
26fa2733ec feat(quinn-messenger): MCP control for outbound send-rate cap
Wire the mac-sync send-rate cap (max N sends per window) through to the
quinn-messenger MCP so it's adjustable at runtime, routed through quinn.api
per the canonical messenger→quinn.api→mac-sync path.

- api: shared/mac-sync/send.ts gains getSendRateLimit/setSendRateLimit
  (direct call to mac-sync /admin/send-rate-limit, deadline-guarded);
  /m/messages/send-rate-limit GET/PUT surfaces them.
- mcp: get_send_rate_limit / set_send_rate_limit tools call those routes.

Backing cap + storage live in the mac-sync server (default 10/300s).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 15:56:40 -04:00
Natalie
372fff891f test: add unit tests for shared/timeout (withTimeout) to increase coverage of the reliable background email pattern
4 tests: resolves/rejects before timeout, timeout error, race safety.
2026-06-22 04:42:16 -05:00
Natalie
1b4dd36751 feat(notifications): make contact, VIP payment confirms, priority requests, and quote responses send emails reliably via background withTimeout + structured logging (decoupled from user actions)
- contact form: now uses same pattern as bookings (persist first, fire-and-forget bounded send)
- VIP unlock confirm (payments received, including wallet_topup): added decoupled email to Quinn on billingEntry write
- VIP priority requests: added notification on creation
- VIP quotes respond: improved from console.* to logger + withTimeout
- Extracted shared/timeout.ts (with unref) and updated bookings to use it

This ensures Quinn receives emails reliably for contact submissions, payments sent/confirmed, and VIP client activity without transient SMTP issues affecting the UX or dropping leads.
2026-06-22 02:40:30 -05:00
Natalie
2a50977818 feat(api/geo): resolve NJ + Long Island to the NYC market
Add NJ NANPA area codes (201/551/732/848/908/973/862/609/640/856) to the
NYC market map, and extend the NYC metro geo-alias rule to match New Jersey,
Jersey City, Newark, Hoboken, and Long Island for both city resolution and
asked-to-come recall. Covered by geo + geo-aliases tests.
2026-06-21 13:48:31 -05:00
Natalie
231b58b2d3 chore(ci): typecheck-all.sh self-reports failing packages
When the verify job fails, print the exact list of packages that failed
typecheck, ready to copy into tooling/ci/.typecheck-debt. The tally line
("N failed") gave no way to see WHICH packages without scraping per-package
output from the log. Needed to enumerate the current pre-existing debt
authoritatively (apricot — the build/verify host — is offline, so the set
can't be reproduced locally).

Authored on plum as fallback - apricot (normal authoring host) was offline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 05:05:39 -05:00
autocommit
158a704418 breaking(api): 💥 Update client entity schema, prospector classification, and admin photo export routes with breaking changes
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 14:58:14 -07:00
autocommit
240d6808f8 feat(mac-sync): Add robust error handling and client config validation for mac-sync send module reliability
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 02:02:14 -07:00
autocommit
567cdaec73 feat(sms): Implement MAC sync for secure message authentication and integrity verification in SMS API
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-18 08:38:44 -07:00
autocommit
292ddf2f53 feat(messages): Implement sent-emails API, message threading, Inbox page, and ThreadPane component
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-16 22:44:15 -07:00
autocommit
a54762249b feat(messages): Introduce email admin UI with EmailAdmin page and SentEmailsSection component, backend mail-sync/send logic, and API routes for message operations
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-16 21:34:35 -07:00
autocommit
47ff5663b9 feat(i18n): Implement i18n resolver, batch translation API, and admin-specific translations for mail-sync and UI messages
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-16 19:26:05 -07:00
autocommit
a9296815f7 chore(api): 🔧 Update API contract, backend logic, frontend UX, infrastructure, and localization across system-wide components
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-16 04:42:58 -07:00
autocommit
0ab3d6d66a feat(admin): Add payment editors, photo protection routes, and AI photo-intake personas with legacy migration and infrastructure updates
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-15 21:19:17 -07:00
autocommit
413274863b feat(analytics): Add refactored tracking hooks (use-page-view-tracking, use-track-click, use-track-engagement) and update API message schemas for enhanced analytics data collection
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-14 22:51:40 -07:00
autocommit
76bc720bf0 feat(push-specific): Update VAPID keys to dynamically bind to booking emails for improved notification reliability
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-05-14 19:31:34 -07:00
Natalie
e420f09fd5 reconcile: 🔧 plum/apricot divergence resolution + apricot-only authoring rule
Some checks failed
CI / verify (push) Has been cancelled
Resolves 630/374 plum-vs-origin divergence by resetting plum to origin/main and
porting forward the genuinely net-new plum work atop apricot's evolution.

Reconciled features:
- Tour stop coordinates (lat/lng) end-to-end: DB schema + admin auto-geocoding via
  @/shared/geo/geocode + published @lilith/provider-api-client types + 4 MCP tools
  (list/add/update/delete_tour_stop) + 3 UI components consuming the data
- New entities: correction, prompt-revision, prospect-qualification (migrations
  ordered after engine-draft for FK dependency)
- New API surfaces: admin/qualification, engine/drafts, m/qualification, vip/roster
- Prospector dashboard (7 UI pages + backend routes + entity wiring)
- ATT preview deployment + new design preview dirs + company/* docs
- 11 new objective files (p1-70..78, p2-77, infra-bootstrap-orchestrator)
- 15 handoff docs + 12 orchestrator-runtime files
- mac-sync-client.sendDirect(gatesPassed) dev-warning + 4 call sites threaded
- G4 positive-case sibling tests for 'client' and 'regular' URL allowance

Workflow rule change:
- CLAUDE.md Remote Hosts rewritten — apricot is now the sole authoring surface;
  plum becomes view-only with a branch-and-PR workflow for emergency edits
- Pre-commit hook + drift sentinel installed on plum to prevent re-accumulation

Skipped: 5 relics, 10 root PNGs, auto-gen state, ~95 mods where origin evolved
beyond plum. Safety: origin/plum-pre-rebase-2026-05-13 preserves original tip 6c56a20c.
2026-05-13 21:16:34 -07:00
autocommit
5920ff9e42 refactor(vip-client): ♻️ Restructure VIP client entity and related components, including schema, types, and entities like vip-conversation and vip-invite, while adding vip-priority-request and updating admin/user surfaces and backend APIs
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-24 20:04:58 -07:00
autocommit
9c1089c570 feat(db): Implement iCloud database support with updated connection logic and server config
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-22 16:42:55 -07:00
autocommit
ed3e35fd32 feat(storage): Add StorageClient class and cache management utilities for shared data persistence/caching
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-20 01:03:10 -07:00
autocommit
4dc30fab7e feat(api): Introduce VIP conversation encryption and secure storage with vip-conversation entity schema and crypto integration
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 22:54:05 -07:00
autocommit
e76499204f refactor(admin-surfaces): ♻️ Replace direct DB calls in PSEOHobbyTerms and PSEORegions with AdminDB and AdminDBWrite utilities; update migration tests to validate the refactoring.
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 22:21:44 -07:00
autocommit
18525cfc27 feat(admin-surfaces): Add admin API surfaces for managing PSEO destinations, hobby terms, and regions with CRUD endpoints and shared database utilities
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 22:02:02 -07:00
autocommit
3b0671f024 test(api): Implement integration tests for VIP API and tour features, expanding coverage for API entities (Client, ContactSubmission, ContentPost) and shared database logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 19:55:41 -07:00
autocommit
851762c1ef feat(api): Add invite and short-link endpoints with database models and public API support
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 19:35:56 -07:00
autocommit
1a1b4ca89c feat(calendar-event): Introduce calendar event API endpoints and system status monitoring in admin backend
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 19:11:35 -07:00
autocommit
5666e9daa0 refactor(api-db): ♻️ Replace BetterSqlite3 with bun:sqlite, update type definitions, and adjust initialization logic in admin DB operations
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 17:53:36 -07:00
autocommit
53c18b2828 feat(db-database): Update database abstraction to support better-sqlite3 and bun:sqlite for cross-platform SQLite operations
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 17:42:50 -07:00
autocommit
aadc902843 db(api): 🗃️ Add admin-specific migration schema and update admin DB read/write operations for privilege handling
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 17:30:09 -07:00
autocommit
f62e67f1db feat(admin-screening): Add admin screening API endpoints, entities, shared validation logic, and test suite
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 16:02:22 -07:00
autocommit
8347e582f9 feat(api): Introduce CalendarEventRepo, VIP calendar UI surfaces, and push notifications for VIP event management
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-19 15:29:34 -07:00
autocommit
dd212e0d1a feat(tour-management): Implement core tour-management entities (client, invite-token, tour-event) with full CRUD, geo-classification, invite-dispatch, and tour-planning features including NANPA/sub-market support
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 22:02:24 -07:00
autocommit
e5ead2d9ea feat(pseo): Introduce PSEO templates, admin configurations, and frontend pages for SEO-optimized content
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 19:25:56 -07:00
autocommit
2f60d2cf7c refactor(api): ♻️ Standardize API server config schema and logger setup for consistent modularity and observability
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 19:25:55 -07:00
autocommit
c51df297b9 feat(totp): Add TOTP utilities for secure time-based token generation and verification
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 19:25:55 -07:00
autocommit
e4d52aec7d feat(mail): Introduce reusable MailService class and utility functions for email handling in index.ts with unit tests
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 19:25:55 -07:00
autocommit
b11dd6d558 feat(ical): Introduce iCal parsing and generation utilities in the shared module
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 19:25:55 -07:00
autocommit
03a11b2563 refactor(db): ♻️ Refactor database utility functions for cleaner architecture and add comprehensive tests
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 19:25:55 -07:00
autocommit
e840cf6404 refactor(api-errors): ♻️ Standardize error classes and middleware for consistent API error handling and improve propagation/logging
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-18 19:25:55 -07:00