# What's New in 5.1.0

### &#x20;Java 14 support

Java 14 is now supported in CommandBox 5.1.0.  In order to support Java 14, we had to stop using Pack200 which means the binary sizes have grown a little.  The good news is CommandBox will start up a little faster on its first run since there's less to unpack now.

### Start pure HTML Server

You can start up a lightweight server that only serves static files now with CommandBox. &#x20;

```bash
server start cfengine=none
```

<https://commandbox.ortusbooks.com/v/5.1.0/embedded-server/start-html-server>

### New CommandBox Light and CommandBox Thin Binaries

In pursuit of the smallest possible Docker images, we have CommandBox light which is built on Lucee Light.  We also have a box "thin" binary you can swap out with the full self-extracting binary when using CommandBox in custom docker images.  Check out Pete Freitag's [Minibox image](https://www.petefreitag.com/item/899.cfm) to see both of these in use in a super tiny 78 Meg docker image.  More docs here:

<https://commandbox.ortusbooks.com/v/5.1.0/setup/light-and-thin-binaries>

### Force working directory when starting

If you're using box in an integration where you want it to start up in a specific working directory, there is a new bootstrap CLI arg for that.

```bash
box -cliworkingDir=C:/my/path/here/
```

<https://commandbox.ortusbooks.com/v/5.1.0/usage/execution#custom-working-directory>

### Server tray menu item custom commands

You've always been able to specify custom menu items in your server.json or global config settings, but we've kicked it up a notch.  Not only can you contribute to existing sub menus now, you can execute arbitrary native commands synchronously or async.

```javascript
{
    "trayOptions" : [
        {
            "label" : "Does the Internet work?",
            "action" : "run",
            "command" : "ping google.com"
        },
        {
            "label" : "Math is math!",
            "action" : "runAsync",
            "command" : "calc.exe"
        },
        {
            "label" : "Update dependencies",
            "action" : "runTerminal",
            "command" : "box update"
        }
    ]
}
```

## Release Notes

Here's the full list of tickets closed down in the 5.1.0 release.

## Bug

* \[[COMMANDBOX-1121](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1121)] - Runwar deadlocks when using Lucee server warmup flag
* \[[COMMANDBOX-1122](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1122)] - Server start console output isn't always formatted correctly
* \[[COMMANDBOX-1125](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1125)] - Boolean env var causes error on server start
* \[[COMMANDBOX-1127](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1127)] - Output of foreach can't be piped
* \[[COMMANDBOX-1133](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1133)] - Lucee Extension install doesn't recognize Lucee Light
* \[[COMMANDBOX-1135](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1135)] - Package unlink command misspelled parameter moduleDirectory as moduleDrectory
* \[[COMMANDBOX-1137](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1137)] - Package link command misspelled parameter moduleDirectory as moduleDrectory
* \[[COMMANDBOX-1140](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1140)] - Tab complete doesn't work on Windows paths with backslashes
* \[[COMMANDBOX-1144](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1144)] - CommandBox Watcher shows error on Ctrl-C
* \[[COMMANDBOX-1148](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1148)] - Extension management doesn't "recognize" a Lucee server started with --dryRun
* \[[COMMANDBOX-1151](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1151)] - Downgrading a package with install doesn't work without --force
* \[[COMMANDBOX-1152](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1152)] - The run command doesn't always seem to kill interactive binaries
* \[[COMMANDBOX-1154](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1154)] - Relative paths incorrect in drive root on \*nix
* \[[COMMANDBOX-1166](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1166)] - Using a warPath of ./ gets normalized to "" and then ignored in subsequent starts
* \[[COMMANDBOX-1176](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1176)] - native commands with \* can fail due to missing regex escape
* \[[COMMANDBOX-1177](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1177)] - Incorrect serverInfo for a server that hasn't started

### New Feature

* \[[COMMANDBOX-1015](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1015)] - Allow arbitrary actions for menu items
* \[[COMMANDBOX-1019](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1019)] - Allow to start a pure HTML server
* \[[COMMANDBOX-1130](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1130)] - Update ColdBox Templates to new standards
* \[[COMMANDBOX-1145](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1145)] - Allow default working dir of box to be overridden
* \[[COMMANDBOX-1146](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1146)] - Create box-thin binaries that don't bundle any libs
* \[[COMMANDBOX-1147](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1147)] - Create CommandBox Light built that uses Lucee Light jar
* \[[COMMANDBOX-1153](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1153)] - Add two new methods to commands for working with async futures: getCurrentThread() getThreadName()
* \[[COMMANDBOX-1170](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1170)] - TestBox run commands now support the outputFormats argument to allow you to output post-test reports in many formats
* \[[COMMANDBOX-1171](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1171)] - TestBox revamped UI for the CLI reporter
* \[[COMMANDBOX-1172](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1172)] - Add Java info debug to box binary

### Task

* \[[COMMANDBOX-1102](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1102)] - Add Java version as info log

### Improvement

* \[[COMMANDBOX-1080](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1080)] - Provide way to disable server instance icon in MacOS dock
* \[[COMMANDBOX-1126](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1126)] - Add --full flag to dir command to output full path
* \[[COMMANDBOX-1129](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1129)] - Rework the server list command so it is more performant
* \[[COMMANDBOX-1132](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1132)] - Bump to Lucee 5.3.6.61
* \[[COMMANDBOX-1134](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1134)] - Tab complete for sort options in dir command
* \[[COMMANDBOX-1143](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1143)] - Have the ProgressableDownloader send an Accept header
* \[[COMMANDBOX-1150](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1150)] - Don't overwrite lucee-server.xml file when updating libs
* \[[COMMANDBOX-1155](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1155)] - Auto-detect \*unix distros with non-bash shells
* \[[COMMANDBOX-1156](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1156)] - Copy lco files so Lucee server can start on CommandBox Light
* \[[COMMANDBOX-1168](https://ortussolutions.atlassian.net/browse/COMMANDBOX-1168)] - Reset console window title after \`run\` executes a process


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://commandbox.ortusbooks.com/5.7.0/release-history/5.x-versions/whats-new-in-5.1.0.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
