@ai-matrx/content-ir 0.17.0 → 0.18.0

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 CHANGED
@@ -1,5 +1,44 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.18.0 — 2026-09-25
4
+
5
+ **`/source` `isSingleDollarMath`: `$FC$` is math.** (RC-B9 verifier, RC-B3.)
6
+ `where $FC$ is fixed costs.` drew literal dollars on screen and in every
7
+ export, because the rule wanted an operator, a lone variable or a TeX
8
+ command. It now follows Pandoc's `tex_math_dollars` delimiters (what
9
+ remark-math approximates, and how ChatGPT and Claude render): the opener is
10
+ followed by a non-space; the closer is preceded by a non-space and not
11
+ followed by a digit. `$5 and $10`, `$5-$10`, `$5/$10` stay currency. On top,
12
+ content that reads as something else is refused: an unescaped `%`; a closing
13
+ bracket or `/` first, an opening bracket last; a straight quote at either
14
+ end; `:` `;` `,` `/` last; a number glued to a following letter
15
+ (`$10$N9qo…`); a placeholder (`$...$`); and prose (two plain words, a
16
+ contraction, an abbreviation) unless a TeX command or operator is present.
17
+ Measured before choosing (matrx-frontend
18
+ `scripts/measure-single-dollar-rule.ts`, 85,102 assistant messages and 4,298
19
+ notes, read-only): 128 spans become math, each one a formula on review
20
+ (`$FC$`, `$VC$`, `$(0, 0)$`, `$2a$`, `$3x + 6 = 15$`, `$XY$`, `$p(doom)$`);
21
+ 22 spans the old rule drew as math stop (jQuery `$("#id")`, template literals
22
+ `${id}:${…}`, a printf `%1$s`, broken TeX); 0 currency spans become math.
23
+ Pure Pandoc would have added 36 more false positives (shell `$HOME/…:$PATH`,
24
+ `$\ge$20% …**$`, `[$X] … [$Y]`, bcrypt costs). Shared vectors:
25
+ `__tests__/fixtures/single-dollar-vectors.json` (red on 0.17.0). No other
26
+ implementation of this rule exists (the Python server has none).
27
+
28
+ **New: `looksLikeOpenInlineMath(partial)`** — whether an UNCLOSED `$…`
29
+ already reads as a formula while a stream is still arriving. It keeps the
30
+ old signal rule (a TeX command or operator, a lone variable, a single-letter
31
+ shape; a leading digit needs a TeX command), because without a closer there
32
+ are no delimiter facts yet: `$35 per stop` keeps showing mid-stream.
33
+
34
+ Also carries the committed RC-B10 code-range work in `source/code-ranges.ts`
35
+ and `source/tokenize.ts`. The print lane owns its entry.
36
+
37
+ **Consumer action:** a streaming healer that asks `isSingleDollarMath` about
38
+ an unclosed `$…` tail must ask `looksLikeOpenInlineMath` instead. With the
39
+ wider rule, a price like `$35 per stop` would otherwise be held back until
40
+ the line ends. matrx-frontend `stream-heal.ts` is the one known caller.
41
+
3
42
  ## 0.17.0 — 2026-09-26
4
43
 
5
44
  **`/source` streaming: what "settled" promises, pinned — and the one
@@ -69,7 +108,7 @@ Automatic changed-only republish (docs/metadata drift since the last tag — see
69
108
  `git diff npm/content-ir-core/v0.16.0..npm/content-ir-core/v0.16.1 -- apps/shared/content-ir-core`).
70
109
  No source changes intended and no consumer action required.
71
110
 
72
- ## Unreleased
111
+ ## 0.16.2 (also shipped)
73
112
 
74
113
  **`/source` — a callout or `:::` directive nested in a list item stays in the
75
114
  list's prose block** (verify-RC-B8 round 2, SAFETY). Guard: