Vassal 3.7.0-beta4 Released

VASSAL 3.7.0-beta4 Released

The VASSAL Team is happy to announce VASSAL 3.7.0-beta4, which is a preview release.


  • 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.
  • Some code deprecated more than a year ago has been removed. Modules containing custom code using that code MUST be updated if they are to work with 3.7.
  • Things may be broken which worked previously. If you find a new bug, please report it.


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

Changes since 3.7.0-beta3

New features

  • 12323: Add Beanshell Range functions

Bug fixes

  • 12382: Prevent NPE in Beanshell execution during module initialisation
  • 12340: Fix inaccurate Hex Grid location reports
  • 12322: Scale summed board locations instead of summing scaled board locations to reduce rounding error
  • 12303: Dynamic button text was resolved too soon
  • 12302: Description field now properly appears with Startup GKC set to send Global Hotkey

Other improvements

  • 12362: Rollover component help button goes to MouseOver.html instead of Map.html
  • 12267: Optimize Ranged GKC’s and remaining Location based fastmatch option

Changes since 3.7.0-beta2

New features

  • 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
  • 11932: Support for setting Scenario Options

Bug fixes

  • 12342: Fixed bad link in Reference Manual
  • 12315: Prevent NPE in MouseOverStackViewer trying to show top piece of empty stack
  • 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
  • 12208: Hiding disabled toolbar buttons feature removed (reverts 12127)
  • 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

Other improvements

  • 12314: Update bundled Java to 20.0.1
  • 12287: Enable text field DnD
  • 12279: Default heap raised to 1024MB
  • 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

Changes since 3.7.0-beta1

New features

  • 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
  • 12127: Toolbar buttons disableable by a property (e.g., GKC, ActionButton, etc.) can be set to hide when disabled
  • 12100: Text Labels support tags
  • 4446: Dynamic button labels (can use expressions and $…$ in certain toolbar buttons)

Bug fixes

  • 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

Other improvements

  • 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

Changes since 3.6.15

New features

  • 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
  • 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

Bug fixes

  • 11913: Numeric global properties with increments other than 1 and -1 now wrap around correctly

Other improvements

  • 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
  • 12077: ObscuredToOthers can be counted on to be ‘false’ for pieces that don’t even have a Mask property
  • 11919: Allow DEL/BACKSPACE to be mapped as a hotkey
  • 11506: Predefined Setup “menus” with blank names will not be shown

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.