# Vassal 3.8.0-beta2 Released

**URL:** <https://forum.vassalengine.org/t/vassal-3-8-0-beta2-released/90512>\
**Category:** News\
**Created:** [September 13, 2026, 10:05pm UTC](https://forum.vassalengine.org/t/vassal-3-8-0-beta2-released/90512 "2026-09-13T22:05:55Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![uckelman](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/uckelman/32/10020_2.png) [@uckelman](https://forum.vassalengine.org/u/uckelman)\
**Post date:** [September 13, 2026, 10:05pm UTC](https://forum.vassalengine.org/t/vassal-3-8-0-beta2-released/90512/1 "2026-09-13T22:05:55Z")

</div>

# VASSAL 3.8.0-beta2 Released

The VASSAL Team is happy to announce VASSAL 3.8.0-beta2, which is a preview release.

## IMPORTANT

- Starting with 3.7.25, Vassal requires Java 17 or newer. If you are using one of the MacOS or Windows packages, Java is bundled with Vassal and this will not affect you. If you are using Linux or another OS, please upgrade Java to at least Java 17.
- Modules saved in 3.8 are not openable by earlier versions of Vassal. We recommend keeping a backup copy of any pre-3.8 modules you plan to modify in 3.8 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.

## Download

[Linux](https://github.com/vassalengine/vassal/releases/download/3.8.0-beta2/VASSAL-3.8.0-beta2-linux.tar.bz2)  
[Linux (Debian)](https://github.com/vassalengine/vassal/releases/download/3.8.0-beta2/vassal_3.8.0-beta2-1_all.deb)  
[Linux (RPM)](https://github.com/vassalengine/vassal/releases/download/3.8.0-beta2/vassal-3.8.0-beta2-1.noarch.rpm)  
[MacOS](https://github.com/vassalengine/vassal/releases/download/3.8.0-beta2/VASSAL-3.8.0-beta2-macos-universal.dmg)  
[Windows (64-bit x86)](https://github.com/vassalengine/vassal/releases/download/3.8.0-beta2/VASSAL-3.8.0-beta2-windows-x86_64.exe)  
[Windows (32-bit x86)](https://github.com/vassalengine/vassal/releases/download/3.8.0-beta2/VASSAL-3.8.0-beta2-windows-x86_32.exe)  
[Windows (64-bit ARM)](https://github.com/vassalengine/vassal/releases/download/3.8.0-beta2/VASSAL-3.8.0-beta2-windows-aarch64.exe)  
[Other](https://github.com/vassalengine/vassal/releases/download/3.8.0-beta2/VASSAL-3.8.0-beta2-other.zip)

## Changes since 3.8.0-beta1 and 3.7.27

### New features

- 14978: Allow cannotMove to be set as a DynamicProperty
- 14556: Support Multi-Location commands within Sub-Menus

### Bug fixes

- 15054: Fix Truncated text label on hidden pieces
- 15049: Make Zone use full qualified path for property container

### Improvements

- 15060: Stop writing obfuscated data in hex
- 15042: Update MacOS launch script to allow more options
- 14583: MoveCameraButton now uses preferred center instead of viewport center

### Other changes

- 15068: Upgraded spotbugs-maven-plugin to 4.10.4.1
- 15065: Switched from obsolote mockito-inline to mockito-core
- 15063: Upgraded slf4j-api to 2.0.19
- 15062: Upgraded byte-buddy to 1.18.13
- 15050: Upgraded maven-surefire-plugin to 3.6.0

See the [Release Notes](https://forum.vassalengine.org/t/vassal-3-8-release-notes/90445) for descriptions of the changes in 3.8.

## Minimum Requirements

VASSAL 3.8 requires Java 17 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 17 or later.

If you are using MacOS 14, please ensure you are using 14.4 or later, to avoid a bug in MacOS which prevents Vassal from starting.

## Help us test

Please report bugs in the Technical Support & Bugs category at the [VASSAL forum](https://forum.vassalengine.org/c/technical-support-bugs/6).

Cheers,

The VASSAL Team

---

<div class="post-metadata">

**Author:** ![uckelman](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/uckelman/32/10020_2.png) [@uckelman](https://forum.vassalengine.org/u/uckelman)\
**Post date:** [September 13, 2026, 10:06pm UTC](https://forum.vassalengine.org/t/vassal-3-8-0-beta2-released/90512/2 "2026-09-13T22:06:03Z")

</div>



---

<div class="post-metadata">

**Author:** ![uckelman](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/uckelman/32/10020_2.png) [@uckelman](https://forum.vassalengine.org/u/uckelman)\
**Post date:** [September 13, 2026, 10:21pm UTC](https://forum.vassalengine.org/t/vassal-3-8-0-beta2-released/90512/3 "2026-09-13T22:21:08Z")

</div>

Some new features are missing descriptions in the Release Notes:

@cholmcc: 14978  
@rlament: 12944, 14342, 14556  
@Cattlesquat: 13168  
@marktb1961: 12763

---

<div class="post-metadata">

**Author:** ![cholmcc](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/cholmcc/32/8319_2.png) [@cholmcc](https://forum.vassalengine.org/u/cholmcc)\
**Post date:** [September 13, 2026, 11:13pm UTC](https://forum.vassalengine.org/t/vassal-3-8-0-beta2-released/90512/4 "2026-09-13T23:13:46Z")

</div>

> [@uckelman](#):
>
> 14978

* * *

## Module Design

### Property `cannotMove` can be set

The property of pieces `cannotMove` which dictates whether a piece can be moved by the user, can now be manipulated through logic in pieces. For example, if a piece has a [Dynamic Property](https://vassalengine.org/doc/latest/ReferenceManual/DynamicProperty.html#top) trait that defines the property `cannotMove`, as well as key commands to set the value to either `true` or `false`, then that piece can be made un-moveable at times, and moveable at other times.

This allows a module designer to inhibit movement of certain pieces under certain conditions, as defined by the game implemented. For example, a module may inhibit movement of artillery pieces if that artillery piece has already fired this turn.

Note that the trait [Does not stack](https://vassalengine.org/doc/latest/ReferenceManual/NonStacking.html#top) also defines the property `cannotMove`.

For an example of how this can be used in module, see for example [Advanced Squad Leader: Starter Kit #1](https://vassalengine.org/library/projects/advanced_squad_leader_starter_kit_1_cholmcc).

* * *

---

<div class="post-metadata">

**Author:** ![cholmcc](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/cholmcc/32/8319_2.png) [@cholmcc](https://forum.vassalengine.org/u/cholmcc)\
**Post date:** [September 14, 2026, 4:45pm UTC](https://forum.vassalengine.org/t/vassal-3-8-0-beta2-released/90512/5 "2026-09-14T16:45:40Z")

</div>

> [@uckelman](#):
>
> [Release Notes](https://forum.vassalengine.org/t/vassal-3-8-release-notes/90445)

Other notes:

* * *

## Improvements

- 15042: Update MacOS launch script to allow more options

The script to launch Vassal from the command line, `/Applications/VASSAL.app/Contents/MacOS/VASSAL.sh` on MacOS, now accepts more options. This allows a user to for example specify additional property values to the Java Virtual Machine, or to by-pass the Module Manager window. More details about the available options are shown with

```auto
$ /Applications/VASSAL.app/Contents/MacOS/VASSAL.sh --help

```

These options are only available when a (power-) user executes the above script directly in a Terminal.

- 14583: MoveCameraButton now uses preferred center instead of viewport center

When a user presses the [Move Camera Button](https://vassalengine.org/doc/latest/ReferenceManual/Map.html#MoveCameraButton), it will try to center on the next matching piece which is closest to (but not at) the last preferred view centre of the map. That last preferred view centre is set when the user clicks the map, or the view is otherwise centred on some location. This will make it more likely that the button will cycle through all missing pieces. Note that there’s no guarantee that it _will_ cycle through all matching pieces.

- 15049: Make Zone use full qualified path for property container

A [Global Property](https://vassalengine.org/doc/latest/ReferenceManual/GlobalProperties.html#top) defined in a [Zone](https://vassalengine.org/doc/latest/ReferenceManual/ZonedGrid.html#Zone), is stored with its full _Map_, _Board_, _Zone_ path, and now also communicated as such in an on-line game. That means, that multiple boards with the same zones may have their own independent properties. This is especially useful of the _Map_ allows only a single _Board_, and the _Boards_ defines alternatives that have the same zones.

---

<div class="post-metadata">

**Author:** ![uckelman](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/uckelman/32/10020_2.png) [@uckelman](https://forum.vassalengine.org/u/uckelman)\
**Post date:** [October 20, 2026, 9:17pm UTC](https://forum.vassalengine.org/t/vassal-3-8-0-beta2-released/90512/6 "2026-10-20T21:17:44Z")

</div>


