Repository navigation
Releases: zh-xx/Antu
Release list
0.9.0
The package that carries Antu to people: @zh-xx/antu for npm, with the command line and the MCP server in it, and the way to publish it (#80, #113, #114, #116). The lawyer-facing home page of the site (#107, #108). The contract is not touched.
Added
- The npm package
@zh-xx/antu, built bynode tools/build-npm.mjsintodist-npm/: two commands,antu(the command line of the skill:validate,layout,render,preview) andantu-mcp(the MCP server, over stdio), each one bundled file with its dependencies inside, sonpxdownloads about 2 MB and nothing is built on the user's machine. With them: the viewer page, the agent guides and examples the server serves, the licence and the third-party notices. - The package is tested as users get it:
tools/verify/npm-pack.mjspacks it, installs the tarball into an empty folder and runs the command line and the MCP server over stdio (the seven tools, a guide, validate, layout, render); a CI jobnpm-packagedoes it on every pull request. - The way to publish: a manual workflow, Publish npm (
.github/workflows/publish-npm.yml), separate from Release. It refuses a commit that is not onmain, a version without its tag on that commit and red checks; it builds and tests the package and shows what would go out (npm publish --dry-run). A dry run is the default; a real publish waits for the maintainer to approve thenpmenvironment and uses the identity of the workflow, not a stored token. Nothing has been published by it yet (seespec/versioning.md). - The MCP registry entry: the package carries
mcpNameand a generatedserver.json(io.github.zh-xx/antu);test/npm-package.test.mjskeeps the package,server.jsonand the skill on the one version ofpackage.json. - The home page of the site (
site/prototypes/hero/, generated intoindex.htmlof the Pages site): a top bar, the four kinds drawn in front of the reader from one document each, light and dark. It is a page for the site, not part of the engine's contract.
Changed
antu_renderwithoutoutPath, when the server was installed from npm, writes<title>.htmlin the folder the server runs in; from a repository it still writesdist-html/<title>.html.- The example gallery of the Pages site moved to
gallery.html;index.htmlis the home page. - The procedure example
02-purchase-contracthas three stages, and a fictional contract text (examples/raw/) it is drawn from, so the home page can show a flowchart made sentence by sentence. - The judgment text of the Fang Yuan case in
examples/raw/has its reasoning written out. - Tool versions: the MCP SDK 1.31.0, vite 8.3.2,
setup-node7,download-artifact8,upload-pages-artifact5,source-map-js1.2.2.
Breaking
- None. The JSON of every type, the names and parameters of the MCP tools and the subcommands of the command line are as in 0.8.0.
0.8.0
The look of a diagram is now a theme: three themes, the document theme black and white and the default (#97, #99, #100, #101, #102). The READMEs and several documents are brought up to date (#103, #104, #105).
Added
- Three themes:
document(black and white, square, for print and filing; the default),modern(rounded, pale greys) andlegal(navy, red only for the adverse). Every meaning is also carried without colour, so a black-and-white print reads the same. The reader switches in the label card and the choice is remembered. See spec/theme.md. - A shared scale: an 8 px grid for node sizes, five type sizes, four line weights and four line styles.
--theme document|modern|legalforrenderandpreviewin the command line, and an optionalthemeonantu_renderandantu_preview. It fixes the page to that theme; an unknown name is refused. Nothing in the JSON chooses a theme.
Changed
- Only the picture is themed; the label card, the zoom buttons, the bar below and the minimap look the same in every theme.
- Without a choice, a page opens in the
documenttheme: black and white instead of the former blue-grey and colours. The same JSON draws the same picture, apart from colour, corners and fonts. - The label card has a fixed width, so the arrows do not move when the way of drawing changes.
- The minimap shows the extent of a picture that is drawn only by decoration layers (the route map, the relation path), where it used to be empty.
- Fact diagrams, time scale: side 2 is drawn as a square and side 1 as a circle, so the sides differ without colour.
- Pill radius comes from the theme: square in the document theme, rounded in the others.
- The READMEs (English and Chinese) are restructured and show the sketch of every way of drawing, written out from the page's own sketches (
assets/kinds/,node tools/gen/kind-icons.mjs); a test keeps them complete and current. - The architecture, fact rendering, procedure, justification and relationship documents no longer describe the former colours; a page of this release is about 2.3 MB.
- A site on GitHub Pages is built from the cases in
examples/(a page for every way of drawing,tools/gen/pages.mjs); it is built on every pull request and published frommain. - A test (
test/theme-lock.test.mjs) fails when a view or the stylesheet writes a colour of its own; the verifier fails when the document theme draws a colour.
Breaking
- None. No field, rule or tool parameter changed;
themeis new and optional. A page that was fixed to the old colours now opens in thedocumenttheme unless the reader or the call chooses another.
0.7.0
The same JSON can now be drawn in more than one way, and the page has a picker for it: three ways for a fact diagram, two for a procedure, nine for a relationship diagram (#85, #87, #89, #91, #93, #95).
Added
- A picker in the label card:
‹ current way 3 / 9 ▾ ›. The arrows and the left and right keys step to the neighbour in one click; the name opens a panel with a sketch of every way. It is the same for every type, and the choice is remembered per diagram. With one way there is no picker. - Fact: two more ways to draw the same fact JSON.
- The chronicle (
chronicle): one column, the time on the left, the gap between two time points written on the spine ("+24 min", "12 days later"). A group is a mark on the spine (circle, square, diamond) with a legend that lights one group up; nothing about the group is written in the cards. - The time scale (
scale): distance on the axis is real time, so where events crowd together shows; one lane per group, the axis breaks where the scale changes, and cards that cannot be kept apart are gathered into one and written out under the diagram.
- The chronicle (
- Procedure: the route map (
route): the main line as one thick line with its stations, stage bands behind them, the branches hanging below, loops and jumps as arcs; what is not on the picture is listed under it. - Relationship: eight more ways to draw the same relationship JSON:
- the focus view (
focus): one party in the middle and the parties around it; - the guarantee chain (
chain): one claim, its guarantors, what stands behind them. A guarantee that names no claim is tied to one only when that is plain (the creditor has exactly one claim), and then it says "inferred"; - the relation matrix (
matrix): parties across and down, the relations in the cells; - the equity tree (
equity): holders above what they hold, the share on each line, and what a holder holds through others when every share on the way is stated; - the authority chart (
authority): control, employment and agency as an organisation chart; - the related-party list (
related): a table centred on one party, a line for each relation, with its category, content and direction; - the relation path (
path): the shortest chains between two parties, one chain to a row; - the camp summary (
summary): each camp as a block, one line between two blocks with the number of relations.
Every relation is on the page once, in the picture or in a list under it; a case a way cannot draw says so.
- the focus view (
kindon the command line and the MCP tools:--kind timeline|chronicle|scale,--kind flow|routeand--kind graph|focus|chain|matrix|equity|authority|related|path|summaryforlayout,renderandpreview; an optionalkindonantu_layout,antu_renderandantu_preview.renderwith a kind opens the page in that way; the reader can still switch.layoutreports each way in its own terms. A kind that does not belong to the diagram's type is refused with the list of its kinds.
Changed
- The fact guide, the relationship guide and the procedure guide for agents say that the ways exist, that nothing in the JSON chooses them, and when to ask for which.
- The text of the interface in Chinese is more formal (a few words in the errors, the guarantee chain and the related-party list), and counters are consistent ("个" for things, "条" for rules).
- Nothing in the format: no field, rule or tool parameter was removed or changed; the optional
kindis new.
Breaking
- None.
0.6.0
The skill can look at what it drew without the MCP server (#82), and the examples are fictional (#74).
Added
previewin the skill's command line:node scripts/antu.mjs preview spec.json [-o shot.png] [--orientation vertical|horizontal] [--width 1600] [--height 900]. It validates (and refuses a diagram with
problems, likerender), takes a screenshot of the page in a headless Chromium-based browser (Chrome, Edge,
Chromium;ANTU_CHROMEpoints at one), and says what to look for. The agent reads the PNG with its own tool. On Node
22 and newer it waits until the diagram has drawn; below 22 it uses the browser's own screenshot (a strip at the
foot may stay blank, and it says so). Exit code 3 when no picture can be taken.SKILL.mdsection 4b, "Look at it": how to look, what to look for (crowded cards, text too small, a line through
a card, an empty diagram, cut headings), and when the agent must say it did not see the page (no browser, no way to
read images, no Node). It replaces "there is no equivalent, you cannot look at the page".- Windows: the browser is found where Windows keeps Edge (shipped with the system) and Chrome.
Changed
- Every example is fictional (#74): the cases drawn from real judgments are replaced by invented ones of the same
shape (names, companies, courts, case numbers and dates made up and marked so; statutes written as "model
provisions"). In the skill: the agent examplesfact/5-durationandfact/6-sources.examples/raw/holds invented
judgment texts instead of real ones. - A quote is verbatim (#68): the
quotefield note and the fact guide say a quote is copied, not shortened or
reworded, and a condensed version goes indetail. A test holds every quote of the fact examples to its text. antu_previewandpreviewsay what to look for in the same words.- CI tests the skill as each pull request would build it,
previewwith a real browser on Linux, macOS and Windows
and Node 18 to 24; before, the command line of main was first tested at release. - Nothing in the format: no field, rule or tool parameter changed.
Notes
- This 0.6.0 is a new release. A different 0.6.0 (what became 0.5.1) was published on 2026-10-01 and withdrawn the same
day; its tag was deleted.
Breaking
- None.
0.5.1
Antu has a licence: the GNU Affero General Public License, version 3 or any later version (#70).
Added
LICENSE(AGPL-3.0-or-later) and the licence section of the READMEs.package.jsonsaysAGPL-3.0-or-later.- The notices of the code of others that is inside what we ship: React,
@xyflow,d3-*,zustand,
html-to-image,elkjsand the rest (19 packages: MIT, ISC, BSD-3-Clause, and elkjs under its
GPL-3.0-or-later option). They are inskills/antu/THIRD-PARTY-NOTICES.md(so in the skill zip), inside every page,
and at the top of the command line. They are generated from whatsrc/imports (tools/lib/notices.mjs), so a
dependency update cannot leave one out, and a test fails whensrc/imports a package that has no notice. - An additional permission (AGPL section 7): the data in a page, and the diagram drawn from it, are not covered by the
licence; they stay with whoever made the page. It is in the READMEs and in the block every page and the command line
carries. - The licence and the place of the source travel with the code: every page carries a block
<script type="text/plain" id="antu-license">with the licence of Antu, the Corresponding Source of that version
(this repository at its tag) and the notices; the command line starts with the same text; the skill folder holds
LICENSE. A page is about 70 KB larger for it, the command line about 75 KB.SKILL.mdsays which licence applies.
Changed
- Nothing in the format or the tools: no field, rule, tool parameter or command-line option changed.
Notes
- Versions up to 0.5.0 were published without a licence file. The licence applies from 0.5.1.
- This content was first published as 0.6.0 and withdrawn a few hours later, before anyone had downloaded it: it adds nothing
to the contract (spec/versioning.md), so it is a patch release. There is no 0.6.0.
Breaking
- None.
0.5.0
The guard (#43): an agent that cannot look at the page is told whether the reader can read it.
Added
- Every kind's geometry report (
layout,antu_layout) says how big the body text is on one screen, in px:
Text on one screen (1600×900): 7.0 px as it opens (vertical), 4.7 px horizontal. Full size is 13 px.It is the
kind's body font times the fit zoom, and a browser check holds it to the page: the page draws it within 5%, never
smaller than reported (the report is on the safe side). - One pair of thresholds for every kind: under 11 px a note that the text is small and the reader can zoom in; under
9 px a note that it is too small to read without zooming in, with how this kind is split (by issue, by stage, by
group, into periods) and "do not drop facts to make it fit". A justification of several issues also says how big
the text is with every issue folded, so the agent can leave it whole when folding is enough.
Changed
- These notes replace the ones each kind had: a justification compared its fit zoom with 0.4 and a procedure and a
relationship diagram with 0.45, which said nothing about the elevator case (5.6 px); a fact diagram had no such
note at all (the Yu Huan loan timeline opens at 7.0 px). renderin the skill's command line prints the same lines after it writes the page.SKILL.mdsays to run
layoutbefore making the page and what to do with each level.
Breaking
- None. The words of
antu_layoutchanged; they are not part of the contract (spec/versioning.md).
0.4.1
Two more fixes to what the skill tells an agent (#49). No engine change.
Fixed
SKILL.mddid not say that the page has switches in its bar, or that some of them are off until the reader turns
them on: in a fact diagram a card shows its title, summary and time, and its party names and source marks need
Parties and Sources. An agent could not know, so it could not tell the user where to look. It now lists the
switches of each kind with their defaults, says what that means for what to write, and says the detail and the
sources are in the overlay.layoutadds a note when the text would be small on one screen, andSKILL.mddid not say what to do about it. It
now says: split by issue (or fold issues), by stage, or by group as the note names, one JSON per piece with a title
of its own, and do not drop facts to make it fit.
Breaking
- None.
0.4.0
Changed
- Fact diagram:
dateis optional (#50). An event the material gives no date for is left without one, and its card
says the date is unknown ("日期不详" / "date unknown", in italics), instead of carrying a date made up to satisfy the
format. Order was always theslotsarray anddateonly shown, so nothing in the layout moves.dateEndneeds a
date; adatethat is written must still be valid. A new agent example7-undated.SKILL.mdand the fact
guide drop the workaround of borrowing a neighbour's date withapprox.
specVersionstays 1: a file that has dates is still right. - The agent reference material of the fact diagram is 5.4k tokens (it was 4.5k): the guide says whom to list on an
event and what to do without a date, and the field table says so too.
Breaking
- None.
0.3.1
Two fixes to what the skill tells an agent (#49). No engine change.
Fixed
- A fact diagram of two parties written after
1-minimalhad nogroups, so every card stood on the middle axis
and the page did not show who did what.SKILL.mdnow says that a diagram of two or more parties needs
groups(see3-groups) orviewsthat split by party (see4-views). - The commands in
SKILL.mdwere writtennode scripts/antu.mjs …, which only works with the skill folder as the
current directory, and an agent's current directory is usually the user's. They are now written with
<skill-dir>, andSKILL.mdsays where the agent's own files go (where the user works, not in the skill folder).
Breaking
- None.
0.3.0
The agent skill gets a command line, so an agent without the MCP server can check its diagram before it draws it.
Added
scripts/antu.mjsin the skill:validate,layoutandrender, in one file with every dependency inside
(Node 18 or newer, nothing to install, no network). It says the same words as the MCP toolsantu_validateand
antu_layout;renderchecks the data first and refuses a diagram with problems.SKILL.mdtells the agent
to use it whennoderuns, then the Python script, then a text replacement.
Changed
- The texts of validation and of the geometry report now come from one place (
tools/lib/report.mjs), shared
by the MCP server and the command line. The words the MCP tools return are the same as before. SKILL.mdsays what the guides'antu_*tools are in the skill folder (and that there is no way to look at the
page), and what to do with something the user is unsure of, an event with no date, and a missing source. Found
by giving three agents the skill and one sentence each (a fact timeline, a relationship diagram, a justification
tree): all three used the command line, left nothing invented out of the JSON and made a page that opens; the
gaps they named are what this fixes.- The fact guide says whom to list on an event (who did it; both only when both acted).
- The note "nothing supports X" says it can be left as it is when X stands only because what argued against it
was rejected. - The skill folder is 1.5 MB larger (the bundled command line; 0.5 MB in git and in the zip).
Breaking
- None.