Today we are very pleased to announce the final release of CommandBox 4.0.0. This has been one of our most ambitious releases and closed more than 70 tickets over 6 months of development and testing.
This release has gone through a month of testing that created two release candidates. A big thanks goes out to everyone who helped provide feedback. There are a lot of new features and libraries in 4.0 as well as a major overhaul of many of the UI aspects of the CLI.
Download
To get the final 4.0.0 release, you can download it here from our CommandBox homepage:
https://www.ortussolutions.com/products/commandbox
Just swap out your box.exe binary and CommandBox will upgrade itself on first run. It's a one way street, so feel free to backup the .CommandBox folder in your user home first.
If you prefer to use Homebrew, the debian repo, or Yum repo, those are all updated now as well.
Please Note: The box binary is normally around 38MB in size. Due to an issue with the final build, the Pack200 process didn't run and the binary came out around 80MB. I'll get this fixed for the next release and the binary should be back to the normal size.
Documentation
First, you'll want to read through this blog post here which details all of the new features and changed in CommandBox 4. Note the very last section contains all of the known "breaking changes". For the most part, CommandBox 4 is very backwards compatible.
https://www.ortussolutions.com/blog/commandbox-4-release-candidate-available-for-testing
All of the official CommandBox docs are fully updated for the 4.0.0 release. You can find them here:
https://commandbox.ortusbooks.com/
And of course, the full API docs showing all the core commands and parameters are available here:
http://apidocs.ortussolutions.com/commandbox/current/index.html
Major Areas of Development
- Major rewrite of CLI engine loader
- Lucee 5 now powers the CLI
- Using JSR-223 to dynamically load Lucee 5
- All 3rd Party libs updated
- JGit
- Launch4J
- Runwar
- JLine3
- Improved Task Runner support
- Task scaffolding with “task create”
- Task DSL to call other tasks
- Ortus Builds are now being converted to Task Runners. No Ant! No XML!
- Support for Private package
- Revamped Server Logs (access, rewrite, console)
- ColdBox 5 updates
- Tons of bug fixes and improvements
Issues/Questions/Support
In the unlikely event of a water landing, please reach out so we can help you. Here a few ways you can contact us:
- Google Group - https://groups.google.com/a/ortussolutions.com/forum/#!forum/commandbox
- CFML Slack Team - https://cfml-slack.herokuapp.com/ (Join the #box-products channel)
- Professional Support and Training - https://www.ortussolutions.com/services/support
Release Notes
Bug
- [COMMANDBOX-174] - Box CLI not working inside cygwin
- [COMMANDBOX-395] - Commandbox 3.1.X no longer works with Git Bash
- [COMMANDBOX-728] - Allow control of default package name when box.json is missing
- [COMMANDBOX-749] - Server won't start with $ in web root path
- [COMMANDBOX-750] - Can't list files in directory with parenthesis in the name
- [COMMANDBOX-761] - Default rewrites don't start regex at the start of the request URI
- [COMMANDBOX-763] - Ctrl-C in shell kills associated server processes on *nix
- [COMMANDBOX-767] - Issue installing older CF engine when two versions exist who only differ in build ID
- [COMMANDBOX-778] - Adobe war has incorrect default /CFIDE CF mapping
- [COMMANDBOX-782] - CLI Loader crashes: Error reloading cached bundle
- [COMMANDBOX-783] - ls and dir do not list directory content after 'cd ..' without trailing slash
- [COMMANDBOX-785] - restart command not correctly detecting stopped server
- [COMMANDBOX-787] - Starting two servers at once can corrupt servers.json file
- [COMMANDBOX-788] - Starting server from non-ForgeBox endpoint doesn't detect proper engine/verion
- [COMMANDBOX-790] - Package publishing fails with folder named "readme" in the root
Story
- [COMMANDBOX-724] - Control HTTPOnly and secure attribute of JSESSIONID
New Feature
- [COMMANDBOX-73] - Version check on startup
- [COMMANDBOX-566] - CommandBox bullet train
- [COMMANDBOX-583] - Create a "checkbox" user input for commands
- [COMMANDBOX-722] - Task DSL
- [COMMANDBOX-725] - Make SSL work on Adobe servers
- [COMMANDBOX-726] - Allow testbox run runner to be relative URL
- [COMMANDBOX-727] - validate box.json properties for testbox run usage
- [COMMANDBOX-729] - Change default jAnsi temp path
- [COMMANDBOX-745] - Updating ColdBox commands to ColdBox 5
- [COMMANDBOX-751] - Enhance REPL console highlighter to work with parens and curlys
- [COMMANDBOX-752] - Support 256 colors with print helper
- [COMMANDBOX-757] - Update testbox command to trim and prettify json results
- [COMMANDBOX-759] - Be able to add jars to core Lucee classloader from inside the CLI
- [COMMANDBOX-760] - Command to scaffold new task
- [COMMANDBOX-771] - Create dedicated log for rewrites
Improvement
- [COMMANDBOX-438] - Remember the currently edited command when navigating through the history
- [COMMANDBOX-482] - better tab completion for REPL
- [COMMANDBOX-527] - Upgrade to JLine3
- [COMMANDBOX-552] - Update Launch4j library
- [COMMANDBOX-596] - Refactor `Box foo.cfm` to funnel through execute command
- [COMMANDBOX-702] - Remove \t and \n escapes
- [COMMANDBOX-706] - Upgrade CLI core to use Lucee 5
- [COMMANDBOX-714] - Parsing issue with native OS binaries
- [COMMANDBOX-719] - Add serverDetails and installDetails to the onServerStart interceptor
- [COMMANDBOX-720] - Add web access logs to undertow
- [COMMANDBOX-730] - Improve message on server forget
- [COMMANDBOX-731] - Don't escape params() in CommandDSL when the command is "run"
- [COMMANDBOX-735] - Change how Ctrl-C and Ctrl-D behave
- [COMMANDBOX-736] - Pressing "up" filters history on what you've already typed
- [COMMANDBOX-737] - Allow Ctrl-C to interrupt executing tasks like downloading a file
- [COMMANDBOX-738] - REPL isn't clear whether expression returned empty string or null
- [COMMANDBOX-739] - Allow commands to be interruptible with Ctrl-C
- [COMMANDBOX-740] - Highlight code in the repl
- [COMMANDBOX-741] - Add prePrompt interception point
- [COMMANDBOX-742] - Allow installPath to override PackageDirectory
- [COMMANDBOX-744] - preProcessLine and postProcessLine interception points
- [COMMANDBOX-747] - Allow raw params to CommandDSL that aren't escaped
- [COMMANDBOX-753] - start --console should exit if server is killed externally
- [COMMANDBOX-754] - Handle download progress when no total file size is avaiable
- [COMMANDBOX-755] - Switch to load CFML engine via JSR-223
- [COMMANDBOX-756] - Throw on invalid server.json
- [COMMANDBOX-758] - Add rewrite exception for Adobe CF's cf_scripts folder
- [COMMANDBOX-764] - Allow output of native OS binaries to be captured from CLI and task runners
- [COMMANDBOX-765] - Upgrade to latest JGit lib
- [COMMANDBOX-768] - PackageDirectory in package box.json is never honored
- [COMMANDBOX-769] - Improve "testbox run" error output on Adobe CF
- [COMMANDBOX-770] - Update bundled JRE to latest
- [COMMANDBOX-773] - Upgrade to WireBox 5.0
- [COMMANDBOX-774] - Cache CFC metadata for faster startup times
- [COMMANDBOX-775] - Refresh progress bar UI
- [COMMANDBOX-776] - UI control for "Jobs" to pare down output for several operations
- [COMMANDBOX-777] - Spruce up info command with easter eggs
- [COMMANDBOX-780] - Spruce up dir command
- [COMMANDBOX-786] - Default to latest in upgrade command when on a prerelease already
- [COMMANDBOX-789] - Add additional debugging information to the "info" command
Add Your Comment