May 20, 2026
Foundry Virtual Tabletop - Version 14 - Stable 4 Release Notes
Today brings the release of Foundry Virtual Tabletop Version 14 Stable 4 (14.362)! This is the third Stable update patch for Version 14 and it features a few tasty improvements to go along with the usual healthy helping of bugfixes:
- A visual and functional pass over the Scene Navigation interface, including adding the ability to activate a specific level
- Improvements to texture loading through native support for optimized graphics textures
- More love for Foundry VTT's new and experimental integrated Particle Generator API
Because this is a relatively minor patch update, if you already installed Version 14 Stable 1 (14.359) or Stable 2 (14.360), you will not need to do a complete reinstallation.
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.
Known Issues
When using either the native Electron app or Chrome, certain distributions of Linux may encounter some graphical issues related to surface occlusion. If you suspect that you may be experiencing this, we recommend temporarily using an alternative browser like Firefox.
New Features
Architecture and Infrastructure
- Removed the unused
PlaceablesLayer.SORT_ORDERfrom the API. (14353)
Documents and Data
- Improved the embeds for results of Rollable Table that contain Actors so that any available descriptive text is now also included. (14341)
- Allowed Assistant GM users to control the "Automatic Token Rotation" and "Animate Roll Tables" without specifically needing the
SETTINGS_MODIFYpermission. (14391)
Applications and User Interface
- Added a new option to preload Playlists and Scenes to the context menu of their sidebar tabs. (13010)
- Added a warning message under the Token Image Path field to clearly indicate when it is overridden by a dynamic token ring's subject texture. (12666)
- Improved the clarity and consistency of the Scene Navigation interface in several small ways, including changing the icons used for the viewed and active scenes. (13821)
- Added a "Pull Everyone" option to the context menu of each individual Level in the Scene Navigation interface so you can now pull all users to that Scene and Level. (14235)
- Added an "Edit" option to the context menus of all documents in the sidebar. (14405)
API Improvements
Documents and Data
- Allowed Tile textures, Level background/foreground textures, and fog textures to use
.ktx2and.basisimage files. (14390)
The Game Canvas
- Improved KTX2 texture loading. Foundry now uses
libktx, the official KTX library from the Khronos Group. This provides more reliable handling of complexKTX2assets in modules and systems without requiring a new API.KTX2assets can also include embeddedmiplevels, which Foundry will automatically use when present. (14343) - Expanded
ParticleGeneratorruntime controls while preserving legacy configs. (14393) - Added the Cull Tokens option to the Define Surface behavior to optionally allow surfaces to also block the visibility of tokens for GMs and Players who do not have controlled Token(s). Normally, surfaces only block visibility when viewing the canvas from the perspective of one or more controlled tokens.(14387)
- Added support for polygon trees as
ParticleGeneratorConfiguration#area. (14369)
Bug Fixes
Architecture and Infrastructure
- Fixed a Linux-only issue where Light Animations and Weather Effects were sometimes not functional. (14219)
- Fixed a bug where universal builds failed to open on older versions of macOS. (14296)
Documents and Data
- Fixed a bug where
TypedObjectField#_getFielddid not always return an element field when expected. (14300) - Prevented a warning that was thrown when marking a
Combatantas defeated via theCombatTracker. (14364) - Fixed a bug where
validateJointsaved data even if an exception was thrown. (14370) - Fixed a bug where adjusting time by sufficiently small increments (relative to overall duration) did not trigger
Actor#onUpdateEffectDurations. (14365) - Fixed a bug where
ActiveEffect.#castDeltacalled_replaceDataRefsonthisrather than deferring to the implementation. (14354) - Fixed a bug where
ActiveEffect#toCompendiumwas not clearingoriginproperly. (14371) - Fixed a bug where a nullable or non-required
SchemaField-defined value could be updated to an invalid state. (14377) - Fixed a bug where
ActiveEffect.fromStatusEffectwas not called with options{parent: this}inActor#toggleStatusEffect. (14378) - Fixed a bug where some calls to
DataField#getInitialValuecould pass undefinedsourcearguments. (14388) - Fixed a bug where the
ArrayFieldsofEmbeddedDataFieldcould fail to correctly propagate_state.model. (14335) - Fixed a bug where deleting an effect did not remove it from the registry. (14366)
- Resolved an issue where some core
AppV2s still defined thesubmitOnCloseoption even thoughAppV2does not support it. (14204)
Applications and User Interface
- Fixed a (harmless) console error that often appeared when opening any Palette (
el.parentElement is null, reading offsetWidth). (14317) - Fixed a bug where the Placeable palette was missing its Apply button after the locked state of a controlled item changed. (14330)
- Fixed a bug where characters in the destination names of the Teleport Token confirmation dialog were accidentally escaped a second time. (14340)
- Fixed a bug where non-GMs did not have access to the Region palette and instead saw the following error:
You do not have sufficient permission to view the sheet for this Region. (14376) - Fixed a bug where the world settings that Assistant GMs can change without the
SETTINGS_MODIFYpermission were not rendered in the Settings Configuration unless they were also specifically assigned theSETTINGS_MODIFYpermission. (14380) - Fixed a bug where filtering Ambient Lights by color failed. (14383)
- Resolved an issue where the styling for Journal content lists was scoped too broadly. (14358)
- Fixed a bug where the id of the Compendium ownership dialog lacked a discriminator. (13478)
- Fixed a bug where setting the Application Color scheme to Light also incorrectly applied to the Status Effect HUD of Tokens. (14347)
- Added scrolling to the Drawing Settings dialog. (13699)
- Fixed a bug where bulk editing multiple different-colored Ambient Lights but leaving their colors unchanged caused all light sources to reset their color to "no color." (14382)
- Fixed a bug where the "View Token Artwork" context menu option for unlinked tokens showed the Prototype artwork instead of the individual token's artwork. (13540)
- Fixed a bug where detached windows were not inheriting their window title from the app title. (14374)
The Game Canvas
- Fixed a bug where the canvas froze for an extended period of time when bulk (un)locking and (un)hiding many placeables. (14338)
- Fixed a bug where the Teleport Token behavior did not change the view to the destination level for GMs due to an issue with
Token#segmentizeRegionMovementPath. (14344) - Fixed a bug where changing the level of a number of tokens at once caused the destination level to be repetitively loaded for each individual token. (14345)
- Fixed a bug where the Teleport Token/Change Level behavior did not change the view to the destination level if the player still owned other tokens in the origin level. (14346)
- Implemented the pre-existing but previously unused
ChatBubbles#bubblesproperty so that it is now a repository of active chat bubbles and theids of their tokens. (13156) - Fixed a bug where
PrimaryOccludableObject#isOccludablewas incorrectly returningtruewhen the occlusion modes of the object did not requirePrimaryOccludableObject#occludedto be set. (14392)
Localization and Accessibility
- Added missing localization for the "Author", "Authors", and "URL" fields in the Module Management dialogs. (14401)
Other Changes
- Resolved an issue where the markup of minimized, detached windows was rendered as plaintext. (14352)
- Fixed a bug where PDF-type journal pages were not rendered. (14361)
- Fixed a bug where
HandlebarsApplicationMixindid not restore the focus state after using a root partial. (13517) - Fixed a bug where
foundry.documents.modifyBatchthrew anundefinederror message. (14356)