Releases: benoitpetit/lumos
Release list
v0.3.8
📦 About the launcher files
The lumos-launcher-* binaries attached below are precompiled Lua runtimes, not standalone applications. They are internal building blocks used by the lumos package command.
When you run:
lumos package src/main.lua -o myappThe CLI combines your amalgamated Lua code with the appropriate launcher to produce the final self-contained executable.
If the launcher for your target platform is missing locally, lumos package --sync-runtime downloads it automatically from this release page.
Changelog
Added
- YAML support —
lumos/yaml.luaminimal YAML parser;config.loadnow supports.yaml/.ymlfiles. - TOML support —
lumos/toml.luapure-Lua TOML parser with support for nested tables, inline tables, arrays and heterogeneous types. - Countable flags —
flag:countable()allows flags like-vvvto be counted; parsed value is an integer. - Global quiet mode — built-in
--quiet/-qglobal flag suppresses non-error output and sets logger level to ERROR. - JSON logging —
logger.set_format("json")outputs structured JSON log lines with timestamp, level, message and context. - New middleware builtins —
timeout,circuit_breaker, andretrymiddlewares for resilient command execution. - Config schema validation —
config.validate(data, schema)with typed, required and nested field rules. - HTTP client —
lumos/http.luanative HTTP client (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS) with curl backend, JSON auto-encoding, bearer auth, query params and timeout support. - Standard input module —
lumos/stdin.luaprovidesread(),read_lines(),read_json()andis_pipe()for stdin handling. - Environment loader —
lumos/env_loader.luadedicated module for loading prefixed environment variables. - App utilities —
lumos/app_utils.luashared helpers for application construction. - Command builder —
lumos/command_builder.luafluent command builder extracted fromapp.lua. - Flag negation — boolean flags automatically support
--no-*prefix (e.g.--no-verbose). - Unknown flag & command suggestions — Levenshtein-based "Did you mean?" suggestions for typos in flags and subcommands.
- PowerShell completion —
lumos/completion.luanow generates completion scripts for Bash, Zsh, Fish and PowerShell. - Custom completion values —
cmd:complete(choices)lets you embed custom completion values into generated shell scripts. app:add_completion_command()— auto-adds acompletionsubcommand to print shell scripts on demand.- Instantiable loaders —
loader.new()creates independent spinner instances with:start(),:next(),:success(),:error(),:run(). - New flag types —
cmd:flag_duration()(human-readable durations:5m30s),cmd:flag_map()(accumulateskey=valuepairs). - Flag & command grouping —
cmd:group("Connection")groups flags in help;cmd:category("Network")groups commands. - Positional arg enhancements —
cmd:arg()now supportsrequired,type,default,validate, andvariadicoptions. - Prepublish script —
scripts/prepublish.shorchestrates version bump, module sync, tests, lint and release workflow. - New examples —
03_typed_flags.lua(countable flags),07_logging.lua(JSON logging),09_middleware.lua(resilience middleware),10_configuration.lua(YAML config),14_http_client.lua(HTTP client),18_variadic_args.lua,19_categories.lua,20_mutex.lua,21_lua_config.lua. - Test coverage — specs for YAML parsing, countable flags, JSON logging, middleware resilience, config validation, HTTP client, stdin, table pagination, loader instances, parser immutability, runtime manager, and variadic arguments.
Changed
- Major refactor of
lumos/app.lua— eliminated ~300 lines of duplicated flag constructor code viaadd_flag_tofactory; added fluent modifiers (:default(),:required(),:env(),:validate(),:complete(),:group(),:countable(),:deprecated()). lumos/bundle.luacomplete rewrite —strip_commentsnow correctly handles strings, long brackets ([=[...]=]) and nested comments; added dynamicscan_lumos_modules(); introducedgenerate_preloader()for bundled module searcher; paths are now sanitized viasecurity.sanitize_path().lumos/native_build.luamodularized — split intonative_build/modules.luaandnative_build/toolchain.lua; migrated tolumos.fshelpers;random_tmp_nameno longer pollutes the global RNG.lumos/completion.luaoverhauled — PowerShell support; enum/subcommand completion embedding; custom:complete()values;add_completion_command()helper.lumos/loader.luaoverhauled — instantiable loader instances; new animation styles; cleaner API.lumos/progress.luaenhanced — new animation styles and better terminal detection.lumos/table.luaenhanced — pagination withpaginate()andpage().lumos/prompt.luaenhanced —prompt.number(),prompt.editor(),prompt.form(),prompt.wizard(), and built-invalidatorstable.lumos/config.lua— TOML parser now supports nested tables, inline tables and improved array handling; addedconfig.load_validated().lumos/executor.lua— improved middleware error propagation with typed error handling.lumos/parser.lua— extracted fromcore.lua; supports flag negation, unknown-flag detection, and command suggestions.lumos/validator.lua— extracted fromcore.lua; centralized validation logic.lumos/help_renderer.lua— extracted fromcore.lua; dedicated help formatting.lumos/init.lua— exposesyaml,stdin,toml,env_loadermodules for lazy-loading.lumos/package.lua— added--app-version,--analyze, and--sync-runtimeoptions.lumos/platform.lua— improvedsupports_colors()andis_interactive()reliability.lumos/security.lua—sanitize_pathhardened against false positives.lumos/flags.lua—countable()support; negative number parsing fixed (-5no longer treated as a flag).lumos/logger.lua— JSON format support; child logger filter fixed.lumos/color.lua— improved terminal and pipe detection.lumos/format.lua— enhanced text formatting utilities.lumos/fs.lua— expanded cross-platform file-system utilities.lumos/terminal.lua— terminal capability detection improvements.lumos/manpage.lua— global dash escaping.lumos/markdown.lua— fixed heading hierarchy.lumos/runtime_manager.lua— runtime path and launcher management.lumos/http.lua— response helpers (resp.ok,resp.json()).- CI — auto-generate release notes with launcher explanation + changelog.
- Documentation —
docs/api.mdexpanded with new modules and methods;docs/cli.mdupdated;docs/qs.mdrefreshed.
Fixed
examples/14_http_client.lua— removed invalid:trim()calls on strings (Lua has nostring.trimmethod).lumos/bundle.lua—find_module()now sanitizes paths before checking existence.lumos/bundle.lua—extract_requires()now matchesrequire"module"syntax (without parentheses).lumos/bundle.lua—LUMOS_MODULESstatic fallback synchronized with all current framework modules.lumos/native_build.lua—LUA_OKcompatibility for Lua 5.1 in generated C wrappers.lumos/native_build.lua— replaced predictableos.tmpname()with randomized temps inside.lumos/cache/to avoid TOCTOU issues.lumos/config_cache.lua—get_mtimenow useslfs.attributesfor cross-platform compatibility (macOS/BSD).lumos/prompt.lua—prompt.passwordnow safely restoresstty echoeven if the user interrupts with Ctrl+C.lumos/logger.lua—set_output()now closes the previous file handle before opening a new one.lumos/logger.lua— child logger filter pattern widened to support underscores.lumos/flags.lua—intvalidator now returns explicit booleans instead of nil.lumos/flags.lua— range-check block guarded to prevent string/number comparison crashes.- Rockspecs — added missing
lumos.native_build.modulesandlumos.native_build.toolchainentries required at runtime.
Removed
- Old example scripts (
basic_app.lua,advanced_features.lua,colors_demo.lua,config_example.lua,countable_flags_demo.lua,json_logging_demo.lua,middleware_resilience_demo.lua,yaml_config_demo.lua, etc.) replaced by the new numbered example suite (01_–21_). lumos-0.3.7-1.rockspec— superseded bylumos-0.3.8-1.rockspec.
v0.3.7
📦 About the launcher files
The lumos-launcher-* binaries attached below are precompiled Lua runtimes, not standalone applications. They are internal building blocks used by the lumos package command.
When you run:
lumos package src/main.lua -o myappThe CLI combines your amalgamated Lua code with the appropriate launcher to produce the final self-contained executable.
If the launcher for your target platform is missing locally, lumos package --sync-runtime downloads it automatically from this release page.
Changelog
Added
- YAML support —
lumos/yaml.luaminimal YAML parser;config.loadnow supports.yaml/.ymlfiles. - Countable flags —
flag:countable()allows flags like-vvvto be counted; parsed value is an integer. - Global quiet mode — built-in
--quiet/-qglobal flag suppresses non-error output and sets logger level to ERROR. - JSON logging —
logger.set_format("json")outputs structured JSON log lines with timestamp, level, message and context. - New middleware builtins —
timeout,circuit_breaker, andretrymiddlewares for resilient command execution. - Config schema validation —
config.validate(data, schema)with typed, required and nested field rules. - New examples —
countable_flags_demo.lua,json_logging_demo.lua,middleware_resilience_demo.lua,yaml_config_demo.lua. - Test coverage — specs for YAML parsing, countable flags, JSON logging, middleware resilience, and config validation.
Changed
lumos/config.lua— TOML parser now supports nested tables, inline tables and improved array handling.lumos/executor.lua— improved middleware error propagation with typed error handling.lumos/init.lua— exposesyamlmodule for lazy-loading.- CI: auto-generate release notes with launcher explanation + changelog.
v0.3.6
About the launcher files
The lumos-launcher-* binaries attached below are precompiled Lua runtimes, not standalone applications. They are internal building blocks used by the lumos package command.
When you run:
lumos package src/main.lua -o myappThe CLI combines your amalgamated Lua code with the appropriate launcher to produce the final self-contained executable.
If the launcher for your target platform is missing locally, lumos package --sync-runtime downloads it automatically from this release page.
Changelog
Full Changelog: v0.3.5...v0.3.6