Register

Release 14.354

Version 14 Development

January 30, 2026

Foundry Virtual Tabletop - Version 14 - Developer 1 Release Notes

Release Notes for Foundry Virtual Tabletop Version 14
The Foundry Version 14 Developer 1 release, as shown with the The Restored Keep battlemap by Tom Cartos. Using Foundry V14, you will be able to explore it in an entirely new way! !

A big hello to all our Foundry friends and especially to our community developers! We're incredibly excited to announce that the first Development-phase release of Foundry Virtual Tabletop Version 14 is here.

In the Development phase, our focus is on refining the initial design of major new features and starting to roughing out their user interfaces. As always, we are also focused on iterating on the API for our system and module developers. While we encourage and welcome feedback, please keep in mind that everything is still very much in flux (particularly the user interface!) and is still evolving rapidly.

WARNING: Updates on the Development channel are intended for testing and feedback from the development community. While the features and improvements of these updates may be close to a level of stability intended for public testing, they are likely to still include some bugs and incompatibilities which may frustrate you. It is not intended to use these releases for a live game.

Update Highlights

Along with the usual steady barrage of bugfixes and important API improvements, the Version 14 Developer 1 release features several notable improvements.

Scene Level Improvements: Storm the Castle Like Never Before!

One of the biggest challenges of "top-down" 2D battlemaps is representing areas with multiple vertically stacked "levels", such as the individual floors and rooftops of a castle.

V14 Scene Levels addresses this challenge by vertically "stacking" multiple images inside a single scene, each at a defined elevation. Keeping everything inside one scene makes vision, movement, combat, and loading across levels much more fluid. As of this release, Scene Levels and its supporting user interface elements are now ready enough for curious power users and community developers to really start experimenting.

We eagerly look forward to your feedback and thoughts, but please keep the following things in mind:

  • The Scene Level feature is still in active development and it will continue to evolve significantly
  • Further user experience features and improvements are planned

A Free Multi-Level Castle? Yes, Please!

Speaking of storming the castle, we have collaborated with the excellent Tom Cartos to create a free, fully-configured, multi-level battlemap based on The Restored Keep to demonstrate Scene Levels.

You can use this demonstration scene to test out visibility between levels, see how we set up the four levels of the castle, and try out the new Change Level and Define Surface region behaviors in action.

The top Level of The Restored Keep, with a view of the rooftops and lower Levels.

This battlemap is available in a free, Foundry-VTT-exclusive module. Check out its page here: https://foundryvtt.com/packages/restored-keep-levels!

WARNING: This module requires the V14 Development 1 Release. Once again, Development releases are primarily intended for developers. Do not use this release for a live game.

Introducing the Placeables Pallette

The Developer 1 release also includes a technical preview of the brand new Placeables Palette! This new tool allow you to bulk-edit all selected canvas objects ("placeables"). Additionally, it allows you to preview the values that will be used when you create a new object in the canvas.

This tool was initially created to make placing walls on specific Scene Levels easier and so far it has only been added to the Walls layer, but we may add it to other layers later. Please keep in mind that the Placeables Palette is experimental and its user interface is still under development.

Scene Configuration: Back to Basics

An important design goal for V14 is to make dealing with Levels entirely optional and to avoid complicating the creation of simple scenes.

As part of this goal, we've simplified and reorganized the Scene Configuration dialog so that it now opens to a new Basics tab. The most commonly used options are now all conveniently located there, while more advanced features have been relocated into other tabs.

We've also added a dedicated Levels tab to allow you to manage your multi-level scenes without adding complexity to the rest of the dialog.

Selecting and Live Previewing for All

Previously, certain types of objects in the canvas (Map Notes, Ambient Lights, and Ambient Sounds) could not be selected in groups. In this release, we added a fully functional Select button for these object types so that you can select, move, cut, copy, paste, or delete multiple objects in the usual ways.

We also improved the Configuration dialogs of Map Notes, Ambient Lights, and Ambient Sounds so that they now preview changes in the canvas like all other object types already do.

The first draft of the Placeables Palette as it appears in the Walls layer.

Breaking Changes

Architecture and Infrastructure

  • The migration to ProseMirror is now officially complete, although ongoing improvements will continue to be made. Because Foundry VTT no longer uses it, the TinyMCE dependency has been entirely removed, but we have provided an external integration API that could allow modules or systems to re-introduce it. (12330)

Documents and Data

  • Removed the unused offsetX/Y and rotation attributes from TextureData. (13785)

The Game Canvas

  • Updated scene thumbnail generation to appropriately use either the initial level or the currently viewed level. As part of this change, the properties, src, and texture of the return type of ImageHelper#createThumbnail have been deprecated. (13770)

New Features

Documents and Data

  • Added caching for the return value of SchemaField#entries to capture a meaningful performance benefit during DataModel construction or update workflows. (13534)
  • Added a specialized ContextMenu subclass that re-renders its entries. (13787)

Applications and User Interface

  • In the Region Configuration dialog, added dynamic updating of the disabled state of the Levels and Is Restricted inputs. Also added tooltips to explain why they are disabled. (13733)
  • Added a fully functional Select tool for all types of "placeables" that previously didn't have one (Ambient Lights, Ambient Sounds, and Map Notes). (13772)
  • Added a radius measurement label to Ambient Lights and Ambient Sounds. (13784)
  • Simplified and reorganized the Scene Configuration dialog so that it now opens to a new Basics tab. The most essential and commonly used options for scene configuration can now be found here, and all other options are now shifted to other tabs. (13765)
  • Added "live previewing" for pending changes to the configuration dialogs of the last Document types that were missing them: Map Notes, Ambient Lights, and Ambient Sounds. (13783)

The Game Canvas

  • When changing the level of a token with the Change Level behavior, the destination position is now adjusted so that the token's center point is still within the region. (13737)
  • Added an animation for the changes to token attribute bars rather than instantly displaying the new bar length. (868)

Localization and Accessibility

  • Defined standard LOCALIZATION_PREFIXES for the last remaining document models for all document models which did not yet use them (BaseDrawing and BaseJournalEntryPage). (12739)

API Improvements

Applications and User Interface

  • Added support for adding hint text for Document subtypes. (13760)

Other Changes

  • Added tolerance parameter to PolygonTreeNode#testPoint. Added PolygonTreeNode#findContainingNode, PolytgonTreeNode#findClosestPoint, and foundry.utils.closestPointToPath. (13767)

Bug Fixes

Documents and Data

  • Fixed incorrect leap day calculation in CalendarData._initialize. (13741)
  • Fixed a bug where the type field of the ActiveEffectConfig was only a freeform text input. (13742)
  • Fixed a bug where ActiveEffectRegistry could change expired statuses in-memory, leaving the active GM unable to update or delete them. (13743)
  • Fixed a bug where Scene migration did not handle offsets correctly. (13749)
  • Fixed a bug where ActiveEffect#expiryReached did not check that triggering event matched the Effect's own expiry event. (13752)

Applications and User Interface

  • Fixed a bug with the Scene Navigation UI where the Configure context menu could open the wrong Level Configuration dialog if you were viewing one scene and a different scene was active. (13751)
  • Split the Region Config Area tab into the Shapes and Placement tabs and ensured both new tabs can be scrolled. (13753)
  • Fixed a bug where theme styling (notably Light Mode) did not apply to the font color of <dt> elements. (13721)
  • Prevented a non-functional Import Document button from displaying on Adventure Documents. (13779)
  • Fixed a bug where the color-scheme css property was not set properly for the #interface and #hud elements of client markup. (13734)

The Game Canvas

  • Fixed a bug where triggering a scene transition while another one was ongoing broke the canvas. (13622)
  • Fixed a bug where scene transitions accidentally revealed the scene for users who did not own a source of token vision. (13623)
  • Added safeguards so that attempting to load a scene containing a non-existing transition type no longer prevents loading any scene. (13630)
  • Fixed a bug where canvas.masks.vision for players was cleared unexpectedly after the scene transition animation ended. (13739)
  • Resolved an issue where the positioning of a viewed level incorrectly affected other visible levels. (13758)
  • Fixed a bug where status effects were not shown on the token when added via ActiveEffect.fromStatusEffect. (13759)

Localization and Accessibility

  • Fixed localization for the tooltip of the Collapse/Expand Sidebar button. (13747)
  • Fixed localization of the package version in the Install Module and Install System dialogs. (13748)