Format File Changes Since 2026.1.4754

Changes to files in Formats/ and Adapters/ since ePublisher 2026.1.4754, as of build 2026.1.4785. Users who have created project-level overrides for any listed file should review and merge the corresponding changes.

Shared

File

Category

Summary

common/accessibility/images.xsl

common/landmarks/json.xsl

Transform

Calls the new Landmarks-WarnOnAbsoluteIdentityPaths once per build, before writing the groups' landmark chunks, so the absolute-identity-path warning appears only when landmark IDs are actually generated (EPUB3061)

common/landmarks/landmarks-core.xsl

Transform

New Landmarks-DocumentIdentityPath template (a document's @IdentityPath when present, else @Path) supplies the hashed document path, so landmark IDs from AutoMap stationery-based jobs no longer depend on the staging folder (EPUB2988); new Landmarks-WarnOnAbsoluteIdentityPaths template warns once per build when documents in the build resolve to absolute identity paths; the source-id landmark format now skips the aliases the FrameMaker adapter adds for markers and structure elements, so a FrameMaker paragraph's source ID is its unique ID — the anchor Markdown++ output writes (EPUB3072); Landmarks-DetermineAliasOrID gains a ParamAliases parameter limiting the aliases considered

common/links/document.xsl

Transform

Lists, blockquotes, and tables (a table only when it has a source alias) are now link targets of their own — including when nested inside a list item, a table cell, or another blockquote — so links to them resolve instead of publishing as plain text (EPUB2993, EPUB2995); new Link-Structure template, a wwdoc:Table template in links mode, and a wwbehaviors-tables-by-id key replace the three per-structure paragraphlinks templates

markdown/defaults.xml

Configuration

OList and UList added to the stock Markdown paragraph-style catalog, so lists using the adapter's default list styles publish without a style: directive

markdown/markdown-content-core.xsl

Transform

Links to the first paragraph of a page keep their anchor (Markdown has no page-header anchor to use instead), and the '#' is written only when there is a fragment or the link is same-page (EPUB2984); table-cell paragraphs carry their structure prefix so a list or quote inside a cell keeps its markers (EPUB2983); the table-rendering option is resolved through the shared Markdown-TableRendering template (EPUB2986); paragraph content is routed through Markdown-ParagraphOverrideContent so a paragraph's own font override publishes as Markdown emphasis

markdown/markdown-frames.xsl

Transform

Images-Title calls drop the removed ParamSplitsFrame parameter — the image file name is no longer used as a tooltip (EPUB3074)

markdown/markdown-output.xsl

Transform

Marker values escaped on output: a lone marker is written marker:Name="value" only when that form reads back as written, otherwise the markers:{...} JSON form is used with escaped names and values (EPUB2999); a link's Link Title marker is written as the link's Markdown title instead of a duplicate paragraph marker, and a text run's markers are written as an inline directive in front of the styled run or link they belong to, no longer hoisted into the paragraph directive (EPUB2987, EPUB3008); new Markdown-BlockTag writes a directive line above a blockquote or list carrying its custom style and source alias (EPUB2990, EPUB2995); a table in a list item or blockquote keeps the list indentation or quote marker on its directive and every row, and cells no longer repeat the prefix (EPUB2983); a table's source alias is written as a #anchor in its directive (EPUB2995); a passed table-rendering value now sets both the row form and the multiline marker, via the new Markdown-TableRendering (EPUB2986); a list or blockquote that opens a list item no longer repeats the item's marker on every line (EPUB2992); content after a nested quote or list keeps the enclosing quote open (new Private-MdSeparatorPrefix) (EPUB2991); ordered-list continuation indent matches the item number's width, so items numbered 10 and higher indent 4 spaces (EPUB2985); new Markdown-ParagraphOverrideProperties / Markdown-ParagraphOverrideContent wrap a paragraph whose own style carries a bold, italic, or strikethrough override in the matching Markdown syntax as one run

markdown/markdown-tables-html2md.xsl

Transform

Passes the table's structure prefixes (list indentation, blockquote markers), the separator-line prefix, and the resolved table-rendering value into Markdown-Table (EPUB2983, EPUB2986)

Dynamic HTML

File

Category

Summary

Transforms/content.xsl

Transform

Images-Title calls drop the removed ParamSplitsFrame parameter — images with no alt text no longer show their file name as a tooltip (EPUB3074)

Eclipse Help

File

Category

Summary

Transforms/content.xsl

Transform

Images-Title call drops the removed ParamSplitsFrame parameter — images with no alt text no longer show their file name as a tooltip (EPUB3074)

ePUB

File

Category

Summary

Transforms/content.xsl

Transform

Images-Title call drops the removed ParamSplitsFrame parameter — images with no alt text no longer show their file name as a tooltip (EPUB3074)

Markdown++ Output

File

Category

Summary

Transforms/content.xsl

Transform

Blockquotes and lists get a directive line carrying their custom style and source alias (Markdown-BlockTag), so their aliases survive a round trip (EPUB2990, EPUB2995); new Link-OwnTitle template: a link's title is only the link's own (its Link Title marker or a link-title marker) — the target page's title is no longer written, since it would come back as the link's own title on the next pass (EPUB2987); links to the first paragraph of a page keep their anchor (EPUB2984); a run's markers are written inline per its paragraph's markdown++-markers option (EPUB3008); tables pass structure prefixes, a separator prefix, the source-alias anchor, and the resolved table-rendering value to Markdown-Table (EPUB2983, EPUB2986, EPUB2995); a paragraph's own font override publishes as Markdown emphasis (Markdown-ParagraphOverrideContent); Images-Title calls drop the removed ParamSplitsFrame parameter (EPUB3074)

Transforms/pages.xsl

Transform

Action checksum now hashes the real shared transform markdown/markdown-output.xsl (previously a nonexistent markdown_output.xsl path), so pages regenerate when that transform changes

Oracle Help

File

Category

Summary

Transforms/content.xsl

Transform

Images-Title call drops the removed ParamSplitsFrame parameter — images with no alt text no longer show their file name as a tooltip (EPUB3074)

PDF

File

Category

Summary

Transforms/content.xsl

Transform

Table-cell content test now looks for text, frames, and tables at any depth (frames and tables were direct children only), so a cell whose only content is a nested frame — for example an image without alt text — publishes instead of coming out empty (EPUB3048)

Sun JavaHelp

File

Category

Summary

Transforms/content.xsl

Transform

Images-Title call drops the removed ParamSplitsFrame parameter — images with no alt text no longer show their file name as a tooltip (EPUB3074)

WebWorks Help

File

Category

Summary

Transforms/content.xsl

Transform

Images-Title calls drop the removed ParamSplitsFrame parameter — images with no alt text no longer show their file name as a tooltip (EPUB3074)

WebWorks Reverb

File

Category

Summary

Transforms/content.xsl

Transform

Images-Title calls drop the removed ParamSplitsFrame parameter — images with no alt text no longer show their file name as a tooltip (EPUB3074)

WebWorks Reverb 2.0

File

Category

Summary

Pages/scripts/assistant.js

Scripting

Page context travels as structured fields (url, title, readable text, breadcrumbs, section, selection) in the chat request's context instead of an HTML comment appended to the user's message, with per-field caps matching the platform's and long pages cut around the reader's section with truncation markers; old-style page-context comments are stripped from saved conversations before sending (EPUB3071); the placeholder assistant is now explicit — it answers locally with a self-identifying setup walkthrough, a configured assistant that cannot load in a local preview (file:, localhost, loopback) shows the placeholder with the reason, and on a served site a load failure shows an Assistant Unavailable notice carrying the platform's own reason (not in deployment, origin not allowed, unknown Assistant ID) instead of silently falling back to the placeholder (EPUB2966); chat request errors surface the platform's message; a conversation-storage (IndexedDB) failure no longer blocks the chat

Pages/scripts/connect.js

Scripting

A hidden first-position TOC entry no longer throws in TOC sync and abort the page-load handshake, so the shell no longer sticks on preload (EPUB2965); page bookkeeping carries the section the reader is at, and a new page_selection message carries the text they selected, for the AI Assistant's page context (EPUB3071); assistant-panel link routing now covers every link — links into this help navigate in place, external links open in a new tab with noopener, and links naming their own target are left to the browser — so an unhandled link can no longer load a foreign site inside the page iframe

Pages/scripts/page.js

Scripting

Focus moves to a newly loaded topic without scrolling, keeping the breadcrumbs and page toolbar in view (EPUB3049); new AssistantReadableText / AssistantSection / AssistantBreadcrumbs / AssistantSelectionChanged post the page's readable text (headings, list items, and table rows kept as lines), breadcrumb trail, the section the reader is at, and their debounced text selection to the parent for the assistant's structured page context, replacing the raw textContent dump (EPUB3071)

Transforms/connect.xsl

Transform

Merge-settings fallback finds MergeGroups at any depth, so a hierarchy with every group inside a TOC container still applies instead of collapsing to one parcel per top-level group (EPUB3075); robots.txt is rewritten on copy instead of copied verbatim — a relative Sitemap: line gets the absolute Sitemap Base URL, or is dropped when there is no base URL or sitemap generation is off, and the file is written as UTF-8 (EPUB3009)

Transforms/content.xsl

Transform

Images-Title calls drop the removed ParamSplitsFrame parameter — images with no alt text no longer show their file name as a tooltip (EPUB3074)

Transforms/descriptor.xsl

Transform

Merge-settings fallback tests MergeGroups at any depth, matching connect.xsl (EPUB3075); the composition Sitemap descriptor carries the sitemap-base-url setting, so the composer writes the root sitemap index with absolute URLs under that base instead of relative ones (EPUB3007)

Transforms/knowledge-base-content.xsl

Transform

Paragraph styles are read from the segment document's own embedded styles copy instead of reloading the whole WIF for every paragraph, so large knowledge-base exports no longer take hours (EPUB2980); the document path behind knowledge-base landmark anchors comes from Landmarks-DocumentIdentityPath, so anchors from stationery-based jobs do not depend on the staging folder (EPUB2988); removed the unreachable local template family (Content-Content-Local through ImageMap-Local, KB-Markdown-Paragraph, KB-Markdown-Table — about 2,500 lines) (EPUB2982)

Transforms/knowledge-base-pages.xsl

Transform

Knowledge Base staging moved from the shared %TEMP%Knowledge Base folder to the target's own data directory, so concurrent generations cannot delete or overwrite each other's pages (EPUB2981); action checksum now covers knowledge-base-content.xsl and the shared markdown and landmarks transforms it includes, so the knowledge base regenerates when they change; the knowledge zip's dependency list now iterates the collected file elements correctly

Transforms/landmarks-json.xsl

Transform

The absolute-identity-path warning is emitted from landmark generation itself, gated on Generate Groups, so it no longer appears for jobs whose output does not use landmark IDs (EPUB3061)

Transforms/pages.xsl

Transform

Page landmark IDs hash the document's identity path (Landmarks-DocumentIdentityPath), so page landmarks from stationery-based jobs do not depend on the staging folder (EPUB2988); landmarks-core.xsl added to the action checksum

Markdown++

File

Category

Summary

helper/markdown/markdown/controller.py

Adapter

Logging moved off the log.warn alias that the bundled Python 3.14 no longer provides (EPUB3002)

helper/markdown/markdown/directives.py

helper/markdown/markdown/frontmatter.py

helper/markdown/markdown/includes.py

Adapter

Logging moved off the log.warn alias that the bundled Python 3.14 no longer provides (EPUB3002)

helper/markdown/markdown/parser.py

helper/markdown/markdown/patterns.py

Parsing

Autolinks follow CommonMark: a URI needs a scheme of at least two characters, so one-letter-scheme placeholders such as <X:X:X::X/0-128> stay literal text, while Windows drive paths and email addresses still link (EPUB2977); an inline HTML element name must end at whitespace or '>', so an autolink ending in '/' no longer parses as an empty raw-HTML element and loses its URL (EPUB2978); marker names may start with an underscore and contain embedded spaces (Index Entry), and an empty marker value (marker:Name="") is accepted (EPUB2996, EPUB3008); the code-fence pattern captures the fence's indentation for the parser's indent trim (EPUB2989)

helper/markdown/requirements.txt

Configuration

Dependency list trimmed for the bundled Python 3.14: Pillow pinned to 12.3.0, Python-2-era pins (appdirs, olefile, packaging, pyparsing, six, simplejson, pathlib, setuptools, pylint) removed (EPUB3002)

Microsoft Word

File

Category

Summary

adapter.fti

Configuration

New documents-per-word-session setting (default 10): how many documents one Word instance prepares before ePublisher restarts it (EPUB3020); new update-external-references setting (default false): fields and linked pictures or objects that refer to other files or websites keep their stored results unless the setting is enabled (EPUB3053)