I kinda forgot to do a release for a whole of LuCLI (as have been using and upgrading locally for a number of projects!)
You can check out the next alpha version here:
Some notable changes are:
-
URL rewriting overhaul (Tomcat RewriteValve): Replaced Tuckey UrlRewriteFilter (
urlrewrite.xml) with Tomcat’s built-in RewriteValve (rewrite.config) to avoid servlet API compatibility issues and remove the external JAR dependency. Rewrite rules now use Apachemod_rewritesyntax and live at the Host level underconf/Catalina/<host>/rewrite.config. -
Deprecations around rewriting:
urlrewrite.xmlis now deprecated (startup warning + migration guidance). Also URL rewriting is not supported on Jetty runtime. -
New env var syntax + safer substitution rules: Introduced
#env:VAR_NAME#(with default support like#env:PORT:-8080#), plus “protected zones” where only#env:substitution runs (preserving${VAR}for Lucee/JVM runtime evaluation). Deprecated${VAR}and bare#VAR#(still works but warns). -
Runtime providers (big feature): New
runtimesupport inlucee.jsonfor pluggable runtimes:- Lucee Express (default)
- Vendor Tomcat (point at existing Tomcat via
catalinaHome/CATALINA_HOME) - Docker (experimental) with lifecycle managed via LuCLI (
server stop/server status/server listwork with containers) - Jetty (experimental) added experimental Jetty runtime
-
Better server control options: Added
--config/-ctoserver stopandserver restartso you can target servers by config file (no need to know--name). -
.lucliscripting improvements:- New
sourcedirective to load.env-style files inside.lucliscripts - New CLI
--envfile <path>to preload env vars before running a script
- New
-
UX/terminal improvements:
- New reusable Table UI component for consistent CLI tables
- Emoji handling refactor with centralized
EmojiSupport+ one globalshowEmojissetting - Multiple completion fixes (file-path completion after trailing space,
~/completion preserved, external command file completion fallback) - REPL loop now catches exceptions so the terminal doesn’t crash
-
Config quality-of-life:
lucee.jsonnow supports//and/* */comments- Relative paths in
envVarsare resolved to absolute paths against the project directory server run --dry-runparity withserver start --dry-run, plus--include-envfor showing env vars passed through
-
Module/help improvements: Modules now support
--helpthat prints subcommands + args/types/defaults sourced frommodule.json; plus new plural aliases (server→servers,module→modules,secret→secrets). -
Bug fixes: Shebang handling for
.cfs/.cfm, server status for vendor Tomcat PID overwrite issue, environment merge bug, output capture issues in.lucliscripts, prompt path stripping bug. -
Tooling: Added SpotBugs Maven integration + docs.
Phew! And loads more to come as I work on the runtimes!
Would love your feeback and if you find bugs/issues let me in in the github repo