Skip to content

v0.12.0

Choose a tag to compare

@snonux snonux released this 07 Feb 19:48
· 393 commits to main since this release

Release v0.12.0

Release Notes

Overview

This release brings runtime reloadable configuration to Hexai, allowing you to update settings without restarting the LSP or CLI. Along with significant internal refactoring, it improves configuration management, developer ergonomics, stability, and test coverage. This makes Hexai both easier and safer to use in dynamic coding workflows.


Features

Runtime Config Reloading

  • Live Reload with /reload> Command:
    You can now reload your config.toml at runtime in the editor chat (/reload>), applying changes immediately—no restart required. This is especially helpful for switching LLM providers, adjusting prompts, or tuning completion behavior on the fly.

    • Changes take effect instantly for LSP (completions, actions, chat), CLI, and tmux integrations.
    • After a reload, Hexai shows a summary of updated settings for full transparency.
  • Central Runtime Config Store:
    The LSP, CLI, and other front-ends now share a single source of configuration truth, reducing reload errors or inconsistencies across features.

Configuration Improvements

  • Env/Config Precedence for Reloads:

    • On initial startup, environment variables override config file values.
    • On /reload>, the config file is authoritative, ignoring environment overrides. This makes it easy to roll back temporary overrides.
  • Dynamic Subscription System:

    • Internal components (LSP server, LLM client, stats) automatically react to configuration changes.
    • No more manual restarts when changing LLM provider, model, prompt, or other key settings.

Improvements

  • Consistency:
    All major configuration parameters (max_tokens, provider/model, debounce/throttle settings, triggers, window stats, etc.) now update dynamically as configuration changes.

  • User Feedback:
    The /reload> command returns a clear summary of what settings changed, directly in your editor chat.

  • Expanded Tests:
    Over 500 new or modified lines of tests ensure that reload, config application, invalid or partial updates, and related error paths behave as expected. Coverage remains above 85%.

  • File/Env Loading Refactor:

    • Config loader now supports options to exclude environment variables during runtime reload, ensuring clarity and consistency.
  • Refined Documentation:

    • Updated help, README, and tmux guides to document runtime config reloading and its effects.
    • State and feature plans documented in a new PLAN.md.

Bug Fixes

  • Config Edge Cases:

    • Fixed an issue where switching providers or models mid-session would not always be fully applied.
    • /reload> now always reflects true current file values, clearing previous environment-only overrides until restart.
    • LSP and CLI now reliably pick up prompt and trigger config changes.
  • Test Flakiness:

    • Improved isolation of test configuration and temp file paths.
    • Stronger assertions and smaller test execution scopes.

Developer & Internal

  • Modularized LSP, LLM, and CLI initialization to work with runtime config updates.
  • Added a runtimeconfig package: subscription, atomic update, diff, and reload logic.
  • Helpers/factories now support configuration hot-swapping, streamlining new feature development.

Usage Notes & Migration

  • To enable live reload:
    1. Update Hexai to this release.
    2. In LSP-based editors, type /reload> in a chat or command buffer to refresh with your latest config file.
    3. In CLI or TUI flows, reload is supported or coming soon.
  • Changing environment variables still requires a restart—/reload> only reloads the config file on disk.
  • No breaking config changes in this release.
    Existing config.toml files and defaults continue to work as before.

Acknowledgements

Special thanks to all testers and early adopters for their feedback and bug reports, which directly shaped these improvements.


Hexai is now friendlier and more responsive to live configuration changes, making AI-assisted coding even smoother.