Skip to content

Releases: ut-issl/capsula

v0.11.5

04 Apr 04:42
ecf0356

Choose a tag to compare

Note

v0.11.4 has been skipped. The crates.io publish workflow for v0.11.4 failed partway through, leaving only capsula-api-types published at that version. To ensure all crates are published consistently, the version was bumped to v0.11.5. There are no changes between v0.11.4 and v0.11.5.

New Features

Add tag_head option to the capture-git-repo hook

A new tag_head config option (default false) creates a lightweight Git tag capsula/<run-name> at the HEAD commit when a run is captured. This prevents Git from garbage-collecting the commit after branch deletion or history rewriting (rebase, squash merge, etc.). The created tag name is included in the hook's JSON output as a tag field.

Closes #832.

by @shunichironomura in #852

Documentation

Add missing subcommands to CLI reference

Documents several previously undocumented CLI subcommands (run-start, run-end, show, push, tui, vaults list) and the --vault-path global option in the CLI reference.

by @shunichironomura in #855

Internal Changes

Full Changelog: v0.11.3...v0.11.5

v0.11.3

03 Apr 06:53
v0.11.3
0483f2c

Choose a tag to compare

New Features

Add capsula show <run-name> command

A new subcommand to display detailed information about a specific run, including metadata, command result, and hook summaries. Supports a --json flag for machine-readable output.

capsula show happy-river
capsula show happy-river --json

by @shunichironomura in #846

Add terminal UI (capsula tui)

A new capsula tui subcommand launches a mouse-clickable terminal interface (built with ratatui) for starting and ending runs. Designed for users who may not be comfortable with the command line.

  • Start/end runs with visual feedback and an elapsed timer
  • "Instant run" checkbox to execute both pre-run and post-run hooks in one go
  • Mouse-clickable buttons and keyboard shortcuts (q, Tab, Enter/Space)
  • Status indicators during hook execution and a success message on completion
  • Quit confirmation dialog when a run is active

As part of this change, shared config/dotenv/vault-path loading logic was extracted into capsula_orchestration::setup, removing duplicated code from the CLI.

by @shunichironomura in #847

Bug Fixes

Fix capture-command hook to run in project root directory

The capture-command hook now correctly executes commands in the project root directory instead of the current working directory.

by @shunichironomura in #840

Internal Changes

Full Changelog: v0.11.2...v0.11.3

v0.11.2

22 Mar 04:32
v0.11.2
bc604f6

Choose a tag to compare

New Features

Add run-start and run-end subcommands for manual run lifecycle

Two new subcommands support a manual run lifecycle where pre-run and post-run hooks are invoked separately, without a command execution in between. This is useful when the actual analysis runs independently (e.g., triggered by a GUI) and is not managed by Capsula.

  • capsula run-start: Creates a new run directory, executes pre-run hooks, and prints the auto-generated run name to stdout.
  • capsula run-end <run-name>: Finds an existing run directory by name, executes post-run hooks, and writes post-run.json. Guards against double-finalization.

Example usage:

# Before analysis
name=$(capsula run-start 2>/dev/null)

# ... external analysis runs independently ...

# After analysis
capsula run-end "$name"

by @shunichironomura in #819

Extract CLI logic into capsula-orchestration crate

Reusable orchestration logic has been extracted from capsula-cli into a new capsula-orchestration crate, making the CLI a thin shell. This enables future reuse from other contexts such as a PyO3 Python wrapper.

by @shunichironomura in #830

Security

Internal Changes

Full Changelog: v0.11.1...v0.11.2

v0.11.1

13 Mar 01:40
v0.11.1
4b65611

Choose a tag to compare

Bug Fixes

Fix the command to install from Git

Fixed the install command documented for installing Capsula directly from the Git repository.

by @shunichironomura in #792

Security

Internal Changes

Full Changelog: v0.11.0...v0.11.1

v0.11.0

13 Feb 05:51
v0.11.0
67e9d3e

Choose a tag to compare

Breaking Changes

CLI crate renamed from capsula-cli to capsula

The CLI crate has been renamed from capsula-cli to capsula. This affects users who depend on the crate by name (e.g., cargo install capsula-cli). The install command is now:

cargo install capsula

The capsula-cli workspace dependency entry in the root Cargo.toml has also been removed accordingly.

by @shunichironomura in #790

Internal Changes

Full Changelog: v0.10.0...v0.11.0

v0.10.0

04 Feb 13:36
v0.10.0
0be7ac5

Choose a tag to compare

Breaking Changes

MSRV bumped to 1.91

The minimum supported Rust version is now 1.91.

by @shunichironomura in #748

New Features

require_pushed option for capture-git-repo hook

Added require_pushed and remote config options to the capture-git-repo hook. When require_pushed = true, the hook verifies that the HEAD commit is reachable from the configured remote, aborting the run if it is not. This ensures that others can access the exact commit used for an experiment.

A new is_pushed boolean field is added to the hook's JSON output, always populated regardless of the require_pushed setting.

[[pre-run.hooks]]
id = "capture-git-repo"
name = "my-project"
path = "."
allow_dirty = false
require_pushed = true
remote = "origin"  # default

by @shunichironomura in #764

run-dir command

Added capsula run-dir subcommand to print the run directory for a given run name. When duplicate names exist, the newest run is preferred.

capsula run-dir jaded-cat
# /path/to/.capsula/my-vault/2026-01-30/123456-jaded-cat

by @shunichironomura in #771

Run Query API with JSONPath filters (server)

Added a new POST /api/v1/runs/search endpoint that enables querying runs by hook output values using SQL/JSON path expressions. This allows consumers to find runs matching specific criteria (e.g., git commit, parameter values, file hashes) without needing a Capsula workspace.

{
  "vault": "my-project",
  "hook_filters": [
    {
      "hook_id": "capture-git-repo",
      "output_filter": "$.sha ? (@ starts with \"abc123\")"
    }
  ],
  "order": "latest_first",
  "limit": 10
}

by @shunichironomura in #758

Environment variables from dotenv files for vault path and server URL

Fixed the timing issue where environment variables specified in dotenv files were not being used for vault.path and server configuration options. Added --vault-path global CLI option and manual environment variable resolution after dotenv loading.

Priority order: CLI argument > environment variable (after dotenv) > config file.

by @shunichironomura in #751

Bug Fixes

Log messages printed to stderr

Log messages from tracing_subscriber are now printed to stderr instead of stdout, following the standard Unix convention. This fixes issues where log output was mixed with program data (e.g., capsula run-dir output).

by @shunichironomura in #772

Documentation

Internal Changes

Full Changelog: v0.9.5...v0.10.0

v0.9.5

21 Jan 14:42
v0.9.5
ada28b1

Choose a tag to compare

New Features

Configurable upload body size limit for capsula-server

Added --max-body-size CLI option and CAPSULA_MAX_BODY_SIZE environment variable to configure the maximum upload body size for the server. The default is 100MB (104,857,600 bytes).

This resolves an issue where file uploads larger than 2MB were failing due to Axum's default body size limit.

Usage:

# CLI
capsula-server --max-body-size 209715200  # 200MB

# Environment variable
export CAPSULA_MAX_BODY_SIZE="209715200"
capsula-server

by @shunichironomura in #744

Internal Changes

Full Changelog: v0.9.4...v0.9.5

v0.9.4

11 Jan 06:32
v0.9.4
9231d83

Choose a tag to compare

New Features

Capsula Server

This releases adds a Capsula server. Users can push the local run data to it, and it displays the runs in a Web UI.

Related PRs:

Behavior of capsula --version

When Capsula is installed from GitHub, capsula --version displays the Git commit SHA in addition to its version.

Related PRs:

Internal

Documentation

Dependencies

Full Changelog: v0.9.3...v0.9.4

v0.9.3

30 Dec 12:29
v0.9.3
89fcd1a

Choose a tag to compare

New Features

Documentation

Internal

Dependency Updates

Full Changelog: v0.9.2...v0.9.3

v0.9.2

28 Dec 22:17
v0.9.2
ea192ff

Choose a tag to compare

New Features

Bug Fixes

Documentation

Internal

Dependency Updates

Full Changelog: v0.9.1...v0.9.2