Changelog
What’s shipped in the customer console at console.podsaid.com. Semantic versioning: major.minor.patch. Pre-1.0 (0.x) means the product is still being shaped — behavior may change between minor versions.
Read chronologically newest-to-oldest.
v0.10.6 — 2026-08-30
Self-host Inter — kill the Google Fonts critical chain.
Inter now bundles with the app via @fontsource-variable/inter instead of loading from fonts.googleapis.com + fonts.gstatic.com. Removes ~1.25s of render-blocking latency on cold cache (per Lighthouse) — the two sequential hops to Google Fonts (CSS then woff2) collapse into a single asset served from Cloudflare’s edge alongside the rest of the console bundle.
Visually identical — same Inter, same weights (400/500/600/700 via variable-weight file), same font stack. Just a different origin.
v0.10.5 — 2026-08-25
Two new FAQ entries across all three role pages.
- “Can we see the questions that are being asked?” — Yes. Every widget query lands in the console dashboard with exact wording, timestamp, and the sermons the AI cited in reply. No visitor identity is attached. Framed as pastoral sermon-planning signal on the pastors and comms pages; framed as feed-coverage tuning on the web/IT page.
- “Can PodSaid pull other content from our website — service times, ministry pages, resources?” — Not yet. It’s our most-requested feature; delivery expected this year. Today the widget is scoped to the sermon archive only. Pilot partners welcome.
Both entries added to faqs[] (so FAQPageLD schema.org markup picks them up) and to the prose sections on /docs/faq/church-comms-directors, /docs/faq/religious-leaders, and /docs/faq/web-it.
v0.10.4 — 2026-08-22
Revert LLM crawler logging hook (from v0.10.2) — Cloudflare AI Audit supersedes it.
The llmCrawlerLog handle shipped in v0.10.2 (#105) could never see the traffic it was meant to measure. Two stacked problems:
- Prerendered routes bypass Functions entirely. SvelteKit
adapter-cloudflaregenerates a_routes.jsonexcludelist covering/llms.txt,/llms-full.txt,/sitemap.xml,/robots.txt,/facts, and every other prerendered page. Cloudflare’s static-asset handler serves those directly — our hook never runs. - Handle ordering bug — the handle was placed after
gatein thesequence, so any authed-redirect request never reached the logger.
Cloudflare’s zone-level AI Audit dashboard (Security → AI Audit) already collects per-bot request counts, top paths crawled, and timelines natively for every request that hits the zone — including the static-asset paths our hook was blind to. It supersedes what we were building.
Kept from v0.10.2: the robots.txt explicit LLM allow-list (that lives in a static file, still works).
v0.10.3 — 2026-08-22
Add /facts link to the footer.
The at-a-glance dossier shipped in v0.10.1 is now reachable from the site chrome — added to the footer’s Product column between Quickstart and Widget errors. Improves discoverability for human visitors and internal link equity for both Google and LLM retrieval systems.
v0.10.2 — 2026-08-22
GEO instrumentation — server-side logging of LLM crawler hits.
New llmCrawlerLog handle in hooks.server.ts inspects the User-Agent header on every request and, if it matches one of 15 known LLM crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, Google-Extended, ClaudeBot, Claude-Web, anthropic-ai, PerplexityBot, Perplexity-User, CCBot, Bytespider, Amazonbot, Applebot-Extended, FacebookBot, Meta-ExternalAgent), emits a structured JSON line to console.log.
On Cloudflare Pages Functions this is captured by wrangler pages deployment tail — tail live to see PodSaid content flowing through retrieval indexes as the Phase 4 work ripples through.
No user-visible surface change. Patch bump.
v0.10.1 — 2026-08-22
New page: /facts — quotable at-a-glance dossier.
One-page structured summary of PodSaid: what it is, who it’s for, how it works, cost, setup time, bundle size, supported platforms, security model, privacy, affiliate program, founding. Each claim is self-contained, entity-named, and dated where relevant — the shape LLMs preferentially quote when synthesizing answers to “tell me about PodSaid.”
Wired into the XML sitemap, the human /sitemap page, /llms.txt, and page-meta.ts (with its own description + OG title).
Continues the Console GEO Phase 4 milestone from v0.10.0.
v0.10.0 — 2026-08-22
Generative Engine Optimization — LLM-first content signals.
First shipment from the Console GEO Phase 4 milestone. Aims at citations inside AI-generated answers on Perplexity, ChatGPT (with browsing), Claude (with search), Google AI Overviews, and Copilot.
- New
/llms.txtroute — proposed llmstxt.org standard. A curated Markdown starting point for LLM crawlers, listing the ~20 URLs that best represent PodSaid, grouped by intent (Product / Comparison / Docs / Embedding / FAQ). Reads frompage-meta.ts. - New
/llms-full.txtroute — every route inpage-meta.tsgrouped by URL prefix, with full descriptions. Serves as an LLM-friendly directory when the curated/llms.txtisn’t enough. - Extractable definitions on 7 hero pages —
/,/docs,/pricing,/for/churches,/for/podcasters,/vs/mendable,/vs/algolia. Each now opens with a self-contained “PodSaid is …” (or “Compared to X, PodSaid …”) sentence. LLMs preferentially quote passages like these when synthesizing answers. - Author + dates in JSON-LD — the site-wide
Organizationschema now includesfounder. Every docs page’sTechArticleemitsauthor,datePublished, anddateModifiedsourced from newSITE_PUBLISHED_DATE/SITE_UPDATED_DATEconstants inpage-meta.ts. Also added<meta name="author" content="Mark Wardell">site-wide. robots.txtexplicit LLM allow-list — 15 LLM crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, Google-Extended, ClaudeBot, Claude-Web, anthropic-ai, PerplexityBot, Perplexity-User, CCBot, Bytespider, Amazonbot, Applebot-Extended, FacebookBot, Meta-ExternalAgent) now named explicitly with the same allow / disallow policy as the default*block. Restated per-agent so defensive WAF configs that require named user-agents find them.
Bumped to 0.10.0 — new user-visible content surface (2 new routes + reshaped hero copy), first release in a new minor line.
v0.9.7 — 2026-08-21
Accessibility — second-pass contrast fixes across docs nav, sitemap, pricing, affiliates.
Follow-up to v0.9.6. Second-pass manual audit turned up 7 more text-sand-400 usages sitting on dark backgrounds at text-xs or text-sm — around 3.7:1, below WCAG AA 4.5:1 for normal text:
- Docs: sidebar nested nav items + breadcrumb trail
- Sitemap page: section headings (“EMBEDDING THE WIDGET”, etc.)
- Pricing:
(2 mo free)and2 months freeannotations under column headers - Affiliates:
(50%)andone-time, 50%annotations under column headers
All bumped to text-sand-300 (~6:1). Same fix pattern as v0.9.6.
Only text-sand-400 left in the codebase is the FeedPicker dropdown chevron — borderline for UI-element 3:1, but sits inside a button with other affordances, so kept as-is.
v0.9.6 — 2026-08-21
Accessibility — fix WCAG AA contrast on ‘coming soon’ tiles + input placeholders.
Manual contrast audit against bg-sand-900 (the console’s dark background) turned up two real WCAG AA fails and one uncomfortably-dim placeholder pattern:
PlatformCards— “COMING SOON” pill wastext-sand-500(~2.5:1, fails 4.5:1 for normal text); coming-soon tagline wastext-sand-400(~3.7:1, fails). Both bumped totext-sand-300(~6:1, passes comfortably).- Auth + signup input placeholders were
placeholder:text-sand-400onbg-sand-800(~3.3:1). Placeholders are technically WCAG-exempt but this reads uncomfortably dim on-screen; bumped totext-sand-300for usability.
Lighthouse Accessibility scores were already 95–98 before this — automated checks only cover ~40 of WCAG’s ~200 criteria. Manual audit against the dark palette caught what Lighthouse missed.
v0.9.5 — 2026-08-21
Cache-bust the per-page OG image URLs.
LinkedIn’s media.licdn.com proxy (and similar in Slack/other unfurlers) caches OG images by exact URL for weeks. When og-worker !3 shipped the chocolate title cards, LinkedIn kept serving the pre-fix blank cream card because the OG image URL hadn’t changed — just its contents at the origin.
Fix: append &v=<N> to every dynamic og:image URL. Bumping OG_IMAGE_VERSION in +layout.svelte makes every per-page share URL look like a new URL to downstream proxies, forcing a fresh fetch from Cloudflare. Start at v=2 (v=1 is the initial post-worker-fix state that shipped in v0.9.4).
v0.9.4 — 2026-08-21
Dynamic per-page OG images.
Every route with an entry in src/lib/page-meta.ts now gets its own social-share preview. The root layout builds og:image (and twitter:image) as https://og.podsaid.com/?title=<encoded>, which the OG worker renders on the fly as a branded 1200×630 PNG — chocolate + cream, PodSaid wordmark, page title in Inter Bold, cached forever at Cloudflare’s edge.
Routes without an ogTitle fall back to the static /og-default.png (same as before), so nothing regresses if a route is missing from page-meta.ts.
Paired with og-worker MR !1 — the worker now accepts a ?title=<encoded> query alongside the existing ?type=<slug> stats-card behavior. Worker is deployed; nothing further to coordinate.
v0.9.3 — 2026-08-21
HowTo JSON-LD on all 9 platform embed guides.
v0.8.1 shipped HowTo schema on /docs/quickstart as the proof-of-pattern. This release extends the same treatment to every shipped platform guide under /docs/embed/:
Each guide now emits a HowTo object with 5–7 numbered steps distilled from its H2 sections into plain-text name + text (schema.org’s HowToStep.text is a string, not HTML), plus a realistic totalTime (ISO 8601 duration). Reuses $lib/schema/HowToLD.svelte unchanged.
Rich-result eligible for Google’s HowTo rich card, which shows step counts and time-to-completion in search results — useful for install-tutorial queries like “add PodSaid to Squarespace” or “install React Web Component”.
v0.9.2 — 2026-08-21
FAQ schemas + noindex on private routes + BreadcrumbList polish.
Three SEO adds in one MR:
FAQPageJSON-LD on the two remaining segmented FAQ pages —/docs/faq/religious-leadersand/docs/faq/web-it. The church-comms FAQ shipped with schema in v0.8.1; these two were bare. Each page now emits aFAQPageobject with 10–13Question/Answerpairs, extracted from the H2 sections into concise plain-text answers (Schema.org’sacceptedAnswer.textis a string, not HTML).X-Robots-Tag: noindex, nofollowon private routes —/login,/signup,/logout,/dashboard/**,/account/**,/auth/**. Newnoindexhandle inhooks.server.tssets the header on every response for these paths. Google respects the header, so no per-page<meta robots>tags needed. Reclaims crawl budget and keeps low-content auth flows out of search results.BreadcrumbListJSON-LD on/affiliatesand/sitemap— same pattern as/pricingin v0.8.4. Two crumbs per page (Home → route), so Google can renderconsole.podsaid.com › Affiliatesin the search snippet.
v0.9.1 — 2026-08-21
Fix: corrected Mendable pricing claim on /vs/mendable.
The v0.9.0 comparison page said “Mendable prices on ingest + query volume” — that’s wrong. Verified via mendable.ai: Mendable meters on message credits (500/mo on the Free tier, 1–3 credits per query depending on model). Copy fixed. Also sharpened the “when Mendable is right” block to match their actual positioning around sales/CS enablement and product copilots.
v0.9.0 — 2026-08-21
Per-page meta descriptions + four keyword-targeted landing pages.
Two SEO shifts, one MR:
Per-page
<meta description>across every public route. The root layout used to emit one hardcoded default for every page; now it reads a per-page description fromsrc/lib/page-meta.tsand falls back to the site default only when a page has no entry.<meta description>,og:description, andtwitter:descriptionall pick it up. Also removed the duplicate<meta description>tags that/pricingand/affiliatesused to emit alongside the root’s default — those pages had two description tags each, which is exactly what Google warns against.Four new landing pages targeting the searches PodSaid customers actually run:
/for/churches— sermon-search widget for church tech directors/for/podcasters— Q&A over a show’s back catalog/vs/mendable— comparison vs Mendable (general RAG)/vs/algolia— comparison vs Algolia (keyword search)
Each page ships with
BreadcrumbListJSON-LD and its own description. Both the machine/sitemap.xmland human/sitemappages now list the four new URLs.
v0.8.4 — 2026-08-21
Sharper JSON-LD on /pricing.
Two small SEO improvements on the /pricing page:
- The existing
SoftwareApplicationschema now includesmainEntityOfPagepointing atconsole.podsaid.com/pricing. Tells Google that this structured data lives on the pricing URL specifically, rather than being a floating description of the app. - Added
BreadcrumbList(Home → Pricing) so Google can renderconsole.podsaid.com › Pricingin the search snippet. Docs pages already auto-inject breadcrumbs fromnav.ts;/pricingsits outside/docsand got nothing before this.
/affiliates and /sitemap are still bare of page-specific JSON-LD — separate issue if we want the same treatment.
v0.8.3 — 2026-08-21
Cream-colored separators.
Every divider on the console — header/footer/mobile-menu borders, card outlines on the dashboard, pricing, affiliates, sitemap and docs pages, <hr> dividers on the login and signup screens, and table row separators on /pricing and /affiliates — moved from the near-invisible dark border-sand-700 to a light cream border-sand-100. Buttons and input outlines stayed put (those are element-defining, not dividers).
v0.8.2 — 2026-08-21
Human-friendly sitemap page + docs landing = “What is PodSaid?”
Two things:
- New /sitemap page with real HTML and matching site styles — every public URL grouped by section (Marketing & product, Documentation, Machine-readable). The Documentation section iterates
docsNavso it stays in sync with the sidebar automatically as new docs pages ship. Footer Sitemap link now points here instead of the raw XML. The XML feed at/sitemap.xmlstill exists and remains whatrobots.txtpoints at — machines get the XML, humans get the page. /docsis now the What-is-PodSaid page. First-time visitors landing on/docswere previously greeted with a bare table-of-contents; now they get the orientation content (widget + backend + how they talk + what you manage). The former/docs/what-is-podsaidroute was deleted and the sidebar collapses its top two entries (What is PodSaid? + Start here) into a single What is PodSaid? entry pointing at/docs.
v0.8.1 — 2026-08-21
SEO Phase 2 — page-specific JSON-LD, footer sitemap link.
Phase 2 of the SEO/OG plan (Phase 1 landed in v0.8.0). Five new schema types, delivered as small reusable components under src/lib/schema/:
- BreadcrumbList on every docs page — auto-injected from the docs layout, derived from
nav.tsso the crumb chain works for any depth. Google shows these in search results. Also visible on-page — every docs page now shows aDocs / Embedding / Platforms / WordPress-style trail above the article title, using the same source data. - TechArticle on every docs page — auto-injected. Publisher links to the site-wide Organization; no duplication.
- HowTo on Quickstart with hand-coded step data. Proof-of-pattern; per-platform HowTo on the 9 embed guides is a follow-up.
- SoftwareApplication + AggregateOffer on
/pricing— reads the existingtiersarray and emits 8 concreteOfferentries (Free + 7 paid). Custom-quote 3500+ tier omitted (Google prefers concrete prices in AggregateOffer). - FAQPage on FAQ for church communication directors with 10 Q&A pairs. FAQ rich results are still active in Google search — proof-of-pattern; the other two segmented FAQ pages (religious-leaders, web-it) are a follow-up.
Also: a discreet Sitemap link in the site footer. Previously /sitemap.xml was only referenced from robots.txt for crawlers; now humans can find it too.
v0.8.0 — 2026-08-21
SEO + OG foundation — share previews, sitemap, robots, JSON-LD.
Console links now render properly when shared. Before this release, pasting any console.podsaid.com URL into Slack, LinkedIn, iMessage, Discord, or WhatsApp showed as raw URL text. Now every page renders with:
- Open Graph + Twitter card meta — site-wide default title, description, and a 1200×630 branded image (
/og-default.png). - Canonical URL — prevents duplicate-content confusion in search engines.
- JSON-LD structured data —
Organization(with support contact point) andWebSite, site-wide, in one@graphobject. Google uses this to build knowledge-panel entries over time. robots.txt— allows crawling of marketing + docs, disallows the auth-gated/dashboard,/settings,/console,/auth/,/api/*surfaces, and points at the sitemap.sitemap.xml— dynamic route enumerating every public page including all/docs/embed/*platform guides (data-driven fromembed-platforms.tsso it stays in sync as new platforms land).
Phase 2 (coming soon) adds page-specific JSON-LD to docs pages: BreadcrumbList, TechArticle per page, HowTo on the install guides, SoftwareApplication with AggregateOffer on /pricing, FAQPage where applicable. Phase 3 adds dynamic per-page OG image generation.
v0.7.4 — 2026-08-21
Start-here docs page — platform list now data-driven.
The Embed the widget section on /docs was hard-coding four platforms (WordPress, Squarespace, Next.js, Allowed origins) and had gone stale — Subsplash, Rock RMS, Wix, Webflow, React, plain HTML all shipped without the Start-here list catching up. Replaced with a link to the Embedding overview plus an inline chip list rendered from the same embed-platforms.ts data file used by the sidebar and the embed overview grid. Adding a platform there now updates: sidebar → overview grid → example-page footer → Start-here list. One entry, four surfaces in sync.
v0.7.3 — 2026-08-21
New: What is PodSaid? — 30-second platform orientation.
New top-of-docs page (subsequently relocated to /docs in v0.8.2) that describes the whole product in three sections: the widget (Web Component, Shadow-DOM isolated, paste-in), the backend (feed fetch → transcribe → embed → vector search + LLM answers, all on us), and how they talk (HTTPS + pk_live_* public key + origin check). Also spells out what you manage vs. what’s on us. Sits above Start here in the docs sidebar so first-time visitors get platform-level orientation before the signup narrative.
v0.7.2 — 2026-08-21
Platform overview page — cards, roadmap, one source of truth.
The Embedding the widget overview now renders shipped platforms as a card grid (1 / 2 / 3 columns responsive) instead of a bulleted list — nicer to scan, real landing-page energy. Below the shipped cards, a new Coming soon section shows what’s queued (Ghost, Vue, SvelteKit, Astro, Angular) as muted cards so readers can see the roadmap.
The whole platform list — sidebar, overview grid, and “Where to go next” footer on See it in action — now reads from one file, src/lib/embed-platforms.ts. Adding a new platform is a one-line entry there; every surface updates automatically. Before this change, adding a platform meant three separate edits, and one always got missed (the “coming as customers hit them” line was stale for a full round).
v0.7.0 — 2026-08-21
Embedding docs — orientation and a real-customer walkthrough.
- /docs/embed now leads with an intro section: what the widget actually is (a Web Component + one script tag, Shadow-DOM isolated), the end-to-end process from signup through pasting, and the security model — the
pk_live_*key is public by design, origin-locked at the server, no secret key exists, and rotates from the console. Same mental model developers already know from Stripe’spk_live_*publishable keys. - /docs/embed/example — new See it in action page with three annotated screenshots from Second Baptist Church Houston: the “Ask Second” launcher tab on the church homepage, a live Q&A about grief with numbered citations, and a citation click jumping the video to Dr. Ben Young’s exact moment on the five stages of grief.
Sidebar under Embedding the widget now reads: intro → Platforms → See it in action → Allowed origins → Customization (CSS).
v0.6.6 — 2026-08-21
Docs tables — column 1 stops breaking mid-token.
On the customization page (and any docs table where column 1 is a CSS variable name or key), inline-code tokens like --podsaid-input-fg were wrapping onto two lines. Column 1 now expands to fit the widest cell and code tokens stay whole. Horizontal-scroll fallback on narrow phones still applies.
v0.6.5 — 2026-08-21
Every platform embed page now points to the brand-matching guide.
Every platform page under Embedding the widget → Platforms now ends with a Match your brand section that notes the Shadow DOM isolation (the host site’s CSS can’t reach the widget and vice versa) and links to Customization (CSS) for the CSS variables and Shadow Parts. Before: only one page (Subsplash) linked to the customization guide; a customer arriving on any other platform page via search would never discover it.
v0.6.4 — 2026-08-21
Three more embed guides — universal fallback, Webflow, and React.
- Any site (plain HTML) — new universal fallback guide covering the raw snippet, where to paste it in a hand-written HTML page, static-site-generator quirks (Hugo / Jekyll / Eleventy templating braces), server-side templating (Rails ERB / Laravel Blade / Django / PHP), and how to test locally without hitting a CORS wall from
file://. Any platform we don’t have a dedicated page for lands here. - Webflow — Project Settings → Footer Code for site-wide (recommended), per-page Custom Code, HTML Embed element for inline placement. Notes the free-plan restriction and the Designer-preview vs. published behaviour.
- React — for Vite / Create React App / plain React SPAs. Covers the loader-in-
index.htmlpattern, the JSX kebab-case-attribute gotcha, and TypeScript’sJSX.IntrinsicElementsdeclaration.
The Any site (plain HTML) page is now the first entry under Embedding the widget → Platforms in the docs sidebar — anyone whose platform isn’t in the list finds the universal path first.
v0.6.3 — 2026-08-21
More embed platforms + tidier docs sidebar.
Three new platform install guides landed in the docs:
- Subsplash — the church-platform incumbent. Covers the per-page Code block, site-wide Settings → Code → Header, and the keyboard-only paste quirk.
- Rock RMS — for churches running their public site on Rock. Two install paths (HTML Content block per page, Site Page Header for site-wide) plus a Lava-brace future-proofing note and the block-cache gotcha.
- Wix — recommends the site-wide Custom Code path over the per-page HTML Embed element, which sandboxes into an iframe and traps the floating launcher.
The docs sidebar under Embedding the widget now groups all per-platform pages under a Platforms subnode so the tree stays legible as more platforms land — Allowed origins and Customization (CSS) stay at the top level next to it.
v0.6.2 — 2026-08-20
Mobile polish across the board.
Two related improvements to how the console reads on phones:
- Docs navigation now works on phones. Replaced the easy-to-miss floating action button with an inline “Docs menu” toggle at the top of every docs page. Tap to expand the whole docs tree below it; the current page name shows in the toggle button so you always know where you are. Menu closes automatically when you tap a link.
- Pricing + affiliates render as cards on phones. The tables now stack as cards — no more sideways scrolling to see the annual column. Each tier is its own card with the range as the header and the prices stacked as label-value pairs beneath. Alternating light/dark backgrounds keep the same rhythm as the desktop table.
Desktop layouts unchanged.
v0.6.1 — 2026-08-20
Mobile polish: hamburger nav, scrollable tables.
- The top navigation now collapses into a hamburger menu on phones — no more items running off the right edge with no way to reach them.
- The pricing and affiliates tables now scroll horizontally on narrow viewports instead of clipping the rightmost column. All columns stay reachable with a swipe.
Desktop unchanged.
v0.6.0 — 2026-08-20
Pricing table gets annual, new affiliate program, bigger fonts.
Three changes in one release:
- Annual pricing column.
/pricingnow shows monthly and annual side by side. Annual is 10× the monthly rate — pay for 10 months, get 12. On the \$9.99/mo tier that’s \$99.90/year; on the \$59.99/mo tier, \$599.90/year. - Affiliate program. New
/affiliatespage. Refer a paying customer, earn 50% of their first annual payment as a one-time payout, 30 days after their payment clears. Bigger tiers pay bigger commissions — about \$50 at the small-church tier, up to \$300 at 2,500–3,500 feed items. Applications hand-onboarded via email for now. - Bigger, more legible text. Bumped the root font size 16 → 18px. Every text size on every page scales up ~12% — headings, body copy, buttons, nav, docs, tables. Nothing else moves; layout proportions are preserved. Continues the legibility work from #43.
/affiliates is linked from the top nav and docs footer.
v0.5.1 — 2026-08-20
Fix: pricing page 500.
The pricing page shipped in v0.5.0 was returning 500 in production because it used Number.toLocaleString() for the range formatting — Cloudflare Workers strips down Intl support, so the call throws at SSR time even though local builds pass. Swapped for a plain regex comma formatter. No visual change.
v0.5.0 — 2026-08-20
Pricing page.
A public /pricing page shows the eight tiers by feed size — how many episodes or sermons are in the feed you’re embedding. Under 100 items is free; from 100 up, pricing scales in steps to \$59.99/month at 2,500–3,500. Above 3,500, get in touch.
Every tier gets the same widget, chat, citations, and search — the only thing that varies with tier is the monthly price and (on Free) the “Powered by PodSaid” footer and search cap.
Linked from the top nav and the docs footer.
v0.4.0 — 2026-08-16
Accept your invite and land in your feed.
Invited customers now click the link in their invite email, land on a personalized welcome page for their feed, sign up, and arrive at a dashboard already linked to it. No more empty landing.
New:
- Personalized
/signup?invite=<token>landing page — shows the feed name, pre-fills the invited email - Friendly status pages when an invite is expired, revoked, or already accepted
- Automatic feed linking on signup completion: your
account_feed_linksrow is created when you finish signing up via the invite link - Empty-state on
/dashboardfor accounts that don’t have a feed linked yet, pointing at[email protected]
v0.3.0 — 2026-08-16
Sign in with Google or GitHub.
Third-party sign-in via OAuth. Church staff already on Google Workspace can create an account in one click. GitHub sign-in for the tech-podcaster segment. Both alongside the existing email + password path.
New:
- “Continue with Google” button on sign-up and sign-in pages
- “Continue with GitHub” button on sign-up and sign-in pages
- New OAuth users get their
customer_accountsrow created automatically at first sign-in
v0.2.0 — 2026-08-15
Password reset, email verification, branded emails.
Full email-based recovery flow. Confirmation and reset emails styled to match the console — no more generic Supabase templates.
New:
- Forgot-password link on the sign-in page
- Password reset flow: request → email → set new password → signed in
- Email verification required on sign-up: new accounts land on a “Check your email” page until they click the confirmation link
- Branded email templates for confirm-signup and reset-password
v0.1.0 — 2026-08-15
Sign up and sign in with email + password.
Initial customer console. Create an account, sign in, and land on a dashboard shell.
New:
- Sign-up page at
/signup - Sign-in page at
/login - Sign-out (POST-only)
- Placeholder dashboard at
/dashboard— three cards for keys, usage, and account (all populated in later releases) - Route protection: only signed-in customers reach the dashboard; unauthed visitors bounce to
/login?next=<path>
About versioning
We follow semantic versioning:
- Major (
x.0.0) — will bump to1.0.0when we consider the console stable + committed to backwards compatibility. Currently in0.x. - Minor (
0.x.0) — a new user-visible feature or a meaningful behavior change. - Patch (
0.x.y) — fixes, small polish, no behavior change from a customer’s perspective.
The version reflects the customer console at console.podsaid.com. Backend, admin tools, and other internal services version separately.