- Server settings (Settings page): SMTP, AI, publishing, Meta, platform keys and,
on the control centre only, Stripe/billing. Stored sealed in data/settings.json and
applied over .env in every process; hosted agency workspaces don't see our email,
platform keys or billing.
- Odoo connection per workspace in Connections (login checked before saving).
- provision-tenants.sh marks agency containers with QUORLA_HOSTED_TENANT=true.
- docs/wildcard-subdomains.html: one-time setup for automatic agency subdomains.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The whole string was used as the address, so the mail server saw
"Quorla support"@domain and rejected the sender.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The welcome email is sent in the background, so a slow mail server no
longer makes provision-tenants.sh time out.
- SMTP connection/greeting/socket timeouts, so a bad host fails with a
reason in the agency log instead of hanging.
- "Resend welcome" never sent anything (report() only emails on the
change to running); it now sends directly and shows the error if any.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Settings → Workspace: agency name, logo, brand colour, support email, website
- Logo replaces Quorla's in the app (with 'Powered by Quorla'), sign-in page, client approval page and PDF reports;
brand colour drives buttons, links and highlights; emails and reports use the agency name
- Getting started checklist on the Clients page for admins, checked against the real state
(workspace, Meta, first client, team, platforms, email, library, first post, approval link); dismissible
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Posts and results for the month, follower change, best posts, formats that worked, every post,
competitor comparison and next month's plan; branded PDF via tools/report-pdf (no AI key needed)
- Client page → Documents: create for any month, email the PDF to the client's reviewer
- Optional per client: create on the 1st of each month and email it; admins get a bell notification
- Documents list groups monthly reports separately
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- In-app list with unread count; per-person email and 8:00 summary settings
- Team is told when a client approves or asks for changes, a post fails or only partly publishes,
or a TikTok post is waiting in the TikTok app; new drafts appear in the bell and the summary
- Clients get one email (batched over 5 minutes) when posts are sent to them, in the agency's name
- SMTP settings in .env; nodemailer pinned; express advisories fixed (npm audit: 0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>