@quillmark/wasm 0.108.1 → 0.108.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +89 -5
- package/backends/pdfform/wasm_bg.wasm +0 -0
- package/backends/typst/wasm_bg.wasm +0 -0
- package/core/wasm_bg.wasm +0 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,94 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.108.3 - 2026-08-21
|
|
4
|
+
|
|
5
|
+
- fix(typst): **a paragraph holding one bare `/` renders instead of failing the
|
|
6
|
+
compile.** Typst's heading `=`, list `-`/`+`/`N.`, and term `/` markers fire
|
|
7
|
+
on a space after them *or* on the line ending there; the emitter's
|
|
8
|
+
line-anchor guard tested only for the space, so a run that was one bare
|
|
9
|
+
marker reached Typst unescaped — `/` as a term list whose colon is missing
|
|
10
|
+
(`expected colon`), the other four as an empty heading, bullet or enum item.
|
|
11
|
+
The guard now takes Typst's own test, and covers a list item's body head as
|
|
12
|
+
well as column 0, that being a line start the parser reads as one.
|
|
13
|
+
|
|
14
|
+
- fix(typst): **bold text, a table cell or an indented paragraph opening with
|
|
15
|
+
`-`, `=`, `+`, `/` or `N.` renders as that text.** Typst reads the head of
|
|
16
|
+
every content block `[…]` as a line start of its own, so the marker in
|
|
17
|
+
`**/ x**` or in a table cell reached it as a term list whose colon is missing
|
|
18
|
+
and failed the compile, while `**- x**` drew a bullet list inside the bold.
|
|
19
|
+
Indentation is trivia and holds that line start open behind it, so a
|
|
20
|
+
paragraph beginning ` / x` failed the same way. The line-anchor guard now
|
|
21
|
+
covers every position Typst reads as a line start.
|
|
22
|
+
|
|
23
|
+
- fix(typst): **text directly after inline code, bold or an image renders when
|
|
24
|
+
it opens with `(` or `.name`.** Typst reads a `(` directly after a `#…`
|
|
25
|
+
expression as that call's arguments and a `.` before an identifier as a field
|
|
26
|
+
access, so the emitter's own `#raw(…)`, `#strong[…]` and `#image(…)` handed
|
|
27
|
+
the text behind them to Typst as code — `` `x`(y) `` became a call on
|
|
28
|
+
content, which fails the compile. Such a run now takes the same `\` prefix
|
|
29
|
+
the line-anchor guard uses. Debug builds parse every emission with Typst's
|
|
30
|
+
parser, so markup that reaches it as syntax fails a test rather than a render.
|
|
31
|
+
|
|
32
|
+
<!-- seed: commits since v0.108.2, confirm the entries above cover them, then delete this comment
|
|
33
|
+
- fix(typst): stop a `#…` expression running on into the text behind it
|
|
34
|
+
- fix(typst): guard the line anchor at every position Typst reads as one
|
|
35
|
+
- fix(typst): escape a line-anchor marker that ends its run
|
|
36
|
+
-->
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## v0.108.2 - 2026-08-20
|
|
40
|
+
|
|
41
|
+
- fix(core): **storage blobs tagged `@0.81.0` and `@0.82.0` load again.** Both
|
|
42
|
+
tags migrate forward on read instead of failing as an unknown schema version.
|
|
43
|
+
Migrations chain (`V0_81_0 → V0_82_0 → V0_92_0 → V0_93_0`); the write path is
|
|
44
|
+
untouched, so re-serializing a migrated row emits `@0.93.0`.
|
|
45
|
+
|
|
46
|
+
The `V0_82_0` hop is **lossy in one place**: the `$id` payload item is
|
|
47
|
+
dropped, the live model having no counterpart for it. The alternative is
|
|
48
|
+
refusing the row. A consumer that kept a key under `$id` re-establishes it
|
|
49
|
+
under a `$ext` namespace it owns.
|
|
50
|
+
|
|
51
|
+
This reverses the #929 retirement, whose two premises were both wrong. Rows
|
|
52
|
+
do predate `@0.92.0` — #1327 reports stored `@0.81.0` ones. And `0.82.0` was
|
|
53
|
+
not yanked: every published Quillmark version is live on crates.io, npm, and
|
|
54
|
+
PyPI. Because no yank happened, `@0.82.0` names a shape
|
|
55
|
+
union rather than a frozen format — every release from `0.83.0` through
|
|
56
|
+
`0.91.0` stamped it — so the restored reader accepts the union (#1327)
|
|
57
|
+
|
|
58
|
+
- refactor!: **one definition per mechanism across the rust crates.** A
|
|
59
|
+
whole-codebase simplify pass: the typst session compiles through one
|
|
60
|
+
`recompile` pipeline whose derived tables (regions, span windows, page hashes)
|
|
61
|
+
are built per commit instead of per query; the pdf reader's scan plumbing
|
|
62
|
+
(`object_dict`, `open_trailer`, `dict_end`, `ws_end`) and the page-dict array
|
|
63
|
+
splice are single definitions shared by stamp and flatten; the flattened PDF
|
|
64
|
+
is shared by `Arc` instead of copied per render; emission, prescan, payload
|
|
65
|
+
assembly and validation in core lose their duplicated dispatch and their
|
|
66
|
+
per-keystroke deep clones. Two outputs shift: a blank pdfform document returns
|
|
67
|
+
the base PDF unchanged rather than appending a revision carrying two
|
|
68
|
+
unreferenced font objects, and three `quillmark-pdf` parse-failure messages
|
|
69
|
+
share one `dict not parseable` spelling (codes unchanged). Dead public API is
|
|
70
|
+
deleted: `FileTreeNode::{file_exists, dir_exists, list_files,
|
|
71
|
+
list_subdirectories}`, `Payload::contains_key`, `PayloadItem::nested_comments`,
|
|
72
|
+
`QuillValue::{string, integer, bool, null}` (the `From` impls and `from_json`
|
|
73
|
+
are the constructors), `FieldSpec::{with_schema_field, with_value,
|
|
74
|
+
with_tooltip}` (assign the fields), and `quillmark-content`'s
|
|
75
|
+
`strip_bidi_formatting` / `fix_html_comment_fences` (internal to
|
|
76
|
+
`normalize_markdown`). None had a caller in the workspace or bindings.
|
|
77
|
+
|
|
78
|
+
- fix: **an empty mapping emits as `{}` rather than losing its key.** `emit_field`
|
|
79
|
+
dropped an empty-object field entirely, which composes with the block form of
|
|
80
|
+
its parent into markdown no parser accepts: a `$ext` whose every namespace
|
|
81
|
+
emptied wrote `$ext:` with no children, and re-parsed as null. That is the
|
|
82
|
+
`parse::invalid_structure` a `@quillmark/svelte` host hit on save, once a
|
|
83
|
+
tips-card dismissal had cleared `$ext.editor.tips`. One level down the same
|
|
84
|
+
rule ran silent: `$ext` is the only slot type-checked, so an inner mapping
|
|
85
|
+
turned null and the document parsed clean, handing a consumer back a type it
|
|
86
|
+
never wrote. Plain user fields carried that loss too — `cfg: {opts: {}}`
|
|
87
|
+
re-parsed as `cfg: null`, and the second emit then differed from the first.
|
|
88
|
+
Empty mappings now emit `key: {}` at every depth. That is the spelling a
|
|
89
|
+
sequence item (`- {}`) and a wholly empty `$ext: {}` already used, so an
|
|
90
|
+
emptied container survives the round-trip as the value a consumer stored.
|
|
91
|
+
|
|
3
92
|
## v0.108.1 - 2026-08-19
|
|
4
93
|
|
|
5
94
|
- fix: **a content cell under `variants:` is readable at its codec.**
|
|
@@ -14,11 +103,6 @@
|
|
|
14
103
|
variantless enum stays a scalar. The write is unchanged — a variant container
|
|
15
104
|
has no per-cell op address and needs none, committing whole.
|
|
16
105
|
|
|
17
|
-
<!-- seed: commits since v0.108.0, confirm the entries above cover them, then delete this comment
|
|
18
|
-
- fix: a content cell under `variants:` reads at its codec
|
|
19
|
-
-->
|
|
20
|
-
|
|
21
|
-
|
|
22
106
|
## v0.108.0 - 2026-08-18
|
|
23
107
|
|
|
24
108
|
- fix: **the value ladder is cut per cell, so the plate is total at every
|
|
Binary file
|
|
Binary file
|
package/core/wasm_bg.wasm
CHANGED
|
Binary file
|