Releases: YuSabo90002/typsphinx
Release list
Release v0.9.2
This release curates the Windows-shaped path-handling hardening accumulated since 0.9.0 — an
output-directory escape check, an absolute image URI that aborted the PDF build, and diagnostic
message quoting — together with a separate compile-blocking defect in the image visitor. A project
built with the published 0.9.0 release produced no PDF for any master document when an image was
not first in its container, and 0.9.0 users should upgrade to this release. Zero new runtime
dependencies; the bundled @preview version-sync surface is untouched.
Fixed
-
An image not first in its container no longer aborts the
typstpdfcompile (IMG-08, IMG-09,
IMG-10). Whenever an image followed other content in the same container — mid-sentence, in a
list item, a table cell, a definition-list body, an admonition, a footnote, a field-list body, a
section title, or a figure's legend — the emitted Typst lacked a separator from the preceding
expression, so Typst refused the file withexpected semicolon or line breakand thetypstpdf
builder raised an extension error, producing no PDF for any master document in the project,
including masters that contained no image at all.visit_image()now joins the translator's
existing separator discipline, so every one of those containers compiles. This fix is confined
totypsphinx/translator.py; no other file undertypsphinx/was touched for it. -
A Windows-shaped
typst_documentstarget that reaches outside the output directory is now
refused on the normalized path, matching its sibling image-URI check (PATH-01). The
typst_documentsescape predicate now applies its absolute-path and drive-qualified checks to
the same backslash-normalized string its sibling image-URI predicate already used, rather than
to the raw stem. Neither of the predicate's two real call sites can currently reach the gap this
closes — both normalize or otherwise guarantee a safe value before calling it — so this is
contract hardening for a future caller, not the repair of a defect any user was hitting. -
A Windows-shaped absolute image URI now compiles instead of aborting the PDF build (IMG-04,
IMG-05, IMG-06, IMG-07). The relocation key built for a relocated image is now derived from a
forward-slash-normalized basename, so no backslash or drive letter from the original URI
survives into the emittedimage(...)path value, and that value is now escaped as a Typst
syntax literal before it is interpolated. The two halves are coupled — neither alone closes the
compile-time failure, because Typst refuses a backslash in animage()path by value, not by
syntax. The relocation basename is also bounded to 255 UTF-8 bytes, with the collision-avoidance
digest kept whole so two images that would otherwise collide on a shared filename still resolve
to distinct files. -
A path named in a diagnostic message now reads exactly as it appears on disk (MSG-02, MSG-03,
MSG-04, MSG-05). Path-valued messages across the extension no longer double a Windows
separator, and the quoting that wraps a path no longer closes early on a path containing a
quote character — a POSIX path with an apostrophe in it (for example, a directory named
O'Brien) was affected by the same defect family as a Windows-shaped path, so this is not a
Windows-exclusive fix. Identifier-valued messages (registry keys, docnames) are unaffected;
only path-valued messages route through the new quoting.
Verified
- Zero new runtime or dev dependencies across this milestone's diff (
v0.9.0..HEAD) — the only
change topyproject.tomlanduv.lockis the version literal itself. - The four bundled
@previewpackage version strings unchanged across all four sync surfaces
(writer.py/template_engine.py/templates/base.typ/examples/**/*.typ). - The
visit_image()separator fix is bound by a realtypst.compile()gate covering the 16
previously-failing and 9 must-keep-passing image shapes (TEST-05), with 18 of 18 master
documents compiling.
Installation
pip install typsphinx==0.9.2What's Changed
- merge: v0.9.1 — Windows path correctness (Phases 58-61, not released) by @YuSabo90002 in #135
- release: v0.9.2 — inline image blocker fix (Phases 62-63) by @YuSabo90002 in #136
Full Changelog: v0.9.0...v0.9.2
Release v0.9.0
This release lets every typst_documents entry choose its own template, Typst Universe package,
and template-function arguments through the validated typst_document_templates registry, instead
of one globally-configured template being applied to every master document. This minor release
breaks two independent things — read the ### Changed and ### Removed sections below, and see
the "Migrating from 0.8.x to 0.9.0" guide in the published documentation for the exact rewrite each
breaking change needs. What does not break: the registry itself is additive — a conf.py that
declares no typst_document_templates and no fifth typst_documents element keeps producing the
same PDF, because the built-in "typst" key resolves to exactly the same global configuration
(typst_template / typst_package / typst_template_function / typst_template_mapping) it
always did.
Added
- A
conf.pycan now declare per-document templates through thetypst_document_templates
registry (TPL-01, TPL-02, TPL-03, TPL-04, TPL-05, CONF-14, CONF-15, CONF-16, CONF-17,
CONF-18). Each entry carriestemplate(a local.typpath) xorpackage(a Typst
Universe spec), plus an optionaltemplate_function; atypst_documentsentry's fifth element
now names the registry key to use, several entries can share one key, and a four-element entry
behaves identically to one whose fifth element is"typst". The built-in"typst"key is
resolved by the same rule as any declared key rather than being special-cased: it falls back to
today's globaltypst_template/typst_package/typst_template_function/
typst_template_mappingconfiguration, or the bundled default template when none of those is
set — so aconf.pythat declares no registry keeps working unchanged.
Changed
-
Breaking: the
<srcdir>/base.typshadow-template route moved to
<srcdir>/_typst/base.typ(OUT-04). The reason, in one clause: the resolved template's
parent directory is now copied wholesale to the output as that registry key's bundle, so it
must be a real bundle directory and not the whole source tree. If your project still has a
<srcdir>/base.typ, move it to<srcdir>/_typst/base.typ. If you do nothing, the build
silently typesets with the bundled default template instead of your file — there is no
build-time warning for this relocation, so this changelog entry is the only place it is
announced. -
Breaking: template layout is now validated before anything is written (WR-01, CR-01). The
reason, in one clause: the resolved template's parent directory is copied wholesale to the
output as that registry key's bundle, so a template inside a directory Sphinx already treats
as its own would republish that directory into public build output. Three configurations now
stop the build: (a) a used registry key whose resolved template bundle directory is, contains,
or is contained by any entry of Sphinx'stemplates_path; (b) a resolved template whose parent
directory is the source directory itself or an ancestor of it — now caught before any file is
written rather than at the end of the build; (c) a declared registry key differing from the
built-in key only by case. Move the Typst template into a directory that is not on
templates_path— this project uses_typst/— and updatetypst_template/
typst_document_templatesto match; Sphinx's owntemplates_pathdirectory keeps its own
meaning and can stay in place, which is what this repository's own documentation build does. If
you do nothing, the build fails with a message naming the offending registry key, its resolved
bundle directory, and the colliding entry — this is a hard failure by design: the rejected
alternative, warning and skipping that key's bundle copy, leaves the wrapper importing a
template file that was never written, so the emitted.typtree cannot compile while the build
reports success. -
Breaking: every used template's bundle is now copied to its own directory under the output
tree, and an explicit asset list no longer decides what reaches it (OUT-04, OUT-05, OUT-06,
OUT-07, BLD-05, BLD-06). v0.8.x wrote one shared template file,_template.typ, at the
output root; v0.9.0 copies each used registry key's whole template bundle — the resolved
template's parent directory — wholesale to<outdir>/_template/<key>/<file>, with the
built-in"typst"key copied by the identical rule. If your template references an asset by a
relative path (an#image("logo.png"), a partial#import), that asset must now live inside
the template's own bundle directory — anywhere else, it will not reach the output.
Fixed
-
A cross-reference to an absent target no longer links to a same-spelled decoy (XREF-05).
Two docnames that sanitized to the same Typst label used to let a reference whose real target
document was absent from the compiling master resolve to the other, wrong document instead of
degrading to plain text as an absent target always should. Note in passing: the fix makes label
sanitization injective by re-escaping a literal occurrence of the sanitizer's own_u<hex>_
escape token, so the emitted label name changes for an identifier that literally spells that
token — the only such name in this repository is one test fixture's docname. PDF appearance is
otherwise unchanged; only the label name in the emitted.typoutput and the corresponding link
destination name in the PDF move. Not a breaking change. -
A document name containing
#or>can no longer collide two include-edge keys (BLD-07).
Two structurally different include edges whose docnames contained one of those characters could
previously derive the identical key, letting a state guard that should have stayed dark fire and
duplicate or substitute a document's content in the compiled output. Document names without
either character produce byte-identical keys, so nothing changes for an ordinary project. -
An include chain deeper than this project's own bound now stops the build with a named error
instead of a raw Python traceback (BLD-08). An include chain deeper than the module's bound
(500 — two orders of magnitude beyond any real documentation tree) now raises a
sphinx.errors.ExtensionErrornaming the depth reached and the offending chain, instead of
escaping as an uncaught interpreterRecursionError. -
A driveless-absolute Windows image URI is classified like its sibling (BLD-09). An absolute
image URI written by a third-party extension in the driveless Windows shape (or the UNC shape)
now reaches the relocate-and-warn path on Python 3.13, where it was previously left untouched —
which mattered because an untouched rooted URI reached the image copy step, whose platform-native
destination join discards the output directory for a rooted path. -
Two escaping images sharing a basename no longer collapse onto one file (IMG-03). Two
absolute image URIs in different directories that share a filename and both fall outside the
doctree directory used to collide onto one relocated file, so one image silently replaced the
other. The user-visible consequence: the relocated file's emitted name now carries a short
digest prefix ahead of the original filename, so the two images keep separate files. -
On Windows, the template-path refusal messages introduced above no longer double every
backslash in a reported path. Thetypst_document_templatescollision refusals — a template
bundle colliding with Sphinx's owntemplates_path, a template resolving to an ancestor of the
source directory, or two registry keys resolving to the same bundle destination — used to quote
the offending path with Python'srepr(), which escapes each backslash; on Windows the message
a user read carried two literal backslashes where the platform's own single separator belongs.
The path is now quoted without escaping, so the reported path matches what actually appears on
disk.
Removed
- Breaking: the
typst_template_assetsconfig value is removed (CONF-19) — every used
template's bundle directory is now copied wholesale to the output, so an explicit asset list is
no longer needed to select what reaches it; see the### Changedbundle-relocation entry above
for what replaces it. Deletetypst_template_assetsfrom yourconf.py; if you leave it set, a
config-initedwarning names the value and explains the wholesale copy, rather than the list
being silently ignored — unlike v0.7.1'stypst_authorsremoval, this one ships with a warning
shim.
Verified
- No new runtime dependencies across the full milestone diff.
- The four bundled
@previewpackage version strings unchanged across all four sync surfaces
(writer.py/template_engine.py/templates/base.typ/examples/**/*.typ). - The full-corpus (Sphinx v9.1.0
doc/)-b typstpdfre-run remains fatal-free.
Installation
pip install typsphinx==0.9.0What's Changed
- release: v0.9.0 — per-document templates (Phases 53-57) by @YuSabo90002 in #134
Full Changelog: v0.8.0...v0.9.0
Release v0.8.0
This release makes multi-master composition work: a typst_documents configuration declaring
more than one master now produces a complete PDF for each of them, with every document it reaches
rendering at that master's own traversal position and heading level instead of being silently
dropped from all but one. Achieving this required restructuring what typsphinx writes to disk, so
this minor release can break a working configuration — read the ### Changed section below,
and see the "Migrating from 0.7.x to 0.8.0" guide in the published documentation for the exact
rewrite each of the three breaking changes needs.
Added
- Multi-master composition — every master now gets its own complete PDF (COMP-05, COMP-06,
COMP-07, COMP-09, COMP-10, COMP-12) — the builder computes each master's include graph by
document-order depth-first traversal and publishes it as Typststate, so a document reached
from more than one master renders once in each master's PDF, at that master's own traversal
position, with its heading level varying independently per master; two masters requiring
conflicting include sets from the same content file now resolve correctly instead of one
silently winning. - Compile-time cross-reference degradation (XREF-03, XREF-04) — a reference whose target label
is absent from the compiling master now degrades to plain text instead of aborting the compile;
every label-reference emission site routes through one shared guard so demand and supply sides
cannot diverge. - The published documentation now describes the two-layer output (DOC-14) — which file to
compile, what a standalone content-file compile does, and target-as-path semantics are all
documented on the new output-layout page.
Changed
- Breaking: the output shape — one
typst_documentsentry now writes TWO files instead of one
(COMP-01, COMP-02, COMP-11, OUT-03). With
typst_documents = [("index", "manual.typ", "Title", "Author", "typst")], v0.7.x wrote
manual.typcontaining the whole document; v0.8.0 writesmanual.typas a thin wrapper
(template application plus one include) andindex.typas the document body — every docname
gets a content file, not only the ones named intypst_documents. This is a different change
from v0.7.1's ownindex.typ→<project>.typdefault-target rename: that changed what the
target is called, this changes what the target file contains. A content file compiled
standalone yields only its own body, with its state-guarded children absent and no error or
warning. - Breaking: the target-as-path reversal (OUT-01, OUT-02) — a target containing a path
separator was rejected in v0.7.x and written under its basename; it is now honoured as-is
relative to the output directory. This deliberately reverses v0.7.1 Phase 44's
D-05/D-06/D-07; the security half is retained — a target escaping the output directory (..
segments, absolute or drive-qualified paths) is still refused with a warning and a safe
basename fallback. - Breaking: the collision hard error (BLD-02, BLD-03, BLD-04) — a configuration whose wrapper
target resolves onto a content file's own path now raises anExtensionErrorbefore anything is
written, instead of silently dropping that master's body. This stops a build that used to
succeed, for the most common configuration shape (("index", "index.typ", ...)); collision
detection behaves identically on case-insensitive filesystems.
Fixed
- A master that is also another master's toctree child now builds, and an included master no
longer re-expands its template (COMP-03, COMP-04) — a document listed intypst_documents
that is also another master's toctree child previously failed or rendered incorrectly; an
included master no longer re-expands its own template's title page and outline into the middle
of the parent's body. - Prose around a toctree keeps its position (COMP-08) — prose written before and after a
.. toctree::now keeps its position relative to the included content instead of being
reordered. - Two image-path defects fixed (IMG-01, IMG-02) — a converted image rehomed to
images/<basename>no longer collides with a real source image of the same basename; an
absolute image URI outside the doctree directory no longer causes the copy step to write outside
the output directory.
Verified
- No new runtime dependencies across the full milestone diff.
- The four bundled
@previewpackage version strings unchanged across all four sync surfaces
(writer.py/template_engine.py/templates/base.typ/examples/**/*.typ). - The full-corpus (Sphinx v9.1.0
doc/)-b typstpdfre-run remains fatal-free.
Installation
pip install typsphinx==0.8.0What's Changed
- release: v0.8.0 — multi-master composition (Phases 47-52) by @YuSabo90002 in #133
Full Changelog: v0.7.1...v0.8.0
Release v0.7.1
This release closes the gap between what typsphinx's documentation promises and what a conf.py
actually gets: typst_documents now resolves to a working default instead of silently producing
nothing, an explicit entry's title and author finally reach the rendered document, and the
published custom-template parameter contract matches what typsphinx actually passes. Several
rendering-structure defects in tables, figures, and toctree-driven heading nesting are also
repaired. Because several of these fixes tighten previously-loose configuration handling, this
patch release can break a working configuration — read the ### Changed and ### Removed
sections below, and see the "Migrating from 0.7.0 to 0.7.1" guide in the published documentation
for the exact rewrite each breaking change needs.
Added
typst_documentsnow has a default, so following the Quick Start produces a PDF (CONF-08,
DOC-11) — withtypst_documentsunset,sphinx-build -b typstpdfpreviously exited 0 with a
warning and produced zero output; it now resolves a default derived fromroot_doc,project,
andauthor, in Sphinx's own LaTeX shape, and produces a real PDF. For a project that never set
typst_documents, the emitted Typst filename changes fromindex.typto a project-derived name
(e.g.quickstartdefaultgate.typfor a project named "Quickstart Default Gate"), and the emitted
body changes from an untemplated fragment of@previewimports to a fully templated document. If
you#include()the old file from your own Typst source, update the include path.
Changed
- An explicit
typst_documentsentry's title and author now reach the rendered PDF (CONF-09)
— the[2]title and[3]author elements of an explicittypst_documentsentry now override
config.project/config.author, matching Sphinx's own LaTeX builder; previously they were
silently ignored. A project whose entry's title/author differ fromproject/authorwill see
its rendered title and author change. - Breaking: a declared
typst_template_functionparamsdict is now the complete parameter
set (CONF-11) — whentypst_template_functionis given in dict form with aparamskey, only
those parameters are passed to the template function; the auto-derivedtitle/authors/date,
thetypst_elementsmerge, and thetoctree_*merge are all withheld. A project that declares a
partialparamsdict today and relied on the auto-derived rest will now render with the
template's own defaults (empty title, no author) instead of the previous merged result. - Breaking: the auto-derived
langnow reaches every non-package template route, and the
published parameter contract matches what typsphinx actually passes (CONF-12, DOC-13) — an
explicittypst_templateor a<srcdir>/base.typshadow template now receives the
Sphinx-derivedlangargument, same as the bundled default; a custom template that does not
declare alangparameter now fails the compile withunexpected argument: lang. The documented
custom-template parameter contract was corrected to the nine parameters typsphinx actually
passes.
Fixed
- Nested tables and figures no longer corrupt the enclosing structure, and an empty-titled
caption still anchors its ids (TBL-04, TBL-05, FIG-01, TOC-01) — a table nested inside a
list-tablecell no longer replaces the outer table's own cells, column count, or caption; a
figure nested inside another figure no longer drops the outer figure's caption and instead
renders correctly inside its legend; a captioned table whose title renders to an empty or
whitespace-only string still emits its id anchors, so a:ref:/:numref:to it resolves instead
of dangling; and a document reached through atoctreenow renders its headings one level deeper
than its parent, so the PDF outline nests instead of being flat, and nested toctrees compose. - Absolute image URIs from Sphinx's image converter or downloader no longer abort the Typst
compile (Issue #130, PR #131, @christianwehe) — building with an image-conversion extension
(sphinxcontrib.rsvgconverter,sphinxcontrib.inkscapeconverter,sphinx.ext.imgconverter) or
a downloaded remote image previously copied no image at all and made the Typst compile abort
with "file not found"; both cases now copy and resolve correctly. - A malformed docname fails with an actionable typsphinx error, and the published changelog page
is current (BLD-01, DOC-12) — a non-strdocname reachingTypstPDFBuilder.finish()now
raises an actionable typsphinx-level error instead of a rawTypeErrorfrom deep inside the
builder; and the published documentation's changelog page, frozen at 0.4.0 for two years, now
carries every release through this one.
Removed
- Breaking: the
typst_authorsconfig value is removed (CONF-10) — 0.7.0's documentation
announced its removal in a future major release; this patch release removes it now.
typst_authorsis an unregisteredconf.pyvariable that Sphinx ignores without any warning, so
a project that still sets it loses its author information silently. See the migration guide for
thetypst_template_functionparams["authors"]rewrite; there is no deprecation shim.
Verified
- No new runtime dependencies across the full milestone diff.
- The four bundled
@previewpackage version strings unchanged across all four sync surfaces
(writer.py/template_engine.py/templates/base.typ/examples/**/*.typ). - The full-corpus (Sphinx v9.1.0
doc/)-b typstpdfre-run remains fatal-free.
Installation
pip install typsphinx==0.7.1What's Changed
- fix: rehome absolute image URIs from Sphinx's ImageConverter/ImageDownloader by @christianwehe in #131
- release: v0.7.1 — bug-fix round (Phases 43-46) by @YuSabo90002 in #132
New Contributors
- @christianwehe made their first contribution in #131
Full Changelog: v0.7.0...v0.7.1
Release v0.7.0
API reference pages become readable in this release: autodoc/API output moves from a flat wall of
proportional bold text to something that reads as a typeset reference document — monospace
signatures, a hanging indent on description bodies, and visually distinguishable nesting between a
class and its members. The appearance of every emitted .typ file and its compiled PDF changes for
anyone building API documentation. Citations gain full round-trip support alongside this: a
document containing a citation no longer fails the Typst compile outright.
Added
- Citations — full round trip (CIT-01, CIT-02, CIT-03, CIT-04, CIT-05, CIT-06) —
.. [Label]
definitions render as labelled hanging-indent entries in document order,[Label]_in-text
references link to their definition, and each definition carries back-references to every citing
location. Previously a document containing a citation failed the Typst compile outright — zero
citation handlers existed. The citation syntax removed fromexamples/charged-ieee/in Phase 22.2
is restored.
Changed
- Signatures render as real typography (SIG-01, SIG-02, SIG-03, SIG-04, SIG-05, SIG-06, SIG-07,
SIG-08, SIG-09) — object names, module/class qualifiers, keywords, parameters, and delimiters
now render in bold and regular-weight monospace with italic proportional parameters and a real
arrow glyph for return annotations, replacing the flat proportional-bold text emitted before. Long
signatures wrap without overflowing the page margin, sibling signatures are separated by exactly
one break, and a signature never splits from the first line of its body across a page break. - Description bodies and field lists indent by nesting depth (IND-01, IND-02, IND-03, IND-04,
IND-05, FLD-01, FLD-02, FLD-03) — a description body now indents relative to its own signature,
cumulatively with nesting depth, off one shared indent constant, so a nested class member's body
is visibly deeper than its parent's while the nested member's own signature aligns with its
parent's body margin. Field lists (Parameters / Returns / Return type / Raises / Variables) indent
one step beyond the surrounding body, and a field body's parameter names and types carry monospace
treatment distinct from the plain-bold field label. - Admonition taxonomy re-bucketed and rubric now indents with its body (ADM-01, ADM-02, ADM-03,
ADM-04, ADM-05, ADM-06) —seealsojoins the greenhint/tipbucket andattentionjoins the
red family instead of the orange warning bucket it used before, a generic.. admonition::renders
as a styled box carrying its own title, and arubricnested inside a description body (including
autodoc's "Options" heading) indents with that body instead of sitting flush against the page
margin.
Fixed
- Block math inside a list item no longer emits a redundant blank line (MATH-02) — the extra
blank line between the math expression and the following paragraph break, carried over from the
v0.6.5 Phase 34 review, is gone. - A captioned table immediately preceded by a standalone target no longer drops the target's
label (TBL-03) — both the table's own name-derived label and the propagated target's label
are now emitted, so a reference to either resolves instead of aborting the compile on a
dangling label.
Verified
- Zero new runtime dependencies across the full milestone diff.
- The four bundled
@previewpackage version strings unchanged across all four sync surfaces
(writer.py/template_engine.py/templates/base.typ/examples/**/*.typ). - The full-corpus (Sphinx v9.1.0
doc/)-b typstpdfre-run remains fatal-free.
Installation
pip install typsphinx==0.7.0What's Changed
- chore(deps): bump codecov/codecov-action from 5 to 7 by @dependabot[bot] in #126
- chore(deps): bump actions/setup-python from 6 to 7 by @dependabot[bot] in #127
- release: v0.7.0 — API rendering design overhaul by @YuSabo90002 in #129
Full Changelog: v0.6.5...v0.7.0
Release v0.6.5
Changes since v0.6.4
- Merge pull request #125: release v0.6.5 — inline-math separator hotfix (839d77f)
- chore: remove REQUIREMENTS.md for v0.6.5 milestone (d345d12)
- chore: archive v0.6.5 milestone files (3ea4053)
- docs: file todo for PROJECT.md unterminated HTML comments (d19c46b)
- docs(phase-35): evolve PROJECT.md after phase completion (279aea5)
- docs(phase-35): complete phase execution (f1558b6)
- docs(35): add code review report (9898fef)
- docs(phase-35): update tracking after wave 4 (f7004fe)
- chore: merge executor worktree (worktree-agent-a27886969f004fcff) (03389e8)
- docs(35-05): add plan summary (7afef8f)
- docs(35-05): write 35-HANDOFF.md publish/owner-manual checklist (d3f7848)
- docs(35-05): SC#4/SC#5 mechanical invariants + no-irreversible-action proof (81028d1)
- docs(35-05): SC#3 live-run evidence + open 35-RELEASE-EVIDENCE.md (65edad1)
- docs(phase-35): update tracking after wave 3 (26f3c92)
- chore: merge executor worktree (worktree-agent-a109b237310651593) (a47b0bd)
- docs(35-04): append self-check result to plan summary (17e6c44)
- docs(35-04): add plan summary for v0.6.5 CHANGELOG curation (a8f80cc)
- docs(35-04): roll over CHANGELOG tail link block for 0.6.5 (0da1af0)
- docs(35-04): insert curated 0.6.5 CHANGELOG entry (4f14c18)
- docs(phase-35): update tracking after wave 2 (e8ae0fd)
- chore: merge executor worktree (worktree-agent-a677143d46500ca92) (daeac0d)
- docs(35-03): complete version bump plan (dae6a98)
- chore(35-03): regenerate uv.lock for 0.6.5 self-pin (da09c07)
- feat(35-03): bump version to 0.6.5 in pyproject.toml and README.md (043784b)
- docs(phase-35): update tracking after wave 1 (0295677)
- chore: merge executor worktree (worktree-agent-a24b2a84fb6181275) (7f5eb47)
- chore: merge executor worktree (worktree-agent-a4ed8ccab58cd7c24) (c0dec4f)
- docs(35-01): append self-check to SUMMARY (aae19d2)
- docs(35-01): complete Close WR-02/WR-03/WR-04 plan (d24caab)
- test(35-01): close WR-02/WR-03/WR-04 with four exact-string assertions (c0e66a8)
- test(35-01): add Construct G to GATE-01 fixture (WR-02) (f81fdfa)
- docs(35-02): append self-check results to plan summary (8a8da08)
- docs(35-02): add plan summary (a19d438)
- docs(35-02): file release.yml release-notes-body rework todo (8f01b92)
- docs(35-02): file WR-01 deferral todo for visit_math_block redundant blank line (080c95f)
- docs(35): create phase plan (3816dfa)
- docs(35): create phase plan (27297f5)
- docs(35): add validation strategy (900c1ab)
- docs(35): research phase domain (8adc774)
- docs(35): write phase context and discussion log in English (705f9b5)
- docs(state): record phase 35 context session (af27878)
- docs(35): capture phase context (b16ccf2)
- docs(phase-34): evolve PROJECT.md after phase completion (af4a655)
- docs(phase-34): complete phase execution (d2e73e7)
- docs(34): add code review report (95b3626)
- docs(phase-34): update tracking after wave 3 (32f4b2d)
- chore: merge executor worktree (worktree-agent-a26661c24e79292ce) (33b4a35)
- docs(34-03): append self-check to plan 03 summary (1c58325)
- docs(34-03): add plan 03 summary (1e35151)
- docs(34-03): record corpus gate, docs dogfooding, and Phase 34 verdict (ee84d4a)
- docs(34-03): record post-fix regression sweep — suite, lint, invariants (8946c37)
- docs(phase-34): update tracking after wave 2 (0a14da0)
- chore: merge executor worktree (worktree-agent-ab37272bc5ac642fb) (d819d5f)
- docs(34-02): append self-check to plan 02 summary (1b116b1)
- docs(34-02): add plan 02 summary (7d0df49)
- docs(34-02): record GREEN evidence for GATE-01 RED->GREEN proof (ee19799)
- fix(34-02): GATE-01 fixture math content is invalid under native Typst (a737e16)
- fix(34-02): make visit_math_block participate in list-item separator (a259ee0)
- fix(34-02): make visit_math participate in separator protocols (d78e223)
- docs(phase-34): update tracking after wave 1 (af187d3)
- chore: merge executor worktree (worktree-agent-a3db2c6f1abcca4d1) (3331904)
- docs(34-01): add plan 01 summary (402c41b)
- docs(34-01): record GATE-01 RED evidence and pre-fix full-suite baseline (58ae7cd)
- test(34-01): add GATE-01 gate test module for both math emission paths (26f8395)
- test(34-01): create GATE-01 inline-math-after-text fixture project (921f694)
- docs(34): begin phase 34 execution (c4670c4)
- docs(34): add codebase pattern map for phase 34 (a32940f)
- docs(34): create phase plan (568121f)
- docs(34): create phase plan (3 plans, waves 1-3) (420a981)
- docs(phase-34): add validation strategy (e7d44c6)
- docs(34): research inline-math separator fix (780aa71)
- docs: remove promoted backlog phase dir 999.1 (now Phase 34) (5d93754)
- docs: create milestone v0.6.5 roadmap (2 phases); promote backlog 999.1 to Phase 34 (dbbd66e)
- docs: define milestone v0.6.5 requirements (511a1ec)
- docs: start milestone v0.6.5 inline-math separator hotfix (6c9fcde)
- docs: v0.6.4 published — record release run, RTD stable state, owner flips (eb696bb)
Installation
pip install typsphinx==0.6.5What's Changed
- release: v0.6.5 — inline-math separator hotfix by @YuSabo90002 in #125
Full Changelog: v0.6.4...v0.6.5
Release v0.6.4
Changes since v0.6.3
- Merge pull request #124: release v0.6.4 — Read the Docs migration (2bf6ef3)
- chore: remove REQUIREMENTS.md for v0.6.4 milestone (79b7c55)
- chore: archive v0.6.4 milestone files (9fa1190)
- docs(phase-33): mark phase complete, evolve PROJECT/STATE for milestone close (79c8091)
- docs(phase-33): add security threat verification (7382ab7)
- test(33): complete UAT - 1 passed, 0 issues (b3c7d47)
- test(33): persist human verification items as UAT (6a7b444)
- docs(33): add code review report (db07f66)
- docs(phase-33): update tracking after wave 2 (c90d81b)
- chore: merge executor worktree (worktree-agent-abfe234475510582e) (12d6f18)
- docs(33-04): record self-check results in plan summary (807f822)
- docs(33-04): add plan summary (476aee9)
- docs(33-04): write SC#5 publish and owner-manual handoff checklist (ec7e8c9)
- docs(33-04): assert milestone invariants over full diff (SC#4) (578de4d)
- docs(33-04): re-verify Documentation URL over real HTTP (SC#3) (f667d3d)
- docs(phase-33): update tracking after wave 1 (d25adbe)
- chore: merge executor worktree (worktree-agent-a74cf1f7b61e231ca) (932c82b)
- chore: merge executor worktree (worktree-agent-a38fe7a890d50aa23) (0319e7b)
- chore: merge executor worktree (worktree-agent-a9ebc2f96ad3edc61) (52bb94d)
- docs(33-03): append self-check to plan summary (e5acec1)
- docs(33-03): add plan summary (c4ac9ed)
- docs(33-03): translate ROADMAP.md, MILESTONES.md, STATE.md to English (D-05) (6a518a8)
- docs(33-03): translate PROJECT.md Japanese prose to English (D-05) (b74baa5)
- docs(33-02): append self-check result to SUMMARY (a67bc5c)
- docs(33-01): append self-check results to SUMMARY.md (72e61df)
- docs(33-02): complete v0.6.4 CHANGELOG entry plan (2ef2bbd)
- docs(33-01): complete version bump to 0.6.4 plan (04cce08)
- feat(33-02): update CHANGELOG tail release/compare link block (ad123fa)
- feat(33-02): insert curated [0.6.4] CHANGELOG entry (abb8eb6)
- chore(33-01): regenerate uv.lock for 0.6.4 self-pin (53108ec)
- feat(33-01): bump version literal to 0.6.4 in pyproject.toml and README.md (fa145ec)
- docs(33): begin phase 33 execution (ca09a8a)
- docs(33): add pattern map (b603b38)
- docs(33): create phase plan (46f9a46)
- docs(33): create phase plan (c12697b)
- docs(phase-33): add validation strategy (ee5f84a)
- docs(33): research phase domain (ad2a28d)
- docs(state): record phase 33 context session (32c11b3)
- docs(33): capture phase context (d9923e5)
- docs(phase-32): evolve PROJECT.md after phase completion (ba86b7b)
- docs(phase-32): auto-close todo(s) resolved by this phase (a82f9f0)
- docs(phase-32): complete phase execution (85f00a0)
- docs(32): add code review report (444f480)
- docs(phase-32): update tracking after wave 3 (a610332)
- chore: merge executor worktree (worktree-agent-a4266e9c5673345bb) (c22bb43)
- docs(32-03): append self-check to plan 03 summary (1e5a182)
- docs(32-03): add plan 03 summary (58a484a)
- docs(32-03): record owner-manual handoff, confirmed github.io 404, redirect-stub sweep (b797690)
- docs(32-03): delete origin/gh-pages, prove absence via live ls-remote (b706b6d)
- docs(32-03): push post-teardown tree to PR #124, observe green build-docs run (373a9ec)
- docs(phase-32): update tracking after wave 2 (d53edec)
- chore: merge executor worktree (worktree-agent-a848626a4034990a7) (4527896)
- docs(32-02): append self-check to plan 02 summary (6d08a42)
- docs(32-02): add plan 02 summary (cf967b8)
- docs(32-02): update INTEGRATIONS.md for the reduced docs.yml workflow (0e32109)
- test(32-02): add D-06 guard tests for the GitHub Pages teardown (a71674e)
- feat(32-02): remove GitHub Pages deploy step and unused permissions from docs.yml (26b8053)
- docs(phase-32): update tracking after wave 1 (0062262)
- chore: merge executor worktree (worktree-agent-adccad7fbdfb6c614) (53a48ba)
- docs(32-01): append self-check results to SUMMARY.md (0e414ff)
- docs(32-01): complete pre-teardown evidence gate plan (b424db8)
- fix(32-01): GATE VERDICT line must not be markdown-bolded (e0c6fed)
- docs(32-01): record pre-teardown baseline and GREEN gate verdict (996e3e3)
- docs(32-01): record RTD PDF download liveness gate check (ca0ffef)
- docs(32-01): record RTD HTML liveness and Japanese content gate check (40bc567)
- docs(32): begin phase execution — commit pattern map and state (d90c574)
- docs(32): create phase plan (7f2cbfc)
- docs(32): create phase plan — 3 plans, gate/teardown/irreversible split (caf8699)
- docs(phase-32): add validation strategy (6eae7c9)
- docs(32): research GitHub Pages teardown phase (7e5c700)
- docs(30): complete phase 30 - transition, evolve PROJECT/STATE (298b78c)
- docs(phase-30): add security threat verification (03ea539)
- test(30): complete UAT - 3 passed, 0 issues (51364ee)
- docs(state): record phase 32 context session (980f6ca)
- docs(32): capture phase context (eeed8ee)
- test(30): UAT resume - test 1 still blocked pending milestone PR (a67652e)
- docs(31): complete phase 31 - transition, evolve PROJECT/STATE (280992f)
- test(31): complete UAT - 1 passed, 0 issues (b29c6dd)
- chore(31): trigger Link Check for UAT cancellation test (22ac4af)
- docs(31): record api-coverage gate override in VERIFICATION (dea55e6)
- docs(phase-31): add security threat verification (51e00af)
- test(31): persist human verification items as UAT (80acd72)
- docs(31): add code review report (e197c90)
- docs(phase-31): update tracking after wave 3 (5795416)
- chore: merge executor worktree (worktree-agent-ad728f7d42898a802) (aa92488)
- docs(31-05): add plan summary (c8e60dd)
- docs(31-05): draft Issue #119 close-reply and annotate resolved todo in place (2969314)
- docs(31-05): record SC#2 consolidated fresh-grep and real-HTTP measurement (a58163f)
- fix(31-05): repoint claude.ai/code to its non-bot-blocked successor URL (260ade4)
- docs(31-05): record green Link Check run — D-09 positive evidence half (227ce29)
- chore(31-05): accept 403 in links.yml for claude.ai bot-blocking false positive (829a0b5)
- docs: add backlog item 999.1 — inline math after text missing separator error (79eca1c)
- docs(phase-31): update tracking after wave 2 (12e5792)
- chore: merge executor worktree (worktree-agent-ae01fc583c99556ea) (ac2218c)
- chore: merge executor worktree (worktree-agent-a5a7e2569143bcf1e) (98a3dd6)
- docs(31-03): append self-check results to plan summary (12dc855)
- docs(31-03): complete published URL cutover plan (4854cc8)
- test(31-03): add hermetic regression guard for rewritten documentation URLs (44aa855)
- docs(31-04): append self-check to plan summary (a168eae)
- docs(31-04): add plan summary (61c56f1)
- docs(31-04): refresh INTEGRATIONS.md hosting, CI, and preview-sync sections (3dd9636)
- feat(31-03): point PyPI Documentation metadata at Read the Docs (54f652c)
- feat(31-03): rewrite README documentation URLs to Read the Docs (bd80fb8)
- docs(phase-31): update tracking after wave 1 (6fa109e)
- chore: merge executor worktree (worktree-agent-ad9fb4bbe59c49b28) (470c576)
- chore: merge executor worktree (worktree-agent-abecb621a50c560b9) (340dbb8)
- docs(31-01): complete published-url-cutover-repo-wide-link-guard plan 01 (e5edc37)
- docs(31-01): add plan summary (7c070d5)
- docs(31-01): capture red negative-control CI run as D-09 evidence (f92ce53)
- chore(31-01): remove temporary diagnostic workflow (eaee760)
- chore(31-01): temporary diagnostic workflow to dump lychee inputs (ddf1b32)
- docs(31-02): complete published-url-cutover About-website plan (6131a22)
- fix(31-01): repair pre-existing dead links in examples and changelog (7821f32)
- feat(31-02): set repo About->Website to RTD root, verify over HTTP (a6cb142)
- feat(31-01): add advisory repo-wide link-check workflow (fede6f0)
- docs(31): create phase plan (f6f1207)
- docs(31): create phase plan (1887d15)
- docs(phase-31): add validation strategy (0067cfc)
- docs(31): research phase domain (862d3a9)
- docs(state): record phase 31 context session (74d42c0)
- docs(31): capture phase context (635cd67)
- test(30): UAT session - 2 passed (live RTD measurements), 1 blocked until milestone PR (cfeef8b)
- docs(30): record api-coverage gate override (documented false-positive class) (673c877)
- docs(30): add phase verification report (376743d)
- test(30): persist human verification items as UAT (72ef90b)
- docs(30): add code review report (e3ff4ba)
- docs(phase-30): update tracking after wave 2 (8fe1bb9)
- chore: merge executor worktree (worktree-agent-a4dd28d60319f7111) (bd507c5)
- docs(30-04): complete phase-wide evidence plan (0bd1603)
- docs(30-04): run build/suite/workflow gates and close the evidence record (3d30a00)
- docs(30-04): run SC#1 token gate and SC#2 seam proof, open evidence record (203869c)
- docs(phase-30): update tracking after wave 1 (76452d1)
- merge(30-03): orphan doc pair + locale catalog removal (manual merge past deletion guard; scope measured = plan artifacts) (2e0679d)
- merge(30-02): language-switcher machinery deletion (manual merge past deletion guard; scope measured = plan artifacts) (24372fb)
- chore: merge executor worktree (worktree-agent-a84f1df2c5147c3b2) (aa9db9e)
- docs(30-02): mark I18N-02 complete in REQUIREMENTS.md (52b3b76)
- docs(30-03): record self-check results in SUMMARY.md (d69129d)
- docs(30-02): append self-check result to summary (069fb98)
- docs(30-03): complete orphan-pair + locale-catalog removal plan (9f6e1d6)
- docs(30-02): add plan summary (37f0d11)
- docs(30-03): remove relocated docs/locale/ (PD-01) (131ae4a)
- feat(30-02): delete hand-rolled language-switcher machinery, trim conf.py (204f7ef)
- docs(30-01): append self-check results to SUMMARY.md (4ce0c92)
- docs(30-01): complete repoint-CI-and-strip-multilang-machinery plan (d0d8b1c)
- docs(30-03): delete orphan usage/installation.rst pair + collateral tests (86633c4)
- feat(30-01): strip i18n and multi-language targets from docs/Makefile (b1269f5)
- feat(30-01): repoint CI workflow and remove multi-language testenv (20a7f9b)
- docs(30): begin phase 30 e...
Release v0.6.3
Changes since v0.6.2
- Merge pull request #121: release v0.6.3 — config & docs fidelity + captioned tables (7f6db62)
- docs: correct the v0.6.3 MILESTONES entry (f87ba36)
- chore: remove REQUIREMENTS.md for v0.6.3 milestone (c9c1b6f)
- chore: archive v0.6.3 milestone files (fa173c8)
- docs(changelog): note the examples/advanced repair under 0.6.3 (c3b14c2)
- fix(examples): make examples/advanced buildable again (c69365f)
- docs(phase-28): evolve PROJECT.md after phase completion (578251d)
- docs(phase-28): complete phase execution (33adc56)
- docs(28): add code review report (57de992)
- docs(phase-28): update tracking after wave 3 (fb3e0eb)
- chore: merge executor worktree (worktree-agent-a08c0e04ff4328ae3) (bd719b0)
- docs(28-03): complete CHANGELOG [0.6.3] plan (61baa0c)
- docs(28-03): advance CHANGELOG link block to v0.6.3 (465a224)
- docs(28-03): add CHANGELOG [0.6.3] entry (22d10bf)
- docs(phase-28): update tracking after wave 2 (6c24bf8)
- chore: merge executor worktree (worktree-agent-a60d3c56dc5bb74e5) (cdd419f)
- docs(28-02): append self-check results to plan summary (d2af23a)
- docs(28-02): add plan summary with duplicate corpus-gate log (ffb8422)
- docs(28-02): record SC#4 invariants, SC#5 scope-fence, and Observable Truths (f0ca561)
- docs(28-02): run corpus gate, full suite, and docs builds; record verbatim evidence (5a8b342)
- docs(phase-28): update tracking after wave 1 (7e3d662)
- chore: merge executor worktree (worktree-agent-a0a10b913e5f7dec8) (0bb6020)
- docs(28-01): add plan summary for v0.6.3 version bump (b1efd7e)
- chore(28-01): bump version to 0.6.3 across pyproject/uv.lock/README (de0a3d5)
- docs(28): record planning completion in STATE.md (1e16c23)
- docs(28): create phase plan (29d1c22)
- docs(28): create phase plan — v0.6.3 release prep + regression-gate close (3 plans, 3 waves) (d4fbbf6)
- docs(phase-28): add validation strategy (592a1b2)
- docs(28): research phase domain (d1375a4)
- docs(state): point operator next steps at phase 28 planning (8f8e3f9)
- docs(state): record phase 28 context session (209c89d)
- docs(28): capture phase context (d717eb1)
- docs(phase-27.1): evolve PROJECT.md + file 3 follow-up todos (2f612c3)
- docs(phase-27.1): complete phase execution (8a6b6ad)
- docs(27.1): add code review report (2f4a2c6)
- fix(27.1): close code-review findings CR-01/WR-01 + new docs-build warnings (6fa7e21)
- fix(27.1): resolve post-merge ruff findings in lang allowlist test (1439912)
- docs(phase-27.1): update tracking after wave 2 (99ce740)
- chore: merge executor worktree (worktree-agent-aaa448fda478f4388) (aff3ac1)
- docs(27.1-03): complete GATE-01 lang gate plan (e08dac4)
- test(27.1-03): durable pre-fix-basis failure proof + red-to-green record (9b61ded)
- test(27.1-03): GATE-01 lang gate — non-regression cases (D-08) (d0325d2)
- test(27.1-03): GATE-01 lang gate — ja/de/precedence/malformed cases (9f8dcb7)
- docs(phase-27.1): update tracking after wave 1 (3a6cdc4)
- chore: merge executor worktree (worktree-agent-ab4b43f8cfd7957c0) (8aac1e9)
- chore: merge executor worktree (worktree-agent-a76211d17df2e0ecf) (abab6ec)
- docs(27.1-01): append self-check result to SUMMARY (21de9ae)
- docs(27.1-01): complete plan 01 SUMMARY (771642f)
- docs(27.1-02): record self-check result in SUMMARY (620c852)
- feat(27.1-01): wire writer.py to auto-derive lang under the default-template gate (cf22574)
- docs(27.1-02): add plan 02 SUMMARY (0bcecd0)
- docs(27.1-02): regenerate ja catalog for lang docs section (CONF-07) (514d2d6)
- feat(27.1-01): add TemplateResolution provenance + uses_bundled_default_template() (2d418a7)
- feat(27.1-01): add lang parameter to base.typ + derive_typst_lang() helper (4a41c27)
- docs(27.1-02): document lang typst_elements key (CONF-07) (c51b664)
- docs(27.1): create phase plan (605dd69)
- docs(27.1): create phase plan — 3 plans across 2 waves (CONF-07) (afcbcf7)
- docs(27.1): add validation strategy (db3f097)
- docs(27.1): research phase domain (8885d12)
- docs(state): record phase 27.1 context session (cbbb69b)
- docs(27.1): capture phase context (b63eb3e)
- docs: insert phase 27.1 — CONF-07 Typst 組版 lang を Sphinx language に連動 (48dd01b)
- docs: capture todo - v0.6.3 リリース後に PR#98 をクローズ (ad95e1d)
- test: close PR#98 gap-check todo — verify Phase 25 parity, tighten 4 assertions (70eab0a)
- docs: capture todo - PR#98 と Phase 25 実装のギャップ確認 (95e862e)
- docs(phase-27): evolve PROJECT.md after phase completion (1a7cbf7)
- docs(phase-27): auto-close 2 todo(s) resolved by this phase (75f1266)
- docs(phase-27): complete phase execution (caf6777)
- docs(phase-27): update tracking after wave 1 (f8bf0eb)
- docs(27-01): remove phantom codly names from examples (SC#4 anywhere-clause) (59bf66d)
- docs(27-01): append self-check results to SUMMARY.md (6cf2de5)
- docs(27-01): complete plan execution (5e25d2f)
- docs(27-01): regenerate scoped ja catalogs; fix latent CJK markup bug (ac61c94)
- docs(27-01): remove phantom config names, collapse config to one place (2f359ad)
- docs(27-01): delete orphan configuration.rst + its collateral test (90801cf)
- docs(27): create phase plan (93f87f0)
- docs(27): create phase plan (26e784f)
- docs(phase-27): add validation strategy (54020a1)
- docs(27): research phase domain (5843620)
- docs(state): record phase 27 context session (e54e158)
- docs(27): capture phase context (473af59)
- docs(phase-26): remove pending todo closed by this phase (1bab754)
- docs(phase-26): evolve PROJECT.md after phase completion (ba7917e)
- docs(phase-26): auto-close 1 todo(s) resolved by this phase (506458e)
- docs(phase-26): complete phase execution (711fff2)
- docs(phase-26): update tracking after wave 2 (b9bdc16)
- chore: merge executor worktree (worktree-agent-a90b7f7adb535ef61) (d6ed7b1)
- docs(26-02): add plan summary (5392c31)
- test(26-02): add durable pre-fix-basis failure proof for typst_elements gate (0379a2f)
- test(26-02): add GATE-01 real-compile fixtures for typst_elements papersize/fontsize (c0f16e3)
- docs(phase-26): update tracking after wave 1 (ad75188)
- chore: merge executor worktree (worktree-agent-a9e09a4ac04e67997) (0cc56a7)
- docs(26-01): append self-check results to plan summary (20018ed)
- docs(26-01): add plan summary (82fdf0e)
- fix(26-01): stop laundering typst_elements through sphinx_metadata, drop dead copyright key (67a40ca)
- feat(26-01): add RawTypst marker, ELEMENTS_ALLOWLIST, and fail-loud typst_elements merge (b7083c9)
- docs(26): finalize phase plan (D-09 coverage + state) (46f2191)
- docs(phase-26): create phase plan (8066092)
- docs(phase-26): add validation strategy (6ae4863)
- docs(26): research typst_elements papersize/fontsize pass-through (4d70cc4)
- docs(state): record phase 26 context session (719636a)
- docs(26): capture phase context (3135d01)
- docs(phase-25): evolve PROJECT.md after phase completion (a975358)
- docs(phase-25): auto-close 1 todo(s) resolved by this phase (5270128)
- docs(phase-25): complete phase execution (34e6e38)
- docs(phase-25): update tracking after wave 2 (149ca53)
- chore: merge executor worktree (worktree-agent-a64c01970c165fabf) (3995f39)
- docs(25-02): append self-check to plan summary (adde124)
- docs(25-02): add plan summary (d237cae)
- test(25-02): add durable fail-pre-fix proof for captioned-table gate (62f5ec6)
- test(25-02): add captioned_table_render_gate real-compile fixture (7a9fd09)
- docs(phase-25): update tracking after wave 1 (e3a0310)
- chore: merge executor worktree (worktree-agent-a1eba3e87e0644e85) (cc041fa)
- docs(25-01): complete captioned-table figure-wrap plan (8cc3f13)
- feat(25-01): figure-wrap captioned tables with kind: table + single label (ac5c4a8)
- feat(25-01): buffer table captions and fix stale table_cell_content bug (931eb56)
- docs(25): create phase plan (f7bb28b)
- docs(25): create phase plan (captioned-table figure wrap + cross-refs) (0a03241)
- docs(phase-25): add validation strategy (718a357)
- docs(25): research captioned-table figure wrap + xref reimplementation (91163a2)
- docs(state): record phase 25 context session (dc84901)
- docs(25): capture phase context (689fc41)
- docs(phase-24): evolve PROJECT.md after phase completion (ccd6941)
- docs(phase-24): complete phase execution (5b76e9e)
- docs(phase-24): update tracking after wave 1 (39fc5af)
- chore: merge executor worktree (worktree-agent-ab1813aa37b54ecd9) (14b4b6e)
- docs(24-01): append self-check results to SUMMARY.md (1c52f77)
- docs(24-01): complete delete typst_toctree_defaults plan (60398fc)
- test(24-01): delete registration-only toctree-defaults test, drop doc-list entry (d48b019)
- docs(24-01): remove typst_toctree_defaults from user-facing surfaces (d55f5a5)
- feat(24-01): remove typst_toctree_defaults config registration (f8abfc6)
- docs(24): begin phase execution (90a092f)
- docs(24): record planning complete — 1 plan, verification passed (1f8c05e)
- docs(24): create phase plan (delete typst_toctree_defaults) (87ec004)
- docs(state): record phase 24 context session (4ee1c10)
- docs(24): capture phase context (92e3c64)
- docs: tag 4 pending todos with resolves_phase after milestone v0.6.3 roadmap (0037822)
- docs: create milestone v0.6.3 roadmap (5 phases) (12ce9d6)
- docs: define milestone v0.6.3 requirements (58f4884)
- docs: complete project research (v0.6.3) (d8c2a5d)
- docs: record owner decision to defer #119/404/About-link fixes to RTD migration (446d28f)
- docs: start milestone v0.6.3 config & docs 実測整合 + captioned tables (aec625b)
- docs: capture todo - reimplement PR#98 captioned table figure wrap (144f512)
- docs: v0.6.2 fully released — update STATE.md, prune merged branches (9f8e075)
- chore(deps): bump actions/checkout from 6 to 7 (#107) (32e5259)
- docs: v0.6.2 merged + tagged, paused at PyPI approval gate [ci skip] (f1a6531)
Installation
pip install typsphinx==0.6.3What's Changed
- chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #107
- release: v0.6.3 — config & docs fid...
Release v0.6.2
Changes since v0.6.1
- Milestone v0.6.2: rendering fidelity round 2 (#120) (54b8fc9)
- fix(builder): normpath filesystem paths after posixpath stem join (a5a78a1)
- fix(builder): use posixpath in _directory_preserving_relpath for Windows (dee32be)
- docs: ship v0.6.2 milestone — PR #120 [ci skip] (0b13aaf)
- chore: remove REQUIREMENTS.md for v0.6.2 milestone (6ffb48e)
- chore: archive v0.6.2 milestone files (3e22a2d)
- docs(phase-23): evolve PROJECT.md after phase completion (1101550)
- docs(phase-23): complete phase execution (89dcbc4)
- docs(23): backfill [0.6.2] release link + bump Unreleased compare link (review WR-01) (2b5abe5)
- docs(23): add code review report (c527fd0)
- docs(phase-23): update tracking after wave 3 (4a86470)
- chore: merge executor worktree (worktree-agent-aacf93d961f1c2b27) (90273af)
- docs(23-03): audit CHANGELOG ledger coverage; add 23-03-SUMMARY.md (d10b0c4)
- docs(23-03): author the [0.6.2] CHANGELOG entry (cff09f7)
- docs(phase-23): update tracking after wave 2 (a0d9ded)
- chore: merge executor worktree (worktree-agent-ad2162bc5de5320d3) (2827eed)
- docs(23-02): complete corpus-gate + milestone-invariant evidence plan (af5e115)
- docs(23-02): record corpus-gate + SC#4/SC#5 evidence (23-VERIFICATION.md) (14d6286)
- docs(state): log ruff_cache gitignore quick task (a2d23a0)
- chore: gitignore .ruff_cache/ (62b7819)
- docs(phase-23): update tracking after wave 1 (5523d1a)
- chore: merge executor worktree (worktree-agent-ad1f4b93042b9a8c1) (d8e0db0)
- docs(23-01): append self-check results to plan summary (8106272)
- docs(23-01): complete version-bump-plus-sync-test plan (191793b)
- test(23-01): add README/pyproject version-sync drift guard (D-13) (ea4d3d4)
- chore(23-01): bump version to 0.6.2 across pyproject.toml, uv.lock, README.md (101ca6f)
- docs(23): add pattern map and mark phase executing (0ce845c)
- docs(23): create phase plan (205c3e5)
- docs(23): create phase plan (c5774b8)
- docs(phase-23): add validation strategy (dd21da5)
- docs(23): research phase domain (8501d59)
- docs(state): record phase 23 context session (d90d3d9)
- docs(23): capture phase context (8e69c67)
- docs(22.4): close phase — roadmap, state, verification report (b26ac48)
- docs(22.4): close folded README stale-claims todo (delivered by phase 22.4) (c313071)
- docs(phase-22.4): update tracking after wave 2 (DOC-01..DOC-05 complete) (731e71c)
- chore: merge executor worktree (worktree-agent-ae406c6eba9ebe162) (fd700e3)
- docs(22.4-03): complete CLAUDE.md/pyproject.toml Python-version fix plan (25a620d)
- docs(22.4-03): rewrite ruff UP006/UP035 ignore comments with honest deferral rationale (af8cab1)
- docs(22.4-03): align CLAUDE.md Python version claims with measured floor (c296a54)
- docs(phase-22.4): update tracking after wave 1 (1ecb8ea)
- chore: merge executor worktree (worktree-agent-a83d21c0561ee6772) (3150a66)
- chore: merge executor worktree (worktree-agent-ab7d9c93ff434ce1d) (cd28104)
- docs(22.4-01): complete README plan — check off DOC-01/02/03/05 (e4bd991)
- docs(22.4-02): append self-check results to plan 02 summary (ddae631)
- docs(22.4-02): complete pending-todo filing plan (60a1216)
- docs(22.4-01): append self-check results to plan 01 summary (985e882)
- docs(22.4-01): add plan 01 execution summary (56cfb79)
- docs(22.4-02): file D-17 github.io 404 todo, propose linkcheck CI, correct RTD todo premise (c19a088)
- docs(22.4-02): file D-18/D-21 dead-config and phantom-config-name todos (71de5ad)
- docs(22.4-01): align capability/limitation/status/methodology claims with source (a85a298)
- docs(22.4-02): file D-15/D-16 evacuated todos (typing modernize, orphan configuration.rst) (0c59577)
- docs(22.4-01): fix Configuration Options scope claim and Advanced Usage examples (925b201)
- docs(22.4-01): remove unverifiable test-count and coverage claims from README (d5afe1a)
- docs(phase-22.4): begin phase execution (d0eab08)
- docs(22.4): create phase plan (3 plans, 2 waves) (695c2d6)
- docs(22.4): create phase plan (3 plans, 2 waves) (8e9052c)
- docs(phase-22.4): add validation strategy (240142a)
- docs(22.4): record D-17..D-21 (owner rulings on research discoveries) (6798820)
- docs(22.4): research phase domain (08c4407)
- docs(22.4): define phase goal, success criteria, and DOC-01..DOC-05 requirements (7c90f2a)
- docs(state): record phase 22.4 context session (d09e633)
- docs(22.4): capture phase context (3069933)
- docs: remove closed todos from pending (moved to completed) (93de71d)
- docs: close 2 delivered todos (typst_output_dir, typst_package path) — Phase 22.2 (0e1f394)
- docs: close WR-01/WR-02 source todo (delivered by phase 22.3) (260d5a1)
- docs(22.3): close phase — roadmap, requirements, state, source todo (4d5c689)
- docs(22.3): add phase verification report (f211de9)
- docs(22.3): record code review fixes (CR-01, WR-01, IN-01) (8f94df9)
- fix(22.3): guard _is_master_document against malformed typst_documents entries (CR-01) (8da32c3)
- docs(22.3): add code review report (543e45a)
- docs(phase-22.3): update tracking after wave 2 (d50c77b)
- chore: merge executor worktree (worktree-agent-af70e42ad8b6ccf8e) (594aa03)
- docs(22.3-03): record SC#5 subprocess-half pre-fix must-fail proof (470ba13)
- test(22.3-03): add GATE-01 must-fail subprocess gate for WR-01 (D-11, D-02, D-04, D-07) (2b58e3b)
- test(22.3-03): add missing_and_malformed_master_gate fixture (D-11, D-04, D-05) (6d57e90)
- docs(phase-22.3): update tracking after wave 1 (75d6851)
- chore: merge executor worktree (worktree-agent-a5252e090ef342269) (ea4284d)
- chore: merge executor worktree (worktree-agent-a9f1a5e557d0b19b1) (02d49f5)
- docs(22.3-02): append self-check results to SUMMARY (b6315ac)
- docs(22.3-02): add plan 02 SUMMARY (d30d59c)
- test(22.3-02): add three-part ablation GREEN proof for the include/image failure class (d20bd98)
- docs(22.3-01): add plan 01 SUMMARY (480c7fe)
- docs(22.3-01): file D-06 non-str-docname TypeError deferral todo (feefb0e)
- test(22.3-02): de-couple RED half of test_sibling_include_fails_at_outdir_root_and_resolves_in_place (c9d2cc8)
- feat(22.3-01): make finish() fail loudly for missing-.typ and malformed entries (d08edd8)
- test(22.3-02): de-couple test_outdir_root_compile_basis_still_fails from typst-py wording (14c8528)
- test(22.3-01): add four RED tests pinning WR-01 failure contract (4d621da)
- docs(22.3): begin phase execution (2962558)
- chore: activate auto-chain flag for phase 22.3 execution (2834a31)
- docs(22.3): create phase plan (4467001)
- fix(22.3): revise plans per checker feedback (D-04 shared append, ablation substitution gate) (eb62ec9)
- docs(22.3): create phase plan (096affc)
- docs(22.3): add pattern map (7dc1e36)
- docs(22.3): add validation strategy (9c2d0e7)
- docs(22.3): research typstpdf builder warning hardening (3960c6e)
- docs: capture todo - README の記述を全体的に見直す (815569f)
- docs(quick-260722-t3q): record .bg-shell removal (bd03a98)
- chore(260722-t3q): remove stray .bg-shell directory (58a5481)
- docs(state): record phase 22.3 context session (8ee22bd)
- docs(22.3): capture phase context (8eb75a0)
- docs: map existing codebase (a93f278)
- test(22.2): complete UAT - 27 passed, 0 issues (52333bd)
- docs(phase-22.2): add security threat verification (d4fc01d)
- docs: capture untracked citation-node gap surfaced by phase 22.2 (556088b)
- docs(phase-22.2): evolve PROJECT.md after phase completion (1eb55d1)
- docs(phase-22.2): complete phase execution (de0289e)
- docs(22.2): record code-review resolution (6/6 findings fixed) (b78a46f)
- docs(22.2): correct default release mapping, document typst_authors (7133622)
- refactor(22.2): centralize the package-vs-template routing decision (023b92d)
- fix(22.2): stop duplicating essential imports on the inline-template path (d09dd84)
- docs(22.2): add code review report (8874734)
- docs(phase-22.2): update tracking after wave 3 (30a23c5)
- chore: merge executor worktree (worktree-agent-a6b07b0fbf21ca02b) (5daa415)
- docs(22.2-05): complete config->output regression gate plan (a2723a9)
- test(22.2-05): gate both bundled charged-ieee samples end-to-end (D-12) (8b4ee82)
- test(22.2-05): add pre-fix-basis failure proof and config->output diff matrix (46b1343)
- test(22.2-05): add package-alone GATE-01 real-compile fixture and per-defect gate (4ae868f)
- docs(phase-22.2): update tracking after wave 2 (2fac1cb)
- chore: merge executor worktree (worktree-agent-aa5ecb32c57d094ba) (ce4bbd6)
- docs(22.2-04): append self-check to plan summary (391c1ee)
- docs(22.2-04): create plan summary (e238958)
- fix(22.2-04): warn once on package+template combo, let template win (D-03, D-04) (a7b3141)
- feat(22.2-04): route package-alone masters away from shared template (D-01) (8ceb521)
- docs(phase-22.2): update tracking after wave 1 (8338cde)
- chore: merge executor worktree (worktree-agent-a3eace9aefc870464) (9177206)
- chore: merge executor worktree (worktree-agent-ab5b270d3b0509d26) (aa51506)
- chore: merge executor worktree (worktree-agent-ae06c4ee629feeff9) (bfb5b31)
- chore: merge executor worktree (worktree-agent-a85797db629721e68) (c6aa478)
- docs(22.2-03): record self-check results in plan summary (05eef49)
- docs(22.2-03): complete TemplateEngine parameter pipeline repair plan (84b4353)
- feat(22.2-03): wire typst_authors through map_parameters, delete legacy author-params surface (c7faabc)
- docs(22.2-06): complete approach2 template-repair plan (47d74d4)
- docs(22.2-02): append self-check result to summary (fd0fde2)
- docs(22.2-02): add plan summary (ddf82b4)
- fix(22.2-03): invert parameter precedence so explicit template-function params win (416bb72)
- fix(22.2-02): remove unsupported citation constructs from approach1 sample (8bed1a3)
- fix(22.2-02): remove unresolvable bibliography param, fix README build cmds (616247e)
- fix(22.2-06): remove unsupported citation constructs from approach2 sample (c014a0b)
- docs(22.2-01): record self-check result in plan summary (5e4088d)
- feat(22.2-03): hoist essential imports and...
Release v0.6.1
Changes since v0.6.0
- Merge pull request #118 from YuSabo90002/gsd/v0.6.1-release (27e7740)
- chore(release): prepare v0.6.1 — bump version + CHANGELOG (eba914c)
- chore: archive v0.6.0 phase directories (11–15) to milestones/ (8a8ccc6)
- chore: seed v0.6.1 fidelity-audit backlog (999.1) into ROADMAP (1575dea)
- chore: adopt milestone-level ship + release-phase process (from v0.6.2) (2fdbfc8)
- chore: remove REQUIREMENTS.md for v0.6.1 milestone (965b78d)
- chore: archive v0.6.1 milestone files (3b9bde5)
- chore(18): mark phase complete — milestone v0.6.1 final phase (cc7c64a)
- docs(phase-18): add security threat verification (4 threats closed, 0 open) (1bfbbec)
- test(18): complete UAT - 1 passed, 0 issues (F16 header-collision triaged to backlog) (3f56d9c)
- test(18): persist human verification items as UAT (9111816)
- docs(18-02): complete GATE-03 corpus regression close plan (b1d30f5)
- docs(18-01): complete FID-01a wide-table fix plan (e265654)
- docs(18-01): append self-check result to plan summary (03f81d2)
- docs(18-01): add plan 18-01 execution summary (1bed215)
- test(18-01): update stale columns: 2 assertion to (50fr, 50fr) (6b0ab2b)
- feat(18-01): emit fr-column tables + inject in-table ZWSP break points (FID-01a) (a86536e)
- test(18-01): add RED wide-table render-gate fixture for FID-01a (c55bab8)
- docs(18): add pattern map (3963a25)
- docs(18): create phase plan (e4b2ff2)
- docs(18): create phase plan (2 plans — FID-01a wide-table fix + GATE-03 close) (ddc9d93)
- docs(phase-18): add validation strategy (7869d4c)
- docs(18): research phase domain (92611b2)
- docs(state): record phase 18 context session (840bed9)
- docs(18): capture phase context (4763484)
- docs(17): Phase 17 COMPLETE — AUD-01 satisfied, ROADMAP + STATE finalized (65566f2)
- docs(17-04): complete Plan 17-04 — FID-01a backlog + phase 17 wrap-up (bf45446)
- docs(17-04): record five mechanical consistency checks in audit catalogue (793074d)
- docs(17-04): group F12 as FID-01a, append high-severity backlog to REQUIREMENTS (d360c25)
- docs(17-03): human confirmation gate passed (D-01a) — catalogue finalized (01bdec9)
- docs(17): mark 17-02 complete in ROADMAP; revert premature AUD-01 completion (fb3440f)
- docs(17-02): visual audit complete — 151/151 docnames; Task 2 done; candidate catalogue finalized (ab50333)
- docs(17-02): Task 2 complete — classify out-of-scope, finalize severity, deterministic re-sort (fd459b6)
- docs(17-02): audit progress — 151/151 docnames; visual pass COMPLETE (+F8 recurrences, examples pp.675,678) (9920265)
- docs(17-02): audit progress — 146/151 docnames; changes/0.4,0.3,0.2,0.1 clean (all changelogs done) (55af076)
- docs(17-02): audit progress — 142/151 docnames; changes/0.6,0.5 clean (ba7763c)
- docs(17-02): audit progress — 140/151 docnames; changes/1.2,1.1,1.0 clean (56a4e13)
- docs(17-02): audit progress — 137/151 docnames; changes/1.4,1.3 clean (0547c85)
- docs(17-02): audit progress — 135/151 docnames; +F8 recurrence (changes/1.6); changes/1.7,1.6,1.5 clean (145bcb9)
- docs(17-02): audit progress — 133/151 docnames; changes/1.8 clean (session checkpoint) (d4cff6c)
- docs(17-02): audit progress — 132/151 docnames; changes/2.0 clean (fe08377)
- docs(17-02): audit progress — 131/151 docnames; changes/2.4-2.1 clean (162b62d)
- docs(17-02): audit progress — 127/151 docnames; changes/3.1-3.0 clean (99ff53e)
- docs(17-02): audit progress — 125/151 docnames; changes/3.5-3.2 (F9 recurs in 3.2) (ee9463b)
- docs(17-02): audit progress — 121/151 docnames; changes/5.3-4.0 (F1 recurs in 5.0) (7b2d051)
- docs(17-02): audit progress — 112/151 docnames; changes/7.3-6.0 (F1 recurs in 6.0) (af6bf4f)
- docs(17-02): audit progress — 105/151 docnames; glossary + changes/9.0-7.4 clean (f347eb4)
- docs(17-02): audit progress — 100/151 docnames; restructuredtext/* done (F13+F7 heavy recurrence in directives) (27d388c)
- docs(17-02): audit progress — 94/151 docnames; linkcode/math/napoleon/todo/viewcode clean (F5 only) (a025222)
- docs(17-02): audit progress — 89/151 docnames; intersphinx done, no new finding kinds (9e2e38a)
- docs(17-02): audit progress — 88/151 docnames; graphviz/ifconfig/imgconverter/inheritance done, SC#3 confirmed clean (f5c46aa)
- docs(17-02): audit progress — 84/151 docnames; +F15 (consecutive body-less confvals concat) (91cdb0e)
- docs(17-02): audit progress — 79/151 docnames; usage/extensions/index..autosummary done, no new finding kinds (b34c55c)
- docs(17-02): audit progress — 74/151 docnames; +F14 (definition-list term/nested-term concat); usage/configuration complete (b620091)
- docs(17-02): audit progress — usage/configuration pp.313-334 read (mid-docname checkpoint) (fffc93f)
- docs(17-02): audit progress — 73/151 docnames; +F13 (rubric option-group heading merge); man/* + internals/* done (2025cb7)
- docs(17-02): audit progress — 60/151 docnames; latex (32pp) — no new kinds (f60af35)
- docs(17-02): audit progress — 59/151; +F11 (codly caption leak) +F12 (table overflow); extdev done (301a3c4)
- docs(17-02): audit progress — 55/151 docnames; +F10 (abbr/param-separator tooltip leak) (ecd976a)
- docs(17-02): audit progress — 44/151 docnames; extdev/index + appapi (F2/F3/F7/F9) (f4eb4ee)
- docs(17-02): audit progress — 42/151 docnames; F9 recurrences + mapping note (a768fd1)
- docs(17-02): audit progress — 37/151 docnames; +F9 (systemic soft-line-break→hard-break) (9bb3d6d)
- docs(17-02): record partial-pass state — 35/151 audited, resume pointer set (no SUMMARY by design) (f6c4e38)
- docs(17-02): audit progress — 35/151 docnames; extending_build (F1); refresh catalogue status/intro (af9a1dd)
- docs(17-02): audit progress — 34/151 docnames; websupport(F2)/development-tutorials(F8) (6f55292)
- docs(17-02): audit progress — 26/151 docnames; +F8 (external link plain-text/stray-space); domains-index/theming/intl (84977a4)
- docs(17-02): audit progress — 23/151 docnames; +F7 (multi-signature concat); js/math/python/rst domains (3f1f93b)
- docs(17-02): audit progress — 19/151 docnames; +4 findings (F3 C/C++ sig spacing, F4 leaked field labels, F5 field-list collapse, F6 inline-literal clip) (3ba2654)
- docs(17-02): audit progress — 16/151 docnames; +2 systemic findings (F1 list-item paragraph merge, F2 class-prefix space) (91a8b5d)
- docs(17-02): audit progress — 12/151 docnames (index + tutorial closure, no issues) (f1e4900)
- docs(17-01): complete audit infrastructure plan (0ec9a42)
- docs(17-01): record self-check results in summary (247d989)
- docs(17-01): add plan summary (3765954)
- docs(17-01): create audit catalogue skeleton with fresh provenance + page mapping (00df8be)
- docs(17): create phase plan (05cda7b)
- docs(17): create phase plan (4 plans, human-assisted rendering-fidelity audit) (d681d8d)
- docs(17): add validation strategy (a37e29a)
- docs(17): research rendering-fidelity audit methodology (9f6e6e6)
- docs(state): record phase 17 context session (8a6d375)
- docs(17): capture phase context (c89e6fe)
- docs(16): mark phase 16 complete, transition to phase 17 (510599b)
- docs(phase-16): add security threat verification (8797b64)
- test(16): complete UAT - 1 passed, 0 issues (ea4536d)
- test(16): persist human verification items as UAT (e0dee59)
- docs(16): add code review fix report (0f25f6f)
- fix(16): WR-01 add render-gate coverage for figwidth-without-caption depart_figure branch (0286b79)
- fix(16): CR-01 add in-list-item separator check to visit_figure/depart_figure (ef17c69)
- docs(16): add code review report (8df7774)
- docs(phase-16): update tracking after wave 3 (c314db5)
- chore: merge executor worktree (worktree-agent-a93b009ad360033d9) (4fcb3b8)
- docs(16-03): append self-check result to plan summary (373e3e3)
- docs(16-03): add plan summary for LEN-01 length-converter refactor (55d07d2)
- feat(16-03): wire _convert_length_to_typst into figure figwidth + table width (LEN-01) (eaa691d)
- test(16-03): add RED fixtures/tests for figwidth + table width wiring (LEN-01) (ee0b4b0)
- docs(phase-16): update tracking after wave 2 (0d006c8)
- fix: resolve post-merge conflicts from wave 2 (bc664b1)
- chore: merge executor worktree (worktree-agent-a086dfb551bab2a2e) (dcd6997)
- docs(16-02): complete manpage node handler plan (2b10ae3)
- feat(16-02): implement visit_manpage/depart_manpage via emphasis delegation (GREEN) (e31a79e)
- test(16-02): add failing manpage_render_gate fixture + TestManpageRenderGate (RED) (e437f29)
- docs(phase-16): update tracking after wave 1 (d7773f8)
- chore: merge executor worktree (worktree-agent-a87f8f981300b3016) (7259037)
- docs(16-01): append self-check result to SUMMARY (d9d11a4)
- docs(16-01): add plan 01 SUMMARY (0b2cd7f)
- feat(16-01): implement visit_todo_node/depart_todo_node (GREEN) (5f3ec4c)
- test(16-01): add failing TestTodoRenderGate GATE-01 fixture (RED) (e1c77e2)
- docs(16): commit phase 16 planning artifacts before execution (58ed39d)
- docs(16): create phase plan (3b361bb)
- docs(16): create phase plan (fe69bd5)
- docs(phase-16): add validation strategy (86160f9)
- docs(16): research phase domain (73f0ee0)
- docs(state): record phase 16 context session (a6f8fa1)
- docs(16): capture phase context (2499e6b)
- docs: create milestone v0.6.1 roadmap (3 phases) (ce120a2)
- docs: define milestone v0.6.1 requirements (db7a4cc)
- docs: start milestone v0.6.1 rendering-fidelity (de63d3e)
- docs: reconcile stale debug-session status + correct v0.6.0 backlog framing (501375e)
- Merge pull request #116 from YuSabo90002/chore/record-v0.6.0-release (0ae5802)
- docs(v0.6.0): record release outcome (PyPI ship, PR #115, Windows CI fix) (dcd03eb)
Installation
pip install typsphinx==0.6.1What's Changed
- docs(v0.6.0): record release outcome by @YuSabo90002 in #116
- Release v0.6.1 — rendering fidelity by @YuSabo90002 in #118
Full Changelog: v0.6.0...v0.6.1