# Changelog All notable user-visible changes to `pyro-mcp` are documented here. ## 2.5.0 - Added persistent PTY shell sessions across the CLI, Python SDK, and MCP server with `pyro workspace shell *`, `Pyro.open_shell()` / `read_shell()` / `write_shell()` / `signal_shell()` / `close_shell()`, and `shell_*` MCP tools. - Kept interactive shells separate from `workspace exec`, with cursor-based merged output reads and explicit close/signal operations for long-lived workspace sessions. - Updated the bundled guest agent and mock backend so shell sessions persist across separate calls and are cleaned up automatically by `workspace delete`. ## 2.4.0 - Replaced the public persistent-workspace surface from `task_*` to `workspace_*` across the CLI, Python SDK, and MCP server in one clean cut with no compatibility aliases. - Renamed create-time seeding from `source_path` to `seed_path` for workspace creation while keeping later `workspace sync push` imports on `source_path`. - Switched persisted local records from `tasks/*/task.json` to `workspaces/*/workspace.json` and updated the main docs/examples to the workspace-first language. ## 2.3.0 - Added `task sync push` across the CLI, Python SDK, and MCP server so started task workspaces can import later host-side directory or archive content without being recreated. - Reused the existing safe archive import path with an explicit destination under `/workspace`, including host-side and guest-backed task support. - Documented sync as a non-atomic update path in `2.3.0`, with delete-and-recreate as the recovery path if a sync fails partway through. ## 2.2.0 - Added seeded task creation across the CLI, Python SDK, and MCP server with an optional `source_path` for host directories and `.tar` / `.tar.gz` / `.tgz` archives. - Seeded task workspaces now persist `workspace_seed` metadata so later status calls report how `/workspace` was initialized. - Reused the task workspace model from `2.1.0` while adding the first explicit host-to-task content import path for repeated command workflows. ## 2.1.0 - Added the first persistent task workspace alpha across the CLI, Python SDK, and MCP server. - Shipped `task create`, `task exec`, `task status`, `task logs`, and `task delete` as an additive surface alongside the existing one-shot VM contract. - Made task workspaces persistent across separate CLI/SDK/MCP processes by storing task records on disk under the runtime base directory. - Added per-task command journaling so repeated workspace commands can be inspected through `pyro task logs` or the matching SDK/MCP methods. ## 2.0.1 - Fixed the default `pyro env pull` path so empty local profile directories no longer produce broken cached installs or contradictory "Pulled" / "not installed" states. - Hardened cache inspection and repair so broken environment symlinks are treated as uninstalled and repaired on the next pull. - Added human-mode phase markers for `pyro env pull` and `pyro run` to make longer guest flows easier to follow from the CLI. - Corrected the Python lifecycle example and docs to match the current `exec_vm` / `vm_exec` auto-clean semantics. ## 2.0.0 - Made guest execution fail closed by default; host compatibility execution now requires explicit opt-in with `--allow-host-compat` or `allow_host_compat=True`. - Switched the main CLI commands to human-readable output by default and kept `--json` for structured output. - Added default sizing of `1 vCPU / 1024 MiB` across the CLI, Python SDK, and MCP tools. - Unified environment cache resolution across `pyro`, `Pyro`, and `pyro doctor`. - Kept the stable environment-first contract centered on `vm_run`, `pyro run`, and curated OCI-published environments. ## 1.0.0 - Shipped the first stable public `pyro` CLI, `Pyro` SDK, and MCP server contract. - Replaced the old bundled-profile model with curated named environments. - Switched distribution to a thin Python package plus official OCI environment artifacts. - Published the initial official environment catalog on public Docker Hub. - Added first-party environment pull, inspect, prune, and one-shot run flows.