diff --git a/CHANGELOG.md b/CHANGELOG.md index 715609e..9b4b3de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,95 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v2.7.7 + +### Added + +- Added the first package-based extension system for Vix Note. + - Vix Note extensions are distributed as standard Vix packages through the Vix Registry. + - Added support for the `extensions.note` manifest section, including API versioning, capabilities, custom cell types, runtime configuration, aliases, and permissions. + - Added discovery of built-in, project-local, and globally installed extensions. + - Project extensions take precedence over global extensions, while built-in cell types remain protected. + - Added support for preserving custom cell types such as `python` when loading, saving, and exporting `.vixnote` documents. + - Added a generic external runtime based on the `vix-note-extension-1` JSON protocol. + - Added the `GET /api/extensions` endpoint and dynamic frontend discovery of available cell types. + - Existing Markdown, HTML, C++, and Reply cells now run through the extension system. + +- Added extension management to the Vix Note interface. + - Browse installed, built-in, recommended, and registry extensions. + - Install, uninstall, enable, and disable extensions directly from the UI. + - Added a dedicated extension details page with runtime information and contribution metadata. + +- Extended registry and package commands for extension packages. + - `vix publish` now validates and preserves `extensions.note` metadata in published packages. + - `vix search` now supports `--extension`, `--capability`, `--type`, and `--json`. + - Extension searches can now be performed using filters without requiring a text query. + - `vix install -g` now preserves extension metadata in the global installation registry. + - Added `vix note --list-extensions` for listing all discovered Note extensions. + +- Modernized the Vix Reply interactive terminal. + - Added a new Vix-branded banner and prompt with compiler, platform, and keyboard shortcut information. + - Added a dedicated modern prompt for native C++ snippet mode. + - Added real-time C++ syntax highlighting for directives, headers, keywords, types, strings, numbers, comments, namespaces, macros, and function calls. + - Added automatic indentation based on C++ block depth. + - Added automatic dedentation when entering closing braces. + - Added code-mode `Tab` and `Shift+Tab` indentation. + - Added editable cursor positioning with left and right arrow navigation. + - Added insertion and deletion at the current cursor position instead of restricting edits to the end of the line. + - Added support for `Home`, `End`, `Delete`, `Ctrl+A`, `Ctrl+E`, `Ctrl+U`, and `Ctrl+K`. + - Added an optional Vi-style keymap through `VIX_REPLY_KEYMAP=vi`. + - Added initial Vi navigation commands including `h`, `l`, `0`, `$`, `w`, `b`, `i`, `a`, `I`, `A`, and `x`. + - Added terminal color detection with support for `NO_COLOR` and non-interactive terminals. + +### Fixed + +- Fixed global installation of header-only packages that build CLI executables without CMake runtime install rules. + - `vix install -g` now detects the generated executable and installs it into the Vix global `bin` directory. + - Commands become immediately available from `~/.vix/global/bin` when it is on `PATH`. + - Packages that provide proper `install(TARGETS ... RUNTIME DESTINATION bin)` rules continue to use the standard CMake installation process. + +- Fixed Vix Note asset resolution. + - Installed assets are now preferred over stale build-tree assets when launching `vix note`. + +- Fixed C++ editing behavior in Vix Reply. + - C++ indentation is no longer removed before snippets are stored or executed. + - Pressing `Tab` in C++ mode no longer opens the regular Reply command completion menu. + - Continuation prompts now align correctly with the first C++ input line. + - Empty lines inside C++ snippets are preserved without storing indentation-only whitespace. + - Backspace now removes indentation levels correctly at the beginning of a code line. + - Cursor navigation now works across the complete line while syntax highlighting remains active. + +### Validation + +- Built the Vix Note module and the Vix CLI successfully. +- Verified `vix note --list-extensions` with the built-in extensions. +- Verified installation, enabling, disabling, and removal of Note extensions. +- Verified custom cell type round-tripping with Python cells. +- Verified the `/api/extensions` endpoint. +- Verified execution through a temporary external Note extension runtime. +- Verified extension-aware searches with: + - `vix search --extension note --json` + - `vix search json --json` +- Verified `vix install -g gaspardkirira/cli_test`, `command -v cli_test`, and `cli_test chain 5`. +- Added and executed a regression test covering global installation of header-only CLI packages. +- Built the complete Vix project with the updated Reply module. +- Verified C++ syntax highlighting in the interactive terminal. +- Verified automatic indentation and closing-brace dedentation. +- Verified `Tab`, `Shift+Tab`, Backspace, arrow-key navigation, `Home`, `End`, and `Delete`. +- Verified editing and inserting code in the middle of an existing line. +- Verified native C++ snippet execution and structured compiler diagnostics. +- Verified the optional Vi keymap with `VIX_REPLY_KEYMAP=vi`. +- Verified that the updated Reply editor builds without unused-function warnings. + +### Known limitations + +- External Note extension runtimes currently use one-shot processes. +- External process execution is currently implemented only on POSIX platforms. Windows reports an explicit unsupported runtime error. +- Persistent kernels, interactive permissions, extension-provided JavaScript, native C ABI loading, and automatic local runtime builds are not yet implemented. +- Additional end-to-end CTest coverage for the extension system is planned. +- Real-time C++ highlighting in Vix Reply is lexical and does not perform full compiler-backed semantic analysis. +- The Vi keymap currently provides a focused initial command set rather than complete Vim compatibility. + ## v2.7.6 ### Added diff --git a/README.md b/README.md index 782ba8b..b7581e2 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,18 @@ vix help The README intentionally does not reproduce the complete command reference. Detailed command behavior, options, examples, and project formats are maintained in the [official documentation](https://docs.vixcpp.com). +## Vix Reply + +

+ Vix Reply interactive C++ REPL +

+ +Vix Reply provides an interactive terminal for experimenting with C++, running native snippets, and receiving structured compiler diagnostics without creating a project first. + ## Native C++ remains visible Vix is not a successor to C++, a new language syntax, or a separate compiler model. It does not turn C++ into an interpreted environment, and it does not place applications inside a closed runtime. @@ -209,6 +221,18 @@ vix modules add client --websocket --workflow client See the [module documentation](https://docs.vixcpp.com), [vix.app guide](https://docs.vixcpp.com/guides/vix-app), and [application modules guide](https://docs.vixcpp.com/app-modules) for the complete reference. +## Production deployment workflows + +Vix provides production workflows for building, testing, restarting services, checking application health, validating Nginx configuration, inspecting failure logs, and rolling back failed Git deployments. + +```bash +vix deploy --dry-run +vix deploy +vix doctor production +``` + +Deployment behavior is configured in `vix.json`, while the application, compiler, service, and production infrastructure remain under the developer’s control. + ## SDK profiles and the Vix Registry SDK profiles define coherent development environments for different kinds of Vix applications. They allow the CLI, runtime modules, build configuration, and supporting tools to be installed and upgraded together instead of being assembled manually on every machine. @@ -221,13 +245,13 @@ Together, SDK profiles and the registry make it easier to reproduce the same pro

Vix Note interface

-Vix Note provides a visual space for executable C++ notes, examples, experiments, and diagnostics. It uses the normal Vix workflow underneath, so code explored in a note remains connected to the same runtime and toolchain used by a project. +Vix Note is a visual workspace for executable notes, experiments, and diagnostics. Its extension system allows packages to add new cell types, runtimes, and developer tools such as Python execution or C++ memory visualization. ```bash vix note @@ -272,7 +296,7 @@ New capabilities can still be added, but they should solve a practical applicati ## Projects around Vix.cpp -Vix.cpp remains the native foundation. Higher-level libraries and runtimes can grow around it without making the core platform lose focus. +Vix.cpp remains the native foundation. Higher-level libraries, runtimes, and developer tools can grow around it without making the core platform lose focus. **[Rix](https://rix.vixcpp.com)** is the optional userland library layer for Vix applications. It provides application-level packages and a unified facade above the core Vix runtime. @@ -280,6 +304,8 @@ Vix.cpp remains the native foundation. Higher-level libraries and runtimes can g **[Kordex](https://github.com/softadastra/kordex)** is a JavaScript runtime for reliable local-first applications built on Vix.cpp. It demonstrates how the native platform can support higher-level runtimes while preserving a C++ foundation. +**[Cgride](https://github.com/cgride/cgride)** is an embeddable native C++ build engine configured in C++. It provides project modeling, toolchain discovery, build graphs, incremental compilation, caching, and a minimal CLI. It is also designed for integration into runtimes and developer tools such as Vix.cpp. + ## Working on this repository This repository contains the Vix CLI, runtime, modules, SDK profiles, registry integration, tests, examples, release infrastructure, and documentation source. Users normally begin with the packaged CLI and the official documentation; contributors work directly from this repository. @@ -309,4 +335,5 @@ Vix.cpp is maintained by [Softadastra](https://softadastra.com), a company build ## License -Vix.cpp is available under the MIT License. See [LICENSE](LICENSE) for details. +Vix.cpp is available under the MIT License. \ +See [LICENSE](LICENSE) for details. diff --git a/modules/async b/modules/async index d37aedb..e2d6ba6 160000 --- a/modules/async +++ b/modules/async @@ -1 +1 @@ -Subproject commit d37aedb5659f9d0d8bcb8c227904fe02fa4997c9 +Subproject commit e2d6ba64b76d2f2fb33de2e0d16b38a0e0d52f73 diff --git a/modules/cli b/modules/cli index 0454608..1e4773c 160000 --- a/modules/cli +++ b/modules/cli @@ -1 +1 @@ -Subproject commit 0454608e750f23635e3cd2259f708da89e47fe5a +Subproject commit 1e4773c1aace145fe8941a8c73887e0db4f0576e diff --git a/modules/env b/modules/env index 73e8bc1..845b00a 160000 --- a/modules/env +++ b/modules/env @@ -1 +1 @@ -Subproject commit 73e8bc1d162fda243dbc16773791a8fbf7a72271 +Subproject commit 845b00a6eaa028f4d463685e475725cc2649f865 diff --git a/modules/error b/modules/error index 2e71abc..a0ed7f4 160000 --- a/modules/error +++ b/modules/error @@ -1 +1 @@ -Subproject commit 2e71abc9b048120be8df69d88137d1bebb619dd3 +Subproject commit a0ed7f489ea1ff0c30d22437fd48905544cd2c02 diff --git a/modules/fs b/modules/fs index 7f3f417..5e733dc 160000 --- a/modules/fs +++ b/modules/fs @@ -1 +1 @@ -Subproject commit 7f3f417bee8347b8248ff4f5ee1afaadc1a5c275 +Subproject commit 5e733dcf414ae017914d25b746f7c55a256e84bd diff --git a/modules/io b/modules/io index a35a308..04783ad 160000 --- a/modules/io +++ b/modules/io @@ -1 +1 @@ -Subproject commit a35a3089493847adf53fc282074dee180a99b73f +Subproject commit 04783adf7033301ba852dd249d1d2b4e14488459 diff --git a/modules/log b/modules/log index 5038b5c..64e73d3 160000 --- a/modules/log +++ b/modules/log @@ -1 +1 @@ -Subproject commit 5038b5c8bd5869ff28b750a14dd1a1520eeee254 +Subproject commit 64e73d37b2904f36d9ff889d651b9a0100b48f0b diff --git a/modules/note b/modules/note index acbc268..10b256e 160000 --- a/modules/note +++ b/modules/note @@ -1 +1 @@ -Subproject commit acbc268ac14ad9c0ad8d025a14825c384e7fb425 +Subproject commit 10b256efd2167cd588e70526fc947c01f4197b9b diff --git a/modules/os b/modules/os index 6c8ac76..41df9c5 160000 --- a/modules/os +++ b/modules/os @@ -1 +1 @@ -Subproject commit 6c8ac76a80b44994cca4d0de64e224e8c3b4709d +Subproject commit 41df9c51878c015ea17f486d835e3afee3b42bdc diff --git a/modules/path b/modules/path index b2494c0..39dc4d1 160000 --- a/modules/path +++ b/modules/path @@ -1 +1 @@ -Subproject commit b2494c0cf35877604b0f89d7b3769dc3f7b9d74d +Subproject commit 39dc4d1c8fac4e91e9f18077062c8d8a723c5192 diff --git a/modules/process b/modules/process index 9cb75eb..ba4a16a 160000 --- a/modules/process +++ b/modules/process @@ -1 +1 @@ -Subproject commit 9cb75ebfb48e92e0a08a1f69cd3a577c200446a5 +Subproject commit ba4a16a4dc3ec7f30f64dae18d250a00272149d4 diff --git a/modules/reply b/modules/reply index 160b723..73c6983 160000 --- a/modules/reply +++ b/modules/reply @@ -1 +1 @@ -Subproject commit 160b723c0681dabdd392c3f46018989b35fa863d +Subproject commit 73c69833be5129dab80ce3bc12e1d9fc231e0690 diff --git a/modules/tests b/modules/tests index 0e26396..b533fb0 160000 --- a/modules/tests +++ b/modules/tests @@ -1 +1 @@ -Subproject commit 0e2639638b01a77b1a4d95c74061ecf0685c5937 +Subproject commit b533fb066e9ac755dfff4a4f589c979e9bc50b4f diff --git a/modules/utils b/modules/utils index ef1b6da..2f7b00e 160000 --- a/modules/utils +++ b/modules/utils @@ -1 +1 @@ -Subproject commit ef1b6da424a90bb547976cc1b9cda7928a7f89e7 +Subproject commit 2f7b00e624a81dccbdc5ffbce94901a62f4d7c31