May 29, 2024
Foundry Virtual Tabletop - Version 12 - Stable 2 Release Notes

Welcome to the second release of Foundry Virtual Tabletop Version 12. We're extremely pleased to bring this update to our community, containing a wide variety of bug fixes sourced from the feedback and bug reporting channels on our community disccord. Thank you all for submitting your feedback and helping us stay on top of bugs!
This update focuses on some post-release cleanup of bugs for Foundry VTT V12. For a complete log of all the features added in V12, please see the notes for our first release on the stable channel.
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
The Game Canvas
- Restored Wall endpoint snapping in gridless grids. (11081)
- Replaced the private
AmbientLight#emitsLight
with the protectedAmbientLight#_isLightSourceDisabled
. (11086) - Adjusted the prioritization for the active Vision Mode when multiple Tokens are selected. (11035)
- Added deprecation warnings to
TilesLayer#roofs
andTile#isRoof
since they rely on the already deprecatedTileDocument#roof
. (11044) - Improved Ruler label placement in gridless Scenes. (11045)
- Holding SHIFT now consistently disables snapping even if Force Snap to Grid Vertices is enabled. (11071)
Package Development
- We now avoid double-counting package warnings for deprecated fields that have been explicitly migrated. (10989)
Dice and Cards
Bug Fixes
Documents and Data
- The
enrichHTML
method no longer prevents a sheet from loading when it encounters a link to a non-existent Compendium. (10988) - Fixed an issue with the initial setting of the performance mode which resulted in a validation error when resetting the game settings back to default. (11007)
- Documents that contain a
FilePathField
with base64 data will now migrate correctly. (11015) - A range picker's minimum is now set to the step size for a positive
NumberField
. (11039) - The
Scene#createThumbnail
method now correctly accounts for Tile elevation. (11057) - The Combat Tracker now correctly renders when a Combatant is modified. (11062)
- When determining the initial
img
field's value, Foundry now redirects to the implmentation'sgetDefaultArtwork
. (11074)
Applications and User Interface
ClientDocument.createDialog
no longer throws an error if the Document has type data but no sub-types other thanbase
. (11083)- The share data usage popup now correctly refers to version 12. (10998)
- Playlist sounds are now only synced on update if game audio is unlocked. (11008)
- Fixed an error that occurred when attempting to auto-preload the next Sound that should play in a Playlist. (11009)
- Corrected the hint for the Vision Enabled field. (11011)
- When creating a new script Macro on the hotbar, clicking the Execute button now saves the Macro before executing it. (11026)
- Made the
AmbientLightConfig
sheet tolerant of cases where you switch the canvas layer before submitting the form. (11076)
The Game Canvas
- Uncontrolled Tokens with vision no longer remain a source of vision when another Token with vision is controlled by a non-GM player. (11016)
- Updating a Drawing's text once again correctly refreshes the canvas Placeable. (11056)
- The
easing
option ofToken#animate
is now correctly applied. (11084) - Tokens now once again correctly emit light even after a page refresh. (10997)
- The grid change preview is now correctly reset when closing the Scene configuration window. (10999)
- The scrolling status text container is no longer interactive which fixes an issue that prevented interacting with Placeables below it. (11001)
- The canvas is no longer unnecessarily being redrawn when the Scene configuration is submitted without changes. (11002)
- We now render the detection filter but not others on Token meshes which resolves an issue where the glow effect was not visible on invisible Tokens. (11006)
- The canvas no longer crashes if a Token is created with data containing the ID of a Token that already exists in the Scene. (11012)
- Rotating a drawing with text no longer results in the text being rotated twice. (11013)
- The active Vision Mode is now initialized after vision sources are initialized. (11017)
- The ring color no longer becomes black after
TokenRing#flashColor
is run. (11018) - The Prototype Token Dynamic Token Ring settings are now properly saved. (11030)
- We now override Tile vision occlusion behavior with a fade effect when a Token without vision is controlled and the Tile is occluded. (11032)
- The initial value of
Scene#environment.globalLight.luminosity
was unintentionally and incorrectly set to 0.5 (the default value for normal light sources). We added a migration that reset the global illumination luminosity to 0 for all Scenes to correct this issue. Global Illumination will provide the same brightness level as in V11 by default after the migration, which is no visible brightness change when it is toggled on. (11038) - Scene controls are now re-rendered when running
InteractionLayer#activate
regardless of whether the layer is already active. (11042) - Light level correction is no longer applied to vision and the global light source is no longer rendered when there's no global light. This fixes an issue that prevented the darkvision Vision Mode from appearing correctly. (11048)
- Improved Token Ring subject texture loading during
Token#_draw
. (11068) - The Token render flag
refresh
now propagatesrefreshRingVisuals
. (11072) - Preview darkness sources no longer incorrectly suppress light and vision sources. (11088)
Dice and Cards
Cards#sortStandard
no longer fails ifCard#suit
isundefined
. (11085)- Fixed an issue with
FunctionTerm
serialization that led to some dice terms not displaying the dice that were rolled as part of their evaluation. (10995) - Deterministic evaluation options no longer prompt for interactive rolls which prevents an issue where rolling on a Roll Table would sometimes prompt for manual input. (10996)
Localization and Accessibility
- If
ClientDocument.defaultName
is not defined in the system the localization now falls back to the Document name. We also fixed a localization issue in thecreateDialog
's type field label. (10959) - We now ensure that
Localization.#localizeSchema
uses fallback translation keys for cases where a field is translated in English but not in the currently chosen language. (11003) - The
ClientDocument.defaultName
now uses the label configured inCONFIG.{Document}.typeLabels
instead of the defaultTYPES.{Document}.{type}
. (11029)
Other Changes
Documentation Improvements
Other Changes
- Corrected the
EffectsCanvasGroup#getDarknessLevel
method's return type to be a number. (11060)