Register

Release 13.347

Version 13 Stable

August 06, 2025

Foundry Virtual Tabletop - Version 13 - Stable Release Notes

Release Notes for Foundry Virtual Tabletop Version 13
Welcome to the Foundry Virtual Tabletop update notes for Version 13.347

We're very pleased to be able to offer the latest iteration on V13. This update focuses almost entirely on resolving bugs and addressing some small pain points that our community has experienced over the course of the V13 development cycle since stable. As a 'maintenance' update, V13 Stable 6 contains a variety of small changes rather than introducing any big new features, but many of these changes should help to further shore up the stability of V13.

WARNING: While this is categorized as a stable release there is always a possibility of unexpected bugs or compatibility issues. As with any time you update the core software, be sure to perform a complete backup of your user data to minimize any risk of data loss.

New Features

Applications and User Interface

  • The current movement action is now always shown as an option in the Token Config, Token HUD, and while cycling movement action types, even if it is not selectable at the moment. (13093)
  • The Chat Log sidebar tab HTML now includes a shared .chat-controls div container between ChatLog and Notifications. (13153)
  • MeasuredTemplateConfig is now scrollable to allow for cases where a module may have added additional fields. (13244)
  • Controls provided by a game system are now placed between core controls and module-provided controls on the ControlsConfig application. (13259)

API Improvements

Documents and Data

  • It is now possible to specifically exclude certain HTML header elements from the Journal table of contents using the new data-no-toc attribute. (8106)
  • Added clarifying documentation to CalendarConfigSeason to clarify the purpose of dayStart and dayEnd as they relate to the range of a season. (13209)

Applications and User Interface

  • The warning displayed if an AppV2 class cannot be rendered has been improved for clarity. (13261)
  • CompendiumCollection#migrate UI notifications can now be suppressed using the new notify option. (8004)
  • It is now possible to pass a pre-existing Sound instance to canvas.sounds.playAtPosition. (13262)
  • foundry.utils.SortingHelpers now displays its intended deprecation warning. (13240)

The Game Canvas

  • DoorMesh texture grid size can now be configured using CONFIG.Wall.textureGridSize. (13232)
  • Added a non-enumerable, immutable static _isShaderFieldCompatible flag to mark AbstractBaseShader. ShaderField has also been migrated to common. (13034)

Bug Fixes

Documents and Data

  • Combatant#actorId is now set in cases where the combatant is created using only sceneId and tokenId. (13095)
  • TerrainData#difficulty now prepares correctly using Infinity if the source difficulty is null. (13137)
  • Documents in adventure compendia now preserve the default ownership data of exported documents only in cases where the ownership data is set. (13144)
  • @Embeds now render HTML characters in TableResult names as expected. (13149)
  • Embedded RollTable result names are now excluded from the Journal Table of Contents. (13180), (13184)
  • CalendarData#componentsToTime() now accounts for leap years. (13219)
  • SchemaField#apply and ArrayField#apply no longer incorrectly attempt recursion for values of the wrong type (undefined, null, etc.). (13265)
  • Document.create now sets a default for its data parameter. (13150)
  • Corrected an issue which caused FormDataExtended to fail when processing input fields named length or item. (13158)

Applications and User Interface

  • To resolve issues with chat messages appearing out of order due to users with system clocks that are out of sync, we have reverted a change to chat message sorting in the ChatLog to sort by order of creation rather than by timestamp. (13224)
  • Corrected an issue which caused some Chat Messages to be displayed twice if they were updated within 100ms of creation. In addition, ChatLog#updateMessage has moved into the render queue. (13067), (13257)
  • The /ooc command now displays the Author name instead of the name of the assigned character. (13109)
  • Chat message pop-outs now have their titles suppressed if the content was not otherwise visible. (13155)
  • Prosemirror HTML now checks for the presence of this.#content before attempting to add values to its innerHTML. (13256)
  • Deletion of a parent document now closes any open Sheets for embedded documents of that parent. (11934)
  • Corrected an error that caused progress bar notifications to sometimes fail to render their background colors. (12558)
  • Resolved issues with A/V chat integration. Rerendering of windows no longer causes visual artefacts to appear above the video stream and audio output now works as expected when video is disabled. (12879), (13245)
  • To correct an issue with the drag measurement ruler flickering during token movement animations as each waypoint is reached, the ruler is now displayed while the movement is pending even if the animation has finished. (13071)
  • The button for linking and unlinking combats to scenes has returned in a new form, as a context menu option. (13092)
  • Form submission functions are now prevented when TokenHUD inputs are focused to prevent unintentional changes. (13115)
  • Token ruler path segments with infinite cost are now visualized as unreachable. (13138)
  • Door animations set to ascend now animate their change in alpha. (13157)
  • Progress notifications no longer close when the permanent option is set even in cases where the progress is set to 100%. (13179)
  • The file input field is now hidden when using the Folder Browser mode of FilePicker. (13210)
  • Corrected an issue with anchor tags on the ActiveEffectConfig Changes tab which resulted in errors when trying to remove a change in cases where the config sheet may be locked. (13215)
  • Importing a playlist from exported JSON now imports the sounds for that playlist as expected, even in cases where the sounds point to external links. (13216)
  • JournalSheetV2 now uses a single SearchFilter that persists for the duration of a JournalEntrySheet instance. (13221)
  • Corrected an issue that would cause Adventure Documents to fail during a rebuild if the Adventure contained documents that longer existed. (13228), (13277)
  • Setup screen tours, including the System Installation tour, now launch as expected. (13246)
  • FilePicker.implementation now references FilePicker in its warning messages rather than incorrectly referencing TextEditor. (13111)
  • Corrected an issue which caused the Combat Tracker to lose scroll position when re-rendering. (13274)
  • Changing elevation during a move action while in an active combat no longer displays "NaN" as its ruler label. (13279)

The Game Canvas

  • Token ruler waypoint cost label for measurement of other users are now rendered correctly if the movement cost is infinite. (13107)
  • In cases where the user has disconnected during a move, the Movement is now terminated rather than remaining in a pending state. (13168)
  • SquareGrid#getCircle no longer returns duplicate points. (13264)

Package Development

  • Module Management now checks system module dependencies during module activation and deactivation to resolve issues which caused difficulties with recognition of dependencies for modules that declared the same dependencies as the system. (13197)
  • core.compendiumConfiguration now uses DataField validation to prevent cases where a corrupt compendium configuration could prevent a world from loading. (13225)

Localization and Accessibility

  • Corrected an invalid localization string in ActiveEffect#_getDurationLabel. (13182)
  • Corrected a missing localization string for Hotbar##prepareSlots. (13276)

Documentation Improvements

Documents and Data

  • Optionally updating Ownership during a Show Players workflow now saves the change as expected. (13213)

Applications and User Interface

  • API documentation for getSceneControlButtons now includes documentation of all control properties and a few practical examples. (12903)

The Game Canvas

  • The instanceof check for the PrimaryGraphics constructor now updates correctly when swapping the parent class. (13170)
  • The RenderFlags constructor now uses the correct type for priority. (13171)

Dice and Cards

  • Updated the documentation for Number#signedString to make it more clear that its purpose is for text presentation rather than numerical comparison. (12766)