Skip to content

v2.1.5

Choose a tag to compare

@bpiwowar bpiwowar released this 20 Mar 06:50
· 80 commits to master since this release

[2.1.5] - 2026-03-20

Bug Fixes

  • Handle broken codecarbon installations in CI (cb74f10)

Features

  • Add agent skill and install-skill CLI command (741e6fb)
  • Auto-serialize experiment configs with tags at finalize (5580c66)
  • Add stop_tags() to prevent tag propagation from sub-configs (521abf9)

[2.1.4] - 2026-03-18

Bug Fixes

  • tui: Xp run status display (613e9be)- Normalize identifiers to lowercase in Identifier constructor (8c2afa8)
  • Replace deprecated docutils OptionParser with get_default_settings (cf54bf5)
  • Handle Union types in generic type argument validation (7725252)
  • Display tags on separate lines in TUI job detail view (789e088)

Features

  • Validate generic type arguments at runtime in GenericType.validate (1a53067)
  • Add set[T] as a supported parameter type (b882cdc)
  • Allow running services for past runs in TUI (20830fb)

Testing

  • Add xfail test for generic type arg validation (a0486a4)

[2.1.3] - 2026-03-07

Bug Fixes

  • Fix handle_delete_all for orphans (fa6fcfb)
  • Preserve failure reason in job state serialization for monitoring (e7755d7)
  • Make xp.wait() properly block until all jobs finish and propagate Ctrl+C (e335c6c)
  • Stop job submissions after Ctrl+C signal is received (1877778)

Documentation

Features

  • Reuse SSH connection for rsync via ControlMaster multiplexing (51ea555)

Performance

  • Replace inspect.stack() with sys._getframe() in Config.init (382a52e)
  • Skip file I/O for unrelated jobs in EventReader.start_watching() (4d8056a)

Testing

  • Add tests verifying xp.wait() blocks until all jobs finish (a3c8030)

[2.1.2] - 2026-03-05

Features

  • Add tree-based job view in TUI with configurable grouping (69e5d72)
  • Add adaptive directory polling to detect new event files on NFS (606562f)

[2.1.1] - 2026-03-05

Bug Fixes

  • Remove stale dependencies arg from ExperimentJobInformation constructor (c19a2b6)
  • Use experiment status to determine if running in TUI (ab56414)
  • Only block experiment deletion when experiment is running (df5048e)
  • Deserialize nested JobTag and ProgressLevel in EventBase.from_dict (9d130dd)
  • Block experiment deletion only when experiment is actively running (f4dca41)
  • Improve job deletion to allow unscheduled jobs and show detailed errors (79b922a)

Features

  • Default TUI sort by status (running first) then start time desc (966c6a0)
  • Improve stray/orphan job detection with SSH support and split TUI tabs (677509b)

Refactor

  • Bulk event replay, fix TUI flickering, clean up event architecture (d34a3ce)
  • Flatten experiment event files layout (8b99674)

[2.1.0] - 2026-03-04

Bug Fixes

  • Remove FIXME marker and fix formatting in mkdocs plugin (bbfee41)
  • TUI state display, event cache key mismatch, and poll-based deletion detection (7b4319f)
  • Make subclasses of mocked classes subscriptable (085809b)
  • Show concise error for HandledException instead of full traceback (984819d)
  • Correct test assertion for nonexistent file in test_polling (5d62451)
  • Refactor JobState to use subclass overrides, fix TUI status display (968b6a5)

Features

  • Update TUI, WebUI, and CLI to use scheduler_state and experiment job info (bc06c1f)
  • Bump SSH remote protocol version to 2.0 (56fdf19)
  • Generalize parent to imports for multi-file YAML inheritance (ffcc896)

Miscellaneous Tasks

  • Update docs/demo submodule (366fb1e)

Refactor

  • Separate scheduler_state from execution state in job model (e68f62f)

Testing

  • Adapt tests to scheduler_state split and removed submittime (f8a71c5)

[2.0.7] - 2026-03-02

Bug Fixes

  • Skip sub-package traversal when module import fails (6c3ca0b)

Features

  • ProcessWebService, service log viewing, and keep services alive (321b500)

[2.0.6] - 2026-03-02

Bug Fixes

  • Resolve npm security vulnerabilities and fix frontend build (734d416)
  • Update deprecated field(ignore_default=X) syntax in tests (3e512e6)
  • Prevent directory creation in dry-run mode (a06e694)
  • Add grace period to SLURM watcher before stopping (145fe50)
  • Handle event file rotation for job event files in EventReader (87020d0)
  • Clean up stale PID files and skip expensive process checks in monitoring (942c68e)
  • Add dedicated cleanup pass to scan all jobs for stale PID files (51e1b9c)
  • Event-driven job state transitions and NFS polling support (093e300)
  • Monitoring mode not detecting experiment services and job states (26ba77b)
  • Serialize per-job states in status.json for correct monitoring counters (ef81b5f)

Features

  • Accumulate carbon metrics across ResumableTask restarts (762e9e4)

Performance

  • Avoid repeated filesystem scanning and SLURM checks in TUI (94b77ac)
  • Lazy-load jobs.jsonl and persist total_jobs in status.json (a3cf860)
  • Skip event replay at startup, lazy-load from status.json (62e9adb)
  • Flatten job event files to single directory for NFS efficiency (dafc347)

Refactor

  • Simplify EventReader to one-file-per-entity model with rotation (ffee974)

[2.0.5] - 2026-03-01

Bug Fixes

  • Python 3.14 compatibility for annotations and Union types (5ba8316)
  • Prevent cleanup from deleting event files of active jobs (85ba2e1)
  • Stale job state and failed counter in SSH monitoring mode (acfa46e)
  • Move TUI data fetching to background workers for SSH responsiveness (b43b827)
  • Shared JobEventWriter and proper event file cleanup on restart (1dbb8b9)
  • Restore carbon metrics in MockJob.from_state_dict() and apply_event() (de3fcb1)
  • Replay job events on restart for up-to-date progress/carbon/timestamps (65cbead)
  • Move event replay after load_from_disk to prevent state overwrite (f7eb1f1)
  • Update tests for EventReader.follow() return type change (1785d67)

CI

  • Improved and fixed cliff file (63802c6)
  • Run tests for all stable python (up to 3.14) (9b74411)
  • Correct skip message (ae22ddb)

Features

  • Add centralized FileWatcherService with TailedFilePool (c528a99)

Miscellaneous Tasks

[2.0.4] - 2026-02-28

Features

  • Better SLURM error reporting and TUI job status info (c12e268)
  • Show partition time limits in SLURM configure TUI (4a71b19)

[2.0.3] - 2026-02-28

Bug Fixes

  • Resolve remote workspace path for SSH log file syncing (306758b)
  • SSH remote TUI monitoring bugs and remove redundant Jobs column (d696c8b)
  • Recognize PARTITION_TIME_LIMIT as a SLURM error state (29165bc)

[2.0.2] - 2026-02-28

Bug Fixes

  • Rationalize field() default value semantics (#191) (e9c34ff)
  • TUI jobs disappear after relaunching failed experiment (#190) (3f2aa97)
  • Variable shadowing bug in documentation analyzer (9b533dc)

Documentation

  • Enhance changelog with detailed dynamic task outputs and read more links (7a37e8b)

[2.0.0] - 2026-02-20

Bug Fixes

  • build: Auto-run npm build during pip install (fixes #157) (3ec6c6f)
  • build: Skip frontend build on ReadTheDocs (ff61714)
  • carbon: Handle Energy objects from newer codecarbon versions (64c09df)
  • carbon: Store carbon settings in params.json for SLURM compatibility (aa6a2bd)
  • ci: Add contents:write permission to update release notes (ca68c62)
  • cli: Improve FailedExperiment error handling and exit codes (ead3003)
  • core: Move register_task_output back to Config class (399f883)
  • core: Add name() method to EnumType class (6e1e83e)
  • deps: Update webpack-dev-server to 5.2.2 (2603abe)
  • docs: Explicitly build MkDocs site to ReadTheDocs output directory (998efd0)
  • docs: Use post_checkout instead of pre_build for RTD (cfdb081)
  • docs: Mock mkdocs in Sphinx conf.py for RTD builds (0e7c4b2)
  • docs: Fetch git tags for version detection on RTD (38ed73f)
  • dynamic_outputs: Fix task output count management and add documentation (1da665f)
  • events: Archive job events on successful completion (2bc1780)
  • events: Prevent duplicate event processing due to race condition (2483a4f)
  • kill: Show error reason when failing to kill job (d878874)
  • mkdocs: Handle gracefully when mkdocs is not installed (886248b)
  • monitor: Prevent orphaned event consolidation on running experiments (43134f7)
  • polling: Optimize ResourcePoller to avoid tight loop (ae52085)
  • scheduler: Add thread-safe listener management (83bb4d3)
  • scheduler: Wait for notification queue before experiment exit (adf5a4d)
  • scheduler: Improve job state management and disk loading (59e17bc)
  • scheduler: Add thread safety to dynamic outputs and fix counting (0a3f43b)
  • scheduler: Ensure experiment events written synchronously on job finish (63c1b98)
  • scheduler: Allow killing scheduled jobs, not just running ones (a234dba)
  • scheduler: Add setter to Job.progress property (73d6ecf)
  • scheduler: Improve job restart logic and clear transient fields properly (ce51856)
  • slurm: Resolve race conditions and blocking in async methods (ca2a89b)
  • sphinx: Add compatibility with Sphinx 8.0 (e1bde2b)
  • state: Cache jobs to receive progress events in TUI (f107fd7)
  • test: Make test_token_timeout_zero more robust (82dc143)
  • tests: Suppress logging errors during test timeout cleanup (33bc5dd)
  • tests: Fix flaky SLURM tests (437d6cc)
  • tests: Disable process detaching in test mode to prevent rogue processes (8e9ccb0)
  • tests: Use experiment.failed property instead of FailedExperiment exception (fdf8b6f)
  • tui: Use better status (b6b1f34)
  • tui: Prevent UI freeze when closing log viewer during sync (becc1d3)
  • tui: Use Process abstraction for process info instead of psutil (0cee4c2)
  • tui: Convert progress dicts to LevelInformation objects (bcd283e)
  • tui: Keep finished experiments in scheduler so jobs remain visible (62dd192)
  • tui: Display and copy remote paths in ssh-monitor mode (304c7ce)
  • tui: Fix services not appearing in TUI with live scheduler (671d5c6)
  • types: Add generic type parameter compatibility check for overrides (f67fa74)- Replace pkg_resources with importlib (b8dfd70)
  • Better error message when not using a configuration (5b09822)
  • Better error message when a value has not been set (5717669)
  • Error when generated value are different (7820615)
  • Value can keep in config the configuration (d907ff6)
  • Only flag context-dependant generated values (8e71a5d)
  • Added ignore_generated to ignore generate values in parameter (1e66c69)
  • Imports (4c88dc4)
  • Missing import (ca87178)
  • Wrong lock import (0356040)
  • Adds experimaestro version in generated params.json (84934a6)
  • Robust generated value detection (2df1fad)
  • Be more lenient in type check (8c68fe5)
  • Use identifier (3862153)
  • Report paths in lists and dicts (e20604b)
  • Fixes #143 (9ce79ee)
  • Do not return the same task output when running twice (981dd39)
  • Wrong import (3113970)
  • Double submission of jobs to the scheduler (0fcf1a2)
  • Clear cached process and PID file when retrying ResumableTask (cd11c4f)
  • Resolve token race condition in watch() method (bfd47dd)
  • Entry_points use importlib not pkg_resources (117fe57)
  • Removed code to ensure Python 3.9 and below compatibility (5767ac9)
  • TUI submitted time and duration display issues (c13b2db)
  • Process dynamic task outputs synchronously on job completion (a1562c9)
  • Resolve race condition in dynamic task output callbacks (76e6b66)
  • Skip deprecation warning for Constant parameters (2e83bad)
  • Use consistent read_only mode in test_partial_registered_in_database (644d849)
  • Esc does not quit log view (71d0ec0)
  • Reduce log noise for non-resumable task warning and token logging (0255d0d)
  • Removed state from service DB (62359a4)
  • Prevent DB changes when not in NORMAL run mode (d2e23d2)
  • Remove state field references after ServiceModel schema change (e220400)
  • Resolve all ruff linting issues (8257358)
  • Initialize multiprocessing resource tracker before Textual TUI (312fa6a)
  • Use Scheduler as state provider in embedded TUI mode (c31f102)
  • Resolve string annotation type (8f6e25c)
  • Downgrade lock file not found message to debug level (aaecaa5)
  • Improve test reliability and fix various issues (442e7d0)
  • Add polling fallback for unreliable file system notifications (13c7637)
  • Use filelock (b57f3ca)
  • Fixed 'version' command (088195b)
  • Fixed install without node installed (66c63b9)
  • Add _async_lock to refresh_state to prevent race condition (b80dd0c)
  • Respect umask when creating filelock lock files (43befd0)
  • Ensure asyncio primitives run in EventLoopThread (cbbc7c3)
  • Use lazy initialization for asyncio primitives (0fe28f1)
  • Preserve job state during finalization and improve error logging (81c99ee)
  • Show tracebacks in ColoredFormatter when exc_info=True (1d942ad)
  • Respect umask in setExecutable and handle flag parameter (abe36e8)
  • Fix order of params for cli documentation (d109c46)
  • Use addListener instead of non-existent add_token in launcher template (29ded3b)

Build

  • web app: Npm audit fix update (808322f)- Alpha builds are OK now (1fe82e7)
  • Modernize build chain with hatch and git-cliff (17752e8)

CI

  • Adds write permission for pypi trusted publishing (9ceb84b)
  • Put id-token in the right place (8da0092)
  • Improved defaults for pre-commit (7087533)
  • Add mkdocs to dev (83ced9e)
  • Include updated uv.lock (41888b5)
  • Added 15 minutes timeout for CI (bf6dfde)
  • Removed uv.lock (0f630e9)

Documentation

  • changelog: Update v2.0 changelog with new features and breaking changes (cde32bf)
  • experiments: Update mock_modules documentation for automatic decorators (211c1de)
  • tui: Update keyboard shortcuts in help screen and documentation (4efb19f)- Updated for .C (cbd942e)
  • Big warnings for default values (318c04e)
  • Fix InstanceConfig example to show usage in containers (ff14228)
  • Improved configuration documentation (ae02c4d)
  • Moved config instances later (18c94f6)
  • Update the main README (80fa25a)
  • Update ReadTheDocs config for hatch build backend (428aece)
  • Add documentation for composition operator @ (3a2032e)
  • Add experimaestro-demo submodule for tutorial content (04c68e8)
  • Added TUI screenshots (ceadce4)
  • Add v2 changelog with features and breaking changes (5e29a4c)
  • Updated the changelog to be more accurate (0037b23)
  • Better description of InstanceConfig (50034db)
  • Updated the changelog (tags are experiment-specific) (bcf75a6)
  • Use right TUI log screenshot in README (7c40a07)
  • Fix some issues with screenshots (16f53e6)
  • Migrate from MkDocs to Sphinx (3d856ee)
  • Add docstrings to Python source files and fix documentation (b11b595)
  • Add API documentation for launchers, connectors and utilities (94993a6)
  • Add services, launchers, and jobs to API reference (f62662d)
  • Improve documentation with proper cross-refs and new content (edd3d56)
  • Rename subparameters to partial in documentation (f25e18d)
  • Add copy button to code blocks in documentation (649d086)
  • Update workspace.md to reflect state refactoring (38bd881)
  • Add scheduler architecture documentation (6ec1b38)
  • Updated demo module (2282935)
  • Improve documentation with Sphinx cross-references and fix warnings (245dcbb)
  • Add documentation coverage testing guide (f25b2c1)
  • Add missing v2 features to changelog (8554ee9)
  • Update TUI screenshots (3a01d4e)
  • Updated demo (77b9f1e)

Features

  • async: Add async event handling for dynamic resources (6659a61)
  • carbon: Add environmental impact tracking with Zeus backend (c12009a)
  • carbon: Add written field to track carbon record storage status (6a4b816)
  • cli: Add --no-db flag to disable database state tracking (e64d27d)
  • cli: Add --watcher option to control filesystem watcher type (0768843)
  • cli: Add --logging option for setting log levels (ea68c94)
  • cli: Add --events-viewer option for streaming events to console (1e68dd4)
  • cli: Add experimaestro launchers direct generate command (f4d304b)
  • connectors: Use true async for process waiting (cb9f46f)
  • events: Add EventWriter rotation and respect events_count in reader (a278393)
  • experiments: Add FakeModuleFinder and support module names in pre_experiment (247a8f1)
  • experiments: Add mock_modules function and fix module mocking issues (46b0ce2)
  • experiments: Improve mock_modules with automatic decorators and .apply support (39ab2b2)
  • history: Add experiment run history and tagging support (#132) (3db19c6)
  • launcherfinder: Add generic AcceleratorSpecification for cross-platform GPU support (590d26c)
  • launchers: Add DynamicLauncher and priority property (41cbaa5)
  • locking: Migrate from fasteners to filelock with unified event loop (13bf6da)
  • monitor: Add SSH-based remote experiment monitoring (ed8eb4d)
  • polling: Use Polyak averaging for adaptive watchdog reliability (76d87c5)
  • recovery: Add crash recovery for orphaned event files (99a390b)
  • remote: Add protocol version checking for client-server compatibility (5d9296c)
  • scheduler: Track hostname where experiments are launched (5ce084a)
  • scheduler: Add soft dependencies for dynamic task outputs (fb757a1)
  • scheduler: Add adaptive file polling with FileWatcher (9e20e3e)
  • scheduler: Properly track SCHEDULED state for batch jobs (02144df)
  • scheduler: Implement event cleanup and warning system (28d7598)
  • scheduler: Add graceful termination handling for SIGTERM/SIGINT (8aa1149)
  • slurm: Add interactive TUI for SLURM launcher configuration (846a4ec)
  • slurm: Register SLURM launcher entry point (7aedb7b)
  • slurm: Add file dialogs for config export/import in TUI (0c10891)
  • slurm: Add tags and sorting to TUI configuration (12a4e94)
  • ssh-monitor: Improve remote monitoring and fix service display (77ac3d7)
  • state: Add orphan job detection and cleanup history tests (68625d4)
  • state: Add caching and event handling to OfflineStateProvider (bd61cfb)
  • tests: Add pytest markers and module-level dependencies for test ordering (c699dc1)
  • timestamps: Use datetime internally with ISO format serialization (1b38984)
  • tui: Add services panel with failure icons and keyboard navigation (9b87b4a)
  • tui: Improve log display and event handling robustness (c52cfc0)
  • tui: Improve progress display with visual progress bars (15bbc33)
  • tui: Add experiment runs viewer and improve keybindings (eee1876)
  • tui: Add process info display in job detail view (4fed1fb)
  • tui: Improve SSH monitoring with adaptive sync and global services tab (f2fb088)
  • tui: Add sorting commands to experiments list (fixes #156) (51ba8f2)
  • tui: Add orphan jobs tab with stray job detection (fixes #155) (2eb1921)
  • tui: Add automatic service state change notifications (8db4780)
  • tui: Implement delete operations and update kill shortcut (cc73131)
  • tui: Add OSC 52 clipboard support for remote/tmux environments (407b6c1)
  • tui: Improve service state management and sync status display (aa2de7a)- Add InstanceConfig for instance-based identity (#88) (e50a983)
  • Add comprehensive identifier stability tests (0e9de96)
  • Implement async dependency locking (fixes #122) (3f71f9b)
  • Add resumable task support for timeout handling (18c371d)
  • Add configurable max_retries for ResumableTask (fixes #58) (dd4690d)
  • Add multi-experiment monitoring with SQLite persistence and web UI (ddff3fd)
  • Add Textual TUI for interactive experiment monitoring (0bed0ec)
  • Add workspace version checking to prevent v2 incompatibility (57a57ca)
  • Add workspace auto-selection via trigger patterns (11f0f8d)
  • Migrate to workspace-level database with run tracking (3f6d2d1)
  • Add jobs.jsonl for persistent tag storage (caddff5)
  • Add reactive TUI with push notifications via file watching (878ae4b)
  • Improve TUI with thread-safe file watcher and quit dialog (18a883b)
  • Add composition operator @ for configs (fixes #33) (7092afb)
  • Add value_class decorator for external value types (fixes #99) (9c80b10)
  • Add dynamic task outputs with replay support (fixes #90) (d828bd0)
  • Add GracefulTimeout exception and JSON format for .failed files (2c45fc0)
  • Add flexible deprecation with @deprecate(Target) and replace=True (fixes #56) (bf552e0)
  • Refactor CLI to use WorkspaceStateProvider with centralized paths (fixes #150) (4130167)
  • Add date sorting and --count option to jobs list (fixes #112) (46f1123)
  • Warn when overriding argument without overrides flag (fixes #3) (ce18ec6)
  • Remove deprecated @config, @task, @param, @option, @pathoption decorators (c359d66)
  • Enforce single workspace constraint (ad3c411)
  • Rotate log files when resuming tasks (27bf1b5)
  • Add remaining_time() method to ResumableTask (8cc98d0)
  • Add field(ignore_default=...) and field(default=...) for explicit default behavior (5086a3f)
  • Save environment info with git state for experiment reproducibility (4110c26)
  • Warn on conflicting tag values with source location tracking (c376836)
  • Add subparameters for partial identifier computation (#70) (22b7489)
  • Add database tracking and cleanup for partial directories (#70) (5bd9bee)
  • Add mypy plugin for Config.C type inference (#151) (b1723ab)
  • Add partial_loading support for configuration deserialization (d45022b)
  • Comprehensive TUI improvements (526fad8)
  • Warn when experiment lock is held and capture project git info (183642f)
  • Store job dependencies in database and display in UI (2cd3507)
  • Add FSEvents workaround for cross-process SQLite monitoring on macOS (b3a0b28)
  • Display scheduler status in TUI header (ca57f6c)
  • Add dirty_git experiment setting to control git dirty check behavior (20067e1)
  • Add colored logging with ISO timestamps for CLI (d7a3347)
  • Add pre_experiment setting for experiment setup optimization (b0e6c05)
  • Add transient task support (fixes #153) (ebc3b0e)
  • Change experiment layout to experiments/{exp-id}/{run-id}/ (8ab43b3)
  • Replace SQLite/peewee with filesystem-based state tracking (1059dd5)
  • Log job and token debug info on test timeout (1c368cb)
  • Add service logging infrastructure and fix --debug flag (86cbecb)
  • Add orphaned lock detection for dynamic resources (1d3a581)

Miscellaneous Tasks

  • dev: Add vulture for dead code detection and cleanup (4ade608)- Format (9664891)
  • Cleanup (e80a56d)
  • Docstring format (eeedf95)
  • Cleanup (46e7880)
  • Skip pre-release tags in changelog generation (182b4fd)
  • Add plan.md and CLAUDE.md to .gitignore (3c849f0)
  • Add plan.md to .gitignore and untrack CLAUDE.md (acbc705)

Performance

  • tui: Use du command for faster folder size calculation (c55e547)- Add truly async aio_wait() for Process classes (7a6301e)

Refactor

  • api: Change get_job to use task_id instead of experiment_id (2b70b94)
  • events: Rename .experimaestro to .events and add hardlink archiving (2f22c81)
  • events: Improve event handling architecture and job progress tracking (20279d2)
  • scheduler: Improve job lifecycle with done handler and state management (07bbf05)
  • scheduler: Centralize job status writing with write_status_with_lock (5211bc7)
  • state: Unify state serialization with state_dict/from_state_dict (133448b)
  • state: Remove StatusData and ExperimentState, use full_state_dict for services (316228d)
  • state: Use ExperimentJobInformation and update MockService serialization (75c92d5)
  • tui: Break down app.py into submodules (0e02308)
  • tui: Simplify jobs table row iteration (3e8b8bd)- Implement singleton pattern for Scheduler and Server (f8be3c1)
  • Move aio_start method from Job to Scheduler (d5dd970)
  • Convert JobState from enum to class hierarchy (9e8a7b0)
  • Simplify dependency handling with pure async/await (79d5dd7)
  • Separate Workspace and WorkspaceStateProvider concerns (a88946a)
  • Unify job/experiment interfaces with BaseJob and MockJob (5bdc167)
  • Removed some obsolete TODOs (d432baf)
  • Fix warnings due to deprecated default syntax (7e55e6c)
  • Switch from black/flake8 to ruff for linting and formatting (1b4cdba)
  • Move tags to experiment-scoped TagsMap with FilterContext (b190aef)
  • Move tag handling to job submission with experiment-scoped events (0bb67bf)
  • Migrate WebUI from Flask/gevent to FastAPI (1effa68)
  • Add DynamicDependencyLock interface for job lifecycle hooks (d5903d2)
  • Rename subparameters to partial (8e3ef5b)
  • Generalize dynamic dependency lock pattern (969d6ea)
  • Centralize async waiting for dynamic resources via ResourcePoller (5d6c853)

Styling

  • Updated TUI screenshots (e806bde)

Testing

  • migrate: Add comprehensive tests for v1 to v2 workspace migration (5051457)
  • scheduler: Add comprehensive warning system tests (9a14ec2)- Add tests for file-based progress (4648c8a)
  • Adding a test that should fail (b63b153)
  • Added .C (0708cd6)
  • Fixed all tests (use of .C) (af73a93)
  • Add InstanceConfig tests to identifier stability (dfd29ec)
  • Resolved some issue with deleted token directories in tests (0ad2cce)
  • Fix the experiment used to debug the web app (cc5e9ba)
  • Creates an empty data folder (dab05b4)
  • Add multi-token task scheduling tests (a1a410a)
  • Update environment tests after API refactoring (2a678c0)
  • Add state provider method consistency tests (cbd9e45)
  • Add concurrent partial locking test (f6610e3)

Add

  • Add file-based progress classes (a2ebbd3)
  • Add CLI for file progress monitoring (3e8e2a5)

Breaking

  • Init tasks are taken into account properly when computing identifiers (be5b477)

Security

Upd

  • Update notifications to use file progress as well (dc0b472)
  • Check generators reuse on seal (0b1d442)
  • Factorize listeners notifications in scheduler (baa8026)
  • Fuse SchedulerCentral and Scheduler (115e2e7)
  • Start refactoring (175563c)
  • Move job start from scheduler to job (44d210e)
  • Updates imports of deprecated functions (4b1c8b6)