Changelog

What's new.

Every public Klott release, newest first. Grouped by Added, Changed, Fixed, Removed. Missing something? Send a feature request.

Request a feature →
  1. v1.17.02026-07-10

    Changed
    • Self-hosting is no longer promoted on the marketing site — it's a planned feature for later, so its navigation link, footer link, pricing section, guide section, and homepage feature card have been removed while it's…
    • Standardized on "notes" as the word for what you write in Klott (the site variously said docs, notes, and "document editor") — "Klott(s)" stays as the branded name (HAG-1192).
    • The editor's two side panels now open to the same, dynamic width on phones and tablets: they fill the screen apart from a 32px gutter that keeps the document visible behind them, and stop growing at 420px.
    • The marketing navigation now switches to the hamburger menu below 900px (was 640px), so the links no longer wrap and break mid-word on tablet-width screens (HAG-1198/1199).
    Fixed
    • With "reduce motion" turned on, the homepage no longer stays blank below the hero — every section, including the "Join the waitlist" call-to-action, now renders visibly instead of being stuck invisible (HAG-1142).
    • Social link previews on the marketing pages now show the Klott card image again (homepage, pricing, guide, changelog, self-host, thank-you were missing it) (HAG-1188).
    • The sitemap now points at the real document URLs instead of paths that returned 404 (HAG-1187).
    • The "Request a feature" page now uses the same navigation and footer as the rest of the site — it shows the Beta tag and the "Join the waitlist" call-to-action instead of its own out-of-date bar (HAG-1191).
    • The waitlist dialog now keeps keyboard focus inside itself while open and returns focus to the button that opened it when you close it (HAG-1201/1202).
    • Raised the contrast of dim helper text — the editor's "Press /" hint, the pricing storage line, and the request form's "Optional" label — to meet WCAG AA (HAG-1190).
    • The homepage browser-tab title no longer repeats the brand name twice (HAG-1189).
    • Larger tap targets for the mobile mood switcher, menu button, logo and footer links (HAG-1200).
    • The Python code block's result box no longer pairs rounded corners with a single left border (HAG-1197).
    • The tag-filter tooltip in the Klotts list now reads "any"/"all" in sentence case instead of all-caps (HAG-1196).
  2. v1.16.02026-07-10

    Security
    • The waitlist signup limit now counts an IPv6 /64 as one client instead of each address separately, so a single machine can no longer spin through addresses to slip past the cap or pile up throwaway rate-limit files.
    Added
    • Homepage sections can be rearranged — hover to grab the six-dot handle and drag; your order is remembered.
    • Beta waitlist — a "Join the waitlist" signup (launching August) with a new append-only, rate-limited waitlist endpoint.
    Changed
    • The marketing site now presents as a Beta: primary calls-to-action collect waitlist signups instead of opening the editor (the app stays reachable via the hero).
    • New homepage hero: a large, playful animation that composes a note in Markdown live — a burst of glyphs resolves into a slash menu, a heading, and text — replacing the ASCII "KLOTT" wordmark above the fold.
    • Pricing page: cleaner layout and spacing, removed the redundant comparison table, and real prices — Free $0, Boom $5, MegaBoom $10.
    • The homepage mood switcher now offers only the three real writing moods (Clean, Editorial, Data) — the greyed-out "in the app" preview moods are gone.
    • Removed the decorative scribble doodle from the homepage.
    • On mobile, the homepage mood switcher now sits inline next to the logo like on desktop, on a solid mood- and theme-matched background.
    • Homepage moods are more colorful — Editorial gains a yellow accent in dark mode, Data gets white buttons in dark mode, and the mood accent now carries through badges, links and the mood picker.
    • The homepage ASCII backdrop characters now reflect the selected typeface (serif ink marks, mono terminal glyphs, clean sans), not just the mood.
    • The mood pill now reads simply "Mood", and the light/dark theme switch moved into the mood dropdown.
    • Homepage/self-host copy no longer uses the word "wall".
    • The mood dropdown now stays open while you switch mood and theme — it closes only when you tap outside.
    • Toned down the homepage moods — calmer, less saturated colour while keeping each mood distinct.
    • Removed the "Let's klott" button from the mood dropdown.
    • Shortened the "What is Klott" section.
    Fixed
    • The image options toolbar now caps to the space actually available above/below the image and scrolls if it doesn't fit, so it never renders off-screen near a viewport edge (especially on mobile).
    • Pressing Enter on the homepage now always opens a fresh line with the "Press /" command affordance, matching the in-app editor.
  3. v1.15.02026-07-09

    Added
    • Klott can now run as a native macOS app: a configurable API host lets a desktop build talk to klott.cc across origins, with the groundwork for a Tauri wrapper of the existing editor (HAG-867).
    • The homepage ASCII backdrop now appears on every marketing subpage.
    • Sections across the homepage now slide and fade in as you scroll.
    • The closing ASCII moment at the bottom of the page now masses the Klott logo mark itself, and the Editorial and Data moods get their own background gradients.
    Changed
    • The mood switcher is redesigned: a labelled pill with a "Let's klott" call-to-action at the bottom, and the emoji glyphs are gone.
    • The pricing page's Recommended card now adapts to the active mood.
    • Backend CORS is centralized into one shared helper across every API endpoint, and the native app's origin is allow-listed (no change to the web app's behavior) (HAG-867).
    Fixed
    • Typing on the homepage no longer shifts the layout — line height stays fixed even on headings, the hero reserves its height, and the above-the-fold doodle is removed.
  4. v1.14.02026-07-08

    Added
    • The homepage ASCII backdrop now forms a closing "KLOTT" brand moment at the bottom of the page as you scroll down, mirroring the hero — and its character set adapts to the active mood (Boom graffiti glyphs, Editorial…
    • Global doodle overlay now has an erase tool — remove individual strokes, collaborative and append-only via tombstones (HAG-34).
    • `/guide` now uses the same design system + navigation as the rest of the marketing site (HAG-875).
    Changed
    • The marketing "Editorial" mood is warmer (parchment background, warm ink).
    • The mood switcher and light/dark theme toggle now appear on every marketing page via a single shared nav; the mood dropdown lists all nine app moods — Clean / Editorial / Data are selectable and the rest are shown…
    • Nav "Almost free" → "Free (kind of)"; the hero subcopy now ends "…smash `/` and start writing."
    • Consistent semantic landmarks (nav / header / main / footer) across all marketing routes via a shared footer; `/thank-you` is no longer a landmark-less dead end (HAG-919).
    Fixed
    • Homepage text is selectable again — click-to-edit was collapsing an in-progress selection.
    • Editing homepage copy now persists when you press Enter.
    • No more dark flash when switching moods or navigating between marketing pages (the mood boot script wasn't re-running on client-side navigation).
    Removed
    • The homepage scroll doodles and the "Reset edits" button.
  5. v1.13.02026-07-07

    Added
    • ASCII-art brand backdrop on the homepage — a full-page animated ASCII gradient (mood + light/dark aware) with the KLOTT wordmark massing out of the field and dispersing on scroll.
    • Per-mood doodle brushes — each mood paints with its own line style, colour and texture (magical glitter-watercolor, Boom thick-marker, clean neutral pen, charcoal Pirate, confetti Party, phosphor Data, glossy…
    • New "Soccer" mood — a green-pitch surface, soccer balls that fly and bounce when you type ⚽, and ⚽ list bullets.
    • Fast ~3-second new-user onboarding animation — auto-types a first title, then tours the left and right panels, once per new user, on desktop and mobile.
    • Full-page browse experience for klotts and klippets — a spacious library view with search, alongside the compact panel.
    • Trivector-style version history — a pinned "Current version" row, an on-demand "Save version" named snapshot, relative dates (incl.
    • Free / Boom / MegaBoom pricing — three storage-based tiers billed monthly through Stripe (MegaBoom unlimited), with an editable comparison.
    • Full-page "Request a feature" experience at /request — a Klott-native markdown writing surface plus a mood-brush doodle canvas.
    • Editable homepage — every text block, including the pricing and changelog copy, is now click-to-edit.
    • Homepage light/dark theme toggle, and a mood dropdown limited to Clean / Editorial / Data (with the app's mood emoji) plus a "more moods in the app" note.
    Changed
    • Homepage: cleaner above-the-fold with "What is Klott" moved below the fold; the product noun shifts from "docs/documentation" to "notes"; "Write loud." replaced with "Write together." / "Docs that feel alive."; the…
    • Editor: side panels now share the exact page/mood background (no darker slab); muted grey text is translucent so it blends with any mood; Sort and other menus take the active mood's background; the in-app Boom mood…
    • Klotts cards are uniform height with no hover left-border; creating a new document now inherits the mood of the doc you're viewing instead of resetting to custom.
    Fixed
    • The left panel now scrolls when you have more klotts than fit the window height.
    • Closed side panels no longer capture keyboard Tab focus (they're inert), and the inner panel drop-shadow was removed.
    • Inserted klotts can no longer be "turned into" another block type via the 6-dot menu, and moving a section now animates smoothly to its new position.
  6. v1.12.02026-07-05

    Added
    • `/home` route now serves the marketing homepage, so both `klott.cc/home` and `klott.cc/homepage` work.
    • Per-route Open Graph tags on the marketing pages (guide, self-host, changelog, thank-you, homepage) + a distinct title/description for /homepage so social cards and search snippets are unique per page.
    Changed
    • Standardized the marketing hairline divider on the shared Separator primitive, and consolidated the nav wordmark into a single shared class across all marketing pages.
    Fixed
    • The editor now confirms sign-out, account removal, account rename, and image deletion with a toast (HAG-903/905/908/911).
    • Save errors no longer surface raw JavaScript exception strings — a friendly "couldn't save, retry" message shows instead, with the raw error logged to the console (HAG-869).
    • Design/Options panel now fits the viewport when open on narrow (≤640px) screens — no longer clipped off the right edge with labels cut mid-word (HAG-868).
    • /guide dark-mode faint helper text now meets WCAG AA contrast (HAG-884).
    • Terminal-mockup "traffic light" dots recolored from red/orange to neutral grey (HAG-901).
    Removed
    • Unused Badge UI primitive (HAG-897).
  7. v1.11.12026-07-05

    Changed
    • Renamed the editor's "Your Klotts" panel tab to just "Klotts".
  8. v1.11.02026-07-05

    Added
    • Guest writing — signed-out visitors can open the editor and start typing immediately (no forced sign-in wall).
    • MariaDB migration Phase 5 (staging): auth_tokens dual-write — auth-verify.php mirrors every issued verify token (sha256 hash) into the auth_tokens table; klott_auth_verify_pair mirrors JSON prunes and self-heals…
    • MariaDB migration Phase 5 (staging): token verification read-flip — klott_auth_verify_pair checks MariaDB first (stamps last_used_at), falls back to JSON on miss/error.
    • Orphan content scrub modes on backfill.php (admin-gated): `{"mode":"orphans-dry-run"}` lists content_*.json files with no klotts row AND no pages_*.json reference; `{"mode":"orphans-scrub"}` moves them into…
    • Marketing editor v22 — full Tiptap-parity pass on the contentEditable shim: Cmd/Ctrl+U underline, Cmd/Ctrl+Shift+X strikethrough, live markdown input rules, slash-menu live filter, edge-aware popover, DOMPurify paste…
    • Mobile hamburger drawer in the marketing nav — mood-themed, 44px tap targets, closes on outside click / Escape / resize.
    • Scroll-triggered fade + slide-in animations on the marketing homepage sections (intro, manifesto, features, closing CTA, footer) — respects reduced-motion.
    Changed
    • Changelog page: each version is now a collapsible `<details>` block with the latest release open by default.
    • Cleared all 148 React Compiler ESLint errors from the Next 16.2.6 `react-hooks` preset bump — subscription effects now sync via effect-local callbacks, mount flags use a shared `useMounted` (useSyncExternalStore),…
    Fixed
    • Mobile: collapsed editor side panels no longer leak their content through the peek — inner content is hidden when collapsed, the visible sliver is reduced to 16px, and the inactive border fades.
    • Image option menu no longer opens off-screen on mobile — repositioned with edge-aware (floating-ui) flip/shift and made scrollable when wider or taller than the viewport.
    • Marketing homepage editor: iOS keyboard + caret no longer vanish on Enter — split-below now uses a single atomic selection write inside the same user-gesture stack.
    • Mobile editor panels can now be opened + closed reliably — the closed-state peek tap no longer gets intercepted by an invisible lock toggle, tap-in-open-panel now closes on touch, and the mobile grabber pill is…
    • Marketing homepage FOUC on first paint — `data-theme="concur"` (Boom) is now baked into the SSR HTML with `suppressHydrationWarning`, so first paint uses Boom's mood tokens instead of briefly flashing the default…
    • Hydration mismatch warnings on /self-host, /pricing, /changelog — added `suppressHydrationWarning` to their `#klott-marketing-root` wrappers, matching /homepage (MoodBootScript stamps `data-theme` pre-hydration) (QA…
    • Homepage mood copy: "ten moods" → "eight" in three places, and the stale "Cute" mood name → "Party" (renamed preset) (QA HAG-885, HAG-887).
    • Version rename now shows a `Renamed to "…"` toast on success, matching the delete-version confirmation (QA HAG-878).
    Security
    • Bumped dompurify 3.4.7 → 3.4.11 (client HTML sanitizer) — clears 3 moderate advisories (GHSA-vxr8-fq34-vvx9, GHSA-gvmj-g25r-r7wr, GHSA-cmwh-pvxp-8882); non-breaking (QA HAG-871).
    Removed
    • Hero subtitle tagline on the marketing homepage.
  9. v1.10.02026-06-30

    Added
    • App side panels now bind to the active mood background via new `--klott-panel-bg-color` / `--klott-panel-bg-image` vars — magical pink-lavender gradient, plus secret / concur / chaos / go variants and six…
    • EdgeStrip line is now the panel's actual inner border and slides with the panel via framer-motion `translateX`.
    • Share and User-badge tab icons in `OptionsPanel`; User tab's version readout now links to `/changelog/`.
    • Klott-logo loading overlay (`KlottLoadingOverlay`) shown on doc switch — preloads mood + content before revealing the editor.
    • `MoodBootScript` inline `<script>` on the marketing homepage eliminates the mood FOUC on random-mood load.
    • In-memory homepage edits (`window.__klottHomepageEdits`) that clear on reload but persist across in-tab navigation; `ResetEditsButton` next to the floating `MoodSwitcher`.
    • kbd-badge placeholder `Press [/] for commands` on empty editable blocks; centered placeholder when the block is centered; tapping `/` opens the slash menu.
    • Divider slash option now actually inserts an `<hr>`.
    • `ScrollDoodles` — seven doodles with per-mood path / stroke / colour variants, animating on scroll.
    • `FeatureRequestForm` modal with a markdown-aware contentEditable description editor (`MarkdownDescriptionEditor`).
    • `public/api/feature-request.php` endpoint — rate-limited, posts to hello@klott.cc.
    Changed
    • Marketing CSS rescoped to `.klott-marketing-surface[data-theme=…]` (was leaking via global `body[data-theme=…]` and breaking the editor app).
    • `EditableBlock` cursor is now always the text cursor; the "Click to edit" tooltip and pencil hint are removed — native caret only.
    • Hero typing animation font inherits via `font-family: inherit` — fixes wrong-font typing in Craving, Boom, Pirate, Party, Magical, and Clean.
    • The "Klott" word in the hero `<h2>` now inherits font (was being forced to the wordmark style).
    • Changelog version tags toned to sober hairline-rule per kind.
    • Button shadow removed — was a Tailwind focus-ring resolving to a persistent shadow on link CTAs.
    Fixed
    • Editor app theme regression caused by marketing CSS leaking via the global `body[data-theme]` selector.
    • Marketing homepage FOUC on random-mood load.
    • Homepage edit persistence across reloads (now in-memory, cleared on reload).
    • Logo and `MoodSwitcher` trigger contrast on eight moods — Pirate, Craving, and Magical specifically called out.
  10. v1.9.02026-06-29

    Added
    • Marketing homepage v15 (staging): mobile hamburger drawer in the marketing nav — hosts Home / Self-host / Changelog / Let's klott on ≤640px viewports, mood-themed bg, 44px tap targets, closes on outside click /…
    • Marketing homepage v3–v5: top-of-page tabs (Moods / Changelog / Self-host), top-left Klott logo linking to `/homepage/`, "Moods" explainer with 6 featured-mood cards, dedicated `/changelog/` and `/self-host/` pages,…
    Changed
    • Self-host section reframed as "Self-host as a CMS website" — positions Klott as a deploy-it-yourself CMS alternative to Notion / Ghost / Substack; install steps retitled "Spin up your own Klott CMS in four steps".
    • Marketing homepage toned down: dropped 4 of 5 sticker illustrations (kept one small smiley), removed ambient holographic glow blobs, removed holographic-gradient hero h1 in favour of solid white text with yellow…
    Fixed
    • Marketing nav: Klott wordmark + KlottLogoMark contrast in Craving mood (`go`) — wordmark colour flipped #e85a2a → #3d1a08 (cocoa).
    • Marketing nav: MoodSwitcher trigger pill text in light moods (Editorial, Pirate, Craving, Magical) now binds to the active mood vars instead of white-on-white-glass.
    • Homepage EditableBlock: empty-block placeholder "Type / for commands" now renders reliably via a React overlay span tracked off `innerText.trim()`.
    • Homepage EditableBlock: click-to-edit places the caret at the click point via `caretRangeFromPoint` / `caretPositionFromPoint` instead of selecting all content.
    Removed
    • "Everything in Klott" feature grid on the marketing homepage — replaced by Moods teaser for more visual punch.
    • Moods, Changelog, and Self-host sections from the homepage body and top nav — moods is now editor-only; changelog + self-host live at `/changelog/` and `/self-host/`.
  11. v1.6.22026-06-26

    Fixed
    • Chunk-load reload loop after deploys — service worker + cache cleared, retry counter reset per build, visible fallback "Reload" button.
  12. v1.6.12026-06-23

    Added
    • User and Share tabs in the options panel.
    • Doc title row at the top of "This klott" outline.
    Changed
    • Image insert defaults to Large size.
    Fixed
    • Collapsed panel edge pill no longer clipped by transforms on the panel root.
  13. v1.6.02026-06-23

    Added
    • 10 MB per-klott size cap with a friendly overflow toast.
    • 32px hover peek on collapsed side panels.
    • "Move" action in the embed menu — reposition any embed without cut/paste.
    • Doodle emoji picker expanded to ~800 glyphs with search + recents.
    • Public klotts now indexed individually in the sitemap.
    Changed
    • Hover-expand panels float over content — no more layout shift on hover.
    • Global doodle is now full-viewport instead of editor-column overlay.
    Fixed
    • 30 security hardening fixes: server-side auth required on every mutating endpoint, SVG XSS closed, tighter CORS, per-endpoint input caps.
    • 24 accessibility + performance fixes: SR toast announcements, 44px min tap targets, `100dvh` layouts, virtualized admin lists.
    • Insert-Klippet dialog no longer 401s.
    • Bibliography sanitizer no longer strips structured APA/MLA citations.
  14. v1.5.02026-06-13

    Security
    • Klotts are now private by default — only the owner + verified collaborators can read.
    • OG cards + sitemap no longer expose private doc titles.
    • verifyTokens sha256-hashed on disk; gate/access secrets bcrypt-hashed.
    Added
    • Custom-mood gradient picker + per-mood gradients.
    • Thank-you / credits page at `/thank-you`.
    • Klippets discovery tab — drag or insert shared sections into any doc.
    • Desktop side-panel auto-hide + pin.
    • Image placeholders (mood-tinted, tap-to-upload) + double-tap crop.
    • Mood-themed lorem ipsum + mood icon on doc list rows.
    Changed
    • Refined mood set: Party → Data (👾, Space Mono), Cute → Party (🪩, Oi).
    • Toasts now use sonner-style rounded squares.
    • Light-mode theme awareness for every previously dark-only component.
    Fixed
    • Refreshing an empty klott no longer creates a fresh one.
    • Mobile title-selection freeze.
    • iOS input-zoom disabled.
    • Bulk delete removes every selected klott.
    • Latest klott sorts to the top; timestamp reflects last-edited, not last-opened.
  15. v1.4.22026-06-12

    Added
    • Thank-you / credits page at `/thank-you` reachable from the profile dropdown.
    Changed
    • Default mood for new docs is Clean (was Magical).
    • Doc title is now visibly larger than any H1 at every mood scale.
    Fixed
    • **Critical**: removed a device-global "orphan recovery" that leaked ~31 unrelated docs to fresh accounts.
    • Sign-out fully resets the editor and drops pending saves — no more sticky "HTTP 401 Retry" toast.
    • Sign-in modal backdrop is inert (blocks background hover / clicks).
    • Klotts list sort now honors the selected mode (Last edited / Title A–Z / Z–A / chars).
  16. v1.4.12026-06-11

    Added
    • Automatic recovery from "Failed to load chunk" errors after a deploy.
    Security
    • verifyTokens now stored as SHA-256 hashes; existing sessions migrate transparently with no forced logout.
    • Avatar / emoji writes now require verified auth.
  17. v1.4.02026-06-10

    Security
    • Auth required on every doc-mutating endpoint (save, gate config, collaborators, page create).
    • Stored XSS closed in shared-section snapshots — DOMPurify at both write and render time.
    • `javascript:` and `data:` links blocked at the schema level.
    • Removed the unauthenticated `slugs.php` global slug-enumeration endpoint.
    • CORS locked to klott.cc + staging.klott.cc on all POSTs.
    Fixed
    • Mobile drag-select in the doc title no longer freezes the page.
  18. v1.3.92026-06-10

    Fixed
    • Mobile freeze on adjusting a word selection — drag handle now hidden while a range is selected on touch devices, breaking the selectionchange feedback loop.
  19. v1.3.82026-06-10

    Fixed
    • Mobile title-selection freeze regression — six defense-in-depth guards added to the drag-handle repositioning loop.
  20. v1.3.72026-06-10

    Fixed
    • Refresh no longer creates a new klott — a local-draft lifeboat now snapshots content on a 400 ms debounce and hydrates on empty-cache / 404 / empty-server responses.
    • Cold-open resumes the last active klott even if it was never saved.
    • Multiselect action bar wraps and fits on narrow mobile viewports.
  21. v1.3.62026-06-10

    Fixed
    • Side panels now opaque on mobile so overlaying panels don't leave the doc unreadable.
  22. v1.3.52026-06-10

    Security
    • Klippet DELETE no longer sends credentials in the URL — moved to request body and Authorization headers so tokens can't leak into access logs or Referer.
  23. v1.3.42026-06-10

    Added
    • Klippets row three-dot menu — edit title / scope or remove.
    • Double-tap an image to enter pan + zoom crop mode.
    • Desktop side panels auto-collapse on hover-out with a pin toggle.
    Changed
    • Brand accent is now theme-aware — near-black in light mode, white in dark.
    • Side panels are transparent so the doc canvas shows through.
    • Magical mood: pink sparkles top-anchored, headings 2×.
    Fixed
    • 6-dot block handle now opens its menu on tables, iframes, audio, doodles, and shared sections.
    • `share-section.php` mutations now require verified auth (previously spoofable).
    • Image-insert XSS closed via URL encoding + Tiptap node JSON payloads.
  24. v1.3.32026-06-09

    Fixed
    • Onboarding tour now only shows to brand-new users with zero edited klotts.
  25. v1.3.22026-06-09

    Added
    • Double-tap an image to crop it — pan, zoom, apply / cancel toolbar.
    Fixed
    • Mood-themed lorem ipsum now uses the right vocabulary per mood (pirate words in Pirate, food in Craving, unicorns in Magical, etc).
  26. v1.3.12026-06-09

    Added
    • Desktop panels auto-collapse on hover-out with a pin toggle.
    Fixed
    • 6-dot block handle now opens its menu on tables, iframes, audio, doodles, and shared sections.
    • Magical mood background gradient + sparkles now render.
    • Admin activity charts no longer flat — counters switched to append-only logs to survive flock failures on Loopia.
  27. v1.3.02026-06-09

    Added
    • **Mood overhaul** — 9-tile grid (8 presets + Custom), each with its own fonts, emoji set, and typing-effect burst.
    • **Klippets** discovery tab — drag or hover-Insert shared sections into any doc.
    • **Share-section dialog** with Private / Global scope + title.
    • **Admin dashboard** at `/admin` with activity charts + timeframe picker.
    • **Outline drag-reorder** in the "This Klott" tab.
    • **Sign-in emoji burst** — playful mood-emoji confetti from the caret.
    • Custom 404 page with a "Create a Klott" action.
    Changed
    • List selection: hover checkbox on desktop, long-press on mobile — no more "Select mode" button.
    • Slash-menu polish: "Code & data" merged, viewport-clamped submenus.
    • Download menu keeps PDF / HTML / Markdown — LaTeX / BibTeX / DOCX removed.
    • "Party" mood renamed to "Data" (👾, Space Mono).
    • Left-panel tabs renamed: Your Klotts / Klippets / This Klott.
    Fixed
    • Hard refresh no longer creates a new empty klott.
    • Slash menu submenus stay inside the viewport on mobile.
    • XSS in klippet-link insertion closed via URL-encoding + Tiptap node JSON.
  28. v1.2.12026-06-04

    Security
    • Deny direct GET access to JSON data files under `/api/` (previously exposed user emails + verifyTokens, raw doc state, notification inboxes).
    • Lock `content.php` CORS to klott.cc + staging.klott.cc.
    • Rate-limit `notify.php` — 1 send / 30 s and 5 / hour per from-email.
  29. v1.2.02026-06-04

    Added
    • **Google indexing prep**: dynamic sitemap, JSON-LD structured data, canonical URLs, noindex for gated docs.
    • **First-visit onboarding tour** with a Skip on every step.
    • **Multi-account sign-in** with a per-account switcher in the profile dropdown.
    • **Email OTP verification** for sign-in via Loopia SMTP.
    • **Getting-started guide** at `/guide`.
    • Rename a tag across every klott from the Tags popover.
    • Search inside each klott's content from Browse.
    • "Experimental features" section in Settings exposes hidden flags without DevTools.
    • Editable bibliography heading + drag-and-drop CSL files + multi-language locale support.
    Changed
    • **Renamed product from Klottle to Klott** across all user-visible copy.
    • **Migrated to klott.cc** — production at klott.cc, staging at staging.klott.cc.
    • Slash-menu reorganized — heavy blocks (math, charts, references, advanced) nest under categorized submenus.
    • Symbol + Emoji slash commands merged into one tabbed picker.
    • DOCX export now renders math as native Office Math (OMML) equations instead of monospace TeX.
    • `/homepage` is now a true server component — marketing visitors no longer download the editor stack.
    Fixed
    • Silent-drop bug when switching klotts with pending edits — writes now flush before slug changes.
    • OTP "first code fails, resend works" sign-in bug.
    • Tooltips + popovers now stay inside the viewport.
    • Page freeze when selecting text in the doc title.
    • Auto-recovery on transient PHP-FPM 502/503/504 hiccups.
    • PDF export now hydrates KaTeX, Mermaid, Vega, Shiki, doodle, and citation NodeViews.
    • Tooltips open on touch via a 500 ms long-press.
  30. v1.0.02026-06-01

    Added
    • Initial public release.
    • LaTeX math (KaTeX) — inline + block, equation editor with palette + autocomplete.
    • Code blocks with Shiki syntax highlighting (12 languages).
    • Mermaid diagrams + Vega-Lite charts.
    • Citations (APA 7, MLA, Chicago, IEEE, Vancouver) + BibTeX import.
    • Smart symbols + units; data tables with formulas (SUM, AVG, MIN, MAX, COUNT).
    • Exports: PDF, LaTeX, Markdown, DOCX.
    • Pyodide executable Python (behind a feature flag).
    • Inline doodles + global doodle overlay with collab sync.
    • Shared sections, tags replacing folders, live presence indicators.
    Changed
    • Mood system bundles font + size + line-height + page-width + emoji + animation.

View raw CHANGELOG.md →