Releases: Ra77a3l3-jar/replaySh
Releases · Ra77a3l3-jar/replaySh
v0.3.0
Changelog
[0.3.0] - 2026-06-08
Added
- Rich Step data model —
Step::Simple(String)andStep::Rich(RichStep)withdesc,ignore_error,condition,env replay step edit <name> <N> [cmd]— replace a step's command in-placereplay step desc <name> <N> [desc]— set, show, or clear a step's descriptionreplay step condition <name> <N> [expr]— set, show, or clear a condition expressionreplay step ignore-error <name> <N>— toggle per-step ignore_error flagreplay add --description <DESC>— set description when adding a stepreplay add --ignore-error— mark the new step as error-tolerantreplay add --conditions <EXPR>— attach a condition expression to the new stepreplay add --env KEY=VALUE— inject per-step environment variablesreplay search <terms>— search across all workflow commandsreplay info <name>— display full workflow metadata- Per-step env vars injected at runtime
- Condition evaluation at runtime — non-zero exit skips the step with dimmed output
- Per-step
ignore_errorchecked alongside global--ignore-errorsflag
Changed
record()wraps captured commands inStep::Simplefor backward compatrecordprompts on existing workflow — overwrite / append / cancelrecord --filtergainse(edit command) and#(set description) keysshow()prints# descdimmed,[ignore-error]yellow,[if: expr]cyan,[KEY=VAL]greeninfo()shows rich/simple breakdown with colored counts, conditions, ignore-error flagslist()has dynamic column width, run count column, colored time labelsexport --format shemits# desccomments and# [ignore-error]annotationsexport --format shuses the workflow's recorded shell for the shebang and file extension; errors if no shell is recordedvaraccepts multipleKEY=VALUEassignments at once- Workflow name displayed in purple in
showandinfo - Blue metadata accents in
info(steps, runs, shell) - Colored
KEY=VALUEininfovars section - Failed steps dump stdout and stderr to the terminal for debugging
- Source code modularized into flat
src/*.rsfiles
Fixed
--onlyno longer falls through to--from/--toloop (double-execution bug)recordappend preserves existing variables and shell instead of resetting themstep condition|descwith whitespace-only input now clears instead of setting a literal space--onlyproperly handles per-stepignore_error(was silently passing failed steps)recordappend no longer panics on doubletake()of existing workflow- Condition dry-run prints the raw template instead of crashing on undefined vars
[0.2.0] - 2026-05-08
Added
{{VAR}}substitution in steps — resolved at run time with--var KEY=VALUEreplay var <name> KEY=VALUE— set a workflow-level variable default;KEYalone unsets itreplay step remove <name> <N>— delete a step by indexreplay step move <name> <from> <to>— reorder stepsreplay step insert <name> <N> <cmd>— insert a step before position Nreplay diff <name1> <name2>— side-by-side step comparisonreplay export <name> --format sh— shell script export with${VAR:-default}expansionreplay export <name> --format json— JSON exportreplay import <file>— import a workflow from a JSON file--ignore-errorsflag onrun— continue past step failures--shell <SHELL>flag onrecordandrun— override the shell used- Run count and last-run timestamp tracked in the workflow JSON
replay completions --install <SHELL>— install completions for bash, fish, or zsh; dynamic workflow name completion included~/.replay/config.toml— persistent configuration;replay --color <MODE>saves to it-c/--colorglobal flag — control color output (always,never)
Changed
replay listcolors rows by recency — green (today), yellow (this week), dim (older/never)replay showdims step indices and highlights{{VAR}}placeholders in yellowreplay rundims[N/M], prints✓on success and✗on failurereplay diffoutput colored — bold headers, red for removed, green for addedreplay addprintscreated <name>when the workflow is new,added to <name>otherwise- Switched from raw ANSI codes to the
coloredcrate throughout - Shell completion scripts extracted to
completions/and embedded at compile time viainclude_str! - Renamed crate to
replayShon crates.io; binary name staysreplay
[0.1.0] - 2026-04-26
Added
replay record <name>— spawn a bash subshell and capture commands on exitreplay run <name>— replay steps one by one, stop on failurereplay list— list all saved workflows with step countreplay show <name>— print steps with indicesreplay add <name> <cmd>— append a step without re-recording, no quotes neededreplay delete <name>— delete a workflow with a confirmation promptreplay edit <name>— open workflow in$EDITOR, validates JSON on savereplay rename <old> <new>— rename a workflowreplay copy <src> <dst>— duplicate a workflow--confirmflag onrun— prompty/n/sbefore each step (run / skip / stop)--dry-runflag onrun— print steps without executing anything--only <N>flag onrun— run a single step by index--from <N>and--to <N>flags onrun— run a slice of steps
Fixed
exitwas being captured as a workflow step duringrecord- Missing stdout flush caused
--confirmprompt to appear after input renamewas checking the wrong path condition, blocking every rename attempt