Releases: kjanat/mosaic
Releases · kjanat/mosaic
v0.0.1
Changelog
Second pre-alpha release. Publishes the bibliography and CSL foundation work, plus diagnostics,
references, LSP diagnostics, line-break controls, and PDF provenance improvements.
Added
- Citation Style Language foundations via the new
mos-cslcrate: CSL item models, BibTeX-to-CSL
mapping, and a namespace-aware CSL XML style parser that retains style options and metadata for a
future processor. - Minimal BibTeX record parsing in
mos-bib, producing deterministic typed bibliography records with
duplicate-key detection and recoverableMOS0043diagnostics. #bibliography("refs.bib")source directive support in the parser and evaluator, preserving the
literal and resolved bibliography paths for later citation resolution and rendering work.- Deterministic Mosaic provenance in PDF metadata via
/Producerand/Creator. - Structured diagnostic suggestions, including nearest-label suggestions for unknown references and
rename suggestions for duplicate labels. - Minimal single-key
[@key]citation syntax with placeholder rendering. - Initial stdio LSP diagnostic server publishing compiler diagnostics for opened and changed files.
- Author-facing line-break controls: hard breaks, soft hyphen escapes, and non-breaking spaces.
Changed
- Diagnostics now use the registry-backed
MOS####code system with a drift-tested human catalog. - Reference resolution now models label targets explicitly, numbers figures independently, and renders
figure references asFigure N. - Tree-sitter and Zed syntax support now match compiler line-break escape handling.
What's Changed
- Add author-facing line-break controls (issue #26) by @kjanat in #35
- feat(layout): greedy soft-hyphen line breaking by @kjanat in #36
- fix(tree-sitter): align line-break escapes with compiler by @kjanat in #37
- refactor(eval): model label targets explicitly by @kjanat in #55
- docs: catalog diagnostic codes by @kjanat in #57
- docs: define page reference boundary by @kjanat in #56
- docs: define formatter trivia requirements by @kjanat in #58
- docs: define incremental dependency boundaries by @kjanat in #59
- feat(parse): add minimal citation syntax by @kjanat in #61
- feat(lsp): publish compiler diagnostics by @kjanat in #60
- docs: document supported label and reference behavior by @kjanat in #62
- feat(mos-core): add structured Suggestion payload to diagnostics by @kjanat in #74
- Implement figure numbering and kind-aware figure references by @kjanat in #75
- feat(eval): suggest rename for duplicate labels by @kjanat in #77
- feat(eval): suggest nearest labels for unknown references by @kjanat in #78
- feat(pdf): stamp Mosaic provenance in PDF metadata by @kjanat in #80
- feat(eval): define #bibliography source directive boundary by @kjanat in #82
- feat(bib): parse BibTeX entries into mos-bib records by @kjanat in #83
- feat(csl): CSL item data model, BibTeX mapping, and style parser by @kjanat in #84
- fix(csl): improve BibTeX field mapping by @kjanat in #89
- feat(csl): retain rendering options by @kjanat in #90
- feat(csl): retain dependent style metadata by @kjanat in #91
- fix(csl): close style parser leniency gaps by @kjanat in #92
Full Changelog: v0.0.0...v0.0.1
v0.0.0
Changelog
First tagged pre-alpha. The full crate stack under crates/ (everything except the zed-mosaic
editor extension) is published to crates.io via a resumable release workflow.
Added
mos check: parse, lower, and resolve a.mosfile or project directory, emitting
source-anchored diagnostics with stableMOS####codes, carets, UTF-8-accurate columns, and
CRLF-aware spans. The CLI applies phase-barrier fail-fast (each phase runs to completion, then
exits if any error was collected) and gates PDF emission on diagnostic severity.mos build: render a document to PDF underbuild/<entry-stem>.pdf, or to a project-declared
[output].pdfpath. Built PDFs open automatically after a successful build.- CLI accepts both single
.mosfiles and project directories. - Markup parser: headings, paragraphs, inline emphasis / strong / nested bold-italic, inline and
multiline code spans, raw code blocks (including long-bracket form with literal bodies and
preserved tabs and escapes), unordered (-) and ordered (N.) lists with hanging indent,#set,
#image,#figure, and cross-reference labels / references. - Semantic lowering and resolution: a
Documentmodel with metadata, automatic hierarchical section
numbering, a cross-reference resolver, and duplicate / unknown-label diagnostics. - Layout engine: greedy text flow; headings, paragraphs, and lists (with adaptive gutters and
per-marker shaping for ordered lists); raster images and simple figures with captions; pages,
paper sizes, and margins;#setpage / text / document properties wired into layout and PDF
metadata; NFC text normalization; and oversized-word breaking on shaped glyph clusters. - Fonts: a zero-dependency Adobe Font Metrics (AFM v4.x) parser; Base-14 metrics; per-glyph font
fallback; and bundled, subsetted Noto Sans, Noto Sans Mono, and Noto Sans Math for broad Unicode
coverage beyond the Base-14 cliff. - PDF backend: WinAnsi plus Latin-Extended text via per-document
/Differencesand/ToUnicode,
Type 0 CID emission for embedded fonts, GPOS-positioned glyph output, PNG and JPEG image XObjects,
title / author Info metadata, and deterministic object / font / image emission order. - Editor tooling: a Tree-sitter grammar and corpus (
tree-sitter-mosaic) and a Zed extension
(zed-mosaic) providing highlighting, outline, document runnables, and semantic-token defaults. - An in-memory cache foundation (
mos-cache) backed by aHashMap.
What's Changed
- Initial workspace scaffold for Mosaic typesetting compiler by @kjanat in #1
- Implement MVP 0 parser, lowerer, and
mos checkcommand by @kjanat in #2 - Implement MVP 0 layout engine and PDF backend by @kjanat in #3
- Implement cross-reference resolver (manifest §6 stage 3, MVP 1) by @kjanat in #4
- Implement
#setdirective parsing and semantic lowering (MVP 1.5) by @kjanat in #6 - Add AFM parser crate for Adobe Font Metrics support by @kjanat in #12
- Add pdf-base14-metrics crate with Core 14 font metrics by @kjanat in #13
- Implement Font metrics via pdf_base14_metrics facade by @kjanat in #14
- Extract font metrics to separate mosaic-fonts crate by @kjanat in #15
- Widen text substitution boundary: ASCII (0x20..=0x7E) to WinAnsi/CP1252 by @kjanat in #16
- feat(pdf): unlock Latin Extended via per-doc /Differences + /ToUnicode by @kjanat in #17
- Embed Noto Sans + Type 0 CID font: end the W040 cliff (#9) by @kjanat in #21
- Add support for bullet and numbered lists by @kjanat in #22
- Add support for raster images via #image() and #figure() directives by @kjanat in #23
- Per-glyph font fallback + bundle Noto Sans Math by @kjanat in #24
- feat: tree-sitter-mosaic grammar + corpus by @kjanat in #29
- feat(zed-mosaic): Zed editor extension for .mos by @kjanat in #30
- Normalize text to NFC by @kjanat in #32
- Preserve shaped glyph positioning by @kjanat in #33
- Support nested emphasis by @kjanat in #34
Full Changelog: https://github.com/kjanat/mosaic/commits/v0.0.0