Changelog

Changelog

All notable changes to this project will be documented in this file. See conventional commits for commit guidelines.


Unreleased


v0.4.0 - 2026-08-11

Enhancements

  • bless ls, bless show <id>, and bless fetch <id> query local gzip runs; --use-mongodb queries bless.commands

Bugfixes

  • Combined --use-mongodb gzip archives TRACE through ERROR; drop the Info|Warn-only filter

  • Serve session gzip uses [rfc3339 LEVEL] message; listSessions sets duration and exitCode and lists closed sessions

Documentation

  • CLI reference and README cover the query subcommands

CI

  • Clippy and test --features mongodb,serve on check-serve; MSRV cargo check --features mongodb,serve


v0.3.0 - 2026-08-11

Breaking

  • Default cargo install bless is gzip-only; --use-mongodb requires --features mongodb

  • Crate is a CLI, not a stable library; only run, BlessError, and runner stay public

Bugfixes

  • Close the remote session if logger, persist, or run fails after --remote connect

  • Close the remote session even if the final writeBatch fails

  • Drop RemoteSession close handle without let _ = on the JoinHandle (clippy -D warnings)

  • --serve :port binds 127.0.0.1, not 0.0.0.0

  • Sanitize session label/uuid; finish the gzip and evict the session on close

  • Drop unused BlessError::CommandFailed; command failures are exit codes, not errors

  • Print a bless error’s source when Display does not already include it

  • Recover gzip log and flush from a poisoned encoder mutex instead of panicking

  • Stream GridFS uploads from disk instead of buffering the gzip in memory

  • Split gzip names insert _stdout/_stderr before the extension so -o build_log.gz no longer collapses both streams

  • Stdout gzip keeps Info and Trace only; Warn and Error go to the stderr gzip

  • -o - writes no gzip files, with or without --split

  • Start TRACE (label/uuid) is emitted from setup_logger on every logging path

  • Mongo persist uploads the gzip files the logger opened; --use-mongodb -o - is a config error

  • --use-mongodb --split stores one document per stream (stream: stdout|stderr); combined runs write stream: ""

  • Persist to bless.commands by default; --db/--collection or MONGODB_DB/MONGODB_COLLECTION override

  • Do not list all databases on persist

Refactoring

  • Hide cli, db, logger, rpc, serve, storage_backends, and generated bless_log_capnp

Enhancements

  • Optional mongodb feature gates the MongoDB client, --use-mongodb, and related flags

  • --serve ADDR runs the server without a dummy command

  • --remote ADDR streams logs via capnp; --local keeps a gzip

  • Unique compound index on (run_uuid, stream) and non-unique index on (label, start_time) after connect

  • get_db_gzip.py downloads GridFS blobs when storage is gridfs or gzip_blob_id is set

Documentation

  • Install and MongoDB howto require --features mongodb for --use-mongodb

  • Drop public cf-ci references; use generic log-filtering examples

  • Align Sphinx/orgmode setup so RST is generated, not committed

  • Site chrome: inline logo, author link, TurtleTech footer

  • Analytics: Plausible to Umami, plus Antics tracker; closed-path TurtleTech SVG

CI

  • Test the optional mongodb feature on the default job (clippy/test --features mongodb --locked)

  • Release workflow for Zenodo DOI minting

  • Docs deploy path, write permissions, and CNAME for GitHub Pages

  • MSRV 1.74 cargo check –locked (default, –features serve, and –features mongodb)

  • cargo test –locked on the default matrix; cargo test –locked –features serve

  • contents: read on the CI workflow; apt-get update before capnproto


v0.2.0 - 2026-03-08

Breaking

  • Clap 4 requires -- before the wrapped command (bless [OPTIONS] -- COMMAND [ARGS...])

Bugfixes

  • Exit code passthrough: bless now returns the wrapped command’s exit code (closes #7)

  • Version string from env!(“CARGO_PKG_VERSION”) instead of hardcoded (closes #26)

  • Graceful error handling in gzip writer (no panics on write/flush failures)

  • Proper error types via BlessError (thiserror) replacing io::Error mapping

Enhancements

  • --no-timestamp flag for clean stdout output, useful for piping to cf-ci

  • --format=jsonl output mode for structured JSON lines on stdout

  • -o, --output flag for explicit output path; -o - for stdout only (closes #25)

  • --split flag for separate stdout/stderr gzip files (closes #20)

  • Signal forwarding: ctrl-c kills the child process (closes #23)

  • Serve mode (feature-gated): capnp RPC log aggregation server (closes #22)

Refactoring

  • Migrated clap 3 (builder API) to clap 4 (derive API)

  • Switched to tokio::process::Command (native async, no spawn_blocking)

  • Introduced BlessError enum (thiserror) for typed error handling

  • main() returns ExitCode instead of process::exit() for clean shutdown

  • Removed unused dependencies: wild, async-trait

Documentation

  • Sphinx documentation site with Shibuya theme (Diataxis structure) (closes #3, #4)

  • Tutorial, how-to guides (cf-ci, MongoDB, serve), reference docs

  • Contributing guide with project structure

CI

  • GitHub Actions: cargo test + clippy + fmt on ubuntu + macos (closes #13)

  • Serve feature validation with capnpc

  • Documentation build and deploy to GitHub Pages

Tests

  • Rewrote test suite to exercise run_command directly

  • Added CLI parsing tests via clap try_parse_from

  • Exit code passthrough test


v0.1.1 - 2025-07-20

Maintenance

  • Bump patch - (aca7dbe) - HaoZeke

  • Rework name for crates - (ded4f97) - HaoZeke


v0.1.0 - 2025-07-20

Bugfixes

  • Store outputs for failing commands - (917763f) - HaoZeke

Buildsystem

  • Add deps for timestamping - (5d19e31) - HaoZeke

Documentation

  • Add a minor comment on conventions - (299babd) - HaoZeke

  • Regenerate from org - (cf501c3) - HaoZeke

  • Add more details about the mongodb backend - (88b2960) - HaoZeke

  • Update details - (622c42f) - HaoZeke

  • Add generated readme - (a085b70) - HaoZeke

  • Add some information on using mongo - (dad3a24) - HaoZeke

  • Add details on included components - (f13d483) - HaoZeke

Enhancements

  • Add a small helper script - (faeff03) - HaoZeke

  • Timestamp mongodb entries - (1654339) - HaoZeke

  • Cleanup logger, enforce design - (bfa24e9) - HaoZeke

  • Cleanup, use a struct for keywords - (273212d) - HaoZeke

  • Reimplement mongodb backend - (e50ccba) - HaoZeke

  • Add start and end time - (ed3f564) - HaoZeke

  • Real-time command outputCloses gh-16.Closes gh-14. - (abec80c) - HaoZeke

  • Use fern for handling log data - (c9c6971) - HaoZeke

  • Ensure mpirun works alright - (f65d33f) - HaoZeke

  • Modular design and use actual data - (68483dd) - HaoZeke

  • Basic first pass at insertion into MongoDB - (bffcb21) - HaoZeke

  • Switch to async - (69c9567) - HaoZeke

  • Refactor into modules - (820063d) - HaoZeke

  • Simpler and safer with duct - (330a750) - HaoZeke

  • Start with a baseline implementation - (d558c13) - HaoZeke

Maintenance

  • Prep for release - (46d3051) - HaoZeke

  • Add a baseline cocogitto config - (5705178) - HaoZeke

  • Publicize and restructure for tests - (5786e42) - HaoZeke

  • Prevent double timestamping files - (f8bec97) - HaoZeke

  • Finish cleanup - (0499f4b) - HaoZeke

  • Implement warn and error correctly - (7091b55) - HaoZeke

  • Add back file information - (e9a5b3b) - HaoZeke

  • Bump version - (e9effdb) - HaoZeke

  • Use fern, disable FileStorage for now - (1ce5f8e) - HaoZeke

  • Try using more packages - (46fd37c) - HaoZeke

  • Refactor into files for DB - (745743f) - HaoZeke

  • First attempt at a mongod connection - (d18cb9b) - HaoZeke

  • Actually call finish - (bfd574d) - HaoZeke

  • Add tokio for eventual mongod stuff - (5588e78) - HaoZeke

  • Minor cleanup - (07f4020) - HaoZeke

  • Add wild for better globs - (efa59a3) - HaoZeke

Project

  • Initialize with defaults - (f70f8af) - HaoZeke

Tests

  • Rework for new structure - (1116f62) - HaoZeke

  • Add basic ones for gh-7 - (565c62f) - HaoZeke


Changelog generated by cocogitto.