ePublisher 2026.1 Release Notes
This page lists every improvement and fixed issue in the ePublisher 2026.1 release. For the release highlights, see What's New.
Improvements
Reverb 2.0
Added draggable menu width with mouse, touch, and keyboard support; the chosen width persists per browser via localStorage and is clamped between 200px and 600px (EPUB2714).
Redesigned Assistant chat message styling for narrow vertical layouts with role labels above each turn, full-width assistant prose, and compact right-aligned user bubbles (EPUB2715).
Replaced O(N²) breadcrumb hydration in the search panel with a coalesced FIFO queue and a single drain that flushes synchronously when the panel opens, eliminating the per-parcel main-thread stalls that scaled with output size (EPUB2716).
Progressive hydration for large-output projects: landmarks persist to localStorage and rehydrate at parse time so #/landmark URLs resolve immediately on revisits, search and book-index data persist to IndexedDB for warm-cache reads, and remaining-parcel hydration defers to browser idle so the initial content paint is no longer blocked by background data loading (EPUB2717).
Fixed Reverb 2.0 output where the page would not finish loading for projects with minimal configuration. The output now generates a parcel for each top-level project group automatically when no explicit merge configuration is present (EPUB2747).
Landmark ID option now supports Source ID passthrough on a per-paragraph-style basis, allowing writers to architect which important heading IDs (custom aliases) get exposed in Reverb URLs (EPUB2718).
Reverb 2.0 HTML id attributes and anchors no longer use the
wwprefix; custom CSS or JavaScript that targeted these may need updated selectors (EPUB2722).Added support for the AI Assistant button in the Reverb 2.0 menu navigation. The button is enabled by the new Generate Assistant format setting and appears alongside the Contents and Index buttons, with the navigation row automatically adjusting when buttons are toggled (EPUB2657).
Removed the unused
data-highlight-require-whitespaceHTML attribute from Reverb and Reverb 2.0 page output; the attribute was last consumed by search JavaScript before the 2024.1 release and is no longer read (EPUB2755).Added a Hide AI Tab when file local setting in the AI Features group of WebWorks Reverb 2.0. When enabled, the AI Assistant tab is hidden at runtime if the generated output is opened over the
file:protocol, but remains visible and functional when the same output is served overhttp:orhttps:. This allows a single generated artifact to be bundled locally with a desktop product and mirrored to a public web server (EPUB2760).Added a Generate Knowledge Base Per Parcel setting in the AI Features group of WebWorks Reverb 2.0. When enabled, the AI Assistant knowledge base is emitted as one zip archive per top-level project group (
knowledge-parcel-<parcel-name>-<generation-hash>.zip) instead of a single project-wideknowledge-<project-name>-<generation-hash>.zip, so incremental publishing workflows can re-upload only the changed parcel's content to the assistant vector store (EPUB2762).Renamed the WebWorks Reverb 2.0 AI Assistant knowledge base archives to include the project or parcel name and an 8-character per-build generation hash —
knowledge-<project-name>-<generation-hash>.zip(previouslyKnowledge Base.zip) andknowledge-parcel-<parcel-name>-<generation-hash>.zip. Because the hash changes every build, automation should match these archives by pattern (for example, files beginning withknowledge-) rather than an exact filename (EPUB2782).Improved WebWorks Reverb 2.0 AI Assistant streaming performance in long conversations. While a response streams in, the output now updates only the in-progress message and re-renders its Markdown on a short throttle, instead of rebuilding the entire conversation and re-parsing every prior message on each token. This removes the progressive slowdown that previously scaled with conversation length (EPUB2764).
The WebWorks Reverb 2.0 AI Assistant now bundles its DOMPurify (HTML sanitizer) and markdown-it (Markdown renderer) libraries into the generated output instead of loading them from a third-party CDN, so the chat loads with no third-party CDN request and responses are always sanitized (previously sanitization could be skipped if the CDN was unreachable). The bundled versions (DOMPurify 3.4.8, markdown-it 13.0.1) are pinned with the product (EPUB2765).
Fixed Reverb full-text search for Japanese and other CJK content, where terms made of adjacent CJK characters returned wrong or zero results and highlighting either selected the entire sentence or nothing. Matching and highlighting are now script-aware and operate per character, so mixed CJK and Latin pages behave correctly (EPUB2769).
Removed the built-in CJK stop words so single-character Japanese and Chinese word pieces are no longer dropped from the search index or query; terms such as お口 now match and highlight in full (EPUB2777).
Reverb search now breaks katakana per character, like Han and Hiragana, so interior katakana characters are searchable; for example, searching ス or ト now matches テスト instead of only prefix queries such as テス (EPUB2780).
Added search character folding so equivalent characters are treated as the same search term. By default the curly apostrophe (’) and modifier-letter apostrophe (ʼ) fold to the straight apostrophe (') in both the search index and the search query, so a search for either spelling of a word such as d'activité returns the same results; displayed text keeps its original typography. The equivalent-character set is locale-driven and can be customized per language (EPUB2776).
Fixed Reverb 2.0 keyboard focus so it transfers into the search and content iframes after a search submit, page navigation, F6 region cycling, or skip-to-content activation. Previously focus could remain stranded in the parent frame, most visibly in output opened over
file://in Chrome (EPUB2779).Fixed Reverb 2.0 keyboard focus so the Tab key can no longer escape the search results iframe into the host browser's chrome; the search iframe now carries
tabindex="-1"like the popup iframe, and search results are reached through the existing focus-management script rather than by tabbing directly into the frame (EPUB2724).Migrated the WebWorks Reverb 2.0 AI Assistant chat client from
EventSourcetofetch()with aReadableStreamreader so it consumes the platform's single collapsed streaming POST endpoint. This is a required, coordinated change: the legacy two-requestPOST /chat+GET /streampair has been removed on the platform side, so the Assistant chat needs this client to communicate with the updated AI Assistant service (EPUB2766).WebWorks Reverb 2.0 runtime now logs unexpected caught exceptions that would otherwise leave it in a broken state, so previously silent failures (such as a parcel whose content GroupID does not match its manifest entry) surface in the browser console. Exceptions used deliberately as control flow in timing, polling, and existence probes are kept quiet to avoid noise (EPUB2791).
Added a Generate Groups setting to WebWorks Reverb 2.0, enabled by default. When disabled, the target generates a content-free shell: the full Reverb chrome (header, footer, splash page, search, and an empty
#parcelsnavigation manifest) with no topic pages and no companion PDF, so a site's navigation and content can be composed from independently generated sources rather than from the project's own documents (EPUB2793).Added a thinking/reasoning indicator to the WebWorks Reverb 2.0 AI Assistant chat. When a platform reasoning model is configured, the Assistant now shows a reasoning indicator, and any streamed reasoning-summary text, during the several-second window before the first answer token, consuming the platform's additive
reasoningandreasoning.deltastreaming frames (EPUB2803).WebWorks Reverb 2.0 and 3.0 now prefer an authored
datevalue over the file-system modified date when the Document last modified date page setting is enabled. The replacement uses the first page marker nameddate(case-insensitive), such as a Markdown++ front matterdatekey, which is more accurate for assembled Markdown++ sources where the file-system date often reflects the assembly document rather than the topic; this productizes a former Page.asp customization (EPUB2805).Added an Optimized reader mode target setting in the Accessibility group of WebWorks Reverb 2.0. When enabled, the format suppresses tab stops on decorative chrome controls so screen-reader users tab only through the controls they need; it complements the landmarks and skip-navigation added in 2025.1 (EPUB2723).
Fixed Reverb 2.0 so disabling the Generate Menu setting again removes the menu region instead of leaving an empty area; content reflows to the full width when the menu and table of contents are both turned off (EPUB2814).
Extended Reverb 2.0 and 3.0 runtime-hash link pass-through to recognize landmark (
#/) anchors authored in source documents, and stopped chrome (.asp) links from loading the help shell into the content frame (EPUB2825).The WebWorks Reverb 2.0 splash page now displays a Groups Grid — a responsive set of entry-point cards generated from the help set's groups and Merge Settings containers — replacing the static splash image. Each card shows a group or container title with its first-level entries as links, giving readers a one-page map of the entire help set, so output that disables the Contents tab in favor of the AI Assistant keeps full browse navigation. The grid renders from the same data as the Menu, so federated compositions are included automatically. Projects that overrode the
splash.pngimage should overrideSplash.aspinstead; the grid's appearance is styled through the new$splash_groups_*skin variables and thecustom.scsslayer (EPUB2907).Added a dedicated CSS customization layer to WebWorks Reverb 2.0: a new
custom.scsscompiles tocss/custom.cssand is linked as the last stylesheet on every page template — content pages, popups, search, the splash page, and the top-level frame — so custom rules win the cascade everywhere without overriding any stock stylesheet. The stock file imports the skin's variable partials, so project overrides of the color, border, size, and font variables flow through it as well; copycustom.scssintoTargets/<target>/Pages/sass/orFormats/<format>/Pages/sass/to add selectors of your own (EPUB2908).The WebWorks Reverb 2.0 AI Assistant now displays the avatar image configured for the assistant on the WebWorks Platform, reading the assistant's
avatar_urland rendering it everywhere the assistant is represented — the welcome screen, each assistant reply, the thinking and reasoning indicator, the streaming reply, and the conversation-list header — in place of the generic icon. Assistants with no avatar configured, and avatars whose image cannot be loaded, continue to show the generic icon, so existing output is unchanged until an avatar is set. The image is cropped to each skin's existing avatar shape and size, so both square and wide source images display correctly and the message list does not shift as avatars load. Skins that need to style a photo differently from the icon can target the newww_skin_assistant_avatar_has_imageclass (EPUB2911).Fixed table of contents entries for paragraphs with the Generate output style option disabled producing dead, link-less entries — most visibly breadcrumbs rendered as plain text in WebWorks Reverb output. Such an entry now falls back to the destination of the nearest entry beneath it that generates output, so its table of contents and breadcrumb links navigate to the first generated page under that heading. In addition, WebWorks Reverb 1.0, 2.0, and 3.0 breadcrumbs no longer render a hyperlink for an entry that resolves to the page currently being viewed; it is shown as plain text instead of a link that navigates back to the same place (EPUB2615).
Menu navigation button dividers are now position-aware. The dividers between the Assistant, Contents, and Index buttons previously assumed the Index button always rendered rightmost, so disabling Index while showing the other two left the trailing button painting a divider against nothing whenever a skin customizes the divider width (dividers are invisible at their default zero width). All three buttons now share the same divider defaults, and whichever button renders last in the row suppresses its trailing divider. The Classic, Corporate, and Social skins, which carry their own copies of the affected style rules, received the same correction; the Metro skin's full-frame button design is intentionally unaffected, and the Neo skin inherits the fix (EPUB2754).
Added federated parcel composition support to WebWorks Reverb 2.0, allowing independently built and published outputs (parcels) to be assembled into one unified site without rebuilding them. Each build now emits a durable composition descriptor alongside its content recording the group's navigation entry and page map; a project with no groups builds the complete site chrome with an empty navigation manifest, for use as the composed site's shell; and the runtime now tolerates a missing parcel — the table of contents, search, index, and landmarks each skip an absent parcel's data with a console warning instead of leaving the page loading indefinitely (EPUB2830).
Improved how the WebWorks Reverb 2.0 AI Assistant presents the usage limits an assistant's owner configures. Publicly deployed assistants spend the owner's prepaid balance on every question, so the assistant service limits how many messages an individual reader may send and can pause an assistant that reaches its daily budget. Readers are now identified by an anonymous token the assistant service issues and the output stores in the browser, so these limits apply per reader rather than to everyone sharing a network address; the token identifies no one and readers may clear it at any time. When a limit is reached, the chat explains why in plain language instead of showing a generic error — a reader who has used their message allowance sees a countdown to when they can continue and the message box is disabled until then, an assistant paused by its daily budget reports that it is temporarily unavailable, and a conversation that has grown too long to continue points the reader to the Delete Chat button to start a new one. In each case the unanswered question is returned to the message box rather than left in the conversation. Outputs generated before this release continue to work unchanged (EPUB2829).
Improved WebWorks Reverb 2.0 search caching for multi-parcel sites so that updating one parcel no longer discards every parcel's cached search data. Each parcel's search data now carries its own content-derived cache key, so a returning visitor re-downloads search data only for the parcels that actually changed; unchanged parcels continue to serve search results from the browser's local cache. This most benefits federated and incrementally deployed sites, where a single high-velocity parcel (for example, release notes) can be republished without forcing a full search-data reload of the entire site. No hard refresh is required for updates to appear, and outputs generated before this release continue to work unchanged (EPUB2789).
Improved how WebWorks Reverb 2.0 manages its browser-side cache when several help sets are hosted on one web domain. Each help set keeps its own cache, but nothing previously reclaimed the caches of help sets a reader stopped visiting, so on a shared domain the browser's storage allowance could silently fill up, at which point caching stopped working for every help set on that domain. Reverb now records when each help set's cache was last used, keeps the total within a defined budget by discarding the least recently used caches first, reclaims space automatically so the help set currently being read can always store its cache, and removes cached search data for help sets not visited within thirty days (where the browser supports enumerating its databases). The help set currently being read is never evicted, single-site behavior is unchanged, and stored AI Assistant conversations are never touched (EPUB2790).
WebWorks Reverb 2.0 output now reports when its
index.htmlor a parcel page has been reformatted by an XML or HTML pretty-printer. Such tools rewrite an empty element such as ascriptoriframetag into self-closing form, which is invalid in HTML and stops the page from loading: the output sat on its loading indicator with nothing in the browser console to explain why, because the scripts that would have reported the problem never ran. A guard built into the page itself — written so that the same reformatting cannot disable it — now reports a specific console error naming the cause and the correction, and the generated files carry a comment warning against reformatting them. A healthy page reports nothing (EPUB2792).Fixed a WebWorks Reverb 2.0 build failing when a Merge Settings container holds exactly one group. The container and its single group resolved to the same navigation identifier, so the group's composition manifest received two root elements and the build stopped with an invalid-XML error naming the manifest file. A container holding one group now builds normally (EPUB2912).
Added an Alt+A keyboard shortcut to the WebWorks Reverb 2.0 Optimized reader mode. On an output target that also enables the AI Assistant, Alt+A opens the Assistant panel and places focus directly in the chat message box, joining the existing Alt+S, Alt+M, and Alt+C jumps to the search box, menu, and content; while the chat interface is still loading, focus lands on the Assistant tab and moves into the message box as soon as it is ready. On output targets without the AI Assistant, Alt+A does nothing (EPUB2927).
Adapters
Added DITA Adapter option to use DITA source IDs as paragraph IDs in generated output (EPUB2706).
Added support for Adobe FrameMaker 2026 (version 18, 64-bit): it is detected and selectable in Designer, Express, and AutoMap, the WebWorks client deploys to the FrameMaker 2026 plugins folder, and FrameMaker 2026 documents publish through a target (EPUB2783).
Added support for DITA Open Toolkit 4.4 and made it the default DITA-OT version (EPUB2785).
Fixed unbalanced If/End If blocks in the Word Add-in (Transit) registry-fallback chain that locates the ePublisher Express executable, restoring consistent, parallel structure across the version-fallback levels (EPUB2728).
Hardened how the Markdown helper adapter passes each conversion request to its helper process. The request is now staged in a temporary file that the command interpreter redirects to the helper's standard input, rather than written to the child process's standard-input pipe. This makes source-document conversion reliable when AutoMap is launched by a parent process that redirects its standard input to a non-console pipe, such as continuous-integration runners and automation or agent harnesses; interactive console and Designer/Express builds are unaffected (EPUB2774).
Markdown
Fixed Markdown++ table output where a header cell using rowspan that extended into the first body row produced a column count mismatch (EPUB2719).
Added YAML front matter handling to the Markdown adapter. Flat key-value pairs at the top of an
.mdfile are stripped from the published content and converted into a Markdown++ markers directive attached to the document's first content block, so metadata such as title, author, date, and status flow through to the WIF as markers instead of producing stray paragraph or horizontal-rule output (EPUB2623).Fixed Markdown front matter so
keywordsanddescriptionkeys resolve regardless of case. Front matter keys are converted to ePublisher Markers, whose rules match case-sensitively, so a lower-casekeywords:ordescription:key previously fell through to the default ignore type and never populated the keywords or description<meta>tags; any case (keywords,Keywords,KEYWORDS) now resolves to the same Marker type and populates the meta tags (EPUB2806).Fixed paragraph content beginning with runs of spaces or tabs publishing as accidental indented code blocks in Markdown++ output. Four or more leading spaces open a code block in markdown, and source content routinely carries such runs. A leading whitespace run on a paragraph's raw content — or on its auto-number, which leads the line when present — is now compressed to a single space; inline formatting in the content is preserved. Fenced code content keeps its indentation verbatim, and the same correction applies inside blockquotes, list items, and multiline table cells. Leading whitespace inside generated table cells is likewise compressed, which can visibly change cell padding in regenerated markdown while preserving column alignment (EPUB2548).
Fixed publishing a blockquoted code fence to Markdown++ output producing invalid markdown. The interior lines of the fenced block lost their blockquote prefix, and a raw internal XML element leaked into the generated text in its place. All fence lines — delimiters and interior — now carry the blockquote prefix, and the fence content is preserved verbatim, including directive comments and markdown-significant characters. The same correction applies to the markdown produced for the WebWorks Reverb 2.0 AI Assistant knowledge base, which uses the same serializer (EPUB2553).
Fixed a trailing blank row separator in a Markdown++ multiline table producing a spurious empty table row without cell structure in the generated document data, which also caused the table's recorded column count to be zero. A blank pipe row in a multiline table is the row separator syntax, so a separator that opens the table body, closes it, or immediately follows another separator no longer emits a row; the published table now matches the authored rows exactly. Tables in standard (single-line) Markdown syntax are unaffected, where a row of empty cells remains legitimate content (EPUB2635).
Added backslash escaping for Markdown++ variable references. Writing
\$product_name;publishes the literal text$product_name;without substitution — the backslash is consumed and the reference is not resolved — while normal references continue to resolve as before. Any backslash immediately preceding a variable reference suppresses substitution, matching the Markdown++ specification's formal grammar, and code spans and fenced code remain excluded from variable processing. Escaped references also no longer register phantom entries in the project's scanned variable list (EPUB2711).Fixed standard Markdown image alt text being dropped from generated output. The first parameter of
— the canonical Markdown alt-text field — now maps to the HTMLaltattribute, and the quoted title maps to the HTMLtitle(tooltip) attribute, across all HTML-based formats. Previously the alt text was ignored and the title text populated both attributes, so images authored with standard Markdown conventions published with an emptyalt, inaccessible to screen-reader users. An image without authored alt text emitsalt="", marking it decorative; atitleis omitted unless authored. Images authored asthat relied on the title also populatingaltnow publish with an emptyalt— move the text to the alt field, or author both fields. Output generated from FrameMaker, Word, and DITA sources is unchanged (EPUB2725).Improved Markdown++ duplicate-alias diagnostics and link-target resolution. A custom alias now always claims its identifier: when a heading's auto-generated slug matches a custom alias defined elsewhere in the document, the custom alias keeps the identifier, the heading remains addressable under a suffixed anchor, links to the identifier reach the aliased element, and no warning is emitted. Only a genuine duplicate — two directives defining the same custom alias — is reported, now with the stable Markdown++ diagnostic code
MDPP008so authors and downstream tooling can filter, suppress, or escalate it. Previously both situations produced the same generic duplicate-alias warning, and a heading appearing earlier in the document would take the identifier, silently redirecting links intended for the alias's element to the heading instead (EPUB2756).Markdown++ duplicate-alias collision suffixes now use the specification's hyphen separator. When two headings produce the same auto-generated slug, or two directives declare the same custom alias, the later occurrence is disambiguated as
name-2,name-3, and so on (previouslyname_2), and a generated suffix that would match an authored alias or heading slug keeps incrementing until unique. Note that regenerating existing output changes previously collision-suffixed anchors (name_2becomesname-2), so deep links, bookmarks, or context-sensitive help targets pointing at such anchors must be updated once. Authors who link to specific headings are encouraged to declare explicit alias anchors, which are stable across builds (EPUB2893).Fixed paragraph styles using the markdown
blockquotesyntax property splitting into separate quotes in Markdown++ output. The blank separator line between consecutive blockquote-syntax paragraphs was emitted without the quote prefix, which terminates a blockquote in markdown — one continuous quote published as several, and on republishing through the Markdown adapter the original paragraph style was lost on all but the first paragraph. Consecutive blockquote-syntax paragraphs now publish as one continuous quote with the separator line prefixed. Structural blockquotes and all other markdown output are unchanged (EPUB2898).Markdown++ alias and heading-slug identifiers are now Unicode-normalized (NFC) before sanitization. Previously, an accented alias or heading authored in decomposed form (base letter plus combining accent) lost its accent: a decomposed
#Caféalias produced the anchorCafe-with a stray hyphen, and a decomposed## Caféheading slugged tocafe— a different anchor than the precomposed spelling of the same text. Both spellings now produce identical, accent-preserving anchors, and duplicate aliases that differ only in Unicode composition are reported and disambiguated like any other duplicate. Anchors generated from decomposed-form content change accordingly on regeneration; this lands alongside the collision-suffix change above so anchor identity settles in a single release. Pure-ASCII content is unaffected, and aliases differing only in letter case remain distinct (EPUB2904).Markdown-sourced content now publishes semantic HTML elements by default. The Markdown adapter records the HTML element implied by each construct in the generated style catalog, so an ATX heading publishes as
<h2 class="Heading_2">rather than<div class="Heading_2">, and paragraphs, block quotes, fenced code, horizontal rules, and lists publish asp,blockquote,pre,hr, andol/ul/li. Setext headings underlined with=and-publish ash1andh2, and bold, italic, inline code, and strikethrough publish asstrong,em,code, anddel. An HTML tag style property set explicitly in the project still takes precedence, so existing customizations are unaffected; a project that relies on the previousdivandspandefaults can restore them by setting the HTML tag property explicitly on the affected styles. Generated stylesheets emit the previousdivandspanselectors alongside the semantic ones so hand-written CSS keeps matching, and the affected styles now declare zero margins so the rendered spacing is unchanged. Level-six Markdown headings (######) also gained a table of contents level, so they appear in generated contents and round-trip through Markdown++ output instead of publishing as plain paragraphs (EPUB2726).Fixed
multilineMarkdown++ tables ignoring the table's Cell Head and Cell Body paragraph styles. Cell text in a table markedmultilinewas rendered with the generic Paragraph style nested inside the cell style, so formatting set on the<TableStyle> Cell Head/Cell Bodyparagraph styles (font size, color, and so on) had no visible effect and cells published with default body formatting. Cell text now carries the cell style directly, exactly as in tables withoutmultiline. Paragraphs in a cell that name an explicit style with a Markdown++ style directive keep that style, and lists, block quotes, and code fences inside cells keep their usual styles. Projects that restyled the generic Paragraph style to compensate should move that formatting to the cell styles, which multiline cell text now follows (EPUB2921).Fixed Table style column-width options having no effect on Markdown-sourced tables. Markdown tables published without column definitions in the document model, so First Table Cell Width, Last Table Cell Width, and Use document cell widths silently produced no column sizing in PDF - XSL-FO output and Apache FOP sized every column to its content. Markdown tables now declare one column definition per column, the same structure FrameMaker, Word, and DITA sources provide, so the column-width options size Markdown table columns exactly as they do for those sources. Markdown itself does not author column widths, so Use document cell widths has no widths to apply for Markdown sources; use First Table Cell Width and Last Table Cell Width, which now take effect (EPUB2924).
Fixed Markdown link targets with a URI scheme other than
httporhttps— such asmailto:email links — publishing as broken local file paths. Such a target was rebased against the source document's folder as if it were a relative file link, so generation logged a spurious warning naming a file such as...\mailto:info@webworks.comthat does not exist, and the published link pointed at that nonexistent file. A scheme-qualified target now passes through untouched in every output format, so an email link publishes as a workingmailto:link, andftp:,tel:, and other scheme links are likewise preserved. Relative file links, same-document anchor links, and absolute paths publish exactly as before (EPUB2932).
Core
Improved reliability of application error reporting. When ePublisher encounters an unexpected error, the error report now correctly captures the original problem instead of being interrupted by a secondary failure inside the reporter itself (EPUB2748).
Fixed an issue in the Designer Log window where clicking a hyperlink that included file location information (line and column) could trigger an unexpected error. The link now opens the referenced file in the user's associated editor, or shows a brief tooltip identifying the file extension if no editor is associated (EPUB2750).
Fixed Target Settings so editing a setting that already has a text value is recognized as a change: the new value is applied to the project and the save indicator is enabled, instead of the edit being silently discarded and the previous value retained (EPUB2710).
Fixed the Legacy Installer format manifests so the 2021.1 formats entry references 2021.1 binaries instead of 2020.1, preventing the wrong format version from being installed (EPUB2729).
Preference migration now carries customized toolbar layouts and docked-panel arrangements forward when upgrading to a new version, so Designer and Express interface customizations are no longer reset to defaults on every release (EPUB2731).
Removed a spurious empty "Image file not found" warning that was emitted for text-only frames (such as FrameMaker cover pages) during image generation; the warning was cosmetic and generated output is unchanged (EPUB2733).
Fixed FrameMaker-rasterized images being upscaled to a format rule's max-width and max-height when the natural frame already fits inside those bounds. Generated JPEG and PNG output now matches the anchored frame's natural pixel dimensions, restoring the 2024.1 behavior where max-width and max-height act as upper bounds rather than scale targets. This regression was introduced in 2025.1 (EPUB2767).
Fixed catastrophic data loss in AutoMap where a malformed job file (invalid XML, or a missing or empty
<Job name>attribute) produced a job with an empty name; combined with a clean build this collapsed the staged project path onto the staging root and recursively deleted every staged job under the staging directory. AutoMap now rejects a job that fails to load or has no name instead of cleaning the staging root (EPUB2794).Fixed the AutoMap Administrator so an explicit empty target setting can be stored. Clearing a setting whose format or stationery default is non-empty now records a job override of empty (for example, clearing Copy PDFs from target to bypass a stationery's PDF dependency) instead of silently reverting to the default; the right-click Reset gesture still restores the default (EPUB2795).
Fixed an unhandled NullReferenceException in ePublisher Designer that crashed the application when the Style Designer pane was closed; the pane now disposes cleanly (EPUB2816).
Fixed online license activation in FIPS-enabled environments, where activation previously failed with only a "Product is unlicensed" message even though the license server returned a valid payload (EPUB2820).
Hardened node-locked licensing to derive machine identity from stable hardware characteristics instead of a stored registry value, closing a path by which a seat could be cloned to another machine (EPUB2822).
Improved license client trace logging (
WebWorks.licpay.log) so activation and licensing failures can be diagnosed from a single log file (EPUB2823).AutoMap can now use a Designer or Express project (
.wep/.wrp) directly as a stationery via a new optionaluseAsStationery="True"attribute on a job file's<Project>element. AutoMap stages a fresh project from the design's format configuration (stripping the design's own documents, ProjectID, and Origin), injects the job's documents and target overrides, and builds, removing the manual Save As Stationery step from continuous-integration workflows so each build synchronizes from the live design. A project origin does not bundle its format files, so ePublisher Designer must be installed on the machine that runs such a job. Without the attribute a.wep/.wrporigin still builds in place, and.wxspstationeries are unaffected (EPUB2808).AutoMap job files can now carry the definition of a named Folder or Amazon S3 destination inline, in a
DeploySettingselement, so a job checked into version control runs on any machine without first seeding that machine's deploy preferences; a new--deploysettingscommand-line option accepts the same definitions from a file for build-server use. Destinations are still referenced by name, an inline definition takes precedence over a same-named deploy preference (with a warning when the two differ), and a composition forwards its inline definitions to the member jobs it builds. WebDAV destinations, which store credentials, cannot be defined inline (EPUB2834).Added a
--dryrunswitch to the AutoMap command line that forces every deployment in that run dry, so a live configuration can be rehearsed with one flag: Amazon S3 destinations print their would-be upload, delete, and invalidation operations without contacting AWS; transports without dry-run support (Folder, WebDAV, custom) skip their deployment with a log line; a composition job against a non-S3 destination skips its in-place compose; and a composition forwards the switch to the member jobs it builds. There is deliberately no opposite switch — a destination configured as dry run cannot be forced live from the command line (EPUB2840).Composition Jobs (
.wacj) are now first-class citizens of the ePublisher AutoMap Administrator. Composition jobs appear in the jobs list with their own icon and can be scheduled, run, stopped, monitored, renamed, duplicated, and deleted like publishing jobs, and a hand-authored.wacjdropped into the Jobs folder is discovered automatically. A third New Job option — Compose published parcels into a website — creates a composition in the Jobs folder, and a new editor manages the member jobs (with role and optional pre-build per member), the destination (an inline Folder or Amazon S3 definition stored in the job file, or a shared deploy preference), and the site table of contents (automatic discovery, or a custom tree with an option to also include newly published parcels). Opening and saving a hand-authored composition preserves its structure, including nested table-of-contents containers and inline destination definitions; a composition refuses to start while another run of the same job is in progress; and email notification preferences apply to composition runs (EPUB2851).Publishing jobs (
.waj) gained a job-level Deploy Destinations page in the AutoMap Administrator's job editor, where the inline destination definitions above are created and edited, so a job moved to another machine or scheduled under a different account deploys without first seeding that machine's deploy preferences. Each target's Deploy to list now labels destinations as defined in this job or local, and the local destinations themselves — stored per Windows user and used by Designer, Express, and AutoMap alike — are managed directly from the Administrator's Edit > Deploy Destinations menu rather than only from inside a target's configuration (EPUB2851).Added a Preview Output in Browser action beside Explore Output on the AutoMap Administrator's Job menu. Where Explore Output opens the deployed files, Preview Output opens the deployed site itself: a Folder destination opens its entry document directly from the deployment folder, and an Amazon S3 destination derives a best-effort address at click time — the CloudFront distribution's domain when a distribution ID is configured (read with the destination's stored credential profile; nothing new is stored), otherwise the bucket's S3 static-website endpoint, otherwise the direct address of the entry document on a public bucket — each verified before opening. Publishing jobs list one entry per deploying target, a composition job its single destination, and job-inline deploy definitions are honored first. The result is explicitly a preview, since custom domains and CDN configuration remain outside ePublisher's knowledge, and when no address can be derived the message reports which derivations failed and why instead of a bare error (EPUB2853).
A federated parcel can now declare its own placement in the composed site's table of contents. When a parcel's Merge Settings nest its group under one or more table-of-contents containers, the parcel build records that arrangement in its deployed composition descriptor (
wwcomposition.xml), and a Composition Job consuming the parcel — in discovery mode, or as a discovered extra alongside a custom tree — creates those containers and nests the parcel accordingly, merging same-named containers declared by multiple parcels into one shared section. A placement declared in the composition job itself always takes precedence, parcels without the metadata compose exactly as before, and a conflicting declaration is reported and composes flat rather than failing the composition. The Merge Settings may be authored in the parcel's project or on its AutoMap job's target (.waj) — both flow into the descriptor identically (EPUB2857).A Composition Job (
.wacj) now selects each member's output target explicitly and validates every selection before anything is built. A composition-wide target applies to every member, an individual member may override it, and when neither is given the member's single composition-capable target is detected automatically — preferring the target the member's job actively builds — while a member with several candidates is reported by name rather than one being picked silently. The selected target must exist and use a format that supports composition, and every member must produce the same format; a member whose target cannot compose (for example PDF - XSL-FO) is reported with the member, target, and format named. A member the composition builds now builds only the selected target, leaving the member's other targets to its own standalone runs, and composing skips — with a warning — any deployed parcel recorded as built by a different format or release than the shell. The Administrator's composition editor gained a matching optional Output target selection, defaulting to automatic detection, and a per-member override declared in the composition job file surfaces in a read-only Target column (EPUB2869).Adding a member to a Composition Job no longer requires browsing the file system for the common case: the composition editor's Add button now drops down the publishing jobs (
.waj) in the Administrator's Jobs folder for one-click selection, since a composition's members are typically sibling jobs of that folder. Jobs already added as members appear in the list checked and disabled so they cannot be added twice, a Browse choice remains for jobs and projects stored anywhere on disk, and a job picked from the list is stored with the same job-relative reference the editor has always written (EPUB2870).A member a Composition Job builds (Build checked) now deploys to the composition's destination instead of the member job's own, so a composition whose members all build is self-contained: point it at an empty destination and one run builds every member, deploys everything to that destination, and composes the site — and one member job can feed any number of compositions, each publishing to its own destination. Members without Build remain federated: their output is read from the destination as already published by their own jobs, which keep deploying to their own destinations in standalone runs. To match, members added in the composition editor now start with Build checked (the editor writes
build="true"explicitly; an absentbuildattribute in a hand-authored composition still means the federated reading). A new--destinationAutoMap command-line switch carries the override and is also available directly: it deploys every target built in that run to the named destination in place of each target's own (EPUB2872).Added the ability for ePublisher Designer to work with ePublisher Express projects, so a Designer installation can fully stand in for an Express seat. Designer now opens, builds, synchronizes, and deploys Express projects (
.wrp): an Express project opened in Designer keeps the Express experience — Document Manager, stationery synchronization, no Style Designer — and carries the Express window icon, while Designer projects behave exactly as before. A new File > New Project from Stationery menu item creates an Express project from a Stationery or from a Designer project serving as one, using the same dialog Express provides, and the Open dialog now offers both project types in a single filter. The Recent Projects menu and the Start Page show each project's type icon, so the two kinds of project are distinguishable at a glance. Double-clicking a.wrpopens Express when it is installed and Designer otherwise, and uninstalling Express hands its file associations to a still-installed Designer instead of leaving them orphaned (EPUB2885).ePublisher Designer can now hand a project to a colleague as a linked ePublisher Express project. A new File > Save as Express Project menu item creates an Express project (
.wrp) whose origin is the Designer project it came from, so one seat authors the formats, output targets, and styles while colleagues work in linked Express projects that pick up each change through the usual synchronization prompt — the arrangement Stationery provides, without publishing a Stationery first. The Designer project is saved before the Express project is created, so the new project opens without an immediate synchronization prompt, and Designer offers to open the result once it is finished. An option, off by default, also carries the Designer project's source documents, groups, and Merge Settings across: group identities are preserved so each group keeps the place its Merge Settings give it, document paths are rewritten to resolve from the new project's location, and fresh document identities are assigned. Document-level style overrides, a deprecated feature, are never carried over; a notice says so when the Designer project has any, since the new project's output would otherwise differ from the original's without explanation. A linked project whose origin is a project rather than a Stationery requires ePublisher Designer installed on the computer where it is used (EPUB2905).Opening a standalone Stationery file (
.wxsp) now starts the New Project from Stationery flow instead of failing. Double-clicking a Stationery in Windows Explorer, passing one on the command line, or choosing one in an Open dialog brings up the New Project dialog with that Stationery already selected — in both ePublisher Designer and ePublisher Express — leaving only the project name and location to fill in, the same way opening a document template starts a new document. Previously the products attempted to load the Stationery as a project and failed with an error, a common source of confusion for users trying to put a Stationery to use (EPUB2909).The Style Designer's style list now supports selecting several styles at once, so one edit applies to all of them. Ctrl-click and Shift-click extend the selection within the style category being viewed — paragraph, character, table, page, graphic, or marker — and a value set on any of the Properties, Options, Target Properties, or Target Options tabs is written to every selected style, in place of repeating the same edit style by style. Where the selected styles do not already agree on a value, that value is shown blank rather than showing one style's setting as if it were shared; typing a value there sets it for the whole selection. The
[Prototype]style is never part of a multiple selection — including it drops it from the selection — because editing it already reaches every style of that category. Selecting a single style behaves exactly as before (EPUB2913).Fixed generated output containing invalid links into a document excluded from a target. When a target was regenerated after clearing a document's Include in output setting, hyperlinks and cross-references pointing into that document could still be emitted using stale data from the earlier generation: PDF - XSL-FO output produced a link that jumps to the top of the first page, and HTML-based outputs produced a link to a page that does not exist. Such links are now removed, leaving only their text, the same as a clean regenerate, and the excluded document's previously generated files are cleaned up instead of lingering in the output (EPUB2837).
Added a Deploy scope to each target's deployment configuration in Designer, Express, and the AutoMap Administrator: Everything (complete site — the default and previous behavior), Groups (content only), or Shell (site files only). A scoped deployment publishes only the declared portion of the output into a shared destination, so independently deployed outputs coexist without overwriting one another, and a scoped Clean removes only the files that project deployed. The scope appears next to the Deploy to selection (enabled for formats that support composition), is stored on the target, and can be overridden per AutoMap job target or with the new
--deployscopecommand-line option (EPUB2831).Added an Amazon S3 destination type alongside Folder and WebDAV. A named S3 destination stores the bucket address, region, optional named AWS credential profile, and optional CloudFront distribution — never access keys; credentials resolve through the standard AWS profile or instance-role chain. Uploads apply web-appropriate caching (versioned assets cached immutably; pages and maps always revalidated), scoped deployments and Clean affect only the deploying project's own objects, changed pages trigger a CloudFront invalidation, and a dry run option prints every operation without contacting AWS (EPUB2833).
Added the AutoMap Composition Job (
.wacj), a new job type that assembles independently deployed WebWorks Reverb 2.0 outputs into one site. A composition job lists its member jobs, an optional site table of contents, and the shared destination; running it reads each deployed parcel's composition descriptor, renders and splices the combined navigation manifest into the deployed shell, rebuilds the site'surl_maps.xmlandsitemap.xml, advances the browser cache key, and for S3 destinations uploads the recomposed files and issues a CloudFront invalidation — in seconds, without rebuilding any content. Members may optionally be built and deployed first as part of the run; a declared table of contents composes exactly the listed parcels, while discovery mode automatically includes every parcel found in the destination (EPUB2832).The AutoMap command line's
-t/--targetoption now applies to job files: the named targets are built, taking precedence over each job target'sbuildattribute, so a multi-target job can rebuild and redeploy a single target without editing the job file. A name that matches no job target is reported, and a job whose selection comes up empty now reports that no targets are selected instead of failing (EPUB2838).An AutoMap Composition Job (
.wacj) now resolves its shared destination through the--deploysettingsoverlay file as well: the composition's own inline definition takes precedence, then the overlay, then the machine's deploy preferences — the same order job-file targets use — with a warning whenever a higher source shadows a differing definition of the same name. A version-controlled destination-definitions file can therefore serve as the single source of truth for a federation's destinations, and a composition forwards the merged definitions to the member jobs it builds (EPUB2839).Fixed a Groups-scope deployment publishing nothing for a group whose name contains a character that the output path replaces. Generation converts characters such as a comma, colon, ampersand, or number sign in a group name to underscores when it derives the group's output directory, but the deployment looked for the group under its original name, matched no files, and skipped the group without a message — leaving a composed site missing that section. The deployment now derives the directory name exactly as generation does, including the group-name space handling (EPUB2841).
Fixed per-parcel AI Assistant knowledge base archives never reaching a shared deployment destination. A scoped deployment treats every file it does not recognize as a group's own as part of the site shell, so the
knowledge-parcel-<name>-<hash>.ziparchives written at the output root were published by neither a Groups-scope nor a Shell-scope deployment. Each parcel now owns its knowledge base archive and publishes it together with its content (EPUB2842).Fixed a scoped Amazon S3 deployment stopping partway through while still reporting success. The build records some search-index entries — the external and mail addresses collected from a group's baggage — that are never written to disk; the scoped upload passed every recorded entry to Amazon S3 without checking that its file exists, so the first such entry ended the upload after only the group's images had been sent, and the target still reported zero errors. Entries with no file on disk are now skipped, as the Folder destination already did, and a failure during deployment is now counted as a target error so an incomplete deployment can no longer be reported as a successful build (EPUB2844).
Fixed a scoped Amazon S3 deployment leaving a CloudFront distribution serving the previous version of the pages it had just re-uploaded. Topic pages, index chunks, and composition descriptors are uploaded under unchanged addresses and are marked as always revalidated, but only the compose step issued a CloudFront invalidation, and only for the site's shared files — so republished content pages stayed stale until the distribution's cache expired. A scoped deployment now invalidates the paths it re-uploaded, and a dry run prints the invalidation it would issue (EPUB2845).
ePublisher Designer and ePublisher Express now manage deploy destinations directly: an Edit > Deploy Destinations menu item and a matching toolbar button open the destinations editor without requiring a project or target to be selected — the same top-level access the AutoMap Administrator's Edit menu gained in this release. Opened this way, the editor offers the Folder and Amazon S3 transports; a format's custom transports continue to appear when the editor is opened from a target's settings, and existing entries of any transport remain editable. The Designer and Express editor now also matches the Administrator's presentation: the Deploy Destinations, Folder Destination, and Amazon S3 Destination dialog titles, the Deployment Type column caption, deployment-type icons in the Add menu and on each entry of the Target Settings Deploy to list, and a note stating that the store is local to the Windows user on the computer and shared by Designer, Express, and AutoMap. The Merge Settings dialog picked up the matching polish: tooltips on the container buttons and always-visible expansion indicators on container nodes (EPUB2854).
Added a Build options box to the Job Info tab of the AutoMap Administrator's job editor, holding job-level build toggles that are stored in the job file (
.waj) itself. Its first option, Skip reports, is the job-level equivalent of the command line's--skip-reportsswitch: when checked, report generation is skipped for every target the job builds, whether the job runs on its schedule, through Run Now, or from a direct command-line invocation. The stored option and the command-line switch combine so that either one enables the skip, and jobs that leave the option unchecked are written exactly as before (EPUB2855).Added a Verbose logging option to the job editor's Build options box, and a matching
-q/--quietswitch to the AutoMap command line. Verbose logging is on by default and preserves today's output; clearing it (or passing--quiet) quiets the run — the generation engine's step-by-step progress messages are omitted from the console and the job's<name>-log.txt, while milestone, warning, and error messages still print, so a scheduled job's log reduces to what needs attention. The per-targetgenerate.logalways keeps full detail for troubleshooting. The stored option and the command-line switch combine so that either one quiets the run — whether the job runs on its schedule, through Run Now, or from a direct command-line invocation — and jobs that leave the option checked are written exactly as before (EPUB2856).Build log messages produced by the Apache FOP engine (PDF - XSL-FO output) and by the DITA Open Toolkit (DITA source documents) are now recorded line by line at their actual severity instead of as one block: lines carrying a warning or error marker are logged as warnings or errors, and the remainder of the tool's progress transcript is logged as informational. On a successful build, a spurious note from the tool no longer flags its entire transcript as a warning, and an AutoMap job with Verbose logging disabled (or a
--quietrun) records only the lines that need attention. Failed runs still record the complete transcripts, and the per-targetgenerate.logalways keeps full detail (EPUB2858).Composition run logs now speak the vocabulary of the composition job itself — members, destinations, and deployed output — instead of engine internals. Messages name the member whose output they concern, a problem is reported once (a parcel skipped for a format or version mismatch is no longer also miscounted as missing), and the run's final error explains why there was nothing to compose: nothing deployed yet, output found but unusable, or output that matches nothing the composition declares. The run also cross-checks each member it does not build up front, warning when the member's own job deploys the selected target to a different destination than the composition's — or to none — so a destination misalignment is named before the compose reports missing output (EPUB2871).
Fixed saved toolbar and panel layouts accumulating entries that were never meant to persist. Each session's Recent Projects entries and the report tools were written into the saved layout, so the stored layout grew every time ePublisher Designer or Express was used; one layout examined during testing carried 99 such entries and had grown from 171 KB to 304 KB. These entries are rebuilt at run time and are no longer saved, and an existing layout that already carries them is cleaned up the first time it is loaded (EPUB2910).
Fixed a failure that made a project unopenable when a source document was recorded with a volume-relative path (one beginning with a backslash, such as
\docs\guide.doc): ePublisher reported the project file as invalid rather than loading it, where such a path now resolves against the volume the project itself is stored on and is written back unchanged when the project is saved (EPUB2917).Fixed the ePublisher Express stationery synchronization prompt browsing for standalone stationery files only. File > Synchronize with Stationery accepts a Designer or Express project as the origin, but the prompt's Browse button listed only
.wxspfiles, so an Express project whose origin is a.wepor.wrpproject — the arrangement Save as Express Project creates — could not be confirmed or re-pointed from the prompt. Both paths now browse for stationeries and projects alike (EPUB2920).Fixed the Style Designer showing its Options tab — and the style name in the style list — in bold for styles that have no option of their own. The emphasis counted every recorded option entry, including entries that merely restate the value the style already inherits, so the Options tab could claim a modification while the options list showed nothing set. The tab and style-name emphasis now use the same test as the options list itself: an option counts only when it changes the value the style would otherwise inherit (EPUB2922).
Fixed standard PDF output (not PDF - XSL-FO) so landscape pages in documents that mix portrait and landscape sections render in landscape with upright text, instead of appearing in portrait orientation with the content rotated 90 degrees (EPUB2771).
Upgraded the Apache FOP engine used to generate PDF (XSL-FO) output from version 2.8 to 2.11, including the underlying Apache Batik (1.19) and Apache PDFBox (3.0) libraries. Generated PDF output is unchanged for existing projects; the upgrade incorporates upstream layout and rendering fixes along with current dependency security updates. The DITA Adapter's PDF (XSL-FO) generation uses the same upgraded engine (EPUB2786).
Fixed the adapter-based PDF output format for DITA input: a single topic with no map no longer aborts the build, large or font-heavy documents no longer hang in the PDF stage, and figure images are no longer dropped from the output (EPUB2787).
Fixed FrameMaker Symbol-font glyphs (such as µ, Δ, and √) rendering as the .notdef box in PDF (XSL-FO) output; these Greek and math characters now map to a font that supplies the glyph (EPUB2811).
Fixed Graphic style dimension properties having no effect on raster images in PDF - XSL-FO output. Width, Height, Content Width, and Content Height set on a Graphic style were silently discarded, leaving the style's Scale % option — which resamples the image's pixels at generation time and visibly degrades quality — as the only way to publish an image at a reduced size. Explicit dimension properties now size the image in the published PDF: the Apache FOP engine scales the full-resolution original at render time, so the image stays sharp in print and at high zoom. A Content Width or Content Height percentage is relative to the image's own size (
20%renders the image at 20% of its natural dimensions), and a Width or Height length (for example1.25in) scales the image proportionally into that box. Images without explicit dimension properties publish exactly as before, and styles that rely on the Scale % option are unchanged (EPUB2923).Fixed PDF - XSL-FO builds reporting success when the Apache FOP engine fails to render a PDF. A rendering failure — for example, a validation error over the generated FO file — left the affected PDF silently missing from the output while the build completed without any error. The failure is now recorded as a build error that names the missing PDF file, and an AutoMap build exits with a failure status, so a missing PDF can no longer go unnoticed (EPUB2926).
Installer
Added a
/UPDATEcommand-line switch to the installers for silent repair and update. Runninginstaller.exe /S /UPDATEperforms the equivalent of the interactive Repair option headlessly, silently uninstalling the currently installed version and installing fresh in a single invocation, so enterprise IT can perform unattended updates without the interactive Repair-versus-Uninstall prompt (EPUB2801).Fixed multi-product silent
/UPDATEso runtime-extractedhelper.wezcontent is refreshed on upgrade; previously an upgraded installation could keep running the old extracted adapter, so adapter and format fixes did not reach upgraders (EPUB2809).Reduced what the packaged helper adapter archive installs. Developer test suites, their fixtures, and an unused experimental adapter were being packaged alongside the production adapter runtime and extracted into the installed product. Only production adapter files are now packaged; an installation upgraded in place may retain the previously extracted files until it is installed cleanly (EPUB2815).
The ePublisher AutoMap launcher (
WebWorks.AutoMap.exe) is now code-signed, like every other executable in the product. The launcher had shipped unsigned since it was introduced, which could cause it to be flagged by software-restriction or application-allowlisting policies that verify publisher signatures (EPUB2881).
Documentation
Refreshed the ePublisher Trial evaluation projects (Exp_Design, Exp_ePub, Exp_Stationery) for the 2026.1 release (EPUB2759).
Added an IT silent installation guide covering unattended install, upgrade, repair, uninstall, and seat deactivation of ePublisher (Express, Designer, AutoMap) for enterprise deployment (EPUB2799).
Fixed Issues
List of Issues Fixed in This Release
Issue ID | Summary |
|---|---|
EPUB2548 | Markdown - Leading whitespace runs no longer publish as accidental indented code blocks in Markdown++ output |
EPUB2553 | Markdown - Blockquoted code fences publish as valid markdown, with the quote prefix on every fence line |
EPUB2615 | Formats - Table of contents and breadcrumb entries for non-generating paragraphs resolve to the nearest generated page |
EPUB2623 | Markdown - YAML front matter parsed and converted to a Markdown++ markers directive on the first content block |
EPUB2635 | Markdown - Trailing blank separator row in a Markdown++ multiline table no longer emits an empty row |
EPUB2657 | Reverb 2.0 - AI Assistant tab support in menu navigation |
EPUB2706 | Adapters - DITA Adapter option to use source IDs for paragraph IDs |
EPUB2710 | User Interface - Target Setting text edits now apply and enable the save indicator |
EPUB2711 | Markdown - Backslash escaping suppresses Markdown++ variable substitution |
EPUB2714 | Reverb 2.0 - Draggable menu width with persisted user preference |
EPUB2715 | Reverb 2.0 - Redesign Assistant chat message styling for narrow vertical layouts |
EPUB2716 | Reverb 2.0 - Search-result breadcrumb hydration is O(N) with coalesced flush on panel open |
EPUB2717 | Reverb 2.0 - Progressive hydration with localStorage landmarks tier and IndexedDB search/index tiers |
EPUB2718 | Reverb 2.0 - Format paragraph style option for assigning Landmark IDs |
EPUB2719 | Formats - Fix Markdown++ table rowspan on header cells extending into body rows |
EPUB2722 | Reverb 2.0 - Remove ww prefix from HTML id attributes and anchors |
EPUB2723 | Reverb 2.0 - Accessibility "Optimized reader mode" target setting suppresses decorative chrome tab stops for screen-reader users |
EPUB2724 | Reverb 2.0 - Tab key can no longer escape the search iframe into browser chrome |
EPUB2725 | Markdown - Standard Markdown image alt text maps to the HTML alt attribute and the quoted title to title |
EPUB2726 | Markdown - Markdown-sourced content publishes semantic HTML elements by default |
EPUB2728 | Adapters - Word Add-in (Transit) registry-fallback chain If/End If blocks balanced |
EPUB2729 | Installer - Legacy Installer 2021.1 formats entry now references 2021.1 binaries |
EPUB2731 | Core - Preference migration preserves toolbar and dock-state customizations across upgrades |
EPUB2733 | Formats - Remove spurious empty "Image file not found" warning for text-only frames |
EPUB2747 | Reverb 2.0 - Output now loads for minimal projects without explicit merge configuration |
EPUB2748 | Core - Application error reports now capture the original problem instead of being interrupted by a secondary failure |
EPUB2750 | User Interface - Designer Log hyperlinks with line/column info now open the referenced file or show a tooltip instead of triggering an error |
EPUB2753 | Formats - Progress reporting no longer reports an imbalance for a document containing several popups |
EPUB2754 | Reverb 2.0 - Menu navigation button dividers are position-aware, so the last button in the row suppresses its trailing divider |
EPUB2755 | Reverb 2.0 - Remove the unused data-highlight-require-whitespace HTML attribute from page output |
EPUB2756 | Adapters - Markdown++ alias warnings distinguish custom-vs-custom from auto-vs-custom collisions, with diagnostic code MDPP008 |
EPUB2759 | Documentation - Refresh ePublisher Trial evaluation projects for 2026.1 |
EPUB2760 | Reverb 2.0 - Hide AI Assistant tab when output is opened over file: |
EPUB2762 | Reverb 2.0 - Generate one AI Assistant knowledge base zip per parcel |
EPUB2764 | Reverb 2.0 - AI Assistant streaming no longer re-renders the whole conversation per token |
EPUB2765 | Reverb 2.0 - Bundle DOMPurify and markdown-it into the skin; drop CDN dependencies |
EPUB2766 | Reverb 2.0 - AI Assistant chat client migrated to fetch + ReadableStream for the collapsed streaming POST endpoint |
EPUB2767 | Formats - Fix FrameMaker-rasterized image upscaled to max-width and max-height (2025.1 regression) |
EPUB2769 | Formats - Fix Reverb Japanese/CJK search returning wrong results and mis-highlighting |
EPUB2771 | Formats - Fix standard PDF landscape pages rendering in portrait orientation (per-page auto-rotate) |
EPUB2774 | Adapters - Helper adapter conversion reliable when stdin is redirected (CI/automation) |
EPUB2776 | Formats - Reverb search character folding (curly and straight apostrophes treated as the same search term) |
EPUB2777 | Formats - Remove CJK stop words so Japanese/Chinese search matches and highlights full terms |
EPUB2779 | Formats - Reverb 2.0 keyboard focus transfers into iframe content (search, navigation, F6, skip-to-content) |
EPUB2780 | Formats - Reverb search breaks katakana per character so interior katakana characters are searchable |
EPUB2782 | Reverb 2.0 - Knowledge base archive names include project/parcel name and generation hash |
EPUB2783 | FrameMaker - Support FrameMaker 2026 |
EPUB2785 | DITA - Added support for DITA Open Toolkit 4.4 |
EPUB2786 | PDF - XSL-FO - Upgrade Apache FOP to 2.11 |
EPUB2787 | DITA - Adapter-based PDF output: fix build failure, hang, and missing images |
EPUB2789 | Reverb 2.0 - Per-parcel search cache key so updating one parcel does not discard every parcel's cached search data |
EPUB2790 | Reverb 2.0 - Browser cache hygiene across help sets sharing one domain, with a size budget and least-recently-used eviction |
EPUB2791 | Reverb 2.0 - Log unexpected caught exceptions that mask broken runtime behavior |
EPUB2792 | Reverb 2.0 - Reformatted output with self-closed elements reports a specific console error instead of a silent unfinished load |
EPUB2793 | Reverb 2.0 - Generate Groups setting; disable to build a content-free shell (empty #parcels manifest, no content or PDF) |
EPUB2794 | AutoMap - Malformed or unnamed job file no longer clears the entire staging directory |
EPUB2795 | AutoMap - Administrator can store an explicit empty target setting override |
EPUB2799 | Documentation - Add IT silent installation guide for enterprise/silent deployment |
EPUB2801 | Installer - /UPDATE switch for silent repair and update |
EPUB2803 | Reverb 2.0 - Thinking/reasoning indicator in the AI Assistant chat |
EPUB2805 | Reverb 2.0 - Use an authored date marker or front matter date as the document last modified date |
EPUB2806 | Markdown - Front matter keywords and description keys resolve regardless of case |
EPUB2808 | AutoMap - Use a Designer project (.wep/.wrp) directly as a stationery via useAsStationery |
EPUB2809 | Installer - Silent /UPDATE now refreshes runtime-extracted helper.wez so adapter and format fixes reach upgraders |
EPUB2811 | PDF - XSL-FO - FrameMaker Symbol-font glyphs (mu, Delta, radical) no longer render as .notdef |
EPUB2814 | Reverb 2.0 - Disabling Generate Menu removes the menu region instead of leaving an empty area |
EPUB2815 | Installer - Developer test assets and an unused experimental adapter are excluded from the packaged helper archive |
EPUB2816 | User Interface - Fix Designer NullReferenceException when closing the Style Designer pane |
EPUB2820 | Core - Fix online license activation failure in FIPS-enabled environments |
EPUB2822 | Core - Licensing derives machine identity from stable hardware characteristics instead of a stored registry value |
EPUB2823 | Core - Improve license client trace logging for activation troubleshooting |
EPUB2825 | Reverb 2.0 - Runtime-hash link pass-through adds landmark (#/) support and stops chrome links loading the shell into the content frame |
EPUB2828 | Reverb 2.0 - Paragraph Dropdown expand/collapse control works again after the HTML id ww-prefix removal |
EPUB2829 | Reverb 2.0 - AI Assistant end-user identity token and plain-language usage-limit handling |
EPUB2830 | Reverb 2.0 - Federated parcel enablers: content-free shell build, composition descriptor, tolerant parcel loading |
EPUB2831 | Core - Deploy scope (Everything, Groups, Shell) publishes a role-appropriate slice into a shared destination |
EPUB2832 | AutoMap - Composition Job (.wacj) composes a federated Reverb 2.0 site from deployed parcels |
EPUB2833 | Core - Amazon S3 destination type with CloudFront invalidation, cache-control policy, and dry run |
EPUB2834 | AutoMap - Job files can define named Folder and Amazon S3 destinations inline, with a --deploysettings overlay file for build servers |
EPUB2837 | Core - Links into a document excluded from a target no longer survive an incremental regenerate |
EPUB2838 | AutoMap - -t/--target selects job file targets, overriding each target's build attribute |
EPUB2839 | AutoMap - A composition resolves its destination through the --deploysettings overlay file |
EPUB2840 | AutoMap - Global --dryrun switch forces every deployment in a run dry |
EPUB2841 | Core - Groups-scope deploy handles group names containing characters the output path replaces |
EPUB2842 | Core - Per-parcel AI Assistant knowledge base archives deploy with their parcel |
EPUB2844 | Core - Amazon S3 scoped deploy skips never-written baggage entries instead of aborting silently |
EPUB2845 | Core - Scoped Amazon S3 deploy invalidates the CloudFront paths it re-uploaded |
EPUB2846 | AutoMap - Stale job lock file with a dead process ID no longer blocks the next run of that job |
EPUB2847 | AutoMap - Shared license files are read and written safely when AutoMap runs in several Windows sessions at once |
EPUB2849 | AutoMap - Administrator no longer errors on another account's scheduled job activity, and warns before overwriting a colliding scheduled task |
EPUB2850 | Core - Startup no longer clears a machine's license registration while the license server is unreachable |
EPUB2851 | AutoMap - Administrator support for Composition Jobs (.wacj), with a composition editor and a job-level Deploy Destinations page |
EPUB2852 | Core - License key refresh reports a timeout instead of "License Contract ID not found" when the server is merely slow |
EPUB2853 | AutoMap - Preview Output in Browser opens a job's deployed site from a derived address |
EPUB2854 | User Interface - Deploy Destinations opens from the Edit menu and toolbar in Designer and Express, with Administrator parity |
EPUB2855 | AutoMap - Job-level Build options box with a Skip reports option stored in the job file |
EPUB2856 | AutoMap - Verbose logging build option with a matching -q/--quiet command-line switch |
EPUB2857 | AutoMap - Parcel-declared Merge Settings recorded in wwcomposition.xml for composed table-of-contents placement |
EPUB2858 | Formats - Apache FOP and DITA Open Toolkit build log lines are recorded at their actual severity |
EPUB2859 | Core - Generating to a network (UNC) path no longer fails once a generated file path reaches 248 characters |
EPUB2861 | AutoMap - Job log copy and console output no longer double-space every entry |
EPUB2862 | AutoMap - Job and composition logs gain a start banner, finish and total time, a warning and error summary, and full deployment detail |
EPUB2863 | AutoMap - Administrator jobs list updates Last Run, Last Result, and Status without restarting the application |
EPUB2864 | AutoMap - Preview Output in Browser understands targets that deploy with Groups scope |
EPUB2865 | AutoMap - A job target's deploy selection can be cleared with a (none) entry, and Preview and Explore Output no longer offer targets the job does not generate |
EPUB2866 | Core - Log and console banners print the three-part display version |
EPUB2867 | Reverb 2.0 - AI Assistant knowledge base stage no longer errors on a zero-document shell build and blocks its deployment |
EPUB2869 | AutoMap - Determinant output-target selection for composition members, with compose-capable validation |
EPUB2870 | AutoMap - Composition Add Member lists publishing jobs from the Administrator's Jobs folder |
EPUB2871 | AutoMap - Composition logs report a skipped member once and explain why a compose found nothing |
EPUB2872 | AutoMap - Members a composition builds deploy to the composition's destination; new --destination switch |
EPUB2873 | AutoMap - Composition target selection uses the targets a member's job file declares rather than its stationery |
EPUB2874 | AutoMap - A job target its stationery no longer defines fails the build instead of silently rebuilding with format defaults |
EPUB2875 | AutoMap - Blank-only warning entries no longer pad job logs or inflate the warning tally |
EPUB2876 | AutoMap - Composition member build output preserves non-ASCII characters; redirected console output is written as UTF-8 |
EPUB2877 | AutoMap - Job and composition logs mark warning and error lines with the generate.log [WARN] and [ERROR] prefixes |
EPUB2878 | AutoMap - Launcher no longer hangs after a completed run or loses the exit code when console text selection blocks its output relay |
EPUB2881 | Installer - AutoMap launcher shim is code-signed like the rest of the product |
EPUB2883 | AutoMap - Composition log and editor distinguish parcel-declared containers from groups |
EPUB2885 | User Interface - Designer opens, builds, synchronizes, and deploys Express projects (.wrp) |
EPUB2888 | Formats - Local output preview server used by View Output renders on first load, serves read-only files, and is reachable only from the local machine |
EPUB2893 | Adapters - Markdown++ collision suffix uses the specification's hyphen separator (name-2 rather than name_2) |
EPUB2898 | Formats - Consecutive blockquote-syntax paragraphs publish as one continuous quote in Markdown++ output |
EPUB2904 | Adapters - Markdown++ alias and heading-slug identifiers are NFC-normalized so decomposed accents are preserved |
EPUB2905 | User Interface - Designer Save as Express Project creates a linked .wrp, optionally carrying documents, groups, and Merge Settings |
EPUB2907 | Reverb 2.0 - Splash page Groups Grid of entry-point cards replaces the static splash image |
EPUB2908 | Reverb 2.0 - custom.scss customization layer compiles to custom.css and is linked last on every page |
EPUB2909 | User Interface - Opening a Stationery (.wxsp) starts the New Project from Stationery flow with that Stationery pre-selected |
EPUB2910 | User Interface - Saved toolbar layouts no longer accumulate transient Recent Projects and report entries |
EPUB2911 | Reverb 2.0 - AI Assistant renders the assistant's configured avatar image from the Platform avatar_url |
EPUB2912 | Reverb 2.0 - A Merge Settings container holding a single group no longer fails the build |
EPUB2913 | User Interface - Style Designer multi-select applies one Properties, Options, Target Properties, or Target Options edit to every selected style |
EPUB2916 | User Interface - Style Designer rename resolves the rule collection from the rule being renamed |
EPUB2917 | Core - A project with a volume-relative document path loads instead of reporting an invalid project |
EPUB2920 | User Interface - Synchronization prompt browses the same file types as File > Synchronize with Stationery |
EPUB2921 | Markdown - multiline tables honor the table's Cell Head and Cell Body paragraph formats |
EPUB2922 | User Interface - Style Designer Options tab and style name bold only for options set on the style |
EPUB2923 | PDF - XSL-FO - Graphic style dimension properties size raster images at render time |
EPUB2924 | Markdown - Markdown tables declare column definitions so Table style column-width options apply |
EPUB2926 | PDF - XSL-FO - Apache FOP rendering failure fails the build instead of silently omitting the PDF |
EPUB2927 | Reverb 2.0 - Optimized reader mode: Alt+A jumps to the AI Assistant chat input |
EPUB2932 | Adapters - Markdown adapter rewrites mailto: and other URI-scheme link targets as file paths |