Changelog · now at 80 engines, 4,355 templates
Shipped, in the open.
Reverse-chronological. Each entry is a real commit on a real branch — if anything looks off, ping us at the address on the site.
The Lab checks the numbers, not just the drawing
- New
Numbers carry their units and their interval — and both get checked
Write dose: 5 mg/kg/day or incidence: 3.2 per 100000 and the unit is part of the value rather than a word in a label, so a figure that adds a mass to a duration now says "Cannot add kg and s — the units are different quantities" instead of printing a number. Effect estimates take their interval the way papers write it — 0.68 [0.51, 0.90], 0.68 (0.51 to 0.90), 12.4 ± 0.8, or 0.68 se 0.14, with @ 90% when the coverage isn't the assumed 95% — and ratio measures are handled on the log scale, where they belong. An interval that does not contain its own point estimate is caught by name: "Point estimate 0.68 lies below its own lower limit 0.71." That is a transposed digit in a results table, and nothing in the pipeline used to notice it.
- New
A number derived from other numbers is written once
Any value can be an expression instead of a literal: n: = randomised.n - withdrew, or rate: = 100 * included.n / screened.n. The percentage beside a count is computed from that count, so correcting the numerator in revision three can no longer leave a stale percentage sitting next to it — the failure that puts a figure in disagreement with itself in print. A definition that refers back to itself is reported as a loop naming every step ("Circular definition: a.n → b.n → a.n. One of these has to be written out as a number."), and a value that cannot be computed is left out of the figure rather than quietly drawn as zero.
- New
Survival, ROC, calibration and decision curves that do their own statistics
Four research figures where every number on the panel is computed from the data in the document. Kaplan–Meier curves arrive with censoring ticks, the numbers-at-risk row and the log-rank test; ROC (or precision–recall) with the area and its confidence interval; calibration with the slope, calibration-in-the-large and the Brier score; decision curves with net benefit against treat-all and treat-none. The median:, auc: and p_logrank: attributes still exist so you can transcribe a published result — but they are never drawn as though these data produced them, and where a typed log-rank p disagrees with the p the data give, the figure footnotes the disagreement and shows the computed value. Each also refuses rather than guesses: a curve with every subject censored, an ROC with only one class present, and an area of exactly 1 — whose interval is zero-width — come back with the reason instead of a confident-looking panel.
- New
CONSORT and SPIRIT, item by item, against the figure you actually have
The trial checklists are executable: CONSORT 2010 with its cluster, non-inferiority and pilot extensions, and SPIRIT 2013 for protocols. Every item is evaluated against the document and gets a verdict — met, partial, unmet, not applicable, or "cannot tell", which is a different and more honest answer than a guess — with the line to look at, the published citation, and on many items a fix that writes the missing piece into the source. If you'd rather not retrofit, there's a compliant document to start from: a complete CONSORT participant flow whose numbers balance at every step, and a SPIRIT protocol skeleton with the item 13 schedule figure.
- New
The journal's figure specification, before the submission system quotes it at you
Column widths in millimetres, height ceilings, minimum type size, accepted file formats, colour mode and resolution floors for Nature, Science, Cell, PNAS, the New England Journal of Medicine, JAMA, The Lancet, The BMJ, PLOS, eLife and arXiv — plus the Elsevier, Springer, Wiley, Frontiers, MDPI, IEEE, ACM, APS, ACS, RSC, AGU, Oxford University Press and Taylor & Francis house guidelines, an A4 thesis page and an A0 poster. So the studio can tell you the figure is 210 mm wide where Nature's page measure is 183 mm, or that your smallest type lands under the 5 pt floor, while there's still time to change it. Two things it won't do: invent a number a publisher doesn't state (the field stays empty, that check is skipped, and a note says which), or pretend to be current — every entry links the publisher's own page and records whether anyone has confirmed that row against it.
- New
Lab figures leave the Lab
The Lab used to be the one studio whose figures existed only inside it — no thumbnails, no embeds, nothing the server could draw. Its figures now render through the same native path as every other engine: server-side via /api/render to SVG or PNG with no headless browser, inside an /embed iframe, in project and gallery views, and as the live preview on a template card. Its research templates — CONSORT, PRISMA, cap table, FMEA, assessment rubric, cost-effectiveness plane and the rest — are in the platform template gallery and the ⌘K palette as well, so searching "CONSORT" from anywhere finds one instead of nothing.
One platform, not eight studios
- New
⌘K understands what you mean, not just what things are called
The palette could find anything that already had a name. "Sequence diagram of the checkout flow" is not the name of anything, so it found nothing. Now the platform reads the sentence, decides which engine, which workstation and which specialist it needs, and does it — from anywhere on the site, including the marketing pages. It explains the choice on the row, so when it's wrong you can see why instead of guessing. And it's instant: the routing is a lookup, not a model call, so it keeps up with your typing and works signed out.
- New
Scholar — what to study today, and what you'll actually know on the day
Give it your exam date and the minutes you have. It plans backwards through the prerequisite graph — foundations before what needs them, weakest material first — schedules the spaced reviews that make it survive to the date, and forecasts your readiness ON the date rather than today. Where it's low, it names which of three things is wrong, because the fix differs: a prerequisite that's faded, memory decaying between now and then, or a concept you've only ever been asked to recognise. When the plan doesn't fit, it says so and says how many more minutes a day would close it.
- New
Five more specialists, for the work that had none
- Data — picks the chart that tells the truth about your numbers, and starts the axis at zero.
- Architecture — systems at one altitude, so a business capability and a database column stop sharing a canvas.
- Teaching — diagrams built to be understood: few enough elements to hold, every arrow labelled, the common misconception named beside what's true.
- Evidence — PRISMA flows, CONSORT, causal DAGs and forest plots, and it will not invent a study, an effect size or a citation.
- Conductor — the one that knows the other studios exist, for work that spans several.
- Improved
The AI checks its work before it says it's done
Every specialist was already asked to verify its own output. Now the platform checks too, mechanically: does this source parse in its own notation, is it complete rather than truncated, do the arrows point at nodes that exist, does the BPMN have the layer without which it renders as a blank page. A run that fails gets the specific problems back and another go. It only blocks things that are broken — a diagram is never held up for being sparse, or for having a loop.
- Fixed
Sending a diagram to another studio could overwrite what was open there
Three separate paths staged a diagram into a studio without first detaching the document that studio already had open — so the next save wrote the arriving diagram over the existing one. There is now one way to hand work between studios and it always detaches first, so the mistake is no longer possible to make.
- Fixed
A failed AI run no longer costs points
Agent runs charged their 4 points whenever the request finished, and a request that failed still finished — so a provider outage or a refused prompt cost the same as a successful build. Points are now taken only when a run actually delivers something.
- Fixed
Large diagrams stopped being quietly shortened
Handing the AI a project truncated every figure in it to 60 KB, including ones it was only carrying past, and the shortened version came back and replaced the original. Big sources are legal — up to 500 KB for SVG — so they're now held back from the AI intact and returned untouched.
- Fixed
Plan descriptions that weren't true
Free was described as "watermarked exports" and Starter partly as removing them. Nothing in the product has ever applied a watermark — so Free was undersold and Starter advertised something that doesn't change. The plans now describe what actually ships. Also corrected: the Sketch kit is 94 wireframes, not 84, and the icon count on the home page now names what's bundled with the app rather than the size of a third-party catalogue.
The platform speaks
- New
A human voice, on-device, on every plan
Study lessons now have a Listen button. The voice is Kokoro — an open-source (Apache 2.0) neural voice that runs entirely in your browser on WebGPU: the ~80 MB model downloads once, is cached locally, and after that narration starts in a couple of seconds with nothing ever sent to a server. Because it costs us nothing to run, it's included on every plan, Free included. Six voices (American and British, warm to steady) and three paces, remembered across sessions. If the model can't load — offline, old browser — we fall back to your browser's built-in voice and say so, rather than pretending.
- Improved
Narration that reads like a tutor, not a screen reader
Text is cleaned before it's spoken (markdown, code ticks and arrows become words and pauses) and split at sentence boundaries, with the next chunk synthesized while the current one plays — so long lessons start speaking almost immediately instead of after the whole passage renders. Each lesson step reads its narration plus its own prompt and points.
Ultra, and a yearly price
- New
Ultra — collaboration with the cap off
A new top tier at $29/month billed yearly ($49 month-to-month). Ultra is the team plan: unlimited people in a live session, voice and screenshare in every studio, workspace component libraries shared across your whole team, team spaces with presence, and 1,000 AI points a month — five times the Plus allowance. Everything else Glyph does is included, and Enterprise still sits above it for SSO, SCIM, audit and dedicated tenancy.
- Improved
Yearly is the headline price; monthly costs more
The rates Glyph launched with are now the yearly rates: Starter $7/mo, Plus $14/mo, Ultra $29/mo, each billed once a year. Paying month-to-month is $10, $25 and $49 — flexibility, priced. The pricing page has a Yearly/Monthly toggle that shows exactly what's charged and what you save, and every number on the site is derived from one catalogue, so nothing can drift from what Stripe bills.
- Improved
Free is the Studio, in full
Free used to open all eight workstations, which left Starter with nothing to sell. It's now the Studio — and the whole Studio: every one of the 80 engines, all 4,270 templates, unlimited diagrams, and unlimited AI with your own Anthropic or OpenAI key. That's a complete product for $0. The other seven workstations — Study, Evidence, Weave, Science, Lab, BPMN and Sketch — are what Starter opens, from $7/month. Locked studios show a lock in the switcher rather than failing on click, and asking for one lands on a pricing page that says exactly what happened.
- Improved
Collaboration now defines the ladder
Free and Starter are single-player by design — every engine, every studio, unlimited solo work on Starter, but no live sessions or shared projects. Plus adds live co-editing for up to 3 people with cursors and canvas comments. Ultra removes the cap and adds voice, screenshare and shared team libraries. The rule is enforced in one tested module, checked server-side before a session opens and before a component is shared with a workspace, and it fails open — a deployment without Supabase stays fully usable rather than locking you out.
- Improved
Free keeps the Sketch canvas
Free is now two complete tools instead of one: the Studio, and the Sketch canvas — pens, shapes, frames, binding arrows, groups, Mermaid paste, plus a 12-piece starter wireframe set. The pro workflow layer is what Starter buys inside Sketch: the full 84-preset wireframe kit, presentation mode with deck export, version history, and an uncapped component shelf (Free keeps 5). Locked presets stay visible in the picker with a small lock — nothing silently disappears — and boards that already contain pro presets render untouched on every plan.
Panels that stay out of your way
- Improved
Collaborate and Comments moved to the right rail
Both used to drop out of the top of the Studio window and shove the editor and canvas down the page — you could set up a shared project or you could see your diagram, not both. They now open exactly where the AI agent always has: a column beside your work, which reflows to make room instead of being pushed around. Drag the rail's left edge to resize it (double-click to reset, or focus the handle and use the arrow keys); the width is remembered and follows you across studios.
- Improved
One rail, one panel
The agent, Collaborate and Comments share a single slot, so opening one puts the last one away — no stacked panels fighting over the same edge, and the toolbar button for whatever's open now reads as pressed. Everything that opened these panels before still does: the toolbar, ⌘K, Esc to close, and invite links.
- Improved
Lab and BPMN threads dock too
Comment threads in Lab and BPMN used to float over the canvas — on top of the agent pane, if you had it open. They're docked columns now: threads sit beside the diagram they're about, never over it. In Lab the agent and comments take turns in the rail; in BPMN comments dock next to the details pane.
- Fixed
No engine clips your diagram any more
We measured all 80 engines in a real browser, comparing what each one painted against the viewport it declared. Seven were cutting work off: markmap lost every branch past the pane edge, Vega's radar and sunburst charts lost the marks that sit around the origin, hand-written SVG lost whatever ran past its declared size, and the timeline, calendar-heatmap and KaTeX renderers clipped edge labels. Rendering now ends with one rule — grow the viewport until it holds everything painted — so the whole diagram is always reachable by pan and zoom. Diagrams that already fitted are untouched.
- Fixed
BPMN diagrams render again, and the big viewers fill the canvas
BPMN was showing an empty canvas: a global stylesheet rule collapsed the modeller's SVG to 150px, so the process was painted below its own viewport, and the canvas auto-fit was centring bpmn-js's 53×21 “powered by” logo instead of the diagram — parking the work 350px off-screen. Both fixed, and the viewer engines (BPMN, Cytoscape, 3Dmol, the WebGL floor plan) now size themselves to the whole workspace instead of a hardcoded 520–620px window.
Every studio, together
- New
Live sessions in every studio
Share live left Sketch and moved into the whole platform: Weave, Science, BPMN, Lab and the code Studio all share the same link-is-the-room model. Hit Share live, send the link, and everyone who opens it lands in the same document — late joiners receive the whole thing, refresh rejoins, and leaving always keeps your own copy intact. On the canvas studios (Sketch, Weave, Science) edits merge per element with everyone's named cursor visible live. Requires Supabase Realtime; without it every studio simply stays single-player, with a friendly hint instead of a broken button.
- New
The pen — for documents that can't merge
BPMN XML, Lab source and Studio code are single text documents, and we won't pretend two people can type into one blob without corrupting it. So those studios use a pen: one person holds it and edits, everyone else watches the document update live. Request it, and the holder gets a one-click Grant; edit while the pen is free and it's yours implicitly; if the holder leaves, the first person waiting is promoted. The banner says it plainly — edits you make without the pen stay local until you hold it.
- New
Voice and screenshare, everywhere people gather
The peer-to-peer voice hangout now rides every live session in every studio — plus Studio cloud projects and Evidence projects, which get a voice room automatically. Same honest limits as before: up to 8 people, mute, speaking rings, one-click screenshare into a draggable tile, no relay server (very restrictive networks may not connect).
- New
Comments that fit each canvas
Threaded comments landed where they make sense, anchored the way each studio thinks: pinned to a spot on the canvas in Sketch, Weave and Science; to a source line in Lab; to a diagram element in BPMN — so pins survive pan, zoom and re-layout. Reply, resolve, jump from the index; they sync live in a session, work fully offline, and never appear in exports.
- New
One verb set, one thread
⌘K now offers "Start a live session here" in every studio that shares live — one phrase, routed to that studio's own controls. The Flow Dock (⌘J) grew a compact Live row while a session runs: who's here, re-copy the invite link, leave. And handing a document to a teammate while you're live sends the session link along, so their toast says Join live instead of opening a dead copy.
The canvas goes multiplayer
- New
Live co-editing with multiplayer cursors
Hit Share live in Sketch and the link is the room — everyone who opens it draws on the same canvas, each person's cursor visible in their own colour with their name. Edits merge per element, so nobody's stroke clobbers anyone else's; late joiners receive the whole board; refresh and rejoin with the same URL. Your document stays yours: autosave, checkpoints and exports work exactly as when solo. Requires Supabase (Realtime) — without it, Sketch simply stays single-player.
- New
Canvas comments
Pin a threaded conversation to any spot on the canvas with the Comment tool (D): replies, resolve, and a header index that lists every thread and jumps the view straight to its pin. Comments save with the sketch and sync live in a session — but never appear in exports or presentations. Works fully offline too.
- New
Voice hangout + screenshare (beta)
Talk while you draw: a live session can host a peer-to-peer voice call for up to 8 people, with speaking indicators, mute, and one-click screensharing into a draggable floating tile. It's WebRTC without a relay server, so it's honest about its limits — very restrictive networks may not connect, and you'll see exactly who couldn't.
- New
Workspace component libraries
The component library goes team-wide: share any selection to a workspace and everyone in that team can search, place and drag it from a new Workspace section beside your personal components. Owners can rename and delete; libraries live in your Supabase project with the same ownership rules as the rest of your workspace data.
The Sketch studio goes pro
- New
Frames, groups and binding arrows
Draw named frames to structure a board — they move their contents and export individually. Group anything (⌘G) and it selects, moves and restyles as one. Arrows now BIND to shapes: drag a shape and its arrows follow, anchored to the shape's edge, even through rotation.
- New
Present straight from the canvas
Your frames are your slides. Hit Present (⌘⇧P): chrome disappears, the view glides frame to frame with arrow keys, and the laser pointer (Q) — a glowing trail that never marks the document — is in your hand. Escape brings your workspace back exactly as you left it.
- New
Your own component library
Select anything and save it as a named component. Your components live in a new panel section with live previews — click or drag to place them anywhere, ids and bindings kept hygienic automatically.
- New
Describe a screen, get a wireframe
Type "a checkout page with cart summary and payment form" and the AI composes it from the 84-preset wireframe library, placed and labelled on your canvas, ready to edit. Uses your AI points; BYOK works too.
- New
Paste a diagram, get live shapes
Paste Mermaid or Graphviz source onto the canvas and Sketch offers to place it as sticky-note nodes joined by binding arrows — a real, editable board, laid out deterministically, no AI call needed.
- New
Version history
The canvas checkpoints itself to the Vault as you work (at most every 5 minutes, only when something changed) and you can save named versions anytime. The History popover lists them all — restore or delete in one click. Align, distribute, flip, lock and z-order controls round out the pro toolkit.
One home, one library — and studios that bend to your screen
- New
The Library: dashboard and library become one home
Everything you've made — every studio's documents, your cloud projects, Evidence investigations with live drift badges — is now ONE board at /library, topped by the workspace strip. Grid or list view, bulk select with undoable delete, '/' to search, starred work floats up, and every document opens in whichever studio can show it (cheapest route first). /dashboard redirects, every old link keeps working.
- New
Two new engines: Org charts and Railroad diagrams
orgchart turns an indented list of names and roles into a laid-out organisational chart; railroad renders EBNF-style syntax diagrams (the json.org look) from one production per line. Both are native SVG with 10 templates each — and every engine/template count on the platform is now derived from the registries, so the numbers can never disagree again (79 engines · 4,260 templates, everywhere).
- New
84 wireframes in Sketch
The Sketch studio's wireframe shelf grew from 14 presets to 84: device frames, navigation patterns, form controls, content blocks, charts, overlays, and 19 full app screens (login, checkout, dashboard, chat, media players…). The picker gained search and collapsible groups; drag any of them straight onto the canvas.
- New
The Studio sidebar bends to your screen
The engines/templates split is a real split pane now: drag the divider, resize from the keyboard, or collapse the engine list entirely so the template library takes the whole pane. Your ratio is remembered. Templates can no longer be unreachable on a short viewport.
- New
AI points — honest, metered hosted AI
Hosted AI is now a clear points allowance: Plus includes 200 points a month (a real number, not 'unlimited'), Free and Starter use your own API key, and you can buy top-up packs (100 or 500 points) that never expire. Your live balance shows in the quota badge and on your account page. BYOK remains unmetered on every tier.
- New
Study is a first-class destination
Any document's Open-in menu now offers Study: Study ingests the structure and builds a spaced-repetition course from it — via the Library, the ⌘K palette, or a studio handoff. Both entry paths (deep link and handoff banner) land in the same place.
- Fixed
Readable everywhere, in both themes
Pricing tier names and prices were invisible in light mode (dark cards inherited the page's dark ink); the Sketch studio's default ink was hardcoded near-black, so wireframes and pen strokes vanished in dark mode. Both fixed — sketch ink now follows your theme, including on reopened documents and exports.
- Fixed
The two halves of the platform layer agree now
The unification work shipped on two parallel tracks, and this release makes them one system: a single Library is the source of truth every surface enumerates (⌘K, Flow Dock, Library), the Vault is explicitly the checkpoint layer on top of it, /api/feedback and /api/telemetry parse bodies through the platform guard, and TikZ conversion respects client aborts.
The Workspace — eight workstations become one platform
- New
Flow Dock (⌘J): continue anywhere
One dock floats in every workstation with your latest work across ALL of them — leave a BPMN process, open the Lab, and the thread follows you. It shows where your ideas travelled (Sketch → Studio → Evidence → Study) and puts its verbs in the ⌘K palette too.
- New
The Vault: every canvas studio is multi-document now
Weave, Science, BPMN, Lab and Sketch each used to remember exactly one document. Snapshot the live canvas into the platform-wide Vault with a name, keep as many as you like, and restore any of them — from the dock, or from the dashboard.
- New
Study this diagram
Send any diagram to Study and Study turns its structure into a diagram-first course — knowledge map, misconceptions, build-a-model lessons, spaced retrieval. The whole platform now feeds the learning OS.
- New
Cloud sync covers the whole platform — live
The workspace blob now carries every canvas studio's live document and your Vault, not just Studio figures — and a per-user realtime channel keeps devices in step as you work: touch a canvas on your laptop and the Flow Dock on your desktop updates within a second. Devices union-merge instead of clobbering.
- New
One ⌘K, everywhere — the Studio's palette folds in
The Studio's separate command palette is gone: its 22 verbs publish into the same registry every studio uses, so ⌘K is now literally one surface across the whole platform (only Study keeps the key for its cross-course concept search).
- New
Take it further
The Flow Dock reads whatever you're working on and offers the next move — Research it (Evidence scaffold), Study it (course), or hop it to another canvas — through the same conversion-aware pipeline as the Send-to-studio menus.
- New
A feedback door — and honest, anonymous telemetry
Every workstation's Flow Dock now has a Feedback button that lands directly with the team. And the platform finally has first-party, anonymous product telemetry — no third-party trackers, no identity, no diagram content, Do-Not-Track honoured, kill switch documented on the privacy page — so what we build next is decided by what you actually use.
- New
On the floor: your team, live
If you belong to an organization, the Flow Dock shows teammates who are on Glyph right now — and which workstation they're in. Hand anyone the document you're working on: they get a toast with an Open button, and nothing lands until they accept.
- Fixed
Send-to-Weave delivered a blank canvas
Sketch conversions and Lab photo recognitions handed Weave a share token it never reads, silently dropping the diagram. Both now deliver through Weave's real receive channel.
- Fixed
Three engines were locked out of thumbnails, embeds and the render API
Service Blueprint, Wardley Map and Newick phylogenies had pure SVG renderers that were never registered in the native-renderer registry. They now render everywhere the other engines do, with ~1,900 new smoke assertions covering them.
- Fixed
Coherence sweep
Study appears in the landing nav, tour and welcome deep-links (the tour really shows all 8 workstations now); Evidence sends your own API key like every other studio; ⌘K no longer double-fires on /study; dead nav anchors point somewhere real; the last KingUML-era storage keys migrated to the glyph:* namespace; and the React strict-effects lint pass brought the codebase to zero errors.
Science Studio · Evidence research assistant goes real-time · faster pages · honest pricing
- New
Science Studio spans the sciences
The Biology Composer grows into Science Studio: a domain toggle switches the palette across Biology, Chemistry, Physics and Mathematics on one canvas — lab glassware & reactions, forces & circuits & waves, geometry & calculus & stats — with the curated 200k+ Iconify search and AI figure composer throughout. Biology keeps its full hand-crafted library; /biology still works and /science is the new home. (Rich per-domain template packs land next.)
- New
Evidence research assistant is now a real conversation
The Ask tab streams token-by-token as the model writes (with a Stop button that aborts the request at the source — no tokens burned into a closed tab), keeps the full multi-turn thread, and persists it with the project so it's there when you reopen. It's grounded in the graph's verified claims plus the derived analyses (contradictions, gaps, GRADE certainty, timeline, recommendations), so it can summarize the evidence, draft review narrative, explain conflicts, and characterize certainty — always with inline [n] citations and nothing invented.
- New
Citations you can click
Every [n] the assistant cites is a chip that jumps straight to that relationship in the inspector — so every claim it makes is verifiable in one click, the same nothing-uncited contract as the rest of Evidence.
- New
Agentic search loop
Evidence now proposes concrete literature searches to fill the gaps and resolve the conflicts it found — each with a one-sentence rationale and a one-click OpenAlex search. Every unstudied pair also gets a deterministic one-click 'find papers' button. Analyze → suggested action → run → re-synthesize, closed.
- Improved
Security, robustness & accessibility hardening
A security/robustness pass on the new surfaces: a cost guard on leave-one-out robustness (bounded for the public API), request-size guards before bodies are parsed, and true upstream cancellation threaded into the provider SDKs. Plus an accessibility pass — the inspector is a proper ARIA tablist with arrow-key nav, and the assistant thread is a live region.
- Fixed
Faster marketing pages
The full-screen animated background was causing scroll jank — worst on pages with frosted panels over it (pricing, docs, templates, blog, changelog, status). It's now static everywhere, so scrolling is smooth, with no change to the look.
- Improved
Honest, current pricing
The pricing page and feature matrix are refreshed to the real product — 69 engines, 1,276 templates, the Evidence studio, and the headless v1 API — and the claims were reconciled against what the code actually enforces (over-promises removed). Log in / Sign up now live on the landing page.
- Improved
1,000+ tests
The deterministic core (Evidence analysis, the chat sanitizer, the search-suggestion parser, every new API route's validation/streaming/quota paths) is unit- and route-tested.
Evidence — the agentic evidence graph · Living diagrams · Classroom · column-aware schemas
- New
Evidence — the agentic evidence graph
A new workspace: ask a research question, find papers (type a topic or paste DOIs → OpenAlex) or paste them, and an agent reads them and draws a living, citation-grounded evidence graph — concepts as nodes, claims as typed edges (supports / contradicts / causes / moderates…), with automatic contradiction detection ('paper A says X↑Y, paper B says no effect') and gap-finding ('these two are studied separately but never together'). Every claim is verified against its exact source quote before it enters the graph — nothing uncited. One model → many maps: concept map, causal DAG, GRADE evidence table, PRISMA flow.
- New
Living projects with run history
Save the graph as a living project and re-run as new papers appear — it diffs ('+4 concepts, 1 new contradiction') with a full run history.
- New
PRISMA systematic reviews
Run a full PRISMA systematic review — screen sources (include/exclude with reasons), de-duplicate, and get an audit-ready PRISMA flow + exclusion log; only included studies enter the graph.
- New
Causal mode with do-calculus
Pick an exposure → outcome and Evidence computes the confounders, mediators, colliders, and a back-door adjustment set (do-calculus) over the evidence-derived causal DAG — deterministic, verified against textbook causal structures.
- New
A research assistant that can't invent findings
A multi-turn research assistant (the Ask tab) grounded in the graph's verified claims plus the derived analyses — it summarizes the evidence, drafts review narrative, explains contradictions, and suggests literature searches to fill gaps, always with inline citations and no invented findings.
- New
Read the synthesis your way
A sortable Evidence Table and the Cochrane-style GRADE Summary-of-Findings join the concept graph as in-app views, with a synthesis overview (ranked key findings + robustness/timeline/evidence-base) and an evidence-base breakdown by study design (4 RCT · 6 observational…).
- New
Quantitative effect synthesis
Surfaces the reported effect sizes for a relationship (Cohen's d, OR/RR/HR, r…) as a range, flags heterogeneity when studies disagree in direction, and draws a forest plot — an honest summary, not fake pooling.
- New
Temporal view & evolving findings
Dates each claim by its source year and shows when the evidence accumulated, whether it's recent or dated, and flags evolving findings — contradictions whose sides are separated in time (an early belief later overturned).
- New
Mechanism tracing & concept tidying
Mechanism tracing finds the chains of evidence linking any two concepts (sleep deprivation → cortisol → working memory). Concept tidying suggests and folds near-duplicate concepts the extractor split apart ('MI' / 'myocardial infarction', 'antioxidant' / 'antioxidants') — non-destructive and persisted per project.
- New
Robustness — leave-one-out sensitivity analysis
Flags whether the conclusion is driven by a single study — each source is scored load-bearing / supporting / redundant, so reviewers know which papers are load-bearing.
- New
Full data portability
Export a citation-grounded Markdown report (now with the robustness section), BibTeX and RIS for any reference manager (Zotero, Mendeley, EndNote), a claims-level CSV dataset for R/Excel/SPSS, and a portable JSON evidence graph you can re-import — no lock-in.
- New
Evidence public API
POST /api/v1/synthesize (deterministic graph), POST /api/v1/analyze (the full analytical layer — robustness, temporal, GRADE SoF, recommendations) and POST /api/atlas/synthesize (agentic). Nothing like it exists on any diagramming or research tool.
- New
Structural diff engine
Diagrams are now diffed by meaning, not text. A normalized node/edge model (lib/diagram/structure.ts) parses 8 source formats — mermaid, d2, graphviz/dot, dbml, structurizr/C4, SQL DDL, erd, and OpenAPI/Swagger — and reports exactly what changed: added/removed/renamed nodes, added/removed/relabeled edges. Deterministic (no AI), canonical-ordered, and hardened against adversarial input (it never throws).
- New
Column-aware schemas
SQL and dbml schemas extract their columns (type, PK/FK) and render as a real mermaid erDiagram, not a box-and-arrow flowchart. The diff is column-level too: 'users: +phone, −age, ~id' tells you precisely which columns a PR added, dropped, or retyped.
- New
Public diff + generate APIs
POST /api/v1/diff returns a deterministic structural diff (single or batch, optional Markdown), and POST /api/v1/generate renders any structural source to mermaid. Both behind a glyp_… API key.
- New
CI everywhere
A GitHub Action posts an updating PR comment ('added 2 services, removed 1 edge') with inline file annotations and a fail-on: any|removal|none gate (a dropped table, edge, or column counts as breaking). The same engine ships as a zero-dependency glyph-diff CLI for GitLab/Jenkins/CircleCI/Buildkite or a pre-commit hook.
- New
Auto-PR on push
Declare source → artifact mappings in glyph.config.json; a push that changes a source deterministically regenerates the committed diagram and opens a reviewable PR (GitHub App). No AI, no churn (byte-stable output, skipped when unchanged). Also runnable in any CI via glyph-diff generate --check.
- New
Embeds
A <script src=embed.js> tag turns any element into a live diagram; a data-src mode keeps an embed pointed at a URL so it refreshes as the source evolves.
- New
Classroom
A new education workspace: instructors run a cohort with a join code, post assignments (starter diagram + instructions), and review/grade submissions with live previews; students join, work inline, and submit. Built on the same trusted-boundary model (migration 0012_cohorts.sql).
- Improved
900+ tests
The whole pipeline is unit-tested (Evidence core, extraction, grounding, GRADE, PRISMA, causal do-calculus, robustness, all export formats, structural parsing, diffing, generation, config, webhook HMAC + App JWT, CLI), including adversarial parser fuzzing and a YAML alias-bomb guard.
Universal AI brain · ⌘K palette · Photo → Engine · 69 engines / 1,276 templates · −1 MB across heavy routes
- New
Universal AI refine
Every studio now has a docked AI command bar (⌘/ to focus). Type plain English ('add a feedback loop between API and DB', 'recolour decision diamonds amber', 'make the layout left-to-right') and the AI mutates the source / canvas in place. Implemented as a shared useAIRefine hook + AIRefineBar component. Wired into Weave, Lab, Biology (with snapshot-and-revert via ⌘Z). Studio's pre-existing AI panel kept.
- New
Universal AI auto-fix
Render errors get a one-click 'AI auto-fix' button across the platform. Tracks the last attempted signature to prevent quota-grinding on the same broken state. Lab Studio shows it in the validation panel alongside the error count. Hook: useAutoFix.
- New
Photo → Engine recogniser
Lab Studio's headline new feature. Snap a real-world artifact with your phone (whiteboard sketch, anatomy diagram, circuit on a breadboard, sheet music, fishbone analysis, P&ID, blueprint…) and the AI brain picks the matching engine, writes the source, and routes you to the right workstation. Knows all 69 engines and indexes all 1,276 templates for near-match suggestions.
- New
Universal ⌘K command palette
Mounted globally, indexes engines + templates + workspaces + quick actions. Arrow-key onto a template and a live SVG preview renders in a side pane. Recent picks float to the top. Deferred load (the host registers ⌘K with ~1 KB of client code; the heavy palette + catalogue chunk dynamic-imports on first activation).
- New
Live SVG thumbnails on every template card
Templates browser + ⌘K preview pane render the actual diagram for the 36 native-SVG engines via IntersectionObserver + module-scope cache. Non-native engines (Mermaid, Vega, Kroki-backed) get stylish engine-coloured placeholders.
- Improved
Templates metadata split
lib/templates-meta.ts (auto-generated, 273 KB metadata-only view of all 1,276 templates) + lib/templates-types.ts (1 KB types + categories) + lib/templates-bootstrap.ts (welcome template for first paint). Heavy consumers lazy-import the full lib/templates.ts; lean consumers use the light files. Bundle audit assertion test prevents regression.
- Improved
Bundle audit — −1 MB across heavy routes
Heavy routes shed ~1 MB combined across first-loads: /lab 437 → 156 kB (−64 %), /lucidflow 466 → 183 kB (−61 %), /studio 480 → 258 kB (−46 %). Studio's Zustand store no longer eager-imports TEMPLATES — instead a one-time ensureTemplates(then) lazy-cache resolves on first explicit template selection.
- New
+10 new engines this session
sankey (multi-stage flow ribbons), prisma (systematic-review flow), pedigree (genetics family trees), statemachine (proper FSM with guards/actions), logic (gates + Karnaugh + truth tables), sysdynamics (Forrester stock-and-flow), treemap (squarified), funnel (conversion with stage rates), pianoroll (MIDI), tournament (single-elim bracket). All native SVG, zero new deps. 50 new templates across them.
- Improved
Test harness
Now covers all 36 native renderers × every template × light/dark theme (300+ smoke tests), engine registry consistency, template integrity, AI recognizer catalogue health, and bundle-size structural guards. 344 tests total, 1.7 s on warm cache.
- Improved
Landing page v2.0 refresh
Counts honest at 69 engines / 1,276 templates; new 'What's new' section between Trusted-by and Workspaces highlighting all six v2.0 features; comparison table grew six new differentiators (Photo→Engine, ⌘K, live previews, auto-fix, 3D modeller, infinity sketchpad + handwriting OCR).
- Improved
Onboarding tour refreshed
Step 2 is now 'Press ⌘K from anywhere', step 3 is 'AI throughout — refine, auto-fix, photograph'. Steps 4-5 (Data → chart, Style/share/export) kept.
Lab canvas is editable — click text, drag shapes · source stays in sync
- New
Click-to-edit text on the canvas
Click any label / text / number in a rendered figure → inline editor pops up over the element with the current value. Hit Enter to commit, the source splices instantly at the exact byte range the parser recorded for that AST node.
- New
Drag shapes — the source follows
Drag any 2D shape on the canvas → its x: and y: attributes update in the source the moment you release. The dragged element shows a live transform during the drag so the motion feels native; on release we convert screen pixels back to SVG user-space and commit two source edits in one go.
- Improved
Exact splices — zero AI, zero regex guessing
Every editable element carries data-gs-start / data-gs-end data attributes pointing at the parser's recorded source location. Edits are exact splices, type-aware (strings get quoted, numbers preserve their % suffix).
- New
lib/glyphscript/edit.ts
applyEdits() takes a batch of {start, end, newText} operations, sorts descending, drops overlaps, splices in one pass. Used by both click-to-edit and drag-to-reposition.
- New
LabCanvas overlay component
Event delegation on the SVG container, so even though the rendered SVG is replaced on every keystroke, the handlers stay live.
- Improved
Enabled on the figure vertical first
Every shape is draggable + its label is editable, every label_2d is both. CONSORT / Gantt / C4 / OKR / funnel / experiment-flow / ablation / scene editing comes next round — same machinery, just need the wrappers added to each renderer's text emissions.
GlyphScript ships graphical 2D + 3D verticals · Monaco language fix
- Fixed
Monaco language registration race
/lab's Monaco editor was racing the language registration — defaultLanguage="glyphscript" looked up the language before the async import() finished registering it, leaving the editor stuck without highlighting or autocomplete on some loads. Now synchronously imported.
- New
figure vertical — free-form 2D schematics
The first of two new verticals for figures that aren't typed data. Block kinds: shape (rect / circle / ellipse / triangle / polygon / line / path with fill, stroke, dashed, rotate), label_2d, arrow_2d (resolvable from: shape_id / to: shape_id refs auto-find centroids), annotation callouts with leader lines, group_2d translate / rotate / scale wrappers.
- New
scene vertical — 3D / isometric
3D rendered via SVG isometric projection — no Three.js dependency. Block kinds: box3d (three-face shading), sphere3d (radial gradient highlight), cylinder3d (top + side + bottom ellipses), plane3d, label3d. Painter's-algorithm depth sort. Optional ground grid + x/y/z axes.
- New
Four new templates
Physics free-body diagram, optics ray-path through a lens, 3×3×3 crystal lattice (27 spheres, isometric), stacked-blocks 3D schematic.
- Improved
GlyphScript now ships 8 verticals
clinical, PM, engineering, business, biology, ML-eval, figure (2D), scene (3D). Same grammar, same validator, same /lab studio — pick the right primitive for the figure you actually need to draw.
All 6 GlyphScript verticals render. Type-aware Monaco autocomplete.
- New
Five new view renderers — every vertical now produces publication-ready SVG
- gantt (PM): timeline with monthly grid, dependency arrows, milestone diamonds, status colour-coding, today line
- c4_container (engineering): system boundary, external actors, services / datastores grouped by tier, edge-clipped dependency arrows
- funnel (business): chained funnel_steps with per-step conversion badges (green ≥50% / amber ≥20% / red <20%), width proportional to n
- okr_grid (business): initiative header strip + KPI cards with baseline → target arrows + growth %, segment cards underneath
- experiment_flow (biology): experiment banner → samples row → conditions array with dose/duration → assays panel
- ablation_table (ML eval): ranked by |delta|, win/loss colour-coding, magnitude bars
- New
Type-aware Monaco autocomplete in /lab
The type registry powers it directly: block kinds grouped by domain, attrs filtered by enclosing kind with type-correct snippet placeholders (n: ${1:0}, intervention: "$1"), hover docs showing every legal attribute and its description. View-declaration completions list every available renderer with its domain.
- Fixed
Validator scoping
Arithmetic propagation only applies to cohort blocks now — funnel attrition is expected, no longer flagged.
- Fixed
PRISMA rendering
The consort renderer falls back to a generic header when no study block exists, so systematic-review templates render cleanly.
- Fixed
Parser tolerance
Commas between attributes inside a block body are now accepted ({ n: 1, title: "X" }).
GlyphScript — our own research-native diagram language. Dedicated /lab studio.
- New
GlyphScript — the first diagram language designed for research
Every element has a domain type — study, cohort, arm, outcome, project, task, service, kpi, experiment, model. Not generic boxes — semantic primitives.
- New
Numbers propagate AND validate
Declare cohort eligible { n: 1240, from: screened, excluded: { ineligible: 198, declined: 64 } } and the validator checks 198 + 64 + 1240 = screened.n. Catches the class of CONSORT/PRISMA arithmetic errors documented in ~20% of published trial flows.
- New
Six verticals registered from day one
Clinical trials, project management, engineering architecture, business strategy, biology experiments, ML evaluation. Each is a self-contained type package on the same core grammar.
- New
Dedicated studio at /lab
Split-pane Monaco source editor + multi-view canvas + live validation panel with line numbers. Real-time recompile as you type.
- New
First view renderer — CONSORT 2010
CONSORT 2010 flow with arithmetic-validated cohort boxes, side exclusion call-outs, arm branching, primary-outcome results block, provenance dots on cited numbers.
- New
Works in the main Studio too
Engine registered (glyphscript — engine #32) with the same intelligent rendering pipeline, same auto-fix loop, same Intelligence panel hooks.
- New
Seven starter templates covering all six verticals
RCT CONSORT, PRISMA review, quarterly roadmap, service architecture, OKRs + funnel, drug-screen experiment, ML ablation study.
Streaming Architect · diagram timeline · 2 more transpilers
- Improved
Architect mode now streams
The outline appears in ~3s, the draft snaps into the canvas in ~10s while it's being critiqued, the critique cards land next, then the polished final replaces the draft. NDJSON over a ReadableStream — no SSE library, no extra deps. The AI panel shows the live outline and the numbered critique inline.
- New
Diagram timeline (⌘⇧H · 'Timeline' button)
Every ~1.5s of inactivity captures a persistent revision into localStorage (up to 50 per figure). Each entry shows engine pill, relative time, line/char count, and a 1-click restore. A unified-line diff (LCS-based) shows additions / deletions / context between any revision and the current source.
- New
Two more cross-engine transpilers
Mermaid → PlantUML (rectangle / diamond / circle / hexagon blocks, with @startuml wrapper and subgraph → rectangle container), Graphviz → D2 (preserves clusters as containers, maps DOT shapes to D2 equivalents, attaches edge labels and dashed/dotted styles).
- Fixed
Transpiler cluster migration
A node declared at the top level and then referenced bare inside a Graphviz subgraph now correctly migrates into that cluster's container.
Closed-loop auto-fix · cross-engine transpilers · phylogeny & sequence analyzers
- New
Closed-loop auto-fix
Render fails → AI silently fixes → render again, capped at 2 attempts per (engine, code) pair so the AI doesn't grind quota on an unfixable diagram. No more clicking 'Explain & fix' — the platform repairs itself.
- New
Cross-engine transpilers
Real syntactic converters, not AI: Mermaid ↔ D2 (preserves nodes, edges, subgraphs, shape hints, labelled arrows), DBML → Mermaid erDiagram (with proper PK/FK/UK annotations), DBML → ERD (BurntSushi/erd DSL). New 'Convert' toolbar menu appears on engines that have available conversions.
- New
Newick intelligence
Tree-shape analysis — leaves, depth, max & mean distance, branch-length variance, polytomy detection, balanced-vs-pectinate heuristic (depth ≈ log₂N), ultrametric detection (5% deviation threshold), large-tree layout suggestion.
- New
Mermaid sequence intelligence
A dedicated analyser for sequenceDiagram source — participants (declared vs implicit), messages with type classification, unanswered synchronous calls, activation/deactivation balance, control-block counts.
- Fixed
Transpiler & analyser fixes
Mermaid → D2 transpiler now correctly attaches edge labels to the NEXT edge (A -->|x| B → A -> B: "x"), and the sequence analyser stops greedy-matching hyphens into participant IDs.
Architect mode (multi-step AI) + Diagram Intelligence engine
- New
Architect mode — outline → draft → critique → refine
The AI now plans the diagram, drafts it, role-plays a domain reviewer to critique itself, then refines — four roundtrips instead of one. Toggle the purple Architect button in the AI panel for complex prompts.
- New
Diagram Intelligence engine — real structural insights, not just renders
- Petri Nets: bounded reachability analysis, deadlock detection, dead-transition identification, K-boundedness, 1-safety check
- DBML: schema lint (missing PKs, dangling FKs, unindexed FKs, FK cycles, orphan tables, plural/singular naming)
- Chess: material count with standard 1/3/3/5/9 values, piece census, king-safety / pawn-shield evaluation, centre control
- Wardley: evolution-stage breakdown, gravity analysis (Genesis components with many dependents = risk), build-vs-buy suggestions
- Graph engines (Mermaid · Graphviz · D2 · ERD · Structurizr · PlantUML · Cytoscape): cycle detection, longest chain, hub identification, connected components, density
- New
Insights panel (⌘J / toolbar 'Insights')
Every issue can be 1-click AI-fixed without leaving the panel.
- New
'Explain this diagram' button
AI walks through what the active diagram depicts, in plain English.
Six more engines — Excalidraw, WireViz, Ditaa, Symbolator + native Petri Nets & Chess
- New
Excalidraw (engine 26)
JSON in, rough-pen SVG out — paste any excalidraw.com export and it renders.
- New
WireViz (engine 27)
YAML cable-harness diagrams with conductor colour codes and pin labels — for robotics, automotive, lab rigs.
- New
Ditaa (engine 28)
Coloured ASCII art with cBLU / cRED / c<hex> fill markers — the technical writer's classic.
- New
Symbolator (engine 29)
HDL block symbols straight from VHDL entity or Verilog module declarations — for chip-datasheet figures.
- New
Petri Nets (engine 30)
Native renderer, no external service — place P tokens N, transition T, A -> B, auto-layout by topological depth or pin with @ x,y.
- New
Chess (engine 31)
Paste any FEN string (Lichess, chess.com, PGN headers) for a print-quality board; stack multiple FENs separated by blank lines for sequences and puzzles.
- Improved
Engine catalogue: 25 → 31
AI route briefings, dark-mode promotion, hardcoded counts and landing copy all updated.
Five new engines — Bytefield, DBML, Structurizr, SVGBob, ERD · radial phylograms
- New
Bytefield (engine 21)
Byte / packet-layout diagrams for protocol specifications, file formats, register maps — TCP / IPv4 / ELF / superblock templates ship.
- New
DBML (engine 22)
dbdiagram.io-compatible Database Markup Language — SaaS, e-commerce, blog, banking-ledger templates.
- New
Structurizr DSL (engine 23)
C4 architecture modelling, model once / render many views — Big Bank, SaaS, IoT telemetry templates.
- New
SVGBob (engine 24)
ASCII art → crisp SVG, ideal for README diagrams and code-comment figures.
- New
ERD (engine 25)
Pure entity-relationship DSL (BurntSushi/erd) rendered through Graphviz — solid layout up to 50 entities.
- Improved
One generic Kroki pipeline
All five share a single generic Kroki pipeline (lib/kroki.ts) — same client-side, no-keys path as Pikchr.
- New
Radial phylograms
Newick gets a radial / circular layout — set # layout: radial at the top of any tree for a FigTree-style cladogram.
- Improved
Dark-mode promotion
Black strokes / text on Kroki-rendered SVGs now lift to slate automatically.
Weave MiniMap, container groups, and 14 more templates
- New
MiniMap overlay
Toggleable, persists across sessions.
- New
Container / group shape
Explicit width × height — for swim-lanes, AWS VPCs, K8s clusters, UML system boundaries, ADR quadrants.
- New
Structured diagram templates
BPMN pool with cross-pool message flows, Gantt timeline with chevron tasks + milestone star, UML class with proper compartments, sequence diagram with lifelines, C4 System Context, Architecture Decision Record.
- New
Analysis templates
Fishbone (Ishikawa), state machine, concept-map templates.
- Improved
Weave catalogue
150 templates total.
Motion engine + 6 new shapes (actor / star / chevron / trapezoid / cross / wave)
- New
Motion engine
Pulse / ping animations on nodes; flowing-dash animation on edges — same aesthetic as the landing hero.
- New
Motion-ready templates
Live event stream, AI orchestrator, checkout, water cycle and rocket launch templates with motion baked in.
- New
Six new shapes
UML actor stick figures, sales-funnel trapezoids, pricing chevrons, OKR-tree milestone stars, clinical-pathway crosses.
- Improved
More shapes
Cylinder, cloud, stadium, callout shapes added the day before.
Biology Composer scales up · Weave gets a soul
- Improved
Biology Composer scales up
130+ curated shapes, ★ favourites, Iconify free-search (paginated, 200k+ icons).
- New
16 pre-built biology templates
Central dogma, Krebs cycle, mitosis, photosynthesis, synapse, HPA axis, blood circulation, inflammation cascade, antibiotic resistance, ATP synthesis, drug-receptor signalling, pathogen lifecycle, reflex arc, food chain, immune response.
- New
/lucidflow Sketch mode
Rough.js hand-drawn outlines, Caveat handwritten font.
- New
Strategy canvas templates
SWOT, BMC, Lean Canvas, Empathy Map, Eisenhower, Customer Journey, Service Blueprint, Value Stream Map, Mind Map, Network Topology, Floor Plan, ERD, Org Chart, Storyboard, Affinity.
Dedicated /lucidflow + AI co-pilot + full export suite
- New
Dedicated /lucidflow workspace
Lucidchart-style pan/zoom, drag-from-palette mechanics, on-hover connection handles.
- New
Contextual toolbar
Align / distribute / colour / edge-style / duplicate.
- New
AI co-pilot side panel
Refine + suggestions, hard-constrained to the Weave JSON shape.
- New
Full export suite
PNG · SVG · PDF · JSON source · shareable permalink.
- Improved
Templates moved into the sidebar
Real per-template SVG previews — no more placeholder boxes.
D2 — the 18th engine
- New
D2 declarative architecture language
Wired in with Terrastruct-compatible syntax.
- New
Self-contained pipeline
lib/d2.ts translates D2 to Graphviz DOT, no WASM / external service.
- New
10 starter templates
Three-tier app, microservices with bus, K8s, AWS three-tier, CI/CD, event-driven, RAG pipeline, multi-region failover, data warehouse, SAML SSO.
- Improved
Four-surface platform
Site reflows as four-surface platform: Studio, Weave, Biology, AI co-pilot.
More on the way. Back to landing.