Format
Format follows Keep a Changelog. Versions appear newest-first. Each entry links to the GitHub issue that shipped it where available.
Unreleased
changed Landing page & GTM
- Landing page reshaped for the Phase 1 GTM ("solo-thought-leader-first"): new outcome-first hero ("Your ideas, in your voice, published consistently. Without the grind."), all primary CTAs unified to "Start writing", and
Who it's forrebuilt from 2 cards to 3 (Solo primary, Marketing consultants + Internal marketing teams as a secondary row). Tagline at the bottom CTA and pricing strip unchanged (#2338, parent #2220). - SMS provider migrated from Brevo to Twilio for outbound notifications (#2278). Twilio's Messaging API replaces Brevo's transactional SMS; sender resolution prefers
TWILIO_MESSAGING_SERVICE_SIDand falls back toTWILIO_FROM_PHONE. Real sends remain gated bySMS_SENDING_ENABLEDuntil A2P 10DLC approval lands on the Twilio account. Privacy disclosure updated; Brevo is no longer listed as the SMS sub-processor.
added API & MCP surface
GET /api/v1/workspaceandGET /api/v1/workspace/members-- first read endpoints on the public/api/v1surface. Returns safe workspace profile fields (id,name,slug,plan,created_at) and active members (user_id,role,joined_at,is_active). Auth:ax_k_bearer withworkspace:readscope, or session JWT. Explicitly omits Stripe identifiers, feed/calendar tokens, owner IDs, and any internal preferences. Newworkspace:readscope is opt-in on API key generation (#2421, part of #2368).- Settings > API key generation now offers an opt-in
voice:draftscope checkbox, letting users mint API keys that grant external MCP callers permission to draft text in the workspace's voice (#2335). - Settings > API shows a read-only MCP draft history for the latest voice drafts generated by connected MCP clients (#2337).
- MCP
adapt_for_platformtool adapts text for linkedin, bluesky, newsletter, or blog with scope-gated, rate-limited, humanized output logged tomcp_draft_log. MCPget_mcp_drafttool retrieves a previously generated draft by ID, scoped to the workspace (#2336). - MCP
draft_in_voicetool generates scope-gated, rate-limited, humanized workspace-voice drafts and logs them tomcp_draft_log(#2332). - MCP
get_voice_profiletool returns structured workspace voice profile fields for voice-aware clients (#2333). - Inbound ideas API --
POST /api/v2/ideas/ingest(#2053). llms.txtatauthexis.app/llms.txtfor AI discoverability (#2054).
added SEO & marketing pages
/for-consultantspillar page -- first ICP-targeted SEO pillar in the SEO.md target-pages list. Primary keyword "content workflow for marketing consultants" in title, description, H1, and a dedicated H2; secondary keywords ("white-label content tool for marketing agency", "ghostwriter alternative for linkedin") each get their own H2 section. Multi-client positioning: one workspace per client, voice profile per client, ghostwriter-replacement economics ($40--67 per client vs $1,500--3,000 for a senior LinkedIn ghostwriter). Trial CTA carries?ref=for-consultants(#2344)./bloomberry-alternativecomparison page -- P2 named-competitor SEO page targeting "bloomberry alternative." Frames interview-first capture (voice + POV from speech) against Bloomberry's style-cloning from written samples. Completes the named-competitor shortlist alongside Jasper, Copy.ai, and Pressmaster.ai (#2343).
added Content creation
- Speaking-engagement prompt defaults for abstracts, speaker notes, pre-talk teasers, post-talk recaps, and social cuts, with seeded slug-keyed prompts and engine fallbacks (#2315).
- Voice-analyzer signup mints a seeded interview-stage draft from the three voice-shaped prompts (#2292). Trial users land on the dashboard with "Your first interview" already in the queue, ready to answer.
- PDF export for approved content -- server-rendered via Chromium (
@sparticuz/chromium+puppeteer-core), downloadable from the distribution panel (#2298).
added Content repurposing
- One-click repurpose: turn any finished piece into LinkedIn posts, social teasers, newsletter intros, and threads.
- Adaptations panel on content detail with copy, edit, and send-to-queue actions.
- Platform-aware queuing -- LinkedIn posts go to LinkedIn, social teasers offer platform picker.
added Newsletter channel
- Generate newsletters from your recent published content.
- Newsletter page in Distribute nav -- select articles, add optional title and guidance.
- Export as HTML, markdown, or download for use in any email tool.
- Branded email template matching Authexis design.
added Content series
- Plan multi-week campaign arcs with the new Series feature.
- Series management UI -- create, edit, reorder, track progress.
- Link any content piece to a series from the content detail page.
- Series badges and filters on the content list.
- Series progress in daily briefings.
added Workspace templates
- 8 pre-built voice profile templates covering thought leaders, consultants, and internal teams.
- Template picker appears for new/unconfigured workspaces.
- One click to pre-fill voice, tone, specialization, and focus areas.
added Other
- WordPress blog publishing via REST API.
- Stripe webhook handler test coverage (35 tests).
- Image generation migrated from DALL-E 3 to
gpt-image-1(faster, half the cost). - Dashboard ideas are now clickable -- navigate to idea detail.
- Three-audience positioning in
PRODUCT.md(thought leaders, consultants, internal teams).
fixed Bug fixes
- Revise mode field mapping -- direct edits no longer silently discarded (#2067).
- Image upload auth -- Bearer token added to upload request (#2068).
- Generated Supabase types replace
SupabaseClient<any>(#2059). - React hooks exhaustive-deps suppressions properly fixed (#2058).
- Rate limiting added to podcast generate and calendar reschedule endpoints (#2057).
- 4 unprotected app routes added to middleware (#2061).
- Removed unused
rehype-rawdependency (#2055). - Removed dead rejected stage filter code (#2063).
- Removed legacy website field fallback (#2064).
- Cleaned up stale pipeline comment (#2060).
- N+1 query in social metrics -- batched to 2 queries per platform instead of 2N.
- Race condition in social post slot assignment -- database-level unique constraint.
- App layout parallelized -- 3 sequential queries now run concurrently.
- Onboarding email linked to non-existent
/onboardingroute (now links to/dashboard). - SSRF validation on click tracker and article URL fetcher.
- Social queue no longer hardcoded to 200 posts -- lazy-loads with pagination.
- Error context added to LinkedIn, Bluesky, Mastodon HTTP calls.
- WordPress/GitHub publishers now surface API error responses.
- Guard
JSON.parseoninterview_qafield update.
security Security
- Inbound ideas API input sanitization (#2066).
- IDOR fix on social-slots endpoint.
- SSRF validation on
web_scraperandpage_scrape.
1.0.0 — 2026-01-28
Initial production release at authexis.app.