Changelog
Listed below are the key changes in each update release, the newest release is listed first.
v0.67.0 - 2026-09-14
Changed
- Docs: the search page records paging and highlighting; Projects & tags and Usage & analytics match the app's labels.
v0.66.0 - 2026-09-14
Changed
- Docs: the Timeline page is now Artifacts, and a new Search page covers the cross-workspace search.
v0.65.1 - 2026-09-14
Fixed
- Docs: the export page described a wiki-export gap that has since been closed. It now says what an archive of a wiki actually contains.
v0.65.0 - 2026-09-14
Added
- Docs: a Wikis page, and the wiki's corner of sharing, billing, the timeline, versions, lifecycle, review, recall, the glossary and the client walkthrough. The public docs were three weeks behind and described a Kythene with no wikis in it.
v0.64.4 - 2026-09-13
Fixed
- Fixed a crash on startup. The previous release shipped a shared-library version that could not boot with this site's production configuration, so it restarted in a loop and served nothing.
v0.64.3 - 2026-09-13
Fixed
- The connect page is served on both the marketing site and the app, and nothing told search engines which one was the real address - so they were ranking this copy while the app claimed it. This copy now names the app's page as the canonical one, so the two stop competing with each other.
v0.64.2 - 2026-09-07
Fixed
- The --port flag works on the command line again. Config-arg registration moved from preRun into main before Execute: cobra parses argv before PersistentPreRunE runs, so flags registered from preRun were registered after the command line had already been rejected with "unknown flag". Environment variables and config.yml were never affected.
- Picks up the shared-library fixes. A HEAD request now returns the same Content-Type as its GET, where before it returned none whenever the type was sniffed rather than set - that is what link checkers, uptime monitors and preview scrapers send. Rendered HTML that sets a status before writing its body (every error page) now carries Cache-Control: no-store instead of no directive at all. A POST to a path that also has a content page falls through to the router rather than being answered with the rendered page. And the shared frontend bundle is ~176KB smaller, the rich-text editor no longer pulling in prismjs for highlighting that was never rendered.
- Picks up the shared-library fixes. The avatar in the page chrome shows real initials again for a display name whose last word is bracketed or punctuated: it took the first letter of the first and last words, so "QA Bot (admin)" came out as "Q(", which reads as clipped text rather than initials - and the avatar is on every screen. Operator push alerts now also fire on the transition into a condition rather than on every observation, so a problem that persists notifies once instead of on every check.
v0.64.1 - 2026-08-31
Fixed
- The icons went back to filling their canvas. Redrawing the mark made it narrower than the one it replaced, and the icon files kept the old framing, so every favicon and app icon lost about a sixth of its width and gained a band of empty space. The brand icon also got its rounded plate back, which the recut had dropped.
v0.64.0 - 2026-08-29
Changed
- The Kythene mark has been redrawn. The two circles now sit at half strength under a solid seven-unit rim, with the lit lens between them, so the mark keeps its weight while the colour comes right down - it reads as two fields rather than one shape at favicon size, which the old outline version did not. Every icon, the app icon and the social card are regenerated from it.
Fixed
- Authentication hardening from the shared auth library: an API key is no longer dropped by the session middleware, and an API key or refresh token whose account owner is not active is now rejected.
v0.63.0 - 2026-08-25
Changed
- Consent banner: "Accept all" and "Reject all" now carry equal visual weight (via the shared consent library).
- Documentation refresh: cross-document [[wikilinks]] in published work are now documented, plus workspace-guide and usage-page corrections.
v0.62.0 - 2026-08-25
Changed
- The product screenshots are recaptured against a populated demo workspace: real published work with provenance, a collection under block-level review (approved and needs-work with comments), the memory list and a memory's detail (typed, tagged, cited, dedup-linked). They were captured from a markdown-thin workspace before, so they read as work now rather than empty rows.
v0.61.0 - 2026-08-25
Changed
- Product screenshots now sit in a minimal browser frame (window dots + an app.kythene.com URL pill) with a drop shadow, so they read as pictures of the product rather than blending into the page - the marketing site and the app share an exact ground colour.
- The self-host licence portal is now labelled 'Self-host licence' consistently in the nav, mobile drawer and footer - it was 'Account' / 'Account & billing' / 'Your licence', which read as the way into a hosted account it is not.
- The home page fold now leads with what Kythene is and who it's for (a clear headline plus a 'For AI-native teams' line), compresses the pitch to one scannable line, makes 'Start free' the primary call to action (it was a tiny nav button) with 'Connect your AI' secondary, surfaces a live workspace, and moves the naming aside below the fold - so a visitor learns the product in the first few seconds. Positioning wording is sourced from the shared facts catalogue.
- The top navigation is trimmed from nine items to seven: the two comparison pages (vs Obsidian, vs a memory server) now live under a new 'Why Kythene' hub at /why - which makes the case for Kythene in its own right (the review loop, the adherence answer, a live workspace) and links both comparisons - and Self-hosting moves to the footer. The mobile drawer, sitemap and footer are updated to match.
- The home page now states the team advantage outright - what a team gets that a solo user with a memory server doesn't (no re-deriving a teammate's work, no relaying feedback by hand, a new joiner catching up from the workspace) - and the closing call to action names that outcome instead of restating the mechanism.
- The "step one" shot on the home page and collaboration page no longer shows an empty manual publish form - it shows a real timeline of published work, each collection attributed to its author and published over MCP by their instance. Step one is the AI publishing, not a person filling in a form.
v0.60.0 - 2026-08-25
Changed
- A Global Privacy Control (Sec-GPC) signal now overrides a consent choice already on record, not only when no choice has been made yet.
Fixed
- The 'Usage and analytics' icon on /docs and /features no longer renders blank.
- The sitemap and footer now link the changelog with a trailing slash, so they point straight at the served page instead of taking a 301 redirect hop (matching /terms/ and /privacy/).
Security
- The content server behind /docs, /changelog and the legal pages no longer hands out the raw Markdown source of a page (shared platform library fix).
v0.59.0 - 2026-08-23
Changed
- Public docs now cover readable share-link slugs, share-code PINs, and the tag-password/expiry API and CLI.
v0.58.0 - 2026-08-23
Changed
- Public docs now cover usage and analytics (the Usage page, get_usage, and recall query-text handling).
v0.57.0 - 2026-08-23
Changed
- Public docs now cover collection membership editing - adding, reordering and moving files within a collection.
v0.56.1 - 2026-08-22
Fixed
- Web analytics records every page of a visit again, not just the first one. Visitors who had not yet answered the cookie banner were counted as a single-page visit no matter how much of the site they read, which has made bounce rate and session duration meaningless since 16 August. Figures either side of this fix are not comparable.
v0.56.0 - 2026-08-19
Changed
- The cookie consent prompt is now a non-blocking bottom banner (Accept all / Reject all / Customise) instead of a full-screen dialog, so it no longer blocks the page on first load.
v0.55.0 - 2026-08-18
Changed
- The Obsidian comparison page now shows the real numbers from moving our own vault into Kythene - about 470 notes in, 314 curated, landing as 290 memories across 35 projects - instead of promising evidence it never showed. (#98)
v0.54.0 - 2026-08-18
Added
- The features page now carries a sticky "jump to" bar linking each capability group, with an anchor on every section - so the "scan the headings and jump to it" promise in the intro actually works. (#96)
Fixed
- The self-managed licence sign-in page now labels the provider button "GitHub" rather than "Github", matching the app's own sign-in. (#96)
- The sitemap no longer lists the privacy and terms pages twice, and documentation URLs now carry a lastmod reflecting when the docs were last updated, giving crawlers the one freshness signal they act on. (#96)
- Refreshed the published documentation: the CLI reference now matches the shipped binary (ingest's --producer, no --space on catchup, the create-space command) and is stamped with the version it documents, and the docs landing no longer calls Kythene "in early access". (#96, #103)
v0.53.1 - 2026-08-16
v0.53.0 - 2026-08-16
Added
- Cookieless measurement before the consent click: a visitor with no decision on record is now counted with no cookie, no localStorage and no identifier that survives a page load, so first-visit pageviews are no longer lost in opt-in jurisdictions. A visitor who declines is still not measured at all.
Changed
- Cookie banner no longer interrupts visitors outside the EU/UK/EEA/CH/CA, where opt-in consent is not required. Those visitors keep analytics on by default and reach their choices through a Manage cookies link in the footer. The banner is unchanged for visitors in opt-in jurisdictions.
v0.52.1 - 2026-08-15
v0.52.0 - 2026-08-15
Added
- A new /vs-memory-servers comparison page (in the main nav under Product) answering the two objections a team buyer actually has - "why not just use a memory server?" and "why not build it yourself?" - together.
v0.51.1 - 2026-08-15
Fixed
- Server-side analytics events now record which deployment they came from. Without it, events from production, staging and a developer's machine arrived in one project with nothing to tell them apart, so the server-side data could not be filtered or trusted for analysis. This also re-enables the start-up check that catches an analytics endpoint misconfigured to point at the app's own proxy, which collects nothing at all.
- The getting-started docs now include the --scope user flag on the Claude Code MCP command, so the connection stays available across sessions and projects (without it, a new session found no Kythene tools).
v0.51.0 - 2026-08-15
Added
- A 'What's new' changelog is now linked from the footer and listed in the sitemap.
- The /buy page now shows the price, currency, billing period and any seat minimum before the sign-in step, so you see the cost before creating an account.
Fixed
- Accuracy pass across the site and docs: self-hosting now states nothing phones home by default (licence auto-renewal is opt-in), the tax line matches how billing works, the self-host licence lifecycle is described correctly (read-only after the grace window, never a hard stop), generic OIDC SSO and alerting are documented, self-host mail settings are listed, and hosted sign-in is shown as GitHub or Google.
Security
- Security response headers (HSTS, X-Content-Type-Options, Referrer-Policy and frame protection) are now sent on every page.
v0.50.0 - 2026-08-15
Added
- The home page now links to a live, read-only demo workspace - a real Kythene workspace anyone can explore without signing up (200-plus notes, decisions, specs and docs under review), so the proof is a workspace you can open, not a screenshot.
v0.49.2 - 2026-08-15
Fixed
- Marketing pages' meta descriptions are trimmed to a length search engines display in full (several ran 200-340 characters), and the /pricing description no longer says 'in early access' - it has live self-serve checkout.
v0.49.1 - 2026-08-15
Fixed
- Marketing-site polish from the public-surface review (kythene/www#96): the consent banner reads 'Customise' (British English), the GitHub sign-in label is capitalised correctly, in-page anchor links now resolve (content headings get ids, so the cookie-policy link works), and an internal build reference no longer ships inside the connect picker's styles.
v0.49.0 - 2026-08-15
Added
- A branded 404 page: unknown URLs now land on a page with the site nav and links back to home, docs and pricing, instead of a bare 'page not found'. kythene.com 301s unknown paths here, so every stale inbound link hit the bare one.
Fixed
- Marketing and docs accuracy round two: /vs-obsidian no longer overclaims against Obsidian (it concedes the built-in backlinks and graph view and draws the line at personal-notes vs team-memory), it's in the main nav with Obsidian in its title, /features describes share-code expiry and tag passwords correctly, /pricing's meta description is current (no more 'early access'), /memory links out to the pages it discusses, and doc meta descriptions no longer leak raw markdown links.
v0.48.0 - 2026-08-15
Changed
- Accuracy sweep across the marketing pages and docs ahead of the connector-directory listings: the free self-host tier is stated as one user (was five on /features), semantic recall's hosted/self-host condition reads the same everywhere, notification rules describe their real triggers and targets, prices now carry a currency and the self-host minimum is visible, and the unqualified 'nothing phones home' line is replaced with the accurate offline-validation wording. The bundled docs also now document generic OIDC SSO and alerting/expectations, fix the plugin and MCP install routes, and state the personal-to-team promotion model consistently.
v0.47.0 - 2026-08-15
Changed
- Pricing, seat rules and the product positioning now come from a single shared source (code.tamperan.com/kythene/facts) that the storefront, the pricing page and the public GitHub READMEs all read, so the price shown, the price charged against and the price documented can no longer disagree. The SoftwareApplication JSON-LD description is sourced from the same place as the marketing prose. No change to what anyone is charged - Stripe remains authoritative for billing.
v0.46.0 - 2026-08-14
Added
- The marketing site now offers Claude Code users the plugin route on the connect surfaces (homepage CTA / /connect): one install that sets up the connection AND installs the kythene-workflow skill, using the hosted instance's own marketplace. Previously the picker taught MCP-server config only.
Changed
- The primary account CTA across the marketing site is now "Start free" instead of "Open the app", with a reassurance line on the home and pricing calls to action ("Sign in with GitHub or Google - your workspace is created automatically. No card."). It invites a stranger to start rather than telling an existing user to enter.
Fixed
- Marketing pages now scroll the browser document natively instead of an inner container. This unblocks scroll-depth analytics (PostHog reads window scroll, which was pinned at 0), and restores native mobile URL-bar collapse, back/forward scroll restoration, find-in-page and keyboard scrolling.
v0.45.0 - 2026-08-14
Changed
- Telemetry now emits a small headline set of Go runtime metrics over OpenTelemetry instead of the full runtime-instrumentation firehose, cutting metric volume and cardinality in the backend while keeping the signals worth alerting on.
v0.44.3 - 2026-08-14
Fixed
- Tam Central now reports this app's running version and whether it is behind its latest tag. The app started libcentral without a version, so Central could not tell what was deployed.
v0.44.2 - 2026-08-14
Fixed
- The consent link on the sign-in page now carries its action as a data attribute instead of an inline onclick handler, so it works under the strict Content-Security-Policy instead of being blocked by it.
- Each running instance now reports a unique OpenTelemetry service.instance.id, so metrics and traces from multiple instances (and across restarts) are no longer collapsed under a single id in telemetry.
v0.44.1 - 2026-08-12
Fixed
- The clock-alert and view-dashboard icons now render on the docs pages that use them (they were missing from the compiled stylesheet).
- A visitor who disconnects mid-page (broken pipe, connection reset, a closed tunnel) no longer logs a panic on any server-rendered route - a departed visitor is not a server fault. Genuine render errors still fail loudly.
v0.44.0 - 2026-08-12
Changed
- Privacy policy: the analytics section (renamed "Product analytics") now discloses server-side product analytics alongside the consent-gated web pixel - in-app usage, including via the CLI and MCP which have no cookie-consent flow, recorded as structural metadata only (counts, timings, features used) and never the content of memories, artifacts or queries.
v0.43.3 - 2026-08-11
Fixed
- The homepage no longer logs a panic when a visitor disconnects before the page finishes loading (a hit-stop, an early-closing probe, or a dropped connection). A departed client is now logged quietly instead of raised as an error.
v0.43.2 - 2026-08-11
Fixed
- Docs no longer say the kythe CLI cannot supersede a named memory or read deprecated memory - both shipped in CLI v0.6.0.
v0.43.1 - 2026-08-11
Fixed
- Connect picker on the home page inherits the site theme (libapi). Connect screenshot regenerated now the page renders correctly.
v0.43.0 - 2026-08-11
Changed
- Marketing screenshots regenerated against the current app - the previous set predated the workspace overview, the compact memory rows and the filter chips, so it showed a UI that no longer exists. Adds a workspace overview shot, now the front door, on the home page.
Fixed
- The consent banner no longer re-prompts on every page load when the browser is holding more than one consent cookie (libconsent: read the cookie that verifies, not the first one by name).
v0.42.0 - 2026-08-11
Changed
- Docs: new 'Stale memory and supersession' page covering how memory stays current - explicit supersedes, deprecate with a named replacement, reading deprecated memory for audit, and where each operation lives across MCP, API and CLI. Memory pages now group into their own section. Recall documents the chunking and identifier tokenisation that make it work. Enterprise/regulated walkthrough leads with Enterprise.
v0.41.0 - 2026-08-10
Added
- The Connect section shows a Copy button next to the MCP endpoint URL.
Changed
- The Connect page assistant picker is tidier: it starts compact (pick your assistant to reveal its one step), lists assistants alphabetically, and moves the "my client isn't listed" catch-all into an "Other" option at the end.
- The homepage Connect section now says plainly that it connects to the HOSTED Kythene, and that a self-host operator should install their instance first and then follow the Connect steps from inside it (so their assistant points at their own domain).
- The homepage Connect section uses the full page width on larger screens - the pitch on the left, the connect widget on the right - and collapses to a single stacked column on narrow viewports.
Fixed
- Connect page: GUI clients not in a connector directory (Claude Desktop, ChatGPT) now say to add a custom connector pointing at the MCP endpoint, rather than implying it can be found in the built-in connector UI.
- Cookie consent no longer re-prompts on every page load when the site is reached on a host outside its configured domain (a proxy, a dev/preview tunnel, or a misconfigured URL): the consent cookie is host-scoped in that case rather than carrying a Domain the browser rejects.
v0.40.0 - 2026-08-10
Changed
- The self-host guide is trimmed to what an operator actually needs: a minimal quickstart with the licence settings shown as optional, the requirement stated as PostgreSQL 16+ with pgvector and any S3-compatible object store, and pinned example images.
- The homepage "Connect your AI" section is now the shared connect picker: choose your assistant and see the one step to connect it, instead of a fixed one-paste prompt. Same picker as /connect and the app, so they never drift.
Fixed
- Tables across the documentation now render as tables again, not as lines of literal pipe characters (19 tables over 9 pages, including the full MCP tool reference).
- Sign in with GitHub (and the other providers) on the licence portal now works: the buttons sat inside an htmx-boosted region, so the click was intercepted as a background request that could not follow the cross-origin sign-in redirect, and the page appeared to do nothing.
v0.39.0 - 2026-08-10
Added
- Documentation grows from 12 pages to 37, covering every user-facing feature: publishing and versions, recall, memory (linking, promotion, hygiene), review and block-level feedback, the inbox, timeline, presence, projects and tags, sharing and guests, the workspace guide, notifications and webhooks, workspace administration, oversight, archiving/deleting, import/export, billing, account, a glossary, troubleshooting and an FAQ.
Changed
- Telemetry dependencies move to the current OpenTelemetry set (otelslog v0.20.0, otel/log and its exporters v0.21.0, contrib instrumentation v0.70.0). Export behaviour is unchanged; the version holds that had been pinning this stack since 4 August are gone, so a dependency sweep no longer leaves the build un-compilable.
- Scenario walkthroughs are rewritten around what they are actually for - driving Kythene from an AI assistant. Each one now shows the prompts and the assistant's replies for memory, publishing, picking up feedback and acting on a teammate's work, instead of a list of CLI invocations.
- The docs surface is restyled to match the rest of www: pages are grouped into sections in the sidebar, each page carries a mono section eyebrow and a Fraunces display title, headings are anchored and deep-linkable with an 'on this page' rail, and prev/next cards follow the corpus order. The docs home now generates its own index from the corpus rather than a hand-kept list.
Fixed
- The Self-hosting page's sidebar icon rendered blank: docs icons come from frontmatter, which Tailwind's scanner cannot see, so they are listed by hand in input.css and the list had drifted. The list is now complete and a test fails the build if a doc uses an icon that is missing from it.
v0.38.0 - 2026-08-09
Added
- A public connect picker at /connect: the same shared client matrix (Claude Code, Cursor, Codex, Copilot and more, with one-click installs) the app renders behind auth, now available top-of-funnel on the marketing site and pointed at the hosted app. The homepage "Connect your AI" section links to it. (#79)
Changed
- The public site now leads on the review loop rather than shared context. The homepage headline, hero proof, pillar cards and how-it-works beats are rebuilt around a team and their AI instances working on each other's output - publish, review down to the paragraph, feedback back to the author's instance - with memory presented as the substrate underneath rather than the pitch. The page title, meta description and Organization/SoftwareApplication JSON-LD change with it, and the "shared context layer" line is retired from /use-cases, /self-hosting, the AI-native-team scenario and the site footer. /memory now leads on the review gate (nothing reaches the team's instances until someone signs it off) instead of competing head-on for generic AI-memory language. On /features the review, block feedback and approvals group moves to the top, the guest share-code and rendered-preview rows are corrected to state the block-level review guests actually get, and an internal competitive note that had leaked into a public blurb is removed. The one-paste "Connect your AI" section also moves from directly under the hero to the foot of the homepage, so the page argues its case before asking for setup; the hero button still anchors down to it. (#69)
Fixed
- Returning visitors who had installed the retired PWA no longer get a 404 (and a stale cached copy of the old site) from /serviceworker.js - it now serves a tombstone worker that clears caches, unregisters itself and reloads open tabs onto the live site. (#80)
- Seat reporting no longer retries a permanently-missing Stripe subscription every cycle: a resource_missing/404 is now recognised as terminal (via twad.ErrSubscriptionNotFound) and treated as a clean no-op with a single warning, instead of erroring indefinitely. (#81)
v0.37.0 - 2026-08-08
Added
- The marketing site now serves an RFC 9116 security.txt at /.well-known/security.txt (computed Expires, support contact), matching the app apex copy so a standard disclosure address is discoverable on both hosts. (#78)
v0.36.0 - 2026-08-08
Changed
- The pricing page now signposts self-hosting from the two flagship tiers: Free solo notes you can self-host it yourself (linking to the self-host docs), and Team notes it is available hosted or self-host.
v0.35.1 - 2026-08-08
Fixed
- The pricing page now leads to the storefront. The Team and Self-host Team tiers - the two purchasable plans - had buttons that sent buyers into the app or to a contact form, so the /buy checkout had no entrance from the marketing site. They now go straight to checkout (/buy?sku=team and /buy?sku=selfhost-team). A visible "Account" entry point (top nav, mobile drawer, and the signed-in menu) also lets existing customers reach the licence & billing portal, which was previously only reachable by knowing the URL.
v0.35.0 - 2026-08-08
Added
- Self-serve licensee details in the account portal. A signed-in customer can edit the contact name, company and company website their licence is issued to; the change is written to the account and its workspace and propagated onto every licence the account owns, so a corrected key is picked up automatically on the next renewal poll - no re-issue needed. The form states plainly that these details appear inside the licence key. (#72)
Removed
- The marketing site is no longer an installable PWA. It is a public content site, not an app, so it no longer ships a web manifest or registers a service worker, and browsers no longer offer an "Install" option for it.
Fixed
- The seat-report endpoint now rejects a revoked licence (403) instead of letting a holder of a revoked hosted token keep driving its Stripe seat quantity. Expiry is still deliberately tolerated - a renewal in flight must be able to report - but revocation is the immediate kill switch and has no benign window. (#75)
v0.34.0 - 2026-08-07
Added
- Self-host licence keys now name their licensee. A licence carries the customer contact name, work email, company name and company URL, so a self-host install can identify who it is licensed to (and prefill its first-run setup) and a shared key is traceable to the account it was issued to. The admin licence-issue form captures the contact name and company URL alongside the existing organisation and email, and every issued/renewed key is stamped with them. These are display-only business contact details and never affect entitlements. The privacy policy now explains what a licence key contains. (#72)
- Kythene is now buyable from the storefront. A signed-in customer can check out Team (hosted, per-seat monthly or annual) or Self-host Team (per-seat annual, minimum 5 seats) at /buy; Stripe subscription lifecycle then mints, extends, holds (past_due) or lapses the customer's signed licence automatically, with active-until derived purely from the Stripe status so nothing separately records "lapsed". A hosted licence is delivered to the app automatically (retryable background push), and the account portal now shows both hosted plans and self-host keys with a Manage-billing link to the Stripe customer portal. (#73, #74)
- The app can now report seat counts to www at POST /billing/seats (authenticated by the licence bearer), which updates the Stripe subscription quantity - so per-seat billing tracks the real teammate count without the app calling Stripe. (kythene/app#221)
Fixed
- The Stripe webhook is now actually processed. www never handed a jobs manager to libtwad, so every Stripe event was rejected before this; the webhook worker and subscription reconcile now run. (#71)
v0.33.1 - 2026-08-07
Fixed
- Corrected the self-hosting and pricing copy that claimed a self-hosted instance "never calls home" and has "no phone-home". A default install does check in periodically for a renewed licence; the copy now states plainly that licence validation is offline and that you can switch the renewal check off to run fully air-gapped, so the claim matches the shipped behaviour. (#70)
v0.33.0 - 2026-08-07
Added
- Self-host customers can now sign in and manage their licence at /account: view each licence's org, seats, expiry and status, and download the current signed key to install. The key is issued only to the owning account and renews itself automatically. (www#61)
v0.32.0 - 2026-08-07
Added
- Self-host licences are now owned by a customer account (a twad user), the groundwork for the self-host licence portal: an account_id link on each licence, resolved from the contact email (existing licences are back-filled to an account a later verified-email sign-in merges into) and set on new licences at issue. Customer sign-in stays hidden until the portal ships (www#60).
v0.31.1 - 2026-08-06
Fixed
- Restored trace and metric telemetry (OTLP was posting to the collector's bare host URL instead of /v1/traces and /v1/metrics, so it 404'd). Fixed via the tamlib bump (#207).
v0.31.0 - 2026-08-06
Changed
- The /self-hosting page now leads with 'free for a single user' right under the hero, links the actual setup guide at /docs/self-host (the compose, .env and first-run walkthrough) rather than the generic docs index, and drops the no-lock-in section - a worry a self-hoster who already holds their own database, object store and files cannot have. In its place is what a self-hoster wants to know next: requirements, upgrades and how support works. The no-lock-in stance moves to the homepage, where a hosted prospect who does have that worry will actually read it.
- Self-host and Enterprise copy now reads as a serviced sale rather than a vending machine. The self-host enquiry page leads with "Talk to us about self-hosting" instead of "Request a licence", asks about the buyer's environment (where it will run, constraints such as air-gapped, data residency or SSO) rather than only what a licence needs, and its success state describes a person coming back with a recommended shape for their environment - the licence is the last step, not the headline. The same action is worded consistently ("Talk to us about self-hosting") across the pricing, self-hosting and Enterprise use-case pages, and the Enterprise CTA now promises to work out the right setup with you rather than to issue a licence that fits.
- The use cases now lead with Enterprise rather than "regulated", which had narrowed the page to a niche in its first sentence. The fifth card and its detail page are retitled Enterprise (regulated stays as a later proof point), the slug moved to /use-cases/enterprise with a 301 from the old /use-cases/regulated-and-enterprise, and the index meta description updated to match. Every scenario now gives block-level review - commenting on a specific block of an artifact, requesting a change and approving it, with the feedback landing back in the author's AI over MCP - equal or leading billing alongside memory, which it never had before. A solo-review angle is added to AI Pathfinder (critiquing your own AI's output block by block, notes carried into the next session), and the Enterprise scenario gains a governance section - admin visibility and audit trail (shipped), retention controls and GDPR/DSAR support (scoped per Enterprise deal) - worded so it never claims a certification we do not hold or a data-protection capability that is not yet live.
Fixed
- The marketing site had no navigation on a phone - the top bar held only "Open the app" and a dead account icon, the seven nav links vanished below 768px with no replacement, and the hamburger and drawer were gated to signed-in users (almost nobody on the marketing site). The wordmark plus vesica mark now show on every page including the homepage, the JS-free DaisyUI drawer is un-gated for everyone and filled with all seven links (lightly grouped, with Open the app as a full-width button at the bottom), the breakpoint moves from md to lg so tablets get the drawer too, the current page is highlighted in both the desktop nav and the drawer, the bar is sticky, and the account icon that pointed at the www sign-in dead end is removed. Works with JavaScript disabled; verified at 390px with no horizontal overflow.
v0.30.0 - 2026-08-06
Added
- A Self-host Team tier at $150 per user a year, filling the gap between free single-user self-hosting and Enterprise. Previously a team that wanted to run Kythene on its own infrastructure had to book a sales call. Same per-seat price as hosted - you are paying for the product, not the hosting - billed annually, from five users, with best-effort email support.
Changed
- Team is now $15 per user a month, or $150 a year (two months free), up from $9/$90. The old price sat at less than half of every comparable tool and read as a toy rather than something you would trust with a team's institutional knowledge. Changed while there were no paying customers, so nobody's price moved.
- Refreshed every product screenshot on the site. The old set was captured on 2 August and predated the access-control work, the inbox, the workspace changes and the newer Connect page, so several no longer matched what a visitor sees after signing up. The new set also shows inline block feedback and an approval on a real document, which the old ones did not.
v0.29.0 - 2026-08-06
Changed
- The app icon now fills its tile properly. The mark previously occupied about 58% of the icon's width, leaving a wide margin that made it look small and timid on a home screen or in a browser tab; it now sits at 84%. The apple-touch icon is also supplied square rather than pre-rounded, since iOS applies its own mask and was rounding it twice.
- Reframed the /vs-obsidian comparison around a real notes-vault migration - recall by meaning not keyword, faceted not foldered, a real link graph, living notes, collective team+AI memory, and no lock-in via markdown export that round-trips back to Obsidian; added a footer link (#52).
v0.28.0 - 2026-08-05
Changed
- Weave the setup-speed claim through the site (#45): the hero, the one-paste connect section, the pricing free tier and the closing CTA now say you connect in a few minutes - one paste and an OAuth prompt, no keys to copy.
v0.27.0 - 2026-08-05
Changed
- The homepage one-paste setup now states it connects to the hosted Kythene at kythene.com, and tells self-hosters to install their instance first - it serves the identical prompt at their own domain - with a link to /self-hosting (#51).
Fixed
- Icon URLs (favicon, apple-touch, PWA manifest) are versioned with the build version so a rebrand busts the edge cache immediately (#171).
v0.26.1 - 2026-08-05
Fixed
- Self-host licence issuer: /licence/current now caps the issued rolling token to the licence's paid-through date (plus a small grace) rather than a fixed 45-day window, so a lapsed subscription can no longer keep an install fully licensed for weeks of unpaid time (#50).
v0.26.0 - 2026-08-05
Changed
- Journey audit - one door per persona (#49): removed the www invite surface (/invites/... only added people to a meaningless www "space"; the app owns membership), and a signed-in visitor now goes to the admin console (admins) or the app (everyone else) instead of the leftover "space" UI. With the sign-in redirect (#48), www no longer surfaces a second, confusing account/workspace/invite path - it is purely marketing plus admin.
v0.25.1 - 2026-08-05
Fixed
- Closed the new-user trap on the marketing site (#48): the "Sign in" nav CTA is gone (the app owns product sign-in/sign-up), and www's /signin and /signin/go now redirect to the app instead of minting a dead second account and stranding the visitor on a blank page. Admin sign-in on www is unaffected (direct /auth provider login). The residual sign-in copy no longer promises onboarding it can't deliver.
v0.25.0 - 2026-08-05
Added
- One-paste agent setup on the homepage (#27) and an "Add to Cursor" one-click install deeplink (#36). A new "Connect your AI" section copies a single self-setup prompt that connects any MCP assistant (Claude Code, Cursor, Codex, Copilot) to Kythene; the getting-started guide leads with the same one-paste prompt.
- New /features page (#44): a skimmable, capability-shaped reference grouped by pillar - publish & versioning, timeline & visibility, review & approvals, memory, sharing & access, connect (MCP/CLI), workspaces & admin, and self-host & portability - each group linking into the docs. Linked from the nav, footer and sitemap with a breadcrumb.
- Pricing page now shows the annual Team option ($90 per user / year - two months free) alongside the monthly price, matching the live Stripe catalog.
- New /collaboration page (#42), sibling to /memory: publish anything, the shared timeline, block-level review and approval recorded as provenance, and the feedback loop back to the author's AI over MCP - the least-contested pillar, given a full page. Linked from nav, footer, sitemap and breadcrumb.
- Self-hosting page now states our anti-lock-in stance plainly - export your whole workspace any time, scheduled backups, and a self-host option - so leaving is a supported feature, not a fight.
Changed
- Refreshed every product screenshot (#43) - timeline, collection (with inline block review + approval), memory list, memory detail, connect and publish - captured from a realistic demo workspace and consistent at 1440x900.
v0.24.1 - 2026-08-05
Fixed
- Pricing: the feature ticks were an arbitrary mix of two brand colours within the same list. They are now one colour throughout, so the plan cards read as a single list rather than an accidental pattern.
v0.24.0 - 2026-08-05
Added
- Getting started now covers connecting Cursor, Codex and Copilot alongside Claude, and says plainly that a team does not have to agree on one assistant - everyone connects what they already use and shares the same workspace.
- SEO: structured data (JSON-LD) across the marketing site - Organization and WebSite site-wide, SoftwareApplication on the homepage, Product/Offer on pricing, and BreadcrumbList on use-case and docs pages - so search engines and AI answer engines can read what Kythene is and what it costs (www#41). Also adds /llms.txt, the emerging convention for telling AI agents what a site is and where its docs live, and a Sitemap line in robots.txt.
Changed
- The public site now answers the question every shared-knowledge product gets asked - "will my AI actually use it?" - head on: a new homepage section and a reframed memory-page opening explain recall in the flow of work, review before anything reaches the team's instances, citations back to what an output leaned on, and deprecation that stops stale knowledge surfacing. Also names the assistants we work with (Claude, Cursor, Codex, Copilot and any other MCP client) rather than "and more", and says on the homepage that guests and AI instances never cost a seat (www#28).
- Terms: the cancellation section now distinguishes business customers (purchases non-refundable) from consumers in the UK and EU, who have a statutory 14-day right to cancel a digital-services purchase unless they have expressly consented to immediate supply. The previous blanket "all purchases are non-refundable" did not reflect consumer law (www#40).
Fixed
- SEO: the homepage had no canonical URL - the one page most likely to be linked, and the one the apex redirects to (www#41). The contact page had no meta description and its title was a bare "Contact"; both now match the rest of the site.
v0.23.0 - 2026-08-04
Added
- Retired domains can be permanently redirected to a replacement site (redirect_to/redirect_hosts) - used to point the old artifactz.* domains at kythene.com.
v0.22.0 - 2026-08-04
Added
- Operator alerting on key account events (new sign-ups, contact submissions, purchases).
Changed
- Stripe live-readiness / trading disclosures (#24): terms, privacy and the site footer now name the operating entity - Kythene is a trading name of Tamperan Ltd (registered in England and Wales, company number 17324867, registered office in Manchester) - and publish a support email ([email protected]) alongside the contact form. Terms and privacy carry a last-updated date. (Mailbox routing for [email protected] is an ops step.)
v0.21.0 - 2026-08-03
Changed
- Homepage hero proof is now a plain-language two-step loop (you publish a result -> a teammate's AI recalls it and builds on it) instead of a CLI/terminal demo, so the lead proof is legible to any role, not just developers. Removes the incorrect shell commands too. (#23)
v0.20.0 - 2026-08-03
Changed
- www<->apex canonicalisation is now config-driven (follows KYTHENEWWW_URL) instead of a hardcoded www->apex fold. With KYTHENEWWW_URL=https://www.kythene.com the storefront serves www.kythene.com directly (and folds a bare-apex hit to www), which is what the apex URL swap needs; with the apex URL it still folds www->apex as before. (#21)
v0.19.0 - 2026-08-03
Changed
- Homepage 'How it works' now shows the feedback loop: 01 kythe, 02 timeline (your team sees it and feeds back), 03 inbox (the feedback comes back to your AI, which acts on it over MCP), 04 recall (the context persists and any teammate's AI recalls it). Fixes the old step-02 'inbox' mislabel and closes the loop instead of ending on passive recall. (#22)
- 'Open the app' links now point at the app's sign-in, so a signed-out visitor lands on the sign-in page and a signed-in visitor is taken straight into the app (no bounce back to the marketing site).
v0.18.0 - 2026-08-03
Changed
- Prod URL-swap groundwork (#21): the 'Open the app' links are now config-driven (app_url) via a single appURL template helper instead of 12 hardcoded hosts, so they never drift. Default is the apex kythene.com, the app's home after the swap.
v0.17.0 - 2026-08-03
Changed
- Free self-host is now presented as single-user across pricing and self-hosting (multi-user = Enterprise self-host) (www#19). The "Solo developer" use case is repositioned as the "AI Pathfinder" - aimed at anyone ahead on AI in their organisation, not just developers - at /use-cases/ai-pathfinder (old URL 301s) (www#20).
v0.16.1 - 2026-08-03
Fixed
- Docs no longer overflow horizontally on mobile: long code lines and wide tables scroll inside their own box, and long inline code and URLs wrap (www#18).
v0.16.0 - 2026-08-03
Changed
- Self-host licence issuance is live: the issuer signing key is configured in prod, so /licence/current issues and reconciles licences and admins can mint at /admin/licences. The issuer key may be supplied as a base64-wrapped PEM (single-line secret).
v0.15.0 - 2026-08-03
Added
- New comparison page at /vs-obsidian ("Nicer than your Obsidian vault") - an honest side-by-side of a personal vault versus Kythene as a team + AI shared brain (timeline, inline review, recall over everything, remote/mobile). Linked in the sitemap (www#17).
v0.14.0 - 2026-08-02
Added
- Request-a-licence flow for self-hosting: the self-hosting page now leads with free-for-up-to-5 plus a "request a licence" enquiry form (organisation, seats, message) that routes to admin licence minting. The pricing self-host tier and CTAs point at it (www#16).
v0.13.0 - 2026-08-02
Changed
- The docs now cover the kythe review command for block-level feedback.
v0.12.1 - 2026-08-02
Fixed
- Docs rendering is more robust - a doc authored with Windows line endings still has its frontmatter recognised, and a meta description that hits the length cap truncates on a character boundary (no broken multi-byte characters).
v0.12.0 - 2026-08-02
Changed
- The docs now describe recall spanning memory and published work by default (the CLI and MCP reference pages).
v0.11.0 - 2026-08-02
Added
- The Enterprise plans now spell out white-label branding, custom integration with corporate systems, and compliance support for your HIPAA, SOC 2 or ISO 27001 programme (security documentation, a BAA on request, and self-host for data residency). (#15)
- A Claude skill & plugin reference page in the public docs, and clearer wording that recall returns each memory with its full artifact content. (#66,
v0.10.0 - 2026-08-02
Added
- Public documentation at /docs - the same content as the in-app help centre, readable before you sign up (and indexable for search), with the getting-started guide folded in as its first section. (#14)
v0.9.0 - 2026-08-02
Added
- New pages and richer homepage: product screenshots (click to enlarge) illustrating the timeline, memory and the publish-see-recall loop; a detail page for each use case; a Memory page explaining individual and team memory; and a Getting started page for connecting an assistant and using the CLI. (#9, #10, #11, #12, #13)
v0.8.0 - 2026-08-02
Changed
- Copy now calls your account a "workspace" and reserves "project" for a scope within it, matching the product. The Team plan highlights unlimited projects with pooled workspace storage. (#7)
v0.7.0 - 2026-08-02
Changed
- New brand across the site: the Vesica mark (two overlapping rings) and the Ember & Iris palette, matching the product. Retires the old double-bond mark and amber/cyan. (#8)
Fixed
- The sign-in page logo no longer fails to load. (#6)
v0.6.0 - 2026-08-01
Added
- Self-host licence issuance on the storefront: an admin surface to mint, renew and revoke enterprise self-host licences, and the /licence/current reconcile endpoint the self-host app polls for rolling renewal (bearer-authenticated by the licence itself; 200 fresh token / 401 forged / 404 lapsed-or-revoked / 503 issuance-off). Issuance stays disabled until a signing key is configured.
v0.5.0 - 2026-08-01
Changed
- Pricing page updated to the confirmed five-rung model (Free solo / Free self-host / Team / Enterprise / Enterprise self-host), split into hosted and self-host, with the per-signed-in-seat model stated (agents and guests free). Numbers still deferred.
v0.4.0 - 2026-07-31
Added
- Marketing site build-out: the homepage now sells the offer on one page (problem -> what it is -> benefits -> how it works -> who it's for -> why), plus dedicated Use cases, Pricing and Self-hosting pages, a marketing header nav, and a shared multi-column footer that surfaces Privacy and Terms.
v0.3.0 - 2026-07-31
Changed
- Rebuilt the marketing site on the Kythene brand: dark-first ink & signal theme, Fraunces + IBM Plex fonts, the double-bond mark as favicon and logo, a new hero with the 'Make it known.' strapline, plus favicon/OG assets, a footer, and SEO metadata. Removed internal engineering notes from the public changelog.
v0.2.0 - 2026-07-30
Added
- www.* -> apex 301 redirect middleware (canonicalisation, edge-config independent)
v0.1.2 - 2026-07-30
Fixed
- Remove the unused scaffold example API/proto (stale generated code panicked at startup); www is a marketing site with no API surface
v0.1.1 - 2026-07-30
Fixed
- Add lib/licence pin so the storefront issuer builds in CI (was masked by go.work)
v0.1.0 - 2026-07-30
Added
- Frontend asset manifests: libs' web/templates, web/styles and web/scripts are wired into the build automatically via 'tam assets' (//go:generate + make assets), instead of per-app @source/@import lines.
- SSO directories now support AllowedEmailDomains to restrict sign-in to users at specific email domains
- Kythene storefront/marketing site on the apex; licence issuer wiring (site-only at launch)
Changed
- Database connection pool MaxConns is now managed by the tamlib dbx per-app budget, replacing an unconstrained ceiling
- Job worker concurrency is now capped to the database pool budget, preventing workers from exhausting the connection limit under load
- AI completions now route through the Anthropic native messages API when provider is configured as anthropic, replacing the OpenAI wire-format fallback
- Anthropic tool-loop completions now apply prompt caching on the shared prefix, reducing input token cost on multi-round calls
- DB pool defaults: the template now keeps a single warm connection (MinConns=1) and lets dbx govern idle reaping, instead of pinning MinConns=2 and a 1h idle timeout. Cuts each app's never-reaped, at-rest connection footprint on the shared Postgres so the estate's many pools do not collectively approach max_connections (#41).
- Scaffolded apps now default to full viewport width - dropped the bodydiv max-width:1860px crop. Pages keep their own px-4 padding; apply a readable max-width at the element level where needed, not as a page-level crop.
Fixed
- Placeholder branding now renames cleanly: the app short description and README use the project token as a standalone word (was
SKELETON/Skeleton), sotam newyields<Name> appinstead of a mangled<NAME>ETONstring. - PostHog analytics proxy now forwards visitor IP and user-agent, restoring accurate geo and device attribution
- US visitors geo-located by country only now see the CCPA Do-Not-Sell link in the consent banner.
Security
- Platform auth hardening from the twad/tamlib bump: session tokens are now stored hashed with sign-in state held server-side, OIDC refresh re-checks scopes, invite/member operations are permission-gated, and the HTTP server gains an idle timeout and header caps.