All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- BREAKING: Input files are now copied to
inputs/subfolder instead of job root- Dependency outputs are copied to
{job}/inputs/folder - Workflow
input_files/contents are copied to first job'sinputs/folder - Scripts should read from
./inputs/and write to./outputs/
- Dependency outputs are copied to
- Input files feature: workflows can now include an
input_files/folder at the root, whose contents are automatically copied to the first job'sinputs/folder before execution
- Local Docker image detection:
pull_imagenow checks if an image exists locally before attempting to pull from registry - Test coverage for local Docker image detection feature
- Auto-update feature: checks GitHub releases on startup, prompts user to update if new version available, shows notification in TUI footer if update is deferred
- Refactored
run_jobfunction signature to use tuple grouping for related parameters
- Workflow now correctly reports
Failedstatus when a job fails (was incorrectly reportingCompleted) run_jobnow returns error when script execution fails, stopping workflow immediately instead of continuing to next job
- CLI argument support: run
silva <workflow_path>to execute a workflow directly in headless mode - Headless workflow execution outputs logs to stdout/stderr instead of TUI
- Container keep-alive command (
tail -f /dev/null) for reliable container reuse across jobs - Headless mode now copies input files from dependency outputs to current job folder
- Headless mode creates temp folder for workflow execution (mirrors TUI behavior)
- Example workflow-007 (Protein Pocket Analysis) with parameterized configuration:
- Global
pdb_idparameter in workflow.toml - Job-level parameters for pocketeer.find_pockets (r_min, r_max, polar_probe_radius, etc.)
- Enum parameters for visualization options (pocket_style, render_method, representation, output_format)
- Global
- Docker image pull progress display: shows layer ID, download/extract status, and percentage
ImageSourceenum injob_configto support multiple image sources: Docker registry, local tar files (.tar), and Singularity/Apptainer images (.sif)
- Extracted navigation and key bindings documentation to
doc/navigation.md - Extracted requirements, installation, and FAQ to
doc/get_started.md - Extracted workflow documentation to
doc/workflows.md - Moved release guide to
doc/releasing.md - Configuration unification:
- Added new
JobMetastruct injob_config/src/job.rsmergingJobConfigandNodeMetadata - Moved
WorkflowMetadatato separatejob_config/src/workflow.rsmodule - Job definitions now use TOML format (
job.toml) withParamDefinitionusingtoml::Value - Updated callers:
load_config()→load_meta()across workflow and docker components - Added new
job_config/src/params.rsmodule for JSON-based parameter storage JobParamsandWorkflowParamsnow useserde_json::Value(JSON format)- Parameter files:
params.jsonfor job params,global_params.jsonfor workflow params - Added
toml_to_json()andjson_to_toml()conversion utilities - Simplified
Containerstruct: now hasimageanduse_gpufields (removed DockerFile support) - Moved
use_gpufromJobMetaintoContainerstruct - Moved job dependencies from
JobMeta.depends_ontoWorkflowMeta.dependencies - Job dependencies are now defined at workflow level in
workflow.toml - Renamed
WorkflowMetadatatoWorkflowMetafor consistency withJobMeta - Removed legacy
configmodule (job_config::config) - usejob_config::job,job_config::params, andjob_config::workflowinstead - Merged
params_editor.rsandglobal_params_editor.rsinto a single genericParamsEditorState<T>using trait-based polymorphism - Fixed test race conditions using
serial_testcrate for tests that modify shared env vars - Fixed outdated test fixtures to use new
Containerstruct format (imageinstead ofdocker_image) - Extracted
ParamSourcetrait to separateparam_source.rsmodule for better code organization - Extracted
WorkflowFolderstruct to separateworkflow_folder.rsmodule - Renamed
JobtoJobFolderandjob.rstojob_folder.rsfor consistency withWorkflowFolder
- Added new
- Docker
pull_imagenow checks if image exists locally before pulling, avoiding unnecessary network requests
- Global workflow parameters support for workflow-level configuration
- Workflow metadata schema in
.chiral/workflow.json(similar to job-levelnode.json) - Global parameter values stored in
global_params.jsonat workflow root - Global parameter editor UI accessible via 'g' hotkey
- Parameter merging: global parameters combined with job-level parameters
- Environment variable injection for merged parameters with
PARAM_prefix - Enhanced logging showing global, job, and total parameter counts during execution
run_job()function signature now accepts both workflow and job parameters- Parameters are merged with job-level parameters taking precedence over global parameters
- Windows: Fixed CRLF line endings in shell scripts causing execution failures in Linux containers
- Windows: Fixed script path resolution for relative paths (./run.sh patterns)
- Windows: Fixed path operations to use forward slashes for container compatibility
- Windows: Fixed Docker detection using
wherecommand instead ofwhich
- Job parameters support with interactive parameter editor UI
- Parameter types: string, integer, float, boolean, file, directory, enum, and array
- Parameter definitions in
.chiral/node.jsonfiles - Parameters loaded from
params.jsonand injected as environment variables withPARAM_prefix - Parameter editor accessible via 'p' hotkey with real-time validation
- License changed from MIT to Mozilla Public License Version 2.0 (MPL-2.0)
- Job configuration file location from
@job.tomlto.chiral/job.toml(legacy location still supported) - Job run hotkey changed from 'r' to 'Enter' for better usability
- Job dependencies with
depends_onfield and topological sorting - Input/output file patterns with glob support (
*.csv,data/*) - Recursive directory copying for input files
- Container reuse by image for improved performance
- Extracted
job_configas standalone publishable crate - Restructured project as Cargo workspace
- build images (2025-11-02): Dockerfile file path, Avoid rebuilding the image
- Windows: Fixed double keystroke registration by filtering key press/release events
- Windows: Fixed PowerShell install script returning incorrect version string
- Windows: Improved emoji display compatibility
- Fixed CPU usage display format to show one decimal place
- Initial release with workflow automation support
- Docker container management
- Terminal UI with multiple tabs (Applications, Workflows, Settings)
- Health check system monitoring
- Real-time log viewing for Docker jobs
- Multi-job workflow support
- Updated dependencies and project structure
- Various bug fixes and improvements
- Docker environment variable handling
- Tag naming issues
- Various stability improvements
- Feature enhancements
- Initial project setup
- Basic TUI framework
- Core workflow management features