Skip to content

v2.0.0

Choose a tag to compare

@bpiwowar bpiwowar released this 20 Feb 11:03
· 154 commits to master since this release

Changelog

All notable changes to this project will be documented in this file.

[2.0.0] - 2026-02-20

Bug Fixes

  • ConfigurationBase: Documentation and new fields to describe an experiment (df6e0a6)
  • 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)
  • cli.py: Python path should be modified including when running the experiments (c5487f8)
  • configuration: Serialize the task to recompute exactly the identifier (f642607)
  • configuration: Fixed bugs with identifiers (98608c3)
  • configuration: Fixed more bugs with identifiers (fbea16e)
  • 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)
  • server: Fix some display bugs in the UI (642c48a)
  • slurm: Better SLURM launcher finder (0992214)
  • slurm: Check if slurm process is alive before returning it (d084d27)
  • 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: Accept generics as Param (but no real validation) (6f639ce)
  • types: Add generic type parameter compatibility check for overrides (f67fa74)
  • typinutils: Test for optional (67164ec)- Fix (04705b3)
  • Fix (223932a)
  • Wrong indent (d373348)
  • Fix bugs with generate/dry-run modes (016b3d5)
  • Better identifier recomputation (94628d6)
  • Better handlign of services (d3cf30a)
  • Fix test bugs (313f8ab)
  • Improving slurm support (be6ed18)
  • Information message when locking experiment (0729a18)
  • JS vulnerabilities fix (e6324eb)
  • Improved server (e1c3c62)
  • Corrected service status update for servers (8e96fcd)
  • Add gevent-websocket for supporting websockets (5784194)
  • Requirement for fabric (c3749fc)
  • Fix submit hooks (and document them) (2e104e9)
  • Removes unnecessary server logs (5627f78)
  • Bug in dependency tracking (0b79189)
  • Pre task dependencies are taken into account (678d39a)
  • Exception thrown when adding pre-task to a sealed config (02a2667)
  • Pre-task are properly handled (95cbcad)
  • Identifiers (e4e2d7f)
  • Better instance() (60b947f)
  • Cleaned up the instance() mode (966ea80)
  • Cleaned up the instance() mode (9713dd7)
  • Blank line after job information (49cdb9f)
  • More fine-grained SLURM configuration (e65f698)
  • Max duration QoS was ignored (ca5f941)
  • More slurm fixes (a87bba3)
  • Undocumented produces more information (d1f98d1)
  • Task identifier and reload (da331aa)
  • Task identifier and reload (6e0aaa4)
  • Bad assert test (3534922)
  • Identifier is a method not a property (2d26457)
  • Parent should be really optional (1cab7c3)
  • Set id as MISSING (125d178)
  • Configuration must be OmegaConf to be transformed (17c9e66)
  • Process YAML file in the right order (ed4a5d9)
  • _collect_parameters is in Python 3.11 (136c77f)
  • Support python 3.12 pathlib (cabd520)
  • Better error messages (015b3f6)
  • Added pre/post yaml options (cd466f7)
  • Deprecate YAML defined launchers (934c636)
  • Really using the workspace directory (0940a09)
  • Multiple launchers (61e5b8d)
  • Force exit with multiprocessing (57957e8)
  • Get back to sys.exit (52485a5)
  • Bugs in normal task exit (3843058)
  • Bug in environment (d2ddd10)
  • Wrong test for running/done tasks (b59d68e)
  • Wrong information reported (eea12cf)
  • Removed extra logging information (3639f14)
  • Set init tasks before job creation (776ca60)
  • Bug when no settings.yaml file (763c349)
  • Use a better way to load the XP file (be60e92)
  • Andles better null process (68c36dc)
  • Bug in setting workspace env (27a7ca1)
  • Fabric is now optional (1f42237)
  • No dependencies for loaded configurations (9163cd5)
  • Python 3.12 compatibility (but without ssh) (7f54b80)
  • Js vulnerabilities fix (9b13527)
  • When fabric is not there, use placeholders (2f11708)
  • Python path is now propagated to the tasks (5c73669)
  • Launchers.py is a resource (eee2df0)
  • Wheel includes server data files (20e0dae)
  • Removed temporarly dynamic output (29be999)
  • Npm audit (5c7ae3c)
  • Start notification thread outside the Thread class (b364f24)
  • Handles non resources (f35ef8f)
  • Xp_file is changed into a Path if command line (e4a9610)
  • Assert that the returned launcher is a launcher (6b0024d)
  • Import Launcher (78d59cc)
  • Tests and documentation (00619bf)
  • Avoids imp module (3ab60d9)
  • Fix identifier (f8025f0)
  • Compatibility python < 3.12 (f02474d)
  • Add module path to tasks python path (bf0009f)
  • Tuples can be serialized too (e641284)
  • Default factory is not a constant (004ff0e)
  • Ignored value when using default_factory in field (5732200)
  • Saving Experiment state when some jobs failed (4e1912e)
  • Use dataloader (3731c06)
  • CPU specification partially taken into account (954ca48)
  • GiB and MiB allowed for memory launcher spec (6fd71ad)
  • Export Documentation (84d473f)
  • Job list fix (b29916b)
  • Handles the case where params.json is absent (cf8499b)
  • Detect stall when exiting and kill subprocesses (3387e8b)
  • Better representation for launcher specifications (98e14cb)
  • 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)- Fix packaging (server files were not included) (f1e8ccf)
  • Full switch to poetry (644678b)
  • Change dirty flag with commits (3e97190)
  • Entry points fix for poetry (cd3eee8)
  • Build updates (2455ee0)
  • More flexibility with huggingface-hub (c1146c0)
  • Further development is for Python 3.9 and above (01feecc)
  • Use typing extensions for python 3.11 (5ce289f)
  • No more poetry lock (7704ee9)
  • Use module resolution (c0a3473)
  • Dynamic version fix (73ff459)
  • App tsconfig file fix (670a799)
  • App tsconfig file fix (75eee72)
  • Npm run fix (eb9c3d7)
  • Add mkdocs dependency (53823ee)
  • Use more standard entry-points in project (f4c29f6)
  • Getting (slowly) out of poetry (330b0c2)
  • Upgrade gevent req (a8aa7ff)
  • Try to use more recent setuptools (cfd28e9)
  • Put back include files into [tool.poetry] (aa89e4f)
  • Alpha builds are OK now (1fe82e7)
  • Modernize build chain with hatch and git-cliff (17752e8)

CI

  • Adds test for dependencies (52934ff)
  • Removed 3.12 support for now (5963d27)
  • 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)- Start changelog from 0.15.0 (9ec29ff)
  • Updated documentation (0726bcb)
  • Again (a582e29)
  • Updating documentation for task_outputs (f5924ef)
  • Updating documentation (46d4603)
  • Updated documentation for pre-tasks (399b996)
  • Added a documentation for undocumented configurations cli (1ca0703)
  • Improved slurm documentation (1bebe52)
  • Documented SlurmOptions attributes (d4d3736)
  • Documentation (8acfa50)
  • Added py.typed for mypy (42bc4d2)
  • Added OS (117e7c1)
  • Experiments (be3619f)
  • Experiments (d94d196)
  • Improved documention and starting a tutorial (93f4f56)
  • Fix ConfigurationBase package (6edb89e)
  • Added workspaces settings (a9663ad)
  • Put first initialization tasks (instead of pre-tasks) (77c85df)
  • Better document object hierarchy (3a5576e)
  • Added documentation on env (dcdbe94)
  • Updated tutorial (a140685)
  • Improved documentation (8d0f59b)
  • Removed obsolete documentation (0902792)
  • Improved documentation (dd348c3)
  • Fix find_launcher example (02773e3)
  • Updating documentation (3cec553)
  • Updated task output part (8d4e6e5)
  • Updated documentation on default params (5445002)
  • Updated documentation for #115 (bce7560)
  • Improved documentation for launchers (cc242c8)
  • Requires python 3.10 for RTD (06fdf7a)
  • 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

  • Lightweight-pre-tasks: Lightweight pre-tasks allow code to be executed to modify objects (d4f9817)
  • 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)
  • configuration: Re-use computed sub-configuration identifiers (44bcfdd)
  • configuration: Add access to pre-task and dependency copying (e3dfde5)
  • connectors: Use true async for process waiting (cb9f46f)
  • documentation: Checks for undocumented configuration objects in a package (21a44a5)
  • 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: Foundations for experiment services (72e05f2)
  • 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)
  • server: Web services for experiment server (247898a)
  • 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)- Allow using the old task identifier computation to fix params.json (d6e3820)
  • Improvements for dry-run modes to show completed jobs (b9d19cf)
  • Service proxying (460c6e0)
  • When an experiment fails, display the path to stderr (028e180)
  • Tags as immutable and hashable dicts (fcd1bbc)
  • Submit hooks to allow e.g. changing the environment variables (63f18ce)
  • Serialized configurations (1683c90)
  • Expose the unwrap function (cb335f2)
  • Easier path LW task access (14c4bb2)
  • Removed config wrapper (7b54fb2)
  • Show dependencies when simulating (d824d64)
  • List experiments (8ef34a3)
  • Improved check documentation command (8197e82)
  • Generic documentation checker (for use in automated tests) (8778e21)
  • Added decorator (NOOP) for config only methods (dad2599)
  • Undocumented in sphinx documentation (73dbd0e)
  • Init tasks (6d683b5)
  • Workspace settings (e0928dd)
  • Serialization for arbitrary data structures (1ac8745)
  • Launchers.py specification file (c0cf5a1)
  • Utility function to format time for SLURM (9131389)
  • Test for falsy documented (0aeef98)
  • Access run mode from experiment (e223686)
  • Saving/Loading from experiments (7aa82de)
  • Run-experiment cli (ac97601)
  • Load task from directory (67b1292)
  • Representation of identifier as hex string (1293ef5)
  • Decorator class method for experiment helpers (a0c2e02)
  • HandledException to shorten error stack trace (f7dae15)
  • Uses job failure status (32b9e7c)
  • Environment can be defined in the settings (cff1f61)
  • Requirements can now include a disjunction (6a0ea52)
  • Handles properly mp.spawn (3c11c90)
  • Better job interactions (dcdfa52)
  • Include jobs not in experiments (83b8c10)
  • Include jobs not in experiments (ca1c8be)
  • Python path and module in experiments (8428747)
  • Dynamic outputs and field factory (db84bec)
  • Use srun when launching slurm tasks (952085a)
  • Check jobs when listing them (0876284)
  • Requirements durations can be multiplied with multiply_duration (4d00d8e)
  • 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)

Fix

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)
  • server: Switched to flask and socketio for future evolutions of the server (f63b6b1)
  • 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)- Removed jsonstreams dependency (2848a60)
  • More reliable identifier computation (3466286)
  • Changed TaskOutput to ConfigWrapper (c3ac81d)
  • Use XPMValue and XPMConfig to distinguish configurations and values (90ffc04)
  • Removed unused environments (8d52d8e)
  • Change run-experiment parameters (a2b1a38)
  • Change the cli source dir (ca107d0)
  • Removed the launchers.yaml support (6d18f3e)
  • Pre-commit commitizen update (b478b49)
  • Changed TypeConfig into ConfigMixin (4bad386)
  • Identifier computation has its module (0eaaeb7)
  • Config_walk (79592d1)
  • Move to objects/ module (c0f2dc7)
  • Auxillary objects in config_utils (213e86c)
  • Allow to use timeout when checking state (3fed286)
  • 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

  • Cleanup dead code and other things (a7298de)
  • Updated TUI screenshots (e806bde)

Testing

  • migrate: Add comprehensive tests for v1 to v2 workspace migration (5051457)
  • scheduler: Add comprehensive warning system tests (9a14ec2)- Fix for token rescheduler (e3b2ddd)
  • More tests about tasks (dffd568)
  • Corrected masked test (508783a)
  • Switched to gevent to fix github test (2ce0cd6)
  • Fix launcher finder tests (dfbea91)
  • Tags should be included from init_tasks (18b696a)
  • More tests on tags (05f683b)
  • Displays an error message when flock is not installed (bb667ba)
  • More test (15dda2f)
  • Fix bugs (aaebd34)
  • Removed test for dynamic output (a7a8af2)
  • Support for python >= 3.10 (4312ef2)
  • Fix experiment history test (6c41844)
  • Increase max restart wait from 2s to 5s (a79369a)
  • Add typevar generics tests (c69ae68)
  • Add test for deprecation warning (cc7b187)
  • 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)

WIP

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)

Bump

Dep

  • Upgrade gevent to 24.11.1 (54781bb)

Enh

  • More information about module import error (c8b1f39)
  • Dynamic task outputs (69dbb1e)
  • Handle union types (bca43ba)
  • Option to add a timestamp to the experiment ID (4173275)
  • Adding serialize/deserialize (5e86e79)
  • Task event (1dba0ac)
  • Serialize/deserialize are in main exports (9409211)

Enhancement

Pre-commit

  • Upgrade flake8 to 6.1.0 (b41c585)

Security

Upd

  • Add TypeVarType in types + test (3f49656)
  • Add typevar handling and coherence check (762b34c)
  • Add typevar bounds checks with generics (0a1a35c)
  • Add warning for direct config construction (f31f59c)
  • 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)

Wip

  • Post-experimental details (01951ef)