Skip to content
89 changes: 89 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
35 changes: 31 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,18 @@ vix help <command>

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

<p align="center">
<img
src="https://res.cloudinary.com/dwjbed2xb/image/upload/v1784487655/vix-repl_cxqsj2.png"
width="100%"
alt="Vix Reply interactive C++ REPL"
/>
</p>

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.
Expand Down Expand Up @@ -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.
Expand All @@ -221,13 +245,13 @@ Together, SDK profiles and the registry make it easier to reproduce the same pro

<p align="center">
<img
src="https://res.cloudinary.com/dwjbed2xb/image/upload/v1782674915/vix-note_ly72av.png"
src="https://res.cloudinary.com/dwjbed2xb/image/upload/v1784487655/vix-note_zwo1er.png"
width="100%"
alt="Vix Note interface"
/>
</p>

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
Expand Down Expand Up @@ -272,14 +296,16 @@ 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.

**[Cnerium](https://github.com/softadastra/cnerium)** is a reliability-first backend layer for Vix. It provides a place for backend structure and production-oriented patterns to evolve without turning the core runtime into a large opinionated framework.

**[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.
Expand Down Expand Up @@ -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.
2 changes: 1 addition & 1 deletion modules/async
Submodule async updated 1 files
+35 −10 vix.json
2 changes: 1 addition & 1 deletion modules/env
Submodule env updated 1 files
+55 −0 vix.json
2 changes: 1 addition & 1 deletion modules/error
Submodule error updated 1 files
+46 −0 vix.json
2 changes: 1 addition & 1 deletion modules/fs
Submodule fs updated 1 files
+55 −0 vix.json
2 changes: 1 addition & 1 deletion modules/io
Submodule io updated 1 files
+51 −0 vix.json
2 changes: 1 addition & 1 deletion modules/log
Submodule log updated 1 files
+51 −0 vix.json
2 changes: 1 addition & 1 deletion modules/os
Submodule os updated 1 files
+56 −0 vix.json
2 changes: 1 addition & 1 deletion modules/path
Submodule path updated 1 files
+51 −0 vix.json
2 changes: 1 addition & 1 deletion modules/process
Submodule process updated 1 files
+64 −0 vix.json
2 changes: 1 addition & 1 deletion modules/tests
Submodule tests updated 1 files
+46 −0 vix.json
2 changes: 1 addition & 1 deletion modules/utils
Submodule utils updated 1 files
+40 −8 vix.json
Loading