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>, andbless fetch <id>query local gzip runs;--use-mongodbqueriesbless.commands
Bugfixes¶
Combined
--use-mongodbgzip archives TRACE through ERROR; drop the Info|Warn-only filterServe 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,serveon check-serve; MSRV cargo check--features mongodb,serve
v0.3.0 - 2026-08-11¶
Breaking¶
Default
cargo install blessis gzip-only;--use-mongodbrequires--features mongodbCrate is a CLI, not a stable library; only
run,BlessError, andrunnerstay public
Bugfixes¶
Close the remote session if logger, persist, or run fails after
--remoteconnectClose the remote session even if the final writeBatch fails
Drop RemoteSession close handle without
let _ =on the JoinHandle (clippy -D warnings)--serve :portbinds127.0.0.1, not0.0.0.0Sanitize 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/_stderrbefore the extension so-o build_log.gzno longer collapses both streamsStdout gzip keeps Info and Trace only; Warn and Error go to the stderr gzip
-o -writes no gzip files, with or without--splitStart 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 --splitstores one document per stream (stream: stdout|stderr); combined runs writestream: ""Persist to
bless.commandsby default;--db/--collectionorMONGODB_DB/MONGODB_COLLECTIONoverrideDo not list all databases on persist
Refactoring¶
Hide
cli,db,logger,rpc,serve,storage_backends, and generatedbless_log_capnp
Enhancements¶
Optional
mongodbfeature gates the MongoDB client,--use-mongodb, and related flags--serve ADDRruns the server without a dummy command--remote ADDRstreams logs via capnp;--localkeeps a gzipUnique compound index on
(run_uuid, stream)and non-unique index on(label, start_time)after connectget_db_gzip.py downloads GridFS blobs when storage is gridfs or gzip_blob_id is set
Documentation¶
Install and MongoDB howto require
--features mongodbfor--use-mongodbDrop 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
mongodbfeature 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-timestampflag for clean stdout output, useful for piping to cf-ci--format=jsonloutput mode for structured JSON lines on stdout-o, --outputflag for explicit output path;-o -for stdout only (closes #25)--splitflag 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.