- Documents tab lists competitor analyses and trend scans (they were listed
by the server but hidden in the page)
- Competitors page: "Open report" jumps to the latest competitor report
- New report block mc:search-trends: interest over time per keyword,
trend %, busiest month and rising searches, from stored Google Trends data
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Reports: mc: blocks (score, KPIs, reach, funnel, followers, formats,
rhythm, top posts, actions, screenshots, callouts) drawn as SVG from
stored account data, frozen per report; same page in PDF and preview
- Audit/weekly-report runs refresh account numbers first
- Screenshots tab: monthly shot list, uploads, examples; audit reads them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Public page /l/<address>: Instagram name, picture and bio (or custom), link buttons, latest 6 posts
- Every click counted per link per day through /l/<address>/go/<id>; optional UTM tags for Google Analytics
- Client page → Link in bio: address, links (reorder with buttons), colours, clicks in the last 30 days
- Snapshots now keep the Instagram profile picture
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Client page → Brand kit: hashtag sets, approved phrases/CTAs, words to avoid, voice notes
- New post: one-click insert of hashtag sets and phrases, live checks while typing
- Checks: agency named in a client post (refused when saving; the agency's own account is exempt),
avoid list, generic AI-sounding phrases, too many hashtags or emoji, platform length limits
- Brand warnings also appear on drafts; MCP tools brand_kit and caption_check for the AI
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>
- Admin creates/replaces/turns off the link and sets the reviewer on the client page (Client approval tab)
- Drafts get 'Send to client'; the client's answer (approved / changes + note + name) shows on the draft
- Editing a reviewed draft asks the client again; the admin's approval is still required to publish
- Client page is mobile-first, no login, noindex, media served only for posts in review
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Quorla logo, navy/coral colours and page titles in the app (PDF reports keep agency branding)
- Connections: Move button reassigns an account to another client without reconnecting
- Fix double @ on YouTube handles
- HANDOFF.md with current status and next steps
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Connector lists Instagram accounts assigned to the system user without a
Page; numbers, inbox, mentions and publishing work for them
- Clients link by Page or Instagram account ("Link an account"); Facebook
features explain the client has no Page instead of failing
- Drafts for Instagram-only clients drop Facebook automatically
- Images for Instagram-only clients are hosted via the agency's own Page
(META_MEDIA_PAGE_ID, unpublished); never falls back to a client's Page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Refresh on a client with no Facebook Page now returns a clear 400 error
instead of silently replying "started"
- Client page shows "Not linked to a Facebook Page" with a Link a Page
dialog (admins) and shows refresh errors
- New POST /api/clients/:slug/link-page links an existing client folder to
an unlinked Meta Page, keeping its name and files
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dashboard (content library, publishing queue with approvals, inbox, team
management, AI runs), Meta connector, branded PDF reports, agent skills,
and Docker packaging (Dockerfile, docker-compose with Caddy HTTPS,
backup and path-relocation scripts).
Client data, live data and secrets are excluded via .gitignore.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>