2026-11-01 19:31:20 +00:00
|
|
|
# Changelog
|
|
|
|
|
|
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
|
|
|
|
|
|
## [Unreleased]
|
|
|
|
|
|
2026-11-03 16:13:15 +00:00
|
|
|
### Changed
|
|
|
|
|
|
2026-11-03 19:20:00 +00:00
|
|
|
- Pretty-print actor state and mailbox JSON with two-space indentation while
|
|
|
|
|
preserving exact integers and actor-reference markers.
|
|
|
|
|
- Rename the actor's virtual log file to `actor.log` for automatic VS Code log
|
|
|
|
|
highlighting and show syslog-style priority, actor, sequence, and severity fields.
|
|
|
|
|
|
2026-11-03 19:11:39 +00:00
|
|
|
- Expand VS Code actors into directories with read-only `meta.json`/`log`,
|
|
|
|
|
live-editable `config.json`, and guarded natural-JSON `state.json`/`mailbox.json`.
|
|
|
|
|
- Allow reload/become to repair failed actors' implementations without clearing
|
|
|
|
|
failure, state, or reserved messages; restart remains explicit.
|
|
|
|
|
|
2026-11-03 18:23:43 +00:00
|
|
|
- **Breaking:** Successful graceful stop and immediate kill now remove actors,
|
|
|
|
|
discarding their state, mailbox, and retained logs. Failed actors remain until
|
|
|
|
|
killed. Restart remains an independent, identity-preserving operation.
|
|
|
|
|
- Default the bundled self-incrementing counter's missing/null state to zero
|
|
|
|
|
when it handles its first message.
|
|
|
|
|
- Mark removed actors' open VS Code inspection snapshots read-only with
|
|
|
|
|
`removed: true` while removing them from the actor list.
|
2026-11-03 18:00:18 +00:00
|
|
|
- **Breaking:** Handler and shutdown-hook unit returns (including omitted returns)
|
|
|
|
|
now retain the previously committed state instead of replacing it with null.
|
|
|
|
|
Draft mutations are discarded; valid sends and message acknowledgement still commit.
|
2026-11-03 18:23:43 +00:00
|
|
|
- Change the bundled counter to an `inc` operation that logs each increment
|
|
|
|
|
and continuously queues another increment to itself using `ctx.this`.
|
2026-11-03 17:26:21 +00:00
|
|
|
- **Breaking:** Protocol v5 adds actor log thresholds to snapshots, guarded
|
|
|
|
|
editing operations, and opt-in log-history/follow operations and notifications.
|
2026-11-03 16:49:04 +00:00
|
|
|
- Move image sources and actors into a dedicated Runa Activity Bar sidebar,
|
|
|
|
|
with the source file tree first and both views visible by default.
|
2026-11-03 16:42:13 +00:00
|
|
|
- Remove the VS Code Add Source Folder to Workspace command; image files are
|
|
|
|
|
accessed exclusively through the automatic image-source Explorer view.
|
2026-11-03 16:37:31 +00:00
|
|
|
- Show the image's editable virtual `source` filesystem automatically in the
|
|
|
|
|
VS Code Explorer without adding a workspace folder.
|
2026-11-03 16:13:15 +00:00
|
|
|
- Require an explicit `runa-cli` subcommand: `repl` starts the interactive
|
|
|
|
|
session, and each image operation is also available as a one-shot command.
|
|
|
|
|
- Rename the REPL actor listing command from `actors` to `ps`, remove its
|
|
|
|
|
`cancel` command, and rename `mise run cli` to `mise run repl`.
|
|
|
|
|
|
2026-11-03 16:05:29 +00:00
|
|
|
### Fixed
|
|
|
|
|
|
2026-11-03 18:29:54 +00:00
|
|
|
- Refresh saved actor inspection JSON through filesystem notifications instead
|
|
|
|
|
of an unavailable VS Code revert command.
|
2026-11-03 16:37:31 +00:00
|
|
|
- Always prompt for JSON state when Spawn with State is invoked from a source
|
|
|
|
|
context menu, including multi-selection menu arguments.
|
2026-11-03 16:24:09 +00:00
|
|
|
- Close extension connections with a WebSocket handshake on disconnect,
|
|
|
|
|
reconnect, and deactivation instead of terminating the transport immediately.
|
2026-11-03 16:21:41 +00:00
|
|
|
- Exit the REPL on Ctrl+C and complete the WebSocket close handshake instead
|
|
|
|
|
of returning to the prompt.
|
2026-11-03 16:05:29 +00:00
|
|
|
- Complete the WebSocket close handshake when the CLI exits, preventing normal
|
|
|
|
|
disconnects from producing a connection-reset protocol error on the server.
|
|
|
|
|
|
2026-11-01 19:31:20 +00:00
|
|
|
### Added
|
|
|
|
|
|
2026-11-04 00:57:37 +00:00
|
|
|
- Explicit versioned disk image save/restore through the CLI, REPL, protocol and
|
|
|
|
|
VS Code commands. Preserve source/history, actor identities, committed state,
|
|
|
|
|
mailbox envelopes and retained logs; reject unfinished handlers, pause runnable
|
|
|
|
|
actors on save and restore their scheduling eligibility with fresh incarnations.
|
|
|
|
|
Snapshot files are server-local and never overwrite existing destinations.
|
|
|
|
|
|
2026-11-03 22:40:04 +00:00
|
|
|
- Native VS Code debugger attachment to failed actors for retained-state,
|
|
|
|
|
reserved-message and failure inspection, plus DAP exception details for both
|
|
|
|
|
existing and newly observed failures. Debug controls never retry failed actors;
|
|
|
|
|
no post-mortem stack is fabricated.
|
|
|
|
|
|
2026-11-03 21:47:18 +00:00
|
|
|
- Read-only snapshot-path watches and Debug Console lookups using
|
|
|
|
|
`actor/<JSON Pointer path>`, with Add to Watch paths on actor variables,
|
|
|
|
|
expandable results, exact integers and explicit rejection of Rune expressions.
|
|
|
|
|
|
2026-11-03 20:48:08 +00:00
|
|
|
- Read-only VS Code debugger actor-snapshot scopes with expandable committed
|
|
|
|
|
state, mailbox, configuration and identity, exact integer formatting, paged
|
|
|
|
|
children, and stale-handle invalidation. Invocation drafts and frame locals
|
|
|
|
|
are not exposed or evaluated.
|
|
|
|
|
|
2026-11-03 20:36:30 +00:00
|
|
|
- Native VS Code **Debug Actor** attach sessions with exact loaded sources,
|
|
|
|
|
gutter breakpoint verification, call stacks, pause/continue and bounded toolbar
|
|
|
|
|
stepping. Sessions terminate on actor removal, implementation/incarnation change
|
|
|
|
|
or image disconnect; detaching never kills or implicitly resumes the actor.
|
|
|
|
|
|
2026-11-03 20:14:06 +00:00
|
|
|
- Bounded source step-over and step-out through the runtime, image API, protocol,
|
|
|
|
|
and VS Code actor commands, preserving nested breakpoints and async stop boundaries.
|
|
|
|
|
|
2026-11-03 19:53:43 +00:00
|
|
|
- Actor-local, implementation-bound source breakpoints with explicit line
|
|
|
|
|
verification and scheduler pauses that retain active drafts and buffered sends.
|
|
|
|
|
- Bounded source step-into through the image API/protocol and VS Code actor
|
|
|
|
|
actions, with stop reasons, exact loaded-source navigation, and async/lifecycle safety.
|
|
|
|
|
|
2026-11-03 19:37:05 +00:00
|
|
|
- Read-only execution-stack inspection with exact loaded source identities,
|
|
|
|
|
bounded nested Rune frames, UTF-16 locations, and explicit pending-await status.
|
|
|
|
|
- VS Code **Inspect Execution Stack...** actor action, navigating frames in
|
|
|
|
|
immutable loaded-source documents even after shared or temporary source edits.
|
|
|
|
|
|
2026-11-03 19:28:56 +00:00
|
|
|
- Structured Rune compilation errors and warnings through a read-only
|
|
|
|
|
`check_source` protocol operation and compilation-failure error details.
|
|
|
|
|
- Automatic VS Code inline/Problems diagnostics for open image sources and
|
|
|
|
|
actor-specific behavior documents, including unsaved edits, correct UTF-16
|
|
|
|
|
locations, and stale-response/session isolation.
|
|
|
|
|
|
2026-11-03 19:11:39 +00:00
|
|
|
- Source file creation, rename/move with confirmed actor path updates and
|
|
|
|
|
history preservation, and deletion guarded against running actor users.
|
|
|
|
|
- Server-owned actor-specific temporary behaviors, safe-boundary compile-on-save,
|
|
|
|
|
and VS Code Edit Current Behavior, Go to Behavior, and confirmed Update Behavior
|
|
|
|
|
actions. Temporary scripts appear as an actor's `behavior` file and are cleared
|
|
|
|
|
by reload without implicitly committing shared source.
|
|
|
|
|
|
2026-11-03 17:52:10 +00:00
|
|
|
- Editable VS Code inspection JSON for inactive actors, restoring protected
|
|
|
|
|
fields with a warning; actor-reference copy actions and a scheduler toolbar button.
|
|
|
|
|
- Read-only `ctx.this` actor reference for transactional self-messaging.
|
2026-11-03 17:26:21 +00:00
|
|
|
- Guarded actor state and reserved/queued message editing through the CLI,
|
|
|
|
|
REPL, and VS Code for paused/stopped/failed actors without active execution.
|
|
|
|
|
- Immediate actor logs via `ctx.log(level, message)` and severity helpers,
|
|
|
|
|
per-actor thresholds, bounded retained history, and server-filtered CLI
|
|
|
|
|
`logs [-f|--follow] [actor...]` subscriptions.
|
2026-11-03 16:01:24 +00:00
|
|
|
- Mutable image-owned source files organized beneath `source/`, with independent
|
|
|
|
|
commit history and generated readable revision IDs. Spawn compiles the current
|
|
|
|
|
working file whether committed or not.
|
|
|
|
|
- Internal sender/data envelopes and actor contexts with `send` and `send_from`;
|
|
|
|
|
sends remain transactional and actors cannot construct privileged system commands.
|
|
|
|
|
- Graceful stop with optional `on_shutdown(state)`, force kill, restart,
|
|
|
|
|
pause/resume, and safe-boundary reload/become.
|
|
|
|
|
- VS Code image source filesystem, file-context spawn actions, and source
|
|
|
|
|
commit/history/rollback controls.
|
2026-11-03 14:57:43 +00:00
|
|
|
- VS Code behavior explorer with revision history, implementation identities,
|
|
|
|
|
and read-only Rune source documents isolated by connection and revision.
|
|
|
|
|
Image notifications refresh behavior listings without changing historical
|
|
|
|
|
source documents.
|
2026-11-03 14:54:07 +00:00
|
|
|
- VS Code actor spawning with explicit behavior and initial state, structured
|
|
|
|
|
message sending, pause/resume/stop/restart controls, and explicit scheduler
|
|
|
|
|
ticks. JSON inputs preserve i64 integers and `$actor`/`$record` markers.
|
|
|
|
|
- Lossless, size-bounded mutation requests and real-server/extension-host
|
|
|
|
|
coverage for actor controls.
|
2026-11-03 14:36:21 +00:00
|
|
|
- Non-destructive `image_changed` server notifications with coalesced
|
|
|
|
|
per-connection revisions and automatic VS Code tree/inspector refresh.
|
|
|
|
|
- Tests for WebSocket subprotocol negotiation, invalid messages, multi-client
|
|
|
|
|
notifications, and automatic mailbox/lifecycle/failure inspector updates.
|
2026-11-03 13:52:28 +00:00
|
|
|
- Initial TypeScript VS Code extension with explicit localhost connection
|
|
|
|
|
management, an actor explorer, and read-only state/mailbox/execution snapshots.
|
|
|
|
|
- Bounded protocol-v3 extension client with lossless 64-bit JSON integers,
|
|
|
|
|
correlation checks, disconnect handling, and no automatic retries.
|
|
|
|
|
- Extension transport tests, real Rust-server interoperability coverage, and a
|
|
|
|
|
VS Code host test for inspector refresh and reconnect isolation.
|
feat!: add structured actor state and messages
Introduce owned portable values with distinct actor references, bounded Rune conversion, JSON REPL literals, and nested reference completion. Preserve isolation and atomic transitions across state, messages, effects, migration, inspection, and TCP clients.
BREAKING CHANGE: protocol v3 replaces integer state and kind/value/target_ref messages with tagged values. Rune handlers now take (state, message) and return (new_state, [(actor_reference, message)]). The REPL send command accepts one JSON message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-02 15:56:03 +00:00
|
|
|
- Portable structured actor values: null, booleans, signed 64-bit integers,
|
|
|
|
|
strings, lists, records, and distinct NanoID actor references.
|
|
|
|
|
- JSON state/message literals in the REPL, including named `$actor` references,
|
|
|
|
|
`$record` escaping, and actor-reference completion inside nested values.
|
|
|
|
|
- Value conversion limits and tests for nested-state isolation, copied sends,
|
|
|
|
|
cyclic/unsupported Rune output, and all-or-nothing structured transitions.
|
2026-11-02 14:57:26 +00:00
|
|
|
- Reusable loopback TCP protocol client with bounded messages, correlation
|
|
|
|
|
checks, explicit connection failures, and no automatic request retries.
|
|
|
|
|
- Multi-client and reconnect tests proving that actors remain in the
|
|
|
|
|
server-owned image after development clients disconnect.
|
2026-11-02 08:19:04 +00:00
|
|
|
- Typed, instruction-sliced Rune invocations with preserved async execution,
|
|
|
|
|
wake-driven resumption, and cancellation tests.
|
|
|
|
|
- Minimal single-worker actor runtime with bounded FIFO mailboxes, private
|
|
|
|
|
integer state, structured messages, immutable implementation IDs, explicit
|
|
|
|
|
message effects, inspection, lifecycle events, stop, and restart.
|
|
|
|
|
- Runnable two-actor counter demonstration and tests for runaway fairness,
|
|
|
|
|
pending-message isolation, failures, backpressure, and all-or-nothing effects.
|
2026-11-02 08:31:25 +00:00
|
|
|
- Interactive local CLI for spawning actors, sending messages, advancing ticks,
|
|
|
|
|
inspecting actors/events, and stopping/restarting actors.
|
2026-11-02 09:08:49 +00:00
|
|
|
- Versioned BLAKE3 source and implementation identities, original-source
|
|
|
|
|
retention, a Rune compile-input fingerprint, and an in-memory compiled
|
|
|
|
|
artifact cache.
|
2026-11-02 09:18:07 +00:00
|
|
|
- In-memory named behavior revisions with optimistic publish checks, immutable
|
|
|
|
|
history, rollback revisions, and runtime installation at idle handler
|
|
|
|
|
boundaries.
|
2026-11-02 09:24:43 +00:00
|
|
|
- CLI commands for named behavior publishing, history, rollback, and
|
|
|
|
|
installation, plus `mise run run` to launch the local executable.
|
2026-11-02 11:35:29 +00:00
|
|
|
- Cooperative actor pause/resume between scheduler ticks, preserving active
|
|
|
|
|
invocations and emitting lifecycle events.
|
2026-11-02 11:45:02 +00:00
|
|
|
- Explicit safe-point state migration during implementation installation, with
|
|
|
|
|
atomic failure behavior and migration events.
|
2026-11-02 12:04:47 +00:00
|
|
|
- Explicit invocation cancellation that requeues the reserved message for
|
|
|
|
|
retry, exposed in the CLI and documented with native side-effect caveats.
|
2026-11-02 12:11:11 +00:00
|
|
|
- Active actor execution telemetry in snapshots: completed VM steps,
|
|
|
|
|
instruction pointer, and call-frame depth.
|
2026-11-02 12:20:45 +00:00
|
|
|
- Trusted in-process `runa-image-api` service boundary for code and actor
|
|
|
|
|
operations, now used by the local CLI.
|
2026-11-02 12:36:32 +00:00
|
|
|
- Versioned, transport-neutral `runa-protocol` request, response, and event
|
|
|
|
|
DTOs with serde support and request validation.
|
2026-11-02 12:44:33 +00:00
|
|
|
- Transport-neutral `runa-server` dispatcher routing protocol commands through
|
|
|
|
|
the image API with typed replies and error codes.
|
2026-11-02 13:18:45 +00:00
|
|
|
- Local JSON-lines stdio transport for the protocol dispatcher, with a 1 MiB
|
|
|
|
|
request limit and explicit malformed-input failures.
|
2026-11-02 13:40:56 +00:00
|
|
|
- Reusable local child-process client for issuing correlated protocol requests
|
|
|
|
|
and shutting down the server process cleanly.
|
2026-11-02 13:50:30 +00:00
|
|
|
- Loopback-only TCP JSON-lines endpoint for local development clients, sharing
|
|
|
|
|
the same live image as stdio and limiting concurrent clients.
|
2026-11-02 08:19:04 +00:00
|
|
|
- Execution-model decision and Phase 1 runtime documentation.
|
2026-11-02 08:27:29 +00:00
|
|
|
- Lifecycle tests proving failed-message retry from committed state and
|
|
|
|
|
stop/restart preservation of reserved-first FIFO order.
|
2026-11-02 14:19:25 +00:00
|
|
|
- NanoID-based public actor references, explicit behavior-and-state spawning,
|
|
|
|
|
named REPL actor bindings, tab completion, and command history navigation.
|
|
|
|
|
- NanoID-based public actor references, explicit behavior-and-state spawning,
|
|
|
|
|
named REPL actor bindings, tab completion, and command history navigation.
|
2026-11-02 08:19:04 +00:00
|
|
|
|
|
|
|
|
- Runnable Phase 0 experiment pinned to Rune 0.14.2, covering script execution,
|
|
|
|
|
native calls, async suspension, instruction budgets, frame inspection,
|
|
|
|
|
stepping, and compiled-code sharing across isolated VMs and threads.
|
|
|
|
|
- Tests for feasibility results, invalid source, runtime errors, independent
|
|
|
|
|
stacks, and cancellation by dropping suspended execution.
|
|
|
|
|
- Rune feasibility report with measured timings, shallow object sizes,
|
|
|
|
|
limitations, and a proposed Phase 1 execution model.
|
|
|
|
|
|
2026-11-01 19:31:20 +00:00
|
|
|
- Initial Rust workspace with the `runa` binary and a `runa-rune` library
|
|
|
|
|
scaffold for Phase 0. Rune integration is not implemented yet.
|
|
|
|
|
- Project README and agent guidelines.
|
|
|
|
|
- Base directories for architectural decisions, default image scripts,
|
|
|
|
|
development automation, examples, system tests, and the VS Code extension.
|
|
|
|
|
- Mise tasks for formatting, Clippy linting, workspace tests, and sequential
|
|
|
|
|
pre-commit validation.
|
|
|
|
|
- Tombi, rustfmt, and Clippy configurations.
|
|
|
|
|
|
|
|
|
|
### Changed
|
|
|
|
|
|
2026-11-03 16:01:24 +00:00
|
|
|
- **Breaking:** Protocol v4 spawns by source path (for example `actors/counter`).
|
|
|
|
|
Rune handlers are now `handle(ctx, state, sender, message) -> state`, with sends
|
|
|
|
|
through the context instead of returned transition tuples.
|
|
|
|
|
- **Breaking:** CLI `commit <path>` replaces publishing; history and rollback
|
|
|
|
|
use file paths and generated revision IDs. Source saves, commits, and actor
|
|
|
|
|
reloads are separate operations.
|
|
|
|
|
|
2026-11-03 14:49:35 +00:00
|
|
|
- Renamed the server executable/crate from `runa-server` to `runa`, and the REPL
|
|
|
|
|
from `runa` to `runa-cli`. The server now listens on `127.0.0.1:3737` by default.
|
|
|
|
|
- Clap derive/env argument parsing for both executables, including generated
|
|
|
|
|
help/version, `RUNA_LISTEN` / `RUNA_CONNECT`, and flag-over-environment precedence.
|
|
|
|
|
- `mise run start` now starts the server; `mise run cli` launches the REPL.
|
|
|
|
|
|
2026-11-03 14:36:21 +00:00
|
|
|
- Replaced the plain TCP JSON-lines transport with loopback-only WebSockets
|
|
|
|
|
using the required `runa-debug` subprotocol in the server, REPL, and VS Code.
|
|
|
|
|
Stdio framing and version 3 request/response shapes are unchanged.
|
2026-11-03 13:41:46 +00:00
|
|
|
- Renamed the local REPL mise task from `run` to `start`.
|
feat!: add structured actor state and messages
Introduce owned portable values with distinct actor references, bounded Rune conversion, JSON REPL literals, and nested reference completion. Preserve isolation and atomic transitions across state, messages, effects, migration, inspection, and TCP clients.
BREAKING CHANGE: protocol v3 replaces integer state and kind/value/target_ref messages with tagged values. Rune handlers now take (state, message) and return (new_state, [(actor_reference, message)]). The REPL send command accepts one JSON message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-02 15:56:03 +00:00
|
|
|
- Protocol v3 and Rune's two-argument `handle(state, message)` replace the
|
|
|
|
|
temporary integer-only state and kind/value/target_ref message envelope.
|
|
|
|
|
Returned sends now contain `(actor_reference, message)` pairs; migrations,
|
|
|
|
|
snapshots, and events preserve structured values.
|
2026-11-02 14:57:26 +00:00
|
|
|
- The REPL now connects to the localhost server rather than embedding its own
|
|
|
|
|
image. Start the server first; `--connect` selects a loopback endpoint.
|
|
|
|
|
- TCP server startup publishes the bundled counter behavior once; connecting
|
|
|
|
|
or disconnecting clients does not reset behavior revisions or actor state.
|
2026-11-02 13:30:22 +00:00
|
|
|
- Interactive CLI commands now use the versioned protocol dispatcher instead
|
|
|
|
|
of calling the image API directly.
|
2026-11-02 14:19:25 +00:00
|
|
|
- Protocol version 2 replaces numeric actor IDs with NanoID actor references
|
|
|
|
|
and adds optional target references for message effects.
|
|
|
|
|
- Protocol version 2 replaces numeric actor IDs with NanoID actor references
|
|
|
|
|
and adds optional target references for message effects.
|
2026-11-02 09:08:49 +00:00
|
|
|
- Actor implementation IDs now identify compiled source/configuration content
|
|
|
|
|
rather than using sequential process-local numbers.
|
2026-11-01 19:31:20 +00:00
|
|
|
- Expanded the architecture specification with crate ownership and dependency
|
|
|
|
|
boundaries, and moved it to `docs/architecture.md`.
|
|
|
|
|
- Required agents to pass `mise run pre-commit` before every commit and document
|
2026-11-03 14:49:35 +00:00
|
|
|
user-visible changes in this changelog.
|
|
|
|
|
|
|
|
|
|
### Removed
|
|
|
|
|
|
|
|
|
|
- Stdio protocol transport and child-process client; external clients now use
|
|
|
|
|
runa-debug WebSockets exclusively. Removed the `serve` and `serve-network` mise tasks.
|