v0.0.0
Pre-release
Pre-release
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