All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
• Fixed --linker lld|mold integration: Vix now applies fast linker flags via CMAKE_*_LINKER_FLAGS (exe/shared/module), ensuring the linker is used reliably at link time.
• Removed incorrect propagation of linker flags through CMAKE_C_FLAGS / CMAKE_CXX_FLAGS, avoiding CMake “unused variables” warnings and inconsistent behavior.
• Improved run/build flow integration (RunDetail / RunFlow / RunCommand) to keep preset/build-dir resolution consistent and prevent missing helper symbol errors.
- Fixed a
-Wshadowwarning in the CLI build command by removing duplicate toolchain variable declarations. - Ensured a single, consistent toolchain content buffer is used for both toolchain file generation and build signature computation.
- Improved code clarity and robustness when handling cross-compilation toolchains.
- Cleaner build flow under strict compiler warnings (
-Wshadow). - No behavior change for users; internal correctness and maintainability improved.
- Added native support for
.vixmanifest files- Run apps directly with
vix run app.vix - Dev mode supported:
vix dev app.vix - Supports both
kind="project"andkind="script"
- Run apps directly with
- New project scaffolding now generates a
<name>.vixmanifest by default - CLI now auto-detects
.vixand.cppfiles without requiringrun
- Unified option resolution via manifest + CLI merge
- CLI flags always override manifest values
- Improved entry-point resolution for project manifests
- Extended
vix run --helpwith detailed manifest documentation - Clear separation between:
- Manifest mode
- Project mode (CMake)
- Script mode (single
.cpp)
- Cleaner run flow for mixed repositories (apps, scripts, examples)
- More explicit and predictable execution model
- Better defaults for dev/watch/server workflows
- CMake presets are still supported and recommended for advanced builds
.vixis now the preferred source of truth for runtime configuration
vix tests [path]: new command to run project tests easily.- Acts as an alias of
vix check --testsfor a faster, more discoverable workflow. - Supports both project validation and test execution depending on the detected target.
- Acts as an alias of
- CLI global help output: improved readability by adding consistent left padding / indentation across sections (Usage, Commands, Options, Examples, Links).
vix checkinternals: updates to support the newtestsentrypoint and shared flows.
- This release focuses on improving the testing UX and making the CLI help output feel more modern and readable.
feat(cli/run): add --san and --ubsan flags for script mode with clean sanitizer reports
- Add --san (ASan+UBSan) and --ubsan (UBSan only) flags to
vix run - Extend RunCommand Options to track sanitizer mode explicitly
- Enable sanitizer-aware CMake generation for single-file .cpp scripts
- Apply sanitizer runtime environment reliably at execution time
- Improve runtime error detection and messaging (alloc/dealloc mismatch, UBSan)
- Update
vix run -hto document new sanitizer options
This makes vix run main.cpp --san/--ubsan a fast, ergonomic way
to debug memory errors and undefined behavior in standalone scripts.
- Fixed
vix packblocking when signing was auto-detected and minisign required a passphrase. - Ensured
--sign=autonever blocks execution (non-interactive signing).
- Added explicit signing modes:
--sign=auto | never | required(npm-style behavior). - Clear user-facing messages when signing is required (tool, key, file, prompt).
- Better CLI UX around package signing and minisign integration.
- Clear distinction between optional and mandatory cryptographic signing.
- Improved
vix packsigning behavior:- Minisign password prompt is now visible when
--verboseis enabled - Prevents silent blocking when a protected secret key is used
- Minisign password prompt is now visible when
- Improved CLI help output:
- Cleaner global help layout
- Clearer
packandverifycommand descriptions - Better examples aligned with real workflows
vix packnow provides a smoother UX when signing packages- Explicit feedback when a
.vixpkgartifact is successfully created
- Added
vix verifycommand:- Manifest v2 validation
- Payload digest verification
- Optional minisign signature verification
- Auto-detection of latest
dist/<name>@<version> - Support for
.vixpkgartifacts
- Added
--require-signatureand strict verification modes
- Clear separation between unsigned and signed packages
- Environment-based key discovery:
VIX_MINISIGN_SECKEYfor signingVIX_MINISIGN_PUBKEYfor verification
This release focuses on developer experience, security clarity, and a more professional packaging & verification workflow.
vix pack: new CLI command to package a Vix project into a distributable artifact.- Generation of
dist/<name>@<version>/with optional.vixpkgzip archive. - Manifest v2 (
vix.manifest.v2) including:- Package metadata (name, version, kind, license).
- ABI detection (OS, architecture).
- Toolchain information (C++ compiler, standard, CMake version and generator).
- Layout flags (include, src, lib, modules, README).
- Exports and dependencies from
vix.toml.
- Payload integrity verification via:
- Stable SHA256 listing of payload files.
meta/payload.digest(content digest).
- Optional Ed25519 signature using
minisign:- Signature stored as
meta/payload.digest.minisig. - Secret key provided via
VIX_MINISIGN_SECKEY.
- Signature stored as
vix helpnow lists thepackcommand.vix help packprovides detailed usage and options.
- Signing is optional and only enabled when
minisignis available andVIX_MINISIGN_SECKEYis set. - The manifest is generated after checksums to avoid self-referential hashes.
cli: fix WebSocket linkage in RunScript script-mode builds
- Corrected the internal CMake generation so script builds now link against vix::websocket
- Prevents unresolved symbols (LowLevelServer::run, Session, etc.)
- Allows using <vix/websocket.hpp> directly inside standalone scripts
- Improves reliability of
vix runwhen testing HTTP+WS combined examples
- Upcoming improvements will appear here.
- Pending changes will be listed here.
- Pending fixes will be listed here.
- Modular C++ framework structure with
core,orm,cli,docs,middleware,websocket,devtools,examples. Appclass for simplified HTTP server setup.- Router system supporting dynamic route parameters (
/users/{id}style). - JSON response wrapper using
nlohmann::json. - Middleware system for request handling.
- Example endpoints
/hello,/ping, and/users/{id}. - Thread-safe signal handling for graceful shutdown.
- Basic configuration system (
Configclass) to manage JSON config files.
- Logger integrated using
spdlogwith configurable log levels. - Improved request parameter extraction for performance.
- Path parameter extraction now correctly handles
string_viewtypes. - Fixed default response for unmatched routes (
404JSON message).
- Project skeleton created.
- Basic CMake setup and folder structure.
- Placeholder modules for
core,orm, andexamples.