Vassal 3.7.5 Released

VASSAL 3.7.5 Released

The Vassal Team is happy to announce the release of Vassal 3.7.5.


  • There is now a single universal app bundle for MacOS. It runs natively on both 64-bit x86 (Intel) and 64-bit ARM (Apple Silicon) Macs.
  • Modules saved in 3.7 are not openable by earlier versions of Vassal. We recommend keeping a backup copy of any pre-3.7 modules you plan to modify in 3.7 until you’ve verified that everything works to your satisfaction.
  • Things may be broken which worked previously. If you find a new bug, please report it.


Windows (64-bit x86)
Windows (32-bit x86)
Windows (64-bit ARM)

Changes since 3.7.4

Bug fixes

  • 12866: Fix double application of board magnification to board bounds
  • 12852: Prevent SumZone from generating Bad Data Errors
  • 12846: Fix missing custom colors and font styles in Game Piece Layouts
  • 12841: Ensure labels are correctly updated in Replace With Other trait

Other improvements

  • 12865: Documentation: Editor Search section - add a cross-link to main search details
  • 12861: Number in-use traits in Piece Definer

Changes since 3.7.3

Bug fixes

  • 12830: Prevent Load Continuation from auto-forwarding to end of log
  • 12826: Fix bug where pieces sometimes teleport from deck back to different map in multiplayer (Ensure map recorded in pieces matches map in parent Stack/Deck)
  • 12824: Ensure ColorManager and FontManager are created exactly once, before use
  • 12802: Prevent NPE in Named KeyStroke Configurer

Other improvements

  • 12829: Set Piece Property Documentation clarification
  • 12825: Allow Unique components to be copied; change Game Piece Layers to be non-mandatory

Changes since 3.7.2

Bug fixes

  • 12817: Fix alphanumeric key behavior in hotkey (key command) configurer in Editor (e.g., Shift+B should show up as “Shift+B”, not “B”)
  • 12810: exits before printing relevant exit message
  • 12705: Prevent creation of duplicate Translations by Add Translation button

Other improvements

  • 12814: Updated bundled Java to 21
  • 12808: Horizontal scrolling now supports 2-finger-trackpad and mice with additional horizontal wheels
  • 12724: Improved legibility of translation panels

Changes since 3.7.1

Bug fixes

  • 12784: Fix rendering of external Text Label images
  • 12781: Fix bad translation keys for Attachment, Deselect, Send To Location traits
  • 12780: Correctly adjust Player window title to reflect actions taken in Welcome Wizard
  • 12769: Fix support for expressions in Sound Clip Configurer
  • 12729: Set Global Property to again record old GP value in oldValues for reporting
  • 12773: Disabled Toolbar Button icons should not appear in unused images list
  • 12770: Prevent NPE when escaping from GKC trait after adding ‘Set Dynamic Properties’ entries

Other improvements

  • 12896: Build universal Mac bundle

Changes since 3.7.0

Bug fixes

  • 12727: Ensure that tiles are cobbled for fixed-size board scaling
  • 12708: Prevent ArrayIndexOutOfBoundsException if side translation count does not match module
  • 12688: Replace with Other should not update text of unchangeable labels
  • 12683: Prevent NPE on starting game in Main Room
  • 12679: Set Piece Property respects target property numeric constraints unless overridden
  • 12676: IncrementProperty: Corrected bad wrap-around calculation when increment is negative
  • 12659: Translate current side before checking for “next side”
  • 12645: Respect localization when filtering sides
  • 12582: Corrected divide-by-zero problem for Zones defined by zero-point polygons
  • 12542: Mitigate race condition when selecting player sides
  • 12474: Fixed NPE when moving EditablePiece which isn’t on a map
  • 12411: Fixed NPE when updating ConfigureTree
  • 12324: Fixed ClassCastException caused by reordering columns in Delayed Notes table
  • 12307: Prevent NPE when Return to Deck of a deleted Deck

Other improvements

  • 12716: Support regular expressions in Editor search
  • 12715: Enable help button for editor Search dialog
  • 12706: Keep the “retire” button disabled unless a game is running
  • 12696: Removed “Indexing pieces” message
  • 12670: Prevent essential components being accidentally deleted
  • 12661: Translate side names in change sides message

Changes since 3.6.19

New features

  • 12566: Add Beanshell function to add Sleep/Delay processing
  • 12536: GKC and Place/Replace parameters
  • 12492: Add Comment trait
  • 12454: BeanShell Editor improvements: larger, multi-line, more properties
  • 12445: Add Ranged Sum/Count Functions; updated Function Builder and documentation; updated Property documentation
  • 12444: Implement real Unique Piece Id property UniqueID that does not change during refresh
  • 12323: Add Beanshell Range functions
  • 12284: Add Danish localization
  • 12251: New Set Piece Property trait
  • 12243: Startup Global Key Commands can also send a Global Hotkey
  • 12222: Multi-Location Commands: One trait may create actions corresponding to several map locations
  • 12192: New Attachment trait
  • 12184: Pivot can have two key commands/angles
  • 12153: Layer traits allow a show-only-if-this-property-true filter
  • 12149: BorderOutline trait now accepts two fields
  • 12129: PlaceMarker and ReplaceWithOther can use expression for X/Y offset
  • 12100: Text Labels support tags
  • 12067: Import/export of groups of items from Editor as XML files (e.g., to transfer between modules)
  • 12060: Editor allows Deck files to be imported into a deck to become permanent part of module
  • 12035: Mouse-over Stack Viewers allow configuring thickness of outer border, and more padding/stretching options
  • 12032: Mark-When-Moved trait can be configured to only flag when piece changes LocationName or Mat. Similarly Map auto-report can be configured to ignore same-location movements.
  • 12003: OldDeckName now supported as a piece property
  • 12001: count_ supported for counting properties in Inventory windows
  • 11969: New Border Outline trait
  • 11964: Mouse-over Stack Viewers can display an image of underlying terrain
  • 11937: SumMat and CountMat functions for Beanshell expression
  • 11932: Support for setting Scenario Options
  • 11918: Startup GKC that fires when player joins or changes sides
  • 11917: Create Non-Rectangular mask directly from SVG outline
  • 11530: Add new StackPos and StackSize properties to Basic Piece
  • 11523: Area of Effect improvements: Active property, local/global visibility, separate on/off Key Commands
  • 11178: Global Option added to omit empty lines in property setting prompts
  • 11100: Allow begin-logfile and end-logfile to have configurable hotkeys in Global Options
  • 10822: Sounds can be suppressed during GKC processing
  • 10821: Symbolic Dice buttons how have full Action Button capabilities (sounds, hotkeys, etc.)
  • 10820: Make Action Button available on all windows where other similar buttons (e.g., GKC, Multi-Action, etc) are available
  • 4454: Save chat text to file
  • 4446: Dynamic button labels (can use expressions and $…$ in certain toolbar buttons)

Bug fixes

  • 12644: Prevent NPE when Editing Deck count expressions
  • 12627: Fix chat non-scrolling caused by setting preferred size for the Chatter contents pane
  • 12620: Ensure that HTML attribute values are quoted
  • 12595: Fix Search UnsupportedOperationException
  • 12578: Process Set Piece Property expressions correctly
  • 12568: Center of map view during zoom used incorrect coordinate space
  • 12561: Handle Beanshell functions correctly in expressions
  • 12547: CountLocation function with 3 parameters does not work
  • 12529: Allow Piece UIDs to be compared properly in expressions
  • 12528: Close InputStreams opened for reading SVG
  • 12482: Map Shader now able to add button to Map Toolbar
  • 12470: Place Marker X Offset should default to 0, not null
  • 12439: Uniformly handle addition of standard and imported Configurables
  • 12434: FastMatch by Location now respects Deck limits
  • 12433: Attachment Fastmatch: match each piece at most once, limit checking by name
  • 12420: Set Piece Property does not work
  • 12403: Extension Editing fixes: Cut & Paste now deletes cut element, Drag & Drop between folders in Extension are saved, stopped UnsupportedOperationException during search
  • 12401: Allow Ctrl-V to be entered as a Key Command
  • 12396: Add missing Global Option message
  • 12393: Fix Auto-attach breaking on Undo
  • 12392: Replace With Other incorrectly retains existing Marker values when Match Current State is checked
  • 12382: Prevent NPE in Beanshell execution during module initialisation
  • 12363: Initialise Global Option preferences that have no Tab name
  • 12347: Refresh Dynamic Properties correctly when they have no value
  • 12342: Fixed bad link in Reference Manual
  • 12340: Fix inaccurate Hex Grid location reports
  • 12322: Scale summed board locations instead of summing scaled board locations to reduce rounding error
  • 12315: Prevent NPE in MouseOverStackViewer trying to show top piece of empty stack
  • 12303: Dynamic button text was resolved too soon
  • 12302: Description field now properly appears with Startup GKC set to send Global Hotkey
  • 12261: Report error if more than one grid added to a Zone
  • 12220: Add BorderOutline’s property names to the searchable target list
  • 12215: New MarkMoved commands shouldn’t default to being displayed if no key commands entered
  • 12205: Area of Effect trait was eating other traits’ visibility info in some cases
  • 12203: Properly extract outlines from SVG for NonRectangular
  • 12175: Fix stretchy images in chat
  • 12159: Correctly handle install paths containing spaces in
  • 12158: List Key Commands tool can be re-opened after closing with X button
  • 12152: Work around Java bug which prevents displaying Windows file dialog
  • 11913: Numeric global properties with increments other than 1 and -1 now wrap around correctly

Other improvements

  • 12626: Hide caret in chat pane
  • 12573: Updated bundled Java to 20.0.2
  • 12556: Map Shaders on different maps can now have same name
  • 12549: Simplify Trait edit window title
  • 12538: Scenario Options - Allow Observers to Lock option tabs if no Sides taken
  • 12509: Allow and empty Deck or At-start Stack to be repositioned
  • 12504: Updated documentation for 3.7
  • 12501: Merge Set Attachment property into Set Piece Property
  • 12495: Mouse-over Stack Viewer ‘Show move limited pieces’ option no longer dependent on ‘Show non-stacking’ option
  • 12443: Clarified MouseOverViewer documentation
  • 12432: Add missing Sum & Count expressions
  • 12427: Fixed bad links in Reference Manual
  • 12362: Rollover component help button goes to MouseOver.html instead of Map.html
  • 12341: Expression documentation improvements
  • 12287: Enable text field DnD
  • 12279: Default heap raised to 1024MB
  • 12270: Scenario Options tweaks
  • 12267: Optimize Ranged GKC’s and remaining Location based fastmatch option
  • 12235: HTML Help file starting page can now be an expression
  • 12187: Improved Rectangular Grid range metric names and made them translatable
  • 12177: Change-property buttons don’t generate completely empty chat lines
  • 12176: Add preference to not display Mark Moved status of pieces
  • 12172: Metadata now contains the ‘extra’ fields, and Module Manager displays them if numeric
  • 12138: Better editor descriptions of Global Hotkey traits
  • 12137: Editor shows better descriptions for Dynamic Property and Set Global Property traits
  • 12136: Change Property Buttons now have a description field, which is displayed in the editor if filled in
  • 12133: Rollovers automatically shrink scale if the pieces are too wide to fit the screen width
  • 12084: Help menu shows module-specific help items before generic Vassal ones
  • 12080: Zooming in and out no longer loses track of player’s preferred center point for map
  • 11919: Allow DEL/BACKSPACE to be mapped as a hotkey
  • 11506: Predefined Setup “menus” with blank names will not be shown
  • 11104: Refresh Can Rotate trait by Rotator Name match option for Game Refreshers

See the Release Notes for descriptions of the changes in 3.7.

Minimum Requirements

VASSAL 3.7 requires Java 11 or later.

The Windows and MacOS packages have an appropriate version of Java bundled with them, so there is no need to install Java separately on those operating systems. On Linux, use your package manager to install Java 11 or later.

Help us test

Please report bugs in the Technical Support & Bugs category at the VASSAL forum.



1 Like