Commit graph

508 commits

Author SHA1 Message Date
Natalie
e7aa09792e docs(prospector): clarify DO cloud deployment for webapp + WG mesh isolation to quinn-messenger only (for macsync Notes/messages/phone/calendar in prospector)
- Webapp (my/ frontend + /prospector/app PWA) deploys cleanly to DO via quinn.my (deploy:my).
- Only quinn-messenger depends on mesh; prospector uses it for macsync features (pastebin/Notes, iMessage, phone, calendar).
- Added comments in ProspectorApp.tsx.
- Matches operator note + plan update.
2026-06-28 17:59:36 -04:00
Natalie
bb898eab7a feat(prospector): add /prospector/app containerless Chrome PWA webapp (SSO at my.transquinnftw.com/prospector/app)
- New ProspectorApp.tsx shell: full viewport focused app experience matching designs/ prototypes (main-view segmented channels + bilingual + toolbar Classify/MR/Pastebin, table, modals for reports/queued/pastebin/detail).
- PWA manifest (prospector-app.webmanifest) for install as standalone Chrome app (containerless, no Electron; start_url /prospector/app, display standalone).
- Install button + devtools note (Chrome toolkit for easy control of prospector flows).
- Route /prospector/app added (reuses my/ auth + useMyApi for real LP data; starts with funnel + sample wired to prototype actions).
- Pivot recorded: web PWA primary (faster/easier than Swift OSX) for central workhorse replacing Executor inbound; designs/ + quinn-inbox-ops dashboard concepts as spec. Swift retained only as ref.
- Per plan + operator directive.
2026-06-28 17:57:36 -04:00
Natalie
e68828653b feat(prospector): updates to geo-aliases, sitemap, my ClientDetail, user-data overview/analytics/router
Prospector queue geo, www sitemap, my frontend, user-data backend/frontend for prospects/clients.
2026-06-28 13:59:21 -04:00
Natalie
682d7f90d1 feat(destinations): support zoned FMTY regions 0-6 centered on NYC for regional travel
- Expand FMTY_TIERS to include '0' (e.g. NYC, Boston, DC, Philly, Baltimore) through '6' (e.g. Japan, Sydney, Seoul, Singapore, Hong Kong)
- Update quinn-my MCP tool descriptions
- Relax DB CHECK in quinn DB; updated data in quinn + quinn_admin DBs so website shows zoned fmtyTier (region0 close NE, region5 west-coast, region6 far Asia/AU, region4 Europe etc.)
- Matches request for FMTY region0 like RI/DC/Boston/NJ area (updated analogous), region6 like Japan.
2026-06-28 13:47:40 -04:00
Natalie
02483204fd infra: repoint @lilith npm registry + Forgejo from dead black to DO cocotte-forge; serve /photos from local disk
black/apricot homelan died 2026-06-27. Point everything at the DO store tier:
- @lilith npm registry: forge.black.lan/npm.black.lan -> cocotte-forge Verdaccio
  (134.199.243.61:4873) across bunfig.toml scopes, all deploy.sh .npmrc writers,
  and package.json publishConfig.
- Forgejo URL (git/CI): forge.black.lan -> 134.199.243.61:3000 / :2222.
- quinn.www prod.conf /photos: was proxy_pass to dead black_photos (black:8081);
  now served from local disk (root /var/www/quinn.www/dist). Prevents a future
  deploy from re-breaking photos. (Phase G: repoint to DO Spaces/CDN later.)

Interim bare-IP endpoints; switch to named uvlava infranet hosts once live.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 08:09:33 -04:00
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
8c57818276 fix(quinn-my/mcp): verified-profile update verb PATCH→PUT to match API route
The API exposes PUT /admin/verified-profiles/:id (partial body accepted);
the MCP tool was issuing PATCH and 404ing on every reorder/update.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 03:52:13 -04:00
Natalie
c572c1c18d fix(ci): repair typecheck failures blocking verify on main
quinn-messenger MCP set_send_rate_limit passes autoQueue (3rd arg).
Admin site-settings drops unsupported EditorField.help property.
my backend-api removes unused QUINN_API_URL/TOKEN module constants.
2026-06-23 21:37:14 -04:00
Natalie
7e6c27c100 feat(quinn-my): add show_on_site toggle to platforms (SSOT from credentials) with admin toggle to list on public site
- Added migration for show_on_site boolean on platforms_escort and platforms_content.
- Updated platforms-data handler to support PATCH for the field, serialize it, and on toggle=true auto-create default verified_profile entry (using site logo) via quinn.api admin surface. This makes platforms the SSOT for the list, and the toggle the choice to 'list on site' in verified on / banners.
- Updated my frontend: Platform type, PlatformsPage (dots + table checkbox for 'Site'), PlatformModal (dots).
- The toggle in quinn-my PlatformsPage (the admin for the credentials/platforms list) now controls populating the public verified on section.
- Verified profiles remain for rich customization (custom img/desc/href per platform); defaults use logo per prior requirement.
- Env for quinn api added to my server for the sync call.
- Matches the platforms list from quinn-my credentials (escort+content) as source of truth for which to manage/toggle.
2026-06-23 13:20:24 -04:00
Natalie
efd3b2fcbf feat(quinn.my): platform graphic composer page
Add PlatformCreativePage (new-file / dimensions / asset placement / crop /
rotate), lazy-routed at /platforms/:name/creative on desktop and mobile, and
linked from PlatformsPage and the platform ad-copy editor.
2026-06-23 13:19:52 -04:00
Natalie
5769d5c874 feat(messenger): canonical domain messenger.transquinnftw.com
Align the messaging surface with other quinn.* subdomains (my, admin, data).
m.transquinnftw.com and m.quinn.apricot.lan now 301 to messenger.*.
App switcher id/subdomain updated to messenger; shared SAN cert expanded
on deploy.
2026-06-23 07:55:54 -04:00
Natalie
2309a6a477 fix(my): unwrap credentials list envelope from quinn.api
GET /api/credentials now returns { total, credentials } via the quinn.api
proxy, but the dashboard still treated the body as a bare array and crashed
with .filter is not a function. Add a shared parser, unit test, and e2e guard.
2026-06-22 21:15:42 -04:00
Natalie
7a1534991e fix(ci): unblock typecheck for messages Thread and my frontend
Thread.tsx imported iMessage primitives from @lilith/ui-messaging where
they are not exported; point at @lilith/ui-imessage instead. Add
skipLibCheck to my/frontend-public and raise the tsc heap in
typecheck-all.sh so the CI sweep no longer OOMs on large frontends.
2026-06-22 00:10:22 -05:00
Natalie
00b6329e4e feat(my-api/health): report build stamp on GET /health
Mirror the api/sso build stamp on quinn-my-api: inject __BUILD_INFO__ via bun
build --define in deploy.sh and return version/buildCount/sha/builtAt + service
+ startedAt as JSON from /health (was bare 'ok'). Falls back to env then 'dev'.
2026-06-21 22:10:47 -05:00
Natalie
813d3b99b4 fix(quinn.my): build frontend with vite build directly, not lixbuild
deploy-quinn-my's build job hung ~40 min at the lixbuild step inside the
Forgejo runner's act Docker container, then died on the job timeout — the
long-standing reason quinn.my never deployed via CI.

Root cause: lixbuild's frontend builder runs `execa("vite", ["build"],
{ stdio: "pipe" })`. vite spawns esbuild's persistent service process, which
inherits execa's stdout/stderr pipe fds. When vite exits, execa keeps waiting
for those pipes to reach EOF, but the lingering esbuild service holds them
open — so execa (and thus lixbuild) blocks forever. The deadlock only shows in
the container; on a normal shell esbuild's service tears down cleanly. quinn.www
never hit this because quinn.www/root builds with `vite build` directly.

Switch my/frontend-public to `vite build` (exactly what lixbuild runs
internally, minus the piped-execa wrapper). Verified: identical dist output,
3.5s build, and it matches the already-working quinn.www pattern in the same
runner. (The underlying lixbuild stdio:"pipe" bug should be fixed at source in
@lilith/lix-build so every frontend consumer benefits — tracked separately.)

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-21 03:58:13 -05:00
Natalie
528eca3a8b feat(quinn.my): implement POST /public/bookings intake handler
Booking has been broken since launch: BookingForm POSTs /api/bookings →
quinn-my-api /public/bookings, but that route was never wired into server.ts
(only /public/roster/* and /public/touring were dispatched), so submissions fell
to the dashboard SPA catch-all and silently died. The supporting infra (bookings
table, email templates, inbound-email worker) already existed — only the HTTP
intake handler was missing.

- routes/booking-intake.ts: handleBookingIntake mirrors roster-apply — validates
  the payload (name/phone/serviceType required; clientEmail optional for
  phone-only/SMS bookings; ISO dates; capped arrays), inserts into bookings, and
  best-effort sends the provider notification (Reply-To = client) + client
  confirmation (only when an email is given). Email failures never fail a
  persisted booking.
- schema-bookings.ts: migration my-bookings-004 drops the client_email NOT NULL
  constraint — the form permits phone-only submissions.
- server.ts: register POST /public/bookings with the standard addCors wrapper.

Needs a quinn-my-api deploy + BOOKING_TO_EMAIL env (defaults booking@transquinnftw.com).
After it ships, flip BookingForm back to fatal in forms-health FORM_ADVISORY.

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 18:02:06 -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
81ff5544a6 types(api): 🏷️ implement stricter request/response payload and error schema types for API contract validation
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 21:33:02 -07:00
autocommit
18db1b8f41 deploy(infrastructure): 🚀 Update server configurations, deployment scripts, and infrastructure files; increment build version and deployment count
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 21:33:02 -07:00
autocommit
dfc107d243 feat(prospect-cockpit): Add API endpoints for prospect-cockpit and tour-stops integration and frontend ConversationDrawer component to display unified prospect data
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 21:33:02 -07:00
autocommit
2260138af8 feat(prospector): Introduce three new tab-based views (Stream, Board, Cohort) for prospect management UI and backend queue logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 21:33:02 -07:00
autocommit
aadd679c4b feat(tour-logistics): Add incall hotels data types, schemas, and repository logic; implement tour logistics feature with prospect queue integration; introduce frontend editor and display components
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 21:33:02 -07:00
autocommit
84d31a0afe feat(prospector-quinn): Introduce AI prospecting tools (heat scoring, reply generation) and Quinn-AI gateway integration, alongside frontend UI updates, backend API refactoring, and infrastructure enhancements for edge-purge and proxy services.
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 20:40:01 -07:00
autocommit
511f81e428 refactor(backend-api): ♻️ Remove deprecated booking routes and consolidate handlers into the main API module
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 20:40:00 -07:00
autocommit
d59c9d5d67 chore(frontend-public): 🔧 Update Vite config with performance plugins, proxy settings, and introduce environment variables for gateway feature
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 20:40:00 -07: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
12de9ea5e5 deps-upgrade(deps): ⬆️ Update dependency versions to enforce consistent and compatible package.json and lockfile across the codebase
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-10 14:58:14 -07:00
autocommit
549fc45270 types(fontend-public): 🏷️ Add TypeScript types for prospect backfill API responses in api.ts
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 02:56:08 -07:00
autocommit
bc4f30e081 ui(pages): 💄 Add ProspectorBackfillBar component and styled styling for backfill functionality in the prospector page
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 02:56:07 -07:00
autocommit
9bef0c3570 feat(prospector): Add prospector cockpit frontend components (ConversationDrawer, ProspectorOwedReplyTab, ProspectorPage, ProspectorTourBoardTab) and styled utilities, plus updated API type definitions
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 02:02:15 -07:00
autocommit
58ac19d184 feat(frontend-public): Add ProspectorTourBoardTab and ProspectorTourCohortTab components with React hooks, state management, and API integration for tour-based data exploration
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 01:10:25 -07:00
autocommit
29b63ee7fc refactor(prospector): ♻️ Replace CockpitTabId with CockpitModeId in ProspectorPage and update tab labels for mode-based navigation
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 01:10:25 -07:00
autocommit
b1c52ad800 feat(prospector): Add ProspectorOwedReplyTab, ProspectorTourCohortTab, and styled components for prospector cockpit/tour UI, plus API type definitions
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 00:53:31 -07:00
autocommit
9ae5d40a1a feat(prospect-classifier): Introduce prospect classifier logic, queue management system, and frontend UI for viewing/managing prospects, noise, owed replies, and tour leg cohorts
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 00:03:14 -07:00
autocommit
0f5c6dd13c chore(frontend-public): 🔧 Update Vite build config for frontend-public with new plugins and adjusted build settings
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 00:03:14 -07:00
autocommit
75f691943a chore(frontend-public): 🔧 Update Vite config for frontend-public builds with optimized plugins and environment settings
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 06:50:34 -07:00
autocommit
77a599a418 feat(prospector): Implement ProspectorPage component with JSX structure and prospect data rendering logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 03:36:21 -07:00
autocommit
8e5c56210c feat(prospector): Introduce drafted prospects count in prospector funnel and update frontend display
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 03:19:15 -07:00
autocommit
ab4aef4d9e docs(backend-api): 📝 Clarify test documentation to distinguish between local and proxied operations in projects routes
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 01:38:46 -07:00
autocommit
5aedbea6b3 refactor(api-routes): ♻️ Update route handlers to align with API changes, including request parsing, response formatting, and middleware adjustments
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 01:21:05 -07:00
autocommit
c89e667f0c refactor(bookings): ♻️ Proxy booking routes to backend API and update tests
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 01:21:04 -07:00
autocommit
014556fcb9 feat(financials-specific): Add financials API endpoints with auth validation and data processing logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 01:03:26 -07:00
autocommit
acac586805 test(device-link): Add test cases for device link TTL validation and cookie expiration scenarios
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 01:03:25 -07:00
autocommit
d2f2ef5774 refactor(backend-api): ♻️ Improve test infrastructure by refactoring mock handling and test setup utilities
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 01:03:25 -07:00
autocommit
03e575d819 test(backend-api): Add comprehensive test cases for credential validation, generation, and storage logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 00:45:28 -07:00
autocommit
72a458b3c5 test(backend-api): Update client route tests to validate BFF proxy behavior in backend API
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 00:45:28 -07:00
autocommit
bf80e4f0b5 feat(backend-api): Implement CRUD API routes for roster types with route definitions and data management logic
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 00:45:28 -07:00
autocommit
a26893ce49 feat(backend-api): Add Express.js route handler for roster management in roster-apply.ts and implement corresponding unit/integration tests in roster.test.ts
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 00:45:28 -07:00
autocommit
d53f87a2da feat(projects): Implement project CRUD API routes for project management functionalities
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 00:45:27 -07:00
autocommit
9d4d5d84fe feat(planner): Implement planner API routes for task scheduling and unit tests
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-08 00:45:27 -07:00