Repository navigation
Release Notes
This release strengthens luc’s extension platform, packaging workflow, provider reliability, and developer tooling. It introduces capability-gated extension hosts, dynamic tool registration for advanced integrations, safer session recovery, improved subprocess handling, and new CI automation.
Highlights
Capability-gated extension hosts
luc.extension/v1 manifests now support explicit capabilities, allowing extension hosts to declare which privileged behaviors they are allowed to use. Sensitive bidirectional features such as:
client_actions- session/workspace storage access
- dynamic tool registration (
tools.dynamic)
must now be explicitly granted in the manifest. This improves safety, predictability, and host isolation.
Dynamic tool registration for advanced integrations
Extension hosts can now emit tools.register to add session-scoped tools discovered at runtime. This is designed for advanced adapters such as Model Context Protocol integrations where tool catalogs are not known ahead of time.
Dynamic tools:
- are owned by the registering host
- are session-scoped
- cannot replace built-in or declarative tools
- require
tools.dynamiccapability
This expands what long-lived extension hosts can integrate with.
Safer session recovery for interrupted tool calls
When a session reloads with unfinished tool calls in history, luc now repairs unmatched calls by emitting synthetic interrupted tool results. This keeps conversations internally consistent and improves recovery after crashes, cancellations, or abrupt shutdowns.
Improved provider process cancellation
Exec-based providers now terminate entire spawned process groups on Unix systems instead of only the parent process. This prevents orphaned child processes and improves cancellation reliability for long-running adapters or wrappers.
Smarter tool-limit detection across providers
Tool loop / tool call exhaustion errors are now normalized across providers. Variants such as:
- exceeded tool limits
- maximum tool calls reached
- too many function calls
are recognized consistently, allowing cleaner auto-recovery behavior across provider implementations.
Packaging Improvements
More flexible package archives
Package validation and packing now support additional top-level assets such as:
.gitignoredocs/examples/tests/- localized README / changelog / license variants
This makes published packages more complete and easier to distribute.
Correct package layer precedence
Runtime package loading now preserves intended precedence between user and project package layers, ensuring project-installed packages properly override user-installed ones.
Developer Experience
GitHub automation added
The repository now includes:
- a standardized pull request template
- GitHub Actions CI running
go fmt, formatting verification, andgo test
This improves contribution quality and release confidence.
Documentation refresh
Docs were updated to clarify terminology across runtime surfaces, extension hosts, packages, and dynamic integrations.
- docs(runtime): clarify dynamic tool registration boundaries by @lutefd in #9
- fix(extensions): preserve package layer precedence by @lutefd in #10
- docs(runtime): standardize runtime surface terminology by @lutefd in #11
- Feature/extension host capabilities by @lutefd in #12
- Chore/GitHub workflows pr template by @lutefd in #13
- Fix/tool cancel session recovery by @lutefd in #14
- fix(tui): constrain transcript diff width by @lutefd in #15
- fix(provider): recognize tool limit error variants by @lutefd in #16
- Fix/package changelog files by @lutefd in #17
- Fix/markdown runtime views by @lutefd in #18
- fix: allow package support directories by @lutefd in #19
- Fix/runtime dialog scrolling by @lutefd in #20
Full Changelog: v0.0.7-alpha...v0.0.8-alpha