Repository navigation
Added
- Screen readers hear the nav, sidebar and pager labels in the page's
language (VitePress writes them in English): the build writes them into
each page's HTML, andtheme/aria-labels.jssets them again after each
navigation, fromariaLabelsinlocales.js. - The Support page links to Patreon, in the four languages, and
.github/FUNDING.ymlputs the Sponsor button on the repository. - The site counts visits with Cloudflare Web Analytics, which sets no cookies
and collects no personal data; Google Tag Manager is gone. - The language switcher goes to the same page in the other language when it
is translated, and to that language's home otherwise — in every direction.
The pages it knows come fromTRANSLATEDindocs/.vitepress/locales.js
(and the translated pages under a listed section such as/cookbook/);
tests/docs/test_language_switch.pychecks that each is a page and that
every translated page is reachable. - A translated page records the English page it came from and the hash of its
text (source:/source_hash:). When the English changes, the page says
"this translation may be out of date" with a link to the English, and CI
lists the stale pages (scripts/translation-status.py;--stampafter
updating a translation).tests/docs/test_translations.pychecks that every
translation names an English page that exists and is in its language's
navigation. - The site speaks four languages: English, and /pt/ (pt-BR), /es/ and
/zh/ (zh-CN), with a language switcher and each language's interface text;
the pages are translated next. The top nav is Home · Docs (Guide, Tutorial,
Reference, SPEC) · Showcase · Blog · Changelog · Status · Sponsor. Search
splits Chinese into words (it found nothing inside a Chinese sentence), and
each page carries hreflang alternates and Open Graph tags.
Documented
-
The Examples page in Portuguese, Spanish and Chinese. Every live page now
has a translation except the generated ones (Reference, SPEC, Changelog),
which stay in English: their entries in the pt/es/zh navigation say so. -
Every
quantum …command in a published page's shell block (all four
languages) is parsed by the real command line in CI
(tests/docs/test_docs_commands.py); the homes, the Sponsor page, the blog
posts and the Roadmap may hold only imports of tested Cookbook files and
such commands; the theme's example components may appear only on
unpublished pages. -
The Blog index and Status page in Spanish and Simplified Chinese, generated
like the Portuguese ones (LANGSinscripts/generate-site-pages.py). -
The docs' deprecated-content check caught a removed value only as written
in code: the q:application page listedtestingin its table of types and
desktopin a list of targets, and both slipped past. It now also reads
table rows and lists of values, has patterns for more of the changelog's
removals (attributes ofq:column,q:set,q:param,q:queryand
q:function, a slice step, the mail mock, upload URLs, removed projects,
the admin's deploy feature), and each pattern proves it catches a sample.
tests/docs/test_quoted_messages.pychecks that a message the site quotes
in a text block uses only words Quantum prints. -
The Tools pages (the CLI, hot reload, the
/_devpanel, error pages,
quantum check, the VS Code extension, the LSP server) and Desktop in
Portuguese, Spanish and Chinese, and Community in Spanish and Chinese, with
their sidebars. Headings keep the English anchors; the VS Code page is
generated per language from the extension's manifest. Machine translated
and marked so. -
More of the guide in Simplified Chinese: AI, files and mail, data import,
services, sessions, the admin, project structure andq:application,
machine-translated, with the English heading anchors. -
The q:application page no longer lists
type="testing"(removed in 0.22,
replaced byquantum test) or a--target desktopfortype="ui"
(removed in 0.16), and quotes the parser's message as it is. -
The Blog index, Status and Community pages in Brazilian Portuguese.
scripts/generate-site-pages.pywrites the translated Blog index and Status
page (LANGS) around the same posts and the same measured tables, stamped
with the English page's hash; the nav's Blog and Status links go to the
translation when there is one. -
The rest of the guide in Brazilian Portuguese: AI, files and mail, data
import, services, sessions, the admin, project structure and
q:application— every guide page now has a pt version. The pt guide
pages keep the English heading anchors, so a link to a section works in
both. -
Roadmap and Community in the top nav, in every language. The Showcase in
Portuguese, Spanish and Chinese, written byscripts/generate-showcase.py
with the same measured numbers as the English page; the Roadmap and the
tutorial in Chinese. All machine translated and marked so. -
The core guide in Brazilian Portuguese (/pt/guide/): getting started,
components, how a page runs, state, loops, conditionals, functions,
expressions, actions, queries, authentication, UI and testing,
machine-translated, with the code and its output identical to the English
and the same heading anchors; the pt guide sidebar has Portuguese labels. -
The core guide in Spanish and Simplified Chinese: Getting Started,
Components, How a Page Runs, State Management, Loops, Conditionals,
Functions, Expressions & Databinding, Actions & Forms, Database Queries,
Authentication, One App, Many Screens and Testing an App (and, in Spanish,
the rest of the guide: AI, Files and Mail, Data Import, Declared Services,
Sessions, Quantum Admin, Project Structure and q:application) — machine
translated and marked as such. The prose is translated segment by segment
around the English page's code, which is copied as it is; each heading keeps
the English anchor, so links to a section work in every language. -
The Cookbook in Spanish (/es/cookbook/) and Simplified Chinese
(/zh/cookbook/): all 51 recipes, machine translated and marked as such. The
code and results on each page are the English page's imports of the tested
files, line for line; the prose follows each language's glossary. -
The repository's front door meets the site's bar. README's Quantum examples
are files of Cookbook recipes, byte for byte, and its quick start is run as
shown (tests/docs/test_readme.py, which also checks the site and file links
of README, CONTRIBUTING, SECURITY, SUPPORT_TIERS and the Code of Conduct);
the deprecated-content check reads those five files too. README's AI
examples used a model name as if it were a default and an attribute
(minRelevance) its text no longer explained; it now links the Cookbook,
Tutorial, Reference, Showcase, Stability and Roadmap. CONTRIBUTING pointed to
Discussions, which are off; SECURITY called 1.0 "experimental" and suggested
an environment variable nothing reads; SUPPORT_TIERS cited two files that are
not in the repository. -
The Cookbook in Brazilian Portuguese (/pt/cookbook/), machine-translated:
the code and the results are the same files the English imports. The
generator writes each language's Cookbook index (LANGSin
scripts/generate-cookbook.py), linking the English page where a recipe is
not translated yet. All 51 recipes are translated; a test checks that every
translated page imports the same files as its English page, in order. -
Cookbook, "Screens": a layout that fits the screen, a table edited in
place, tabs, cards, every kind of field, and the same page in a terminal;
six tested recipes, two of them also checked in the console
(tests/docs/test_cookbook_console.py). -
Cookbook, "Basics": a first page, variables and expressions, loops,
conditionals, functions, a page per URL, the query string and reusable
components with a slot; eight tested recipes. -
Cookbook, "AI": answers with their sources, when the documents do not know
(minRelevance), a streamed answer, an agent over your database, when the
model fails (onerror), sorting messages with JSON answers, and answers
from a table; seven recipes. In CI they run against a stand-in model server
(scripts/generate-cookbook.py); before a release, against a real one
(tests/live_ai/test_cookbook_ai.py). Their tests check structure, never the
model's words. -
The CLI and LSP server pages say what exists. The CLI page taught exit
codes, environment variables and aquantum pkg uninstallthat do not
exist, andquantum start --debugas debug mode; the LSP page, a
pip install quantum-lsp(it is not on PyPI), rename, code actions,
options and editor packages the server does not have. The VS Code page no
longer implies the extension runs the language server. Five old notes
linked from no menu leave the site: a benchmark nothing reproduces, the
q:queryimplementation plan and the performance-phase notes. -
The essential pages in Brazilian Portuguese (/pt/): why Quantum,
installation, quick start, the tutorial, stability, sponsor, the roadmap and
the 1.0 post, machine-translated until a native speaker reviews them, with a
glossary (docs/.vitepress/i18n/glossary.pt.md) that keeps the terms the same
on every page. -
Cookbook, "Data & SQL": a query with parameters, a paginated list, search
as you type, filter and sort, writes that happen together (a transaction
rolled back when its last write fails), change history, adding a column
with a migration, reading CSV and JSON, loading a CSV into a table in one
transaction, and totals computed over a query's result; eleven tested
recipes. -
Cookbook, "Forms & actions": each error on its field, a refused form that
keeps what was typed, redirect with a flash (q:flashfor a warning),
several forms on one page, a form from the table, edit a row, confirm
before deleting, numbers and dates, and a choice from a list; nine tested
recipes. -
Cookbook, "Login & permissions": log in with a hashed password, sign up and
store a hash, a page for one role only, a guard that redirects (and stops the
page's actions), and sign out; five tested recipes. -
Every
xmlexample of the guide now runs: with the result it shows, or in
a test that runs the page's code as written (tests/docs/test_guide_*.py);
the docs guard's list of pages that were only parsed is empty. Running them
fixed what they claimed: the components page said severalq:returns
returned a list (the first one ends the component, SPEC RET-1), and the
home page's example now imports the tested "first test" recipe. -
The site in Spanish (
/es/, machine translated, reviews welcome): the home,
Why Quantum, Installation, Quick start, Stability, Sponsor, the Roadmap,
the tutorial and the "Quantum 1.0" post. Code blocks are the English ones; the terms are in
docs/.vitepress/i18n/glossary.es.md. -
Cookbook recipes: "When the mail server says no" (
onerror="continue"),
"Test data with test:given" (andtest:as) and "Testing what an action
refuses" (error=,message=,flash=,table=). Recipes in a topic
keep an order (order:in the page's front matter). -
Pages that described what does not work are gone: the plugin system
(nothing loads plugins), the package manager page (pages cannot import a
component from an installed package;q:import from=is a folder under
paths.components), and the HTML, terminal and mobile target pages (what
is true about them is in the guide's "Standalone builds"). The VS Code
extension page is generated from its manifest and says how to run it from
source — it is not on the Marketplace. -
A Stability page (/stability/), generated from SUPPORT_TIERS.md: what 1.0
promises, tag by tag, and the semver promise for Core and AI. -
Simplified Chinese (zh-CN) for Why Quantum, Installation, Quick start,
Stability, Support and the "Quantum 1.0" post — machine translated, marked
as such until a native speaker reviews them. A translated page must show
the English code, block for block (the docs guard checks it), and the nav
links to a translation when one exists. The zh glossary is in
docs/.vitepress/i18n/glossary.zh.md. -
The site no longer publishes the 15 hand-written example and feature pages
(docs/examples/*,docs/features/*) whose code did not work with 1.0: they
taught removed attributes (persist=,maxSize=,cache=) and tags that
never existed (q:try). The Cookbook, the Showcase and the tutorial replace
them; the files stay in the repository to be rewritten as recipes. -
tests/docs/test_no_deprecated_content.py: a published page that shows
something removed or renamed in the changelog (a tag, an attribute, a CLI
command, a tier name, a default) as current fails CI. Two pages were fixed:
the UI guide namedquantum new, and the CLI reference a retired tier name. -
The hand-written
ui:component pages (docs/ui/) are gone: they taught
components that do not exist. The generated UI tags
reference and the "One App, Many Screens" guide replace them. The Cookbook
is in the Docs menu in all four languages. -
Tutorial, "Build the tasks app": from
pip installto the app in
projects/tarefas, in English, in eight steps (validated forms, finish and
delete, a filter, a table that sorts and edits itself, an edit page with
history, aquantum testsuite). Each step's code is built and run as shown
bytests/docs/test_tutorial_tasks_app.py, and the finished app is checked
againstprojects/tarefas, tag by tag. -
Showcase: the seven proving apps with a screenshot of each running
(scripts/showcase-screenshots.py, the AI apps on a stand-in model server),
what it demonstrates, the SPEC rules it cites, its size, its tests and its
source. The numbers are measured byscripts/generate-showcase.py, and
tests/docs/test_showcase.pyfails when the page and the apps disagree. -
The Cookbook: short recipes for one task each. A recipe is a small app in
examples/cookbook/with aquantum testsuite; its page imports the tested
files, and what it shows as a result is written by running it
(scripts/generate-cookbook.py). The first two: a first test with
quantum test, and mail in development withhost: log. -
Quantum code on the site is tested: CI fails on an
xmlblock that is not a
run guide example, a parsed guide or generated-reference example, or on a
page marked "Under review"; aquantum.config.yamlsnippet must load
without errors or warnings. Two snippets taught keys that do not exist. -
Every
xmlexample on the site is checked by the real parser in CI
(tests/docs/test_docs_xml_blocks.py); the guide's examples with a result
are also run. 121 of 607 failed: the guide's are fixed, the editor
illustrations are plain text, and 22 hand-written pages that document tags
that do not exist (theui:component pages, UI features, some example and
target pages) say "Under review" at the top until tested examples replace
them. -
The site has a changelog (one page per version, with stable anchors), a
status page ("what really works today", from FEATURE_STATUS.md), a blog
with an RSS feed and the "Quantum 1.0" post, a support page and a community
page.scripts/generate-site-pages.pybuilds the derived pages, and CI fails
if they are stale. -
The site has a Reference generated from the code (
docs/reference/,
scripts/generate-reference.py): the Core and AI tags with every attribute,
type, value, default and the rules that specify them; the expression
functions; the command line; the configuration keys; theui:*tags, Core
(UI-7) and Experimental apart, with every attribute the UI parser reads;
and the SPEC with an anchor per rule (reference/spec#EXPR-14) that lists
the entries citing it. A test fails when a committed page differs from what
the generator writes. It replaces the hand-writtenapi/tags-reference,
api/attributes-referenceandapi/ui-referencepages. -
The site has a Roadmap (
roadmap/): what 1.0 promises, and what is next,
each item with its status (planned, in design, in progress) and no dates.
Fixed
-
The VS Code extension packages:
vsce packagestopped on an icon that
package.jsonnamed and the repository never had. The extension carries
its icon and the MIT LICENSE, and leaves its TypeScript sources out. -
Two pages with an in-memory
q:knowledgeof the same name and different
sources deleted each other's index: the other page's search failed with
chromadb's "Collection [...] does not exist", or — at the wrong moment —
found nothing, which reads as an honest "I don't know". In-memory bases are
now separate by sources as well as name (IA-2), and a base that was built
with chunks and has none when searched is an error, neverfoundfalse
(IA-6). The three most recently built in-memory versions of each base are
kept; older ones are dropped. -
python -m quantum.cli.runner— the installation guide's way to run
quantumwithout the script onPATH— no longer prints a
RuntimeWarningbefore every command.quantum start --debugsays what it
does: it prints the traceback when the server fails to start; debug mode is
server.debuginquantum.config.yaml. -
A
q:queryinside aq:loopor aq:ifof aq:transaction datasource="…"
takes the transaction's datasource, like one directly inside it (DB-4); it
had to repeatdatasource=, or the page did not parse. -
q:set name="cart"is local even when the session has acart(SET-3,
EXPR-11). It used to overwritesession.cartand leavecartundefined, so
the page showed{len(cart)}as written. -
q:set name="session.cart" operation="append"starts a list when the key
does not exist yet (SET-3). It was refused as "non-array": a missing scope
key reads as''. -
A page's extracted stylesheet and script (
static/styles-<hash>.css) are
written whole or not at all. Written in place, a second request during the
write linked the file while it was still empty or partial, and its browser
got an unstyled page, cached under a name that never changes. -
q:loop type="range"takes expressions infrom,toandstep, like any
other{...}attribute (LOOP-5):to="{count}"was read as the text
"{count}" — an error in a statement, zero rows in markup — andstep="{n}"
became 1. A bound that is not a whole number is now an error that names it,
in markup too, where it used to draw zero rows. -
q:param type="date"on an action is checked on the server:2026-02-30
ortomorrowis refused on its field (ACT-2). Only the browser's date
input checked it before, and any text reached the action. -
A
q:paramdefault=on an action has the param's type (ACT-2). It was
used as text, sotype="boolean" default="false"gave"false", which is
true: an unchecked box read as checked. -
quantum run --target desktopis no longer offered: the command line says
the target was removed and points toquantum desktop(UI-8). It used to
accept the choice and fail later, in the build.