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
...
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