Vassal 3.7.0 Released

VASSAL 3.7.0 Released

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


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




2 posts were split to a new topic: Download warnings

Note - Vassal Homepage still has 3.6.19 advertised…

Great work, been looking forward to this release!

Not for me. Try reloading.

I did reload - still see

Vassal 3.6.19 is released! See the news for details.

For on-line play, can one player still use 3.6.19 and a module saved using it while another player uses 3.7.0 and a module saved using that?

You’re seeing something cached, in that case. This is what I see:

That might work, but we don’t recommend it. For best results, all players should be using the same version of Vassal.

1 Like

Got it. I closed Firefox and re-opened and it still showed 3.6.19. I had to manually flush the cache to get it to show 3.7…

I’ll give it a try and let you know how it goes.

There is no reason to do this… If for some reason one person can’t (or is unwilling) to update, the other person can just have BOTH 3.6.19 and 3.7.0 and thus can use the older version if/when necessary.

Don’t ask for trouble by using mismatched versions…


With a quick check there was no problem. But will strongly encourage players to update.

Just for intererst’s sake, using VASL 667b5 and VASSAL 3.7.0 to create the map for ASL scenario J238. Then using VASL 6.6.6 and VASSAL 3.7.0 to open the map generates a VASSAL error.

This is probably irrelevant considering the circumstances but I pressed the button to submit the error anyway.

This isn’t due to a save format change. You’re seeing the same error people have been reporting with VASL 6.6.6 for months, which was fixed in one of the VASL 6.6.7 betas.

Righto, I was just reporting it because VASSAL was generating an error instead of trapping it.

Sorry about posting to this news item about windoze download issues. Not the first time that issue has been raised though.
I would like to state that you guys have done some really great work with Vassal over the past several years. 3.1.whatever existed for many years. Developers had many issues that required a lot of work-arounds to achieve what they really wanted. While I do not want to spend the time to develop from scratch another World in Flames module knowing what I know now and the way better way to do stuff with Vassal compared to 3.1.whatever, I do know that what I’m almost finished with is going to be as close as possible to that goal.