Commit 3de74224 authored by Andrew's avatar Andrew

Add 0.3.6 release notes

parent c352844d
<h2>Beta 0.3.5 Update Notes</h2>
<p>Hello tabletop friends! Foundry Virtual Tabletop update <code>0.3.5</code> is here with a fresh round of feature enhancements, bug fixes, and underlying software and API improvements. The centerpiece of this update is a major new system for Foundry Virtual Tabletop with the addition of <strong>Drawing Tools</strong> which allow for improvised freehand sketching or shapes which can be highly customized with line, fill, and text styles. Additionally, this update adds improvements to the Item Sheet API, and new features for the Combat Tracker, Measured Templates, as well as a host of bug fixes and minor improvements.</p>
<p>Thank you all for appreciating my work, providing thoughtful feedback, and encouraging me to do even more. Stay tuned in the next couple days for an additional post sharing some reflection on the past year and plans for the official product release. As always, please keep an eye on the development progress board here for visibility into what features are in progress and coming up next!</p>
<p><a href="" target="_blank" title="FVTT Story Board"></a></p>
<h3>New Features</h3>
<li>The addition of Drawing Tools is a major milestone for Foundry Virtual Tabletop, as this was one of the few outstanding systems that is critical to support for a modern VTT. I would like to thank all the testers and community members who have been exceptionally patient with me while I reluctantly dragged my heels on tackling this major feature. I would also especially like to thank KaKaRoTo who did some extremely useful prototyping and was a helpful collaborator while I worked through the implementation of this system. Please thank him if you see him in Discord and be sure to support his other exciting FVTT related projects.</li>
<li>Drawing Tools are a new layer of the game canvas, positioned above the Background and Tiles, but just below the Grid and other placeable objects. Four types of drawings are supported: rectangle, ellipse, polygon, and freehand. Each drawing can be created, transformed, and independently configured. Drawing data is vectorized for efficient storage and flexibility.</li>
<li>Added a Drawing configuration sheet to fine-tune the properties of your drawings - customize the line art, fill color or texture, and overlay text for each drawing. Additionally, clicking the gear icon in the scene controls allows you to customize the default drawing setup for any future artwork.</li>
<li>Added a Drawing HUD activated via right-click on a placed drawing which can control the visibility and locked state of the drawing as well as adjust its z-index sorting. More on this in the following point.</li>
<li>Added support for z-index sorting of Drawings and Tiles. This allows you to customize which objects are rendered above or below others to control layering when using many tiles or drawings. Shifting the z-index of a Drawing or Tile is available through it's HUD controls activated on right-click.</li>
<li>Updated the core software to PIXI version 5. This is a major release with some very significant long run benefits for the project. I'm really excited about this update as it unlocks the potential of WebGL2 that will be applied in more places, providing continued performance improvements as well as substantially added flexibility for Graphics geometry - which is already taken advantage of within the new Drawing tools. For those of you whom are interested in the underlying technology, you can read more about the new PIXI major version here:</li>
<li>Migrated the core software to upgrade to the TinyMCE 5.x editor which includes several bug fixes and a more streamlined UI.</li>
<li>Migrated the application nativization layer to Electron 6.0. This is an optional update that will eventually roll out to all users but is available immediately for anyone who downloads a fresh version of FVTT. The Electron application is not updated through the internal auto-updater, so if you want to get the latest Electron build of the Foundry Virtual Tabletop app, you can consider re-downloading a new full version. There are no meaningful benefits at this time aside from general modernization.</li>
<li>Item Sheets can now be configured on a per-type and per-entity basis the same way that Actor sheets can be configured and overridden. This allows for modules to define custom Item sheets which only are used for a specific Item type (like a Spell, or a Weapon) while individual items can change the sheet type used for that particular item. I am excited to see how this new level of flexibility for displaying Item sheets generates a new wave of creations and ideas from the modding community.</li>
<li>Improved the UX around token dragging for tokens larger than 1x1 base. Previously some visually inconsistent results could occur where the preview "shadow" token and the true final position of the Token once dropped were inconsistent.</li>
<li>Whisper message targets are now regex matched in a case-insensitive way with added support for special unicode or foreign characters allowing for more broad and consistent coverage of private chat messages.</li>
<li>Added a Combat Tracker configuration option to automatically skip defeated combatants in the turn order. This option can be turned on by clicking the gear icon at the top of the tracker. Defeated combatants will only be skipped when moving forward in the turn order, you can still go backwards to return to a skipped combatant.</li>
<li>Added internationalization string translations for Scene Controls and Tools.</li>
<li>Holding the ALT key while pasting (CTRL+V) copied Tokens will result in those Tokens being created in an initially hidden state the same way that holding ALT during a drag+drop Token creation creates a hidden token.</li>
<li>Added a distance tooltip text to Measured Templates which clearly states the distance of effect for the placed template both during the creation process as well as whenever you switch back to the Measured Templates layer in the Scene Controls.</li>
<li>The vertical scrolling position of all Sidebar containers are now remembered, so that when a sidebar is re-rendered your previous scrolling position will be automatically restored, creating a more smooth user experience.</li>
<h3>Core Bug Fixes</h3>
<li>Fixed a somewhat rare but serious edge case failure with Token vision and wall collision which could occasionally allow tokens to see or move through walls when those walls perfectly bisected the diagonal of a grid square and the Token was approaching that bisecting wall from a particular direction of movement.</li>
<li>Resolved a significant problem with movement of non-player tokens which would result in the visibility state of the token not being updated when it moved into or out of field-of-view for the player token.</li>
<li>Fixed a bug with socket listeners for world Setting changes which were incorrectly double-parsing JSON content of the settings and potentially triggering errors in some situations.</li>
<li>Fixed a rendering problem with MeasuredTemplate objects which would cause the grid highlighting to often become completely wrong when the template was re-painted.</li>
<li>Corrected a bug which could sometimes incorrectly require the use of brackets around names for whispered chat messages even if the target name was a single recipient without any spaces in their user or character name.</li>
<li>The user-provided update key is now trimmed of leading or trailing white space to avoid a common pitfall that several users have encountered while updating to a new version.</li>
<li>Special characters are now supported in dynamic entity links, allowing for more reliable linking of content - especially in foreign languages.</li>
<li>Improved some failure modes around wildcard patterns for random token artwork. Note that while some failure modes were addressed, there is still a known failure which arises for Windows users when the wildcard path contains bracket characters. This is due to a bug in an upstream parsing package for which there is no current workaround. I strongly recommend avoiding brackets in file paths for VTT content as they are not web-compliant and will be a likely source of trouble.</li>
<li>Fixed a bug which could prevent module registered settings from being properly configurable within the Configure Settings menu.</li>
<li>Corrected some errors for the Microsoft Edge browser resulting from implicit catch blocks which are not supported by the Edge spec.</li>
<li>A bug when unlocking or locking doors could incorrectly cause the wall highlight to be shown temporarily. This no longer occurs.</li>
<li>Prevented a failure mode through which dice rolls for Tokens without a valid referenced Actor would fail rather than evaluating against an empty data object.</li>
<li>Corrected a problem with the <code>Roll.alter()</code> method which was not properly altering the contents of a Roll object because of changes to the initialiation process for Rolls.</li>
<li>Fixed a problem which could lead to the loss of content from a TinyMCE editor when the user followed a certain workflow that resulted in the app re-rendering during the midst of saving edits.</li>
<li>Prevented a failure when copying Items from a synthetic Token sheet that prevented those items from being appropriately named in their transferred data.</li>
<li>Refactored the Entity Sheet registration process to generalize across any arbitrary number of Entity types. These improvements were in support of the configurable Item Sheet changes referenced above.</li>
<h3>Core Software, APIs, and Module Development</h3>
<li><strong>Breaking Change:</strong> Support for glob-style inclusion of static scripts and styles in modules and systems has been deprecated, effective immediately. I apologize to any community developers who are impacted by this change, however the number of potential edge cases that users can experience from inconsistent glob pattern parsing for different root paths of Foundry Virtual Tabletop can make errors which occur as a result of glob parsing extremely difficult to reproduce or track down. Having seen some of these issues come up, I have decided it is better to rely upon explicit file paths for script and style inclusion rather than pattern matches. Please update your <code>module.json</code> or <code>system.json</code> files accordingly if you were previously using a glob-style pattern to include static content.</li>
<li>Continued work to expand the coverage of server-side data validations when new data is written or updated in the database. These additional validation checks help to assert the data quality that is entered, avoiding potential future bugs. Several new checks have been added for core entity types as well as to many attributes for placeable objects which were previously optional and now are required and validated.</li>
<li>Improved the logic used to initialize the game session when the window is first loaded to avoid possible race conditions between DOM initialization and JavaScript loading.</li>
<li>The server-side System object has been refactored to improve it's usefulness and avoid needlessly exposing server-side file paths to clients when the System data is serialized for vending to the connected user.</li>
<li>Added a boolean flag to each module in <code>game.modules</code> to denote whether or not that module is currently active in the World.</li>
<li>Implemented a performance improvement to the rectangular select tool to enable it to reduce the number of object control or release operations required to only operate against the differential set instead of against all selected objects.</li>
<li>Added support for a new "button" type scene control in addition to tools and toggles. Button type controls will fire their callback once clicked, but not become an active tool.</li>
<h3>D&D5e System Improvements</h3>
<li>The complete set of CR 1/8 monsters supported under the OGL has been fully configured for use in the Monsters SRD compendium complete with beautiful Token artwork from Stryxin and Forgotten Adventures and custom creature biographies courtesy of Penelope (Vyrnali). Thank you both so much for your fantastic contributions to the D&D5e system!</li>
<li>Fixed a bug with consumable Item sheets in the 5e system which prevented the maximum number of charges from being editable.</li>
<li>Added a standalone Gulp script to the 5e codebase for building the JavaScript and CSS distributables.</li>
<li>Newly created Items in the D&D5e system will have an empty string as their description instead of undefined.</li>
<li>Fixed a pathing issue for D&D5e system compendium packs which was initially introduced (and later hotfixed) with the 0.3.4 release.</li>
Version 0.3.5, 2019-08-19
.. raw:: html
:file: notes-0.3.5.html
<h2>Beta 0.3.6 Update Notes</h2>
<p>Greetings friends. I'm proud to share a new Foundry Virtual Tabletop beta update. This update has some major and substantial updates to core systems and software - focusing on improving the stability and consistency of key systems. The biggest improvement in this update is the new redesigned Configuration and Setup experience which gives a centralized management panel for Systems, Modules, Worlds, and core VTT software updates. The experience for installing and updating new community content has never been easier. In addition to this major new feature, there are a ton of quality of life improvements and bug fixes designed to smooth out some of the rough edges introduced in previous updates. I am proud of this set of changes and know it will serve me well as I continue development of new tools and functions looking ahead towards 0.3.7. Thank you all for your continued encouragement and sharing of this project - your help in spreading the word and supporting my work means so much to me.</p>
<p>Thank you all for appreciating my work, providing thoughtful feedback, and encouraging me to do even more. As always, please keep an eye on the development progress board here for visibility into what features are in progress and coming up next!</p>
<p><a href="" target="_blank" title="FVTT Story Board"></a></p>
<h3>New Features</h3>
<li>Implemented a major new feature which redesigns the <strong>Configuration and Setup</strong> page of Foundry VTT. This new page is far more powerful and functionality rich. From this centralized landing page you can update the core software, install and update Game Systems, install and update Modules, and create and manage Worlds. Systems and Modules can be installed directly with one-click by providing a link to their manifest (module.json or system.json) file. Installed Systems and Modules can be easily and automatically checked for updates and updated if a new version is available. I am very excited for this change as I believe it will make the process of installing and managing community created content much easier in Foundry VTT, further empowering the awesome module and system developers who are hard at work in the community.</li>
<li>Redesigned the Game Settings menu to support separate tabs for Core, System, and Module settings while sorting the displayed modules alphabetically for improved organization.</li>
<li>Due to the introduction of the new Configuration and Setup page which handles Module installation and updates, the ability to update Modules while inside an active World has been removed. This is a good change, as updating modules "in flight" caused some problems and complexitities which were not always well handled. You still configure which Modules are active within a World using the same Manage Modules application as before.</li>
<li>The display of Tokens on Hexagonal Grids has been improved so the bounding box for the token mirrors the hex dimension, instead of being too wide or too tall for the shorter side of the hex.</li>
<li>Files and Folders displayed in the File Picker will now be sorted alphabetically in a case-insensitive way. Previously lowercase names were sorted after uppercase ones (per Unix convention).</li>
<li>Formatting of the exported text chat log file has been improved to add more detail about dice rolls, showing both the initial formula, and the rolled result (including all rolled dice).</li>
<li>Incorporated localization support for the Scene Configuration sheet. Thanks to Ayan for contributing an updated HTML template and translation string keys.</li>
<li>Improved the sorting logic for Combatants, adding an additional sorting layer after initiative score and name for the Token ID to ensure that the resulting sort order is always deterministic.</li>
<li>You may now include some additional flavor text along with any dice roll submitted in the chat window by separating the roll portion of the command with a <code>#</code> character. For example <code>/roll 4d6kh # Rolling for ability scores!</code>.</li>
<li>Added additional buttons to the Settings sidebar as an alternative way to return to key setup menu screens. There are new buttons for "Return to Setup", "Configure Players", and "Log Out".</li>
<li>Added a new button on the Settings tab of the sidebar to render the Community Wiki documentation in a pop-out iframe. Many thanks to errational, CyberPathogen, and the many other wonderful curators and contributors of the community wiki for creating this helpful resource.</li>
<li>The ability to export-to-JSON and import-from-JSON has been added for more Entity types - including Items, Journal Entries, and Scenes. Previously only Actors had this capability.</li>
<li>Added localization support for context-menu options on Sidebar Directory containers.</li>
<li>Added a new Journal Entry context menu option to Duplicate an existing entry, as was possible for other Entity types.</li>
<li>Improve the hit area definition of newly added Drawings from the 0.3.5 update so they are easier to select and manipulate once drawn.</li>
<li>Made a change which allows chat commands to span multiple lines without being incorrectly truncated.</li>
<li>Users who have "Limited" permission to a Journal Entry will now be able to see Map Notes placed for that entry, but will not be able to inspect the details of the note. This can allow GMs an alternative option for label significant locations without revealing details about those locations to players or needing to keep those details in a separate entry.</li>
<li>A User's chosen color is now shown as a border around all out of character chat messages sent by that User.</li>
<li>The syntax for sending whispered messages in chat has been made more flexible to support <code>/w</code> and <code>/whisper</code> prefixes in addition to the previous @User syntax.</li>
<li>Web URLs posted in chat messages will be automatically converted to a clickable hyperlink.</li>
<h3>Core Bug Fixes</h3>
<li>Fixed an issue with attempting to add an Owned Item directly to an Item type compendium.</li>
<li>Changing the Actor that a Token references would not fully take effect until a hard refresh, as double-clicking the Token would continue to open the old Actor's sheet.</li>
<li>Fixed a problem with IP address identification which sometimes resulted in the local and internet IPs not being properly displayed.</li>
<li>Solved a problem for newly created Actors which prevented the <code>img</code> attribute from being initially present in their prototype Token data model.</li>
<li>Hardened a loophole with EULA acceptance which previously allowed you to simply close the window to dismiss the agreement without later prompting.</li>
<li>Applied a fix for the PIXI v5 update which caused a vertex buffer overflow when rendering large Graphics objects (like big Hex grids). This caused hexagonal grids to no longer render after some number of polygons.</li>
<li>Fixed a problem that occured when deleting a World-level compendium pack which had not yet connected to its database.</li>
<li>Removed visibility of the "Delete All" button on the Measured Templates layer for players who could not use that button as they lack GM permission.</li>
<li>Made a change to lock tiles while they are in the middle of a drag workflow. Previously the Tile could be rotated via mousewheel while mid-drag causing server desynchronization problems.</li>
<li>Applied an additional check to prevent Compendium pack paths from being written to world files as absolute paths instead of relative to the World directory as intented.</li>
<li>Fixed an issue since the PIXI v5 migration which prevented Scene background color from being properly applied.</li>
<li>Corrected the rendering of large hex grids in 0.3.5 which produced an incorrect offset with artifact lines.</li>
<li>Improve the vertical spacing of TinyMCE editors since the v4.x update in 0.3.5 to make better use of the bounding container.</li>
<li>Fixed an order-of-operations problem with the <code>unregisterSheet</code> method which caused it to incorrectly clear a previously registered sheet for all Entity types, even if a specific type of entity to no longer use the sheet for was specified.</li>
<li>Improved the logic of the version comparison function used to detect module and system update availability to work for more types of versioning schema.</li>
<li>Fixed a bug in the "Simple Worldbuilding" system which prevented Owned Items from being properly editable.</li>
<li>An unintentional "feature" in 0.3.5 caused mousing over a Polygon point during a drawing creation workflow to undo that point. This, while sometimes nice, was an unintentional workflow that could sometimes produce frustrating results and has been removed.</li>
<li>Fixed a bug whereby an Owned Item could be dropped on the Actor who owns it, thereby duplicating the item data in that Actor.</li>
<li>Drawing objects can no longer have no line, no fill, and no text - causing them to become effectively invisible. Drawings must have at least one of these values set.</li>
<li>Remove the "Delete All" button from Players on the Drawing layer since they do not have GM permission to delete the drawings of others. This was a bug fix for now, but I may bring this back in the future where the button would only delete drawings belonging to the user.</li>
<li>Corrected accidental residual references to <code>CONFIG.Token</code> which has been removed in favor of other global configurations.</li>
<li>Improved the approach towards regex matching for chat message whispers and dynamic entity links to better support international characters in Firefox where unicode regex escapes are not supported.</li>
<h3>Core Software, APIs, and Module Development</h3>
<li>The server-side implementations of "Pakcages": System, Module, and World have all been jointly refactored to extend the same abstract base Package interface and share much more common code and implementation. This has improved quality and consistency of how these packages are managed and described within the VTT software.</li>
<li>Broadly refactored and improved code quality for the Chat Log sidebar and the messages that are rendered within it. This was some of the oldest FVTT code, as chat was one of the first features I implemented. It was well overdue for a fresh coat of paint.</li>
<li>Refactored the sidebar directory templates and CSS rules to adopt a flexbox layout which should be more friendly for mod developers who want to add additional content into the sidebar.</li>
<li>The <code>ChatMessage</code> Entity now has a required <code>type</code> field added to its data model to more explicitly differentiate different types of chat communication. The valid types of chat messages are enumerated in <code>CHAT_MESSAGE_TYPES</code>.</li>
<li>Some changes to keystroke handling have been implemented. Several keys were previously only captured on keyup, which are now captured on keydown with a repetition filter added. This provides a more responsive experience when interacting with these controls.</li>
<li>Performed some code cleanup in the Combat class to remove some deprecated properties and bring greater consistency to the structure for current and previous round tracking.</li>
<li>Improved the informativeness of the error message thrown if the <code>--world</code> startup flag references a World which does not exist.</li>
<li>An informative fatal error is now triggered if there are multiple packages (systems, modules, worlds) which have the same "name" attribute in their manifest files.</li>
<li>A new structure is supported (and enforced) for defining module-based translation files. Under this new approach, languages are defined as an Array of Objects, and JavaScript code is no longer required to manipulate the CONFIG object as this is handled automatically. See <a href="" target="_blank" title="The GitLab Issue">this issue on GitLab</a> for more details.</li>
<li>English language translations are now always used as a fallback option for any localization strings which do not have an available translation in the designated preferred locale.</li>
<li>Because of the new management strategy for module-provided translation files, these translations are now accessible on the main configuration and setup pages of the Application where modules were previously not able to contribute content.</li>
<li>Improved server-side zip file extraction to support an option to de-dupe the folder structure during the extraction process if nested directories are present.</li>
<li>Added a <code>confirmDialog()</code> helper function to streamline the process of rendering standard yes/no prompts using less code.</li>
<li>Revisit support for <code>options.height = "auto"</code> to be specified in an Application render options - auto height applications will be automatically resized (vertically) when they ar re-rendered to accomodate changes to the internal content.</li>
<li>Improve server-side Socket management to automatically learn the Entity class names for which to open socket listeners instead of hard-coding them.</li>
<li>Added a very simple <code>Number.isNumeric()</code> helper method to test whether a string represents a numeric value.</li>
<li>Enforce a safe Proxy environment for evaluating math expressions in dice rolls. Thanks KaKaRoTo for pointing out this cool approach towards evaluating code using a limited and controlled scope.</li>
<h3>D&D5e System Improvements</h3>
<li>Stat blocks and actions for CR 1/4 monster compendium entries have been added. Token artwork and biographies for these creatures are still pending, but I want to push ahead on making sure the SRD Monsters compendium has usable creature definitions for running encounters. Expect further progress in this area on an ongoing basis.</li>
<li>Right clicking a skill proficiency icon will cycle backwards in addition to left click cycling forwards. Thanks Giddy for the suggestion.</li>
<li>Added support for a custom weapon attack critical threshold configured as an additional special Actor trait. Thanks TimPosney for the suggestion.</li>
<li>Updated the character sheet to display the effective Initiative modifier (after additional bonuses) instead of just the base modifier. Thanks to RedReign for the suggestion.</li>
<li>Added equipped, attuned, and rarity fields to every item type in the 5e system data model.</li>
<li>Minor tweaks to the content displayed in the footer of spell cards.</li>
<li>Fixed a bug with the "apply damage" chat dropdown which was incorrectly setting current HP to undefined instead of applying the relative damage difference correctly.</li>
<li>Ensured that all Spells in the 5e Spells compendium have the "prepared" attribute present in their data model (with a default value of false).</li>
Version 0.3.6, 2019-09-10
.. raw:: html
:file: notes-0.3.6.html
......@@ -29,4 +29,6 @@ This page contains an archive of published update notes dating back to late stag
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment