rapier-html 1.1.58 → 1.1.59

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/BUILD.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "package": "rapier-html",
3
- "version": "1.1.58",
3
+ "version": "1.1.59",
4
4
  "path": "dist/rapier.html",
5
- "bytes": 1788599,
6
- "sha256": "9e2969719713a5b278e549b5d2ce02916ea02de32e2451e7b01b9f9a987f67ee",
7
- "builtAt": "2026-10-04T09:14:25.892Z",
5
+ "bytes": 1796536,
6
+ "sha256": "18cae9996bc9e90f3f73ca8b33b16b6f5dcf1c541b63b3c39d4abb8fa8b1b2f1",
7
+ "builtAt": "2026-10-04T09:37:04.001Z",
8
8
  "node": "v22.22.2",
9
9
  "canonical": true,
10
10
  "packing": "zopfli",
package/README.md CHANGED
@@ -14,14 +14,14 @@ editor, offline, with the document inside.
14
14
  Node 22 or newer.
15
15
 
16
16
  ```sh
17
- npx -- rapier-html@1.1.58 notes.md # the editor, notes.md inside it, written beside the file
18
- npx -- rapier-html@1.1.58 notes.md --view draw # opens on Draw: sketch and paint, the document behind it
19
- npx -- rapier-html@1.1.58 notes.md --view notes # opens the Notes library
20
- npx -- rapier-html@1.1.58 notes.md --drawing sketch.svg # carries a drawing, opened on Draw over the document
21
- npx -- rapier-html@1.1.58 proposal.md --base original.md # opens on the diff of a proposed change
22
- npx -- rapier-html@1.1.58 notes.md --return "$RETURN_URL" --return-expires-at "$RETURN_EXPIRES_AT" # Send back
23
- npx -- rapier-html@1.1.58 notes.md out.html # a named output
24
- npm install rapier-html@1.1.58 # as a library: wrap, unwrap
17
+ npx -- rapier-html@1.1.59 notes.md # the editor, notes.md inside it, written beside the file
18
+ npx -- rapier-html@1.1.59 notes.md --view draw # opens on Draw: sketch and paint, the document behind it
19
+ npx -- rapier-html@1.1.59 notes.md --view notes # opens the Notes library
20
+ npx -- rapier-html@1.1.59 notes.md --drawing sketch.svg # carries a drawing, opened on Draw over the document
21
+ npx -- rapier-html@1.1.59 proposal.md --base original.md # opens on the diff of a proposed change
22
+ npx -- rapier-html@1.1.59 notes.md --return "$RETURN_URL" --return-expires-at "$RETURN_EXPIRES_AT" # Send back
23
+ npx -- rapier-html@1.1.59 notes.md out.html # a named output
24
+ npm install rapier-html@1.1.59 # as a library: wrap, unwrap
25
25
  ```
26
26
 
27
27
  The first `--` is for npm, so `--help` reaches the command. It never overwrites a file.
@@ -24,13 +24,19 @@ Files under this licence carry `SPDX-License-Identifier: MIT` in their first lin
24
24
  grammar, marks and reference style (`spec/md-layout.mjs`, `spec/md-marks.mjs`, `spec/flowchart.mjs`, `spec/markdown-style.css`), the layout model and line planner
25
25
  (`layout/model.mjs`, `layout/line-plan.mjs`), the Will grammar (`agent/will.mjs`), the picture appendix reader and writer
26
26
  (`spec/md-assets.mjs`), the two shared-page reference readers (`tools/read-shared-page.mjs`,
27
- `tools/read-shared-page.py`), and the host helper `packages/rapier-embed/embed.mjs`. The vendored Pretext (`agent/vendor/pretext`) and micromark carry their
27
+ `tools/read-shared-page.py`), and the host helper `packages/rapier-embed/embed.mjs` with its
28
+ contract owner `packages/rapier-embed/contract.mjs`. The vendored Pretext (`agent/vendor/pretext`) and micromark carry their
28
29
  own MIT notices. The edit-ledger module (`kit/rapier-ledger.mjs`, `kit/ledger/*.mjs`) and
29
30
  its editor compatibility import (`editor/journal-records.mjs`) are also covered. The
30
31
  record validator/replayer and text-only conflict merger were moved, not copied,
31
32
  into that module; the Notes index merger and the rest of the agent/editor remain
32
33
  AGPL-3.0-only. The wrapper's carrier-staging helper
33
- (`skills/rapier-html/package-files.mjs`) is MIT. Everything else in Rapier is AGPL-3.0-only (see `LICENSE`).
34
+ (`skills/rapier-html/package-files.mjs`) is MIT. The kit's MIT-marked facades,
35
+ `kit/render-entry.mjs`, `kit/render*.mjs`, `kit/stage.mjs` and MIT-marked conformance
36
+ modules are covered too. These names describe the Rapier-owned files carrying the
37
+ MIT notice, not a grant over the editor or third-party code. Other Rapier-owned
38
+ files retain their stated licence; the editor is AGPL-3.0-only (see `LICENSE`).
39
+ Third-party components retain their own copyright and licence notices.
34
40
 
35
41
  The picture appendix reader and writer used to be part of `images/assets.mjs`, a file that also
36
42
  holds JPEG XL/raster header inspection and SVG sanitizing -- both of which reach the editor's own
package/dist/page.mjs CHANGED
@@ -46,12 +46,16 @@ export function wrap(pageHtml, text, name, options) {
46
46
  if ((opts.by != null || opts.at != null) && opts.base == null) throw new Error('a proposer needs the base it proposes over');
47
47
  if (opts.base != null) {
48
48
  if (typeof opts.base !== 'string') throw new Error('the base must be text');
49
+ // As with the proposed document, validate saved parts before carrying only their source.
50
+ // A mismatched history is refused here, never displayed as part of the baseline.
51
+ const base = readDocument(opts.base).text;
49
52
  // A proposal page (docs/briefs/ledger.md section 3): who proposed it, in the host's own words, and when.
50
53
  const by = opts.by == null ? null : String(opts.by).replace(/[\0-\x1f\x7f]/g, ' ').trim().slice(0, 96);
51
54
  const at = opts.at == null ? null : String(opts.at);
52
55
  if (at != null && !(PROPOSED_AT.test(at) && Number.isFinite(Date.parse(at)))) throw new Error('the time of a proposal is an ISO 8601 UTC timestamp');
53
- carriedBlocks += '\n' + BASE_START + ' data-name="' + safeName(opts.baseName, docName) + '"' + (by ? ' data-by="' + attribute(by) + '"' : '') +
54
- (at ? ' data-at="' + at + '"' : '') + '>' + encodeCarried(opts.base) + END;
56
+ // Equal versions are a first draft, not a second carried document.
57
+ if (base !== text) carriedBlocks += '\n' + BASE_START + ' data-name="' + safeName(opts.baseName, docName) + '"' + (by ? ' data-by="' + attribute(by) + '"' : '') +
58
+ (at ? ' data-at="' + at + '"' : '') + '>' + encodeCarried(base) + END;
55
59
  }
56
60
  // The agent seed goes after the charset (or <head>), once: a page that already carries it, wrapped again, loses its old one.
57
61
  const unseeded = unwrap(pageHtml).html.replace(SEARCH_WORDS, '').split(PAGE_SEED + '\n').join('');