chore: version packages#424
Merged
Merged
Conversation
stella-provenance-updater
Bot
force-pushed
the
changeset-release/main
branch
5 times, most recently
from
July 19, 2026 16:43
290951f to
4441ef6
Compare
stella-provenance-updater
Bot
force-pushed
the
changeset-release/main
branch
from
July 19, 2026 16:47
4441ef6 to
4c1e9dd
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@stll/folio-agents@0.8.0
Minor Changes
#412
21274beThanks @jan-kubica! - Add a first-class suggestion layer to tracked changes. AI-proposed edits can beapplied with the new
"suggested"apply mode: they render with thetracked-change grammar but a dotted stroke and a dedicated hue, and are always
stripped from serialized DOCX output until accepted. Accepting a suggestion
converts it into a normal tracked change authored by the accepting user (or, for
a whole inserted table, applies it directly since OOXML has no tracked
representation for it); rejecting inverse-applies it.
Suggested mode covers inline text/format operations (
replaceInBlock,replaceRange,formatRange) and block/table structural operations(
insertAfterBlock,insertBeforeBlock,replaceBlock,deleteBlock,insertSignatureTable,insertTableRow,deleteTableRow,insertTableColumn,deleteTableColumn). Whole-node inserts are stripped entirely; suggesteddeletes serialize as though they never happened; the strip is the single
fromProseDoc/extractBlocksboundary every serialization path funnels through.Cell merge/split and comment operations remain
unsupportedMode.New core commands (
getSuggestions,acceptSuggestion,acceptAllSuggestions,rejectSuggestion,rejectAllSuggestions,findSuggestionRange) andeditor-ref methods (
getSuggestions,acceptSuggestionreturning{ accepted, appliedAs },rejectSuggestion,scrollToSuggestion) expose thelayer to hosts;
getSuggestionsreports each suggestion's kinds andappliedAs(
"tracked"vs"direct"). The React and Vue adapters expose the same refsurface (the Nuxt module re-exports it).
Tracked changes also gain an optional
initialsfield, carried through themodel and the ProseMirror marks/node attrs for UI attribution (hover, accept
authoring). It is intentionally NOT serialized onto
w:ins/w:del/w:*PrChangeor table row/cell markers —
w:initialsis not part of ECMA-376CT_TrackChange, so output stays schema-strict — but the parser remains tolerantof it if an external document supplies one.
Patch Changes
#420
a47ee19Thanks @jan-kubica! - Harden agent operation integrity:read_document/read_section/find_textnow return a per-block text hash and
suggest_changes/add_commentaccept acaller-supplied precondition, so a stale edit prepared against content the model
read earlier is detected instead of being stamped from a fresh apply-time
snapshot. Operation-mode and block-range lookups use own-property checks so
prototype keys (
__proto__,constructor) can no longer crash the API.#420
a47ee19Thanks @jan-kubica! - Bound version-comparison, agent, and validation paths against crafted-inputresource exhaustion: a single aggregate LCS cell budget is now shared across all
document stories; move detection dequeues in O(1) instead of
Array.shift;diffWordSegmentscaps its DP matrix and falls back to a whole-string diff;ensureParaIdsanddocx-core'svalidateDocxPackageenforce entry-count anduncompressed-size limits before reading; note-paragraph patching builds a linear
offset index instead of rescanning per id; agent whole-word search uses a bounded
boundary window;
suggest_changesenforces an aggregate operation-text budget;and tracked vertical cell split refuses a stored continuation whose
gridSpanexceeds one column.
Updated dependencies [
75842cf,ce930f4,4b6e885,75842cf,64f0737,a47ee19,a47ee19,a47ee19,a47ee19,a47ee19,a47ee19,3229068,a47ee19,21274be]:@stll/folio-core@0.13.0
Minor Changes
#412
21274beThanks @jan-kubica! - Add a first-class suggestion layer to tracked changes. AI-proposed edits can beapplied with the new
"suggested"apply mode: they render with thetracked-change grammar but a dotted stroke and a dedicated hue, and are always
stripped from serialized DOCX output until accepted. Accepting a suggestion
converts it into a normal tracked change authored by the accepting user (or, for
a whole inserted table, applies it directly since OOXML has no tracked
representation for it); rejecting inverse-applies it.
Suggested mode covers inline text/format operations (
replaceInBlock,replaceRange,formatRange) and block/table structural operations(
insertAfterBlock,insertBeforeBlock,replaceBlock,deleteBlock,insertSignatureTable,insertTableRow,deleteTableRow,insertTableColumn,deleteTableColumn). Whole-node inserts are stripped entirely; suggesteddeletes serialize as though they never happened; the strip is the single
fromProseDoc/extractBlocksboundary every serialization path funnels through.Cell merge/split and comment operations remain
unsupportedMode.New core commands (
getSuggestions,acceptSuggestion,acceptAllSuggestions,rejectSuggestion,rejectAllSuggestions,findSuggestionRange) andeditor-ref methods (
getSuggestions,acceptSuggestionreturning{ accepted, appliedAs },rejectSuggestion,scrollToSuggestion) expose thelayer to hosts;
getSuggestionsreports each suggestion's kinds andappliedAs(
"tracked"vs"direct"). The React and Vue adapters expose the same refsurface (the Nuxt module re-exports it).
Tracked changes also gain an optional
initialsfield, carried through themodel and the ProseMirror marks/node attrs for UI attribution (hover, accept
authoring). It is intentionally NOT serialized onto
w:ins/w:del/w:*PrChangeor table row/cell markers —
w:initialsis not part of ECMA-376CT_TrackChange, so output stays schema-strict — but the parser remains tolerantof it if an external document supplies one.
Patch Changes
#422
75842cfThanks @jan-kubica! - Match Word's final-line paragraph-mark spacing for visible lists.#428
ce930f4Thanks @jan-kubica! - Drop unresolvable comment range and reference markers during export, porting eigenpal #1090.#429
4b6e885Thanks @jan-kubica! - Port eigenpal/docx-editor#1096 image border rendering through layout painting.#422
75842cfThanks @jan-kubica! - Ignore cached table page boundaries when tracked row content can change pagination.#427
64f0737Thanks @jan-kubica! - Keep tracked-change revision ids within the range OOXML consumers accept. Suggestion-mode edits seeded theirw:ins/w:delid counter from the clock, producing 13-digitw:idvalues that made exported documents fail to open. Ids now continue from the document's own highest revision id. Port of eigenpal/docx-editor#1093.#420
a47ee19Thanks @jan-kubica! - Harden agent operation integrity:read_document/read_section/find_textnow return a per-block text hash and
suggest_changes/add_commentaccept acaller-supplied precondition, so a stale edit prepared against content the model
read earlier is detected instead of being stamped from a fresh apply-time
snapshot. Operation-mode and block-range lookups use own-property checks so
prototype keys (
__proto__,constructor) can no longer crash the API.#420
a47ee19Thanks @jan-kubica! - Bound version-comparison, agent, and validation paths against crafted-inputresource exhaustion: a single aggregate LCS cell budget is now shared across all
document stories; move detection dequeues in O(1) instead of
Array.shift;diffWordSegmentscaps its DP matrix and falls back to a whole-string diff;ensureParaIdsanddocx-core'svalidateDocxPackageenforce entry-count anduncompressed-size limits before reading; note-paragraph patching builds a linear
offset index instead of rescanning per id; agent whole-word search uses a bounded
boundary window;
suggest_changesenforces an aggregate operation-text budget;and tracked vertical cell split refuses a stored continuation whose
gridSpanexceeds one column.
#420
a47ee19Thanks @jan-kubica! - Prevent untrusted DOCX assets from affecting the host page. Embedded fonts areregistered under per-document scoped family names (resolved through the font
resolver) so a document embedding a face named after a host UI family can no
longer shadow it page-wide, and watermark dialogs validate external image
targets against an http/https allowlist (with a defensive guard before emitting
an external relationship) so
file:/UNC/other-scheme targets cannot be writteninto exported documents.
#420
a47ee19Thanks @jan-kubica! - Stop hidden and active DOCX content from leaking through save and read paths.Selective save now bails to a full repack when the package contains
non-preservable entries (e.g.
word/vbaProject.bin, embedded binaries) insteadof round-tripping them; hidden table-row text and
w:vanishruns are excludedfrom the AI snapshot; footnotes referenced only from hidden rows are no longer
painted; metadata-privacy scrubbing matches
docProps/core.xmlcase-insensitively;server text extraction resolves referenced headers/footers via relationships
instead of reading orphan parts; bound content-control clicks no longer throw;
and text-box anchor markers are stripped from pasted HTML and salted with a
per-load nonce.
#420
a47ee19Thanks @jan-kubica! - Prevent CSS and OOXML injection from attacker-controlled document/collaborationvalues. Colors are validated to a strict hex/
autoformat at a singlecolorResolverchoke point (closing themed table-fill and diagonal-borderurl()injection and the pasteddata-bgcolorpath); commentparaId/textIdare validated to 8-hex at parse and XML-escaped on serialize; run/paragraph/
table/style color and theme attributes are XML-escaped and hex-validated; inline
and block SDT raw properties are replayed only when they are a single
well-formed
w:sdtPr/w:sdtEndPrelement (otherwise synthesized); remotecollaborator colors are validated before use and painted via
backgroundColor(not the
backgroundshorthand); and controlled comments are sanitized beforebecoming editor state.
#420
a47ee19Thanks @jan-kubica! - Bound DOCX parsing and layout against crafted-input resource exhaustion: clamptable
gridSpan/column counts, section column count, and page dimensions;floor the default tab stop; cap kinsoku/line-break rule lists (stored as sets)
and run language tags; add an iteration cap to cross-run hyphenation; replace
the conformance root-tag regex with a linear, non-backtracking scanner; cap
per-element xmlns declarations; enforce an incremental size budget while
building grouped-drawing SVG previews; make style-numbered list resume O(1) per
paragraph; and guard encrypted-DOCX parsing with DIFAT cycle detection plus a
spinCountceiling.#426
3229068Thanks @jan-kubica! - Harden untrusted clipboard HTML, image sources, and VML style parsing against XSS, remote fetch, ReDoS, and prototype pollution.#420
a47ee19Thanks @jan-kubica! - Sanitize hyperlink and image link URLs so pasted, programmatic, or DOCX-sourcedjavascript:/data:/file:targets can no longer reach the live DOM or beopened. Hyperlink marks are sanitized on parse (
parseDOM), on render(
toDOM), and when set/inserted/edited; imagea:hlinkClicktargets aresanitized at parse time; the Vue popup
window.openpath now mirrors React'ssanitizer; and aux-click on link anchors no longer bypasses the guard. Internal
bookmark anchors (
#name) are preserved.Updated dependencies [
64f0737,a47ee19,21274be]:@stll/docx-core@0.5.0
Minor Changes
#412
21274beThanks @jan-kubica! - Add a first-class suggestion layer to tracked changes. AI-proposed edits can beapplied with the new
"suggested"apply mode: they render with thetracked-change grammar but a dotted stroke and a dedicated hue, and are always
stripped from serialized DOCX output until accepted. Accepting a suggestion
converts it into a normal tracked change authored by the accepting user (or, for
a whole inserted table, applies it directly since OOXML has no tracked
representation for it); rejecting inverse-applies it.
Suggested mode covers inline text/format operations (
replaceInBlock,replaceRange,formatRange) and block/table structural operations(
insertAfterBlock,insertBeforeBlock,replaceBlock,deleteBlock,insertSignatureTable,insertTableRow,deleteTableRow,insertTableColumn,deleteTableColumn). Whole-node inserts are stripped entirely; suggesteddeletes serialize as though they never happened; the strip is the single
fromProseDoc/extractBlocksboundary every serialization path funnels through.Cell merge/split and comment operations remain
unsupportedMode.New core commands (
getSuggestions,acceptSuggestion,acceptAllSuggestions,rejectSuggestion,rejectAllSuggestions,findSuggestionRange) andeditor-ref methods (
getSuggestions,acceptSuggestionreturning{ accepted, appliedAs },rejectSuggestion,scrollToSuggestion) expose thelayer to hosts;
getSuggestionsreports each suggestion's kinds andappliedAs(
"tracked"vs"direct"). The React and Vue adapters expose the same refsurface (the Nuxt module re-exports it).
Tracked changes also gain an optional
initialsfield, carried through themodel and the ProseMirror marks/node attrs for UI attribution (hover, accept
authoring). It is intentionally NOT serialized onto
w:ins/w:del/w:*PrChangeor table row/cell markers —
w:initialsis not part of ECMA-376CT_TrackChange, so output stays schema-strict — but the parser remains tolerantof it if an external document supplies one.
Patch Changes
#427
64f0737Thanks @jan-kubica! - Keep tracked-change revision ids within the range OOXML consumers accept. Suggestion-mode edits seeded theirw:ins/w:delid counter from the clock, producing 13-digitw:idvalues that made exported documents fail to open. Ids now continue from the document's own highest revision id. Port of eigenpal/docx-editor#1093.#420
a47ee19Thanks @jan-kubica! - Bound version-comparison, agent, and validation paths against crafted-inputresource exhaustion: a single aggregate LCS cell budget is now shared across all
document stories; move detection dequeues in O(1) instead of
Array.shift;diffWordSegmentscaps its DP matrix and falls back to a whole-string diff;ensureParaIdsanddocx-core'svalidateDocxPackageenforce entry-count anduncompressed-size limits before reading; note-paragraph patching builds a linear
offset index instead of rescanning per id; agent whole-word search uses a bounded
boundary window;
suggest_changesenforces an aggregate operation-text budget;and tracked vertical cell split refuses a stored continuation whose
gridSpanexceeds one column.
@stll/folio-react@0.12.0
Minor Changes
#412
21274beThanks @jan-kubica! - Add a first-class suggestion layer to tracked changes. AI-proposed edits can beapplied with the new
"suggested"apply mode: they render with thetracked-change grammar but a dotted stroke and a dedicated hue, and are always
stripped from serialized DOCX output until accepted. Accepting a suggestion
converts it into a normal tracked change authored by the accepting user (or, for
a whole inserted table, applies it directly since OOXML has no tracked
representation for it); rejecting inverse-applies it.
Suggested mode covers inline text/format operations (
replaceInBlock,replaceRange,formatRange) and block/table structural operations(
insertAfterBlock,insertBeforeBlock,replaceBlock,deleteBlock,insertSignatureTable,insertTableRow,deleteTableRow,insertTableColumn,deleteTableColumn). Whole-node inserts are stripped entirely; suggesteddeletes serialize as though they never happened; the strip is the single
fromProseDoc/extractBlocksboundary every serialization path funnels through.Cell merge/split and comment operations remain
unsupportedMode.New core commands (
getSuggestions,acceptSuggestion,acceptAllSuggestions,rejectSuggestion,rejectAllSuggestions,findSuggestionRange) andeditor-ref methods (
getSuggestions,acceptSuggestionreturning{ accepted, appliedAs },rejectSuggestion,scrollToSuggestion) expose thelayer to hosts;
getSuggestionsreports each suggestion's kinds andappliedAs(
"tracked"vs"direct"). The React and Vue adapters expose the same refsurface (the Nuxt module re-exports it).
Tracked changes also gain an optional
initialsfield, carried through themodel and the ProseMirror marks/node attrs for UI attribution (hover, accept
authoring). It is intentionally NOT serialized onto
w:ins/w:del/w:*PrChangeor table row/cell markers —
w:initialsis not part of ECMA-376CT_TrackChange, so output stays schema-strict — but the parser remains tolerantof it if an external document supplies one.
Patch Changes
#420
a47ee19Thanks @jan-kubica! - Prevent untrusted DOCX assets from affecting the host page. Embedded fonts areregistered under per-document scoped family names (resolved through the font
resolver) so a document embedding a face named after a host UI family can no
longer shadow it page-wide, and watermark dialogs validate external image
targets against an http/https allowlist (with a defensive guard before emitting
an external relationship) so
file:/UNC/other-scheme targets cannot be writteninto exported documents.
#420
a47ee19Thanks @jan-kubica! - Prevent CSS and OOXML injection from attacker-controlled document/collaborationvalues. Colors are validated to a strict hex/
autoformat at a singlecolorResolverchoke point (closing themed table-fill and diagonal-borderurl()injection and the pasteddata-bgcolorpath); commentparaId/textIdare validated to 8-hex at parse and XML-escaped on serialize; run/paragraph/
table/style color and theme attributes are XML-escaped and hex-validated; inline
and block SDT raw properties are replayed only when they are a single
well-formed
w:sdtPr/w:sdtEndPrelement (otherwise synthesized); remotecollaborator colors are validated before use and painted via
backgroundColor(not the
backgroundshorthand); and controlled comments are sanitized beforebecoming editor state.
#420
a47ee19Thanks @jan-kubica! - Scope review actions to their intended target. AIundoDocumentOperationsalways undoes the body operation instead of whatever story (header/footer)
currently has focus; sidebar accept/reject applies only the selected revision
rather than every tracked change in the resolved range (React and Vue); the Vue
page-setup dialog respects read-only; Vue table properties target the active
editor view; and Vue AI-authored comments use the requested operation author.
#420
a47ee19Thanks @jan-kubica! - Sanitize hyperlink and image link URLs so pasted, programmatic, or DOCX-sourcedjavascript:/data:/file:targets can no longer reach the live DOM or beopened. Hyperlink marks are sanitized on parse (
parseDOM), on render(
toDOM), and when set/inserted/edited; imagea:hlinkClicktargets aresanitized at parse time; the Vue popup
window.openpath now mirrors React'ssanitizer; and aux-click on link anchors no longer bypasses the guard. Internal
bookmark anchors (
#name) are preserved.Updated dependencies [
75842cf,ce930f4,4b6e885,75842cf,64f0737,a47ee19,a47ee19,a47ee19,a47ee19,a47ee19,a47ee19,3229068,a47ee19,21274be]:@stll/folio-vue@0.11.0
Minor Changes
#412
21274beThanks @jan-kubica! - Add a first-class suggestion layer to tracked changes. AI-proposed edits can beapplied with the new
"suggested"apply mode: they render with thetracked-change grammar but a dotted stroke and a dedicated hue, and are always
stripped from serialized DOCX output until accepted. Accepting a suggestion
converts it into a normal tracked change authored by the accepting user (or, for
a whole inserted table, applies it directly since OOXML has no tracked
representation for it); rejecting inverse-applies it.
Suggested mode covers inline text/format operations (
replaceInBlock,replaceRange,formatRange) and block/table structural operations(
insertAfterBlock,insertBeforeBlock,replaceBlock,deleteBlock,insertSignatureTable,insertTableRow,deleteTableRow,insertTableColumn,deleteTableColumn). Whole-node inserts are stripped entirely; suggesteddeletes serialize as though they never happened; the strip is the single
fromProseDoc/extractBlocksboundary every serialization path funnels through.Cell merge/split and comment operations remain
unsupportedMode.New core commands (
getSuggestions,acceptSuggestion,acceptAllSuggestions,rejectSuggestion,rejectAllSuggestions,findSuggestionRange) andeditor-ref methods (
getSuggestions,acceptSuggestionreturning{ accepted, appliedAs },rejectSuggestion,scrollToSuggestion) expose thelayer to hosts;
getSuggestionsreports each suggestion's kinds andappliedAs(
"tracked"vs"direct"). The React and Vue adapters expose the same refsurface (the Nuxt module re-exports it).
Tracked changes also gain an optional
initialsfield, carried through themodel and the ProseMirror marks/node attrs for UI attribution (hover, accept
authoring). It is intentionally NOT serialized onto
w:ins/w:del/w:*PrChangeor table row/cell markers —
w:initialsis not part of ECMA-376CT_TrackChange, so output stays schema-strict — but the parser remains tolerantof it if an external document supplies one.
Patch Changes
#420
a47ee19Thanks @jan-kubica! - Prevent untrusted DOCX assets from affecting the host page. Embedded fonts areregistered under per-document scoped family names (resolved through the font
resolver) so a document embedding a face named after a host UI family can no
longer shadow it page-wide, and watermark dialogs validate external image
targets against an http/https allowlist (with a defensive guard before emitting
an external relationship) so
file:/UNC/other-scheme targets cannot be writteninto exported documents.
#420
a47ee19Thanks @jan-kubica! - Scope review actions to their intended target. AIundoDocumentOperationsalways undoes the body operation instead of whatever story (header/footer)
currently has focus; sidebar accept/reject applies only the selected revision
rather than every tracked change in the resolved range (React and Vue); the Vue
page-setup dialog respects read-only; Vue table properties target the active
editor view; and Vue AI-authored comments use the requested operation author.
#420
a47ee19Thanks @jan-kubica! - Sanitize hyperlink and image link URLs so pasted, programmatic, or DOCX-sourcedjavascript:/data:/file:targets can no longer reach the live DOM or beopened. Hyperlink marks are sanitized on parse (
parseDOM), on render(
toDOM), and when set/inserted/edited; imagea:hlinkClicktargets aresanitized at parse time; the Vue popup
window.openpath now mirrors React'ssanitizer; and aux-click on link anchors no longer bypasses the guard. Internal
bookmark anchors (
#name) are preserved.Updated dependencies [
75842cf,ce930f4,4b6e885,75842cf,64f0737,a47ee19,a47ee19,a47ee19,a47ee19,a47ee19,a47ee19,3229068,a47ee19,21274be]:@stll/folio-nuxt@0.3.7
Patch Changes
#412
21274beThanks @jan-kubica! - Add a first-class suggestion layer to tracked changes. AI-proposed edits can beapplied with the new
"suggested"apply mode: they render with thetracked-change grammar but a dotted stroke and a dedicated hue, and are always
stripped from serialized DOCX output until accepted. Accepting a suggestion
converts it into a normal tracked change authored by the accepting user (or, for
a whole inserted table, applies it directly since OOXML has no tracked
representation for it); rejecting inverse-applies it.
Suggested mode covers inline text/format operations (
replaceInBlock,replaceRange,formatRange) and block/table structural operations(
insertAfterBlock,insertBeforeBlock,replaceBlock,deleteBlock,insertSignatureTable,insertTableRow,deleteTableRow,insertTableColumn,deleteTableColumn). Whole-node inserts are stripped entirely; suggesteddeletes serialize as though they never happened; the strip is the single
fromProseDoc/extractBlocksboundary every serialization path funnels through.Cell merge/split and comment operations remain
unsupportedMode.New core commands (
getSuggestions,acceptSuggestion,acceptAllSuggestions,rejectSuggestion,rejectAllSuggestions,findSuggestionRange) andeditor-ref methods (
getSuggestions,acceptSuggestionreturning{ accepted, appliedAs },rejectSuggestion,scrollToSuggestion) expose thelayer to hosts;
getSuggestionsreports each suggestion's kinds andappliedAs(
"tracked"vs"direct"). The React and Vue adapters expose the same refsurface (the Nuxt module re-exports it).
Tracked changes also gain an optional
initialsfield, carried through themodel and the ProseMirror marks/node attrs for UI attribution (hover, accept
authoring). It is intentionally NOT serialized onto
w:ins/w:del/w:*PrChangeor table row/cell markers —
w:initialsis not part of ECMA-376CT_TrackChange, so output stays schema-strict — but the parser remains tolerantof it if an external document supplies one.
Updated dependencies [
a47ee19,a47ee19,a47ee19,21274be]: