v2.0.0
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 generatecommand (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
- Slurm option (2694c52)
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
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
- Job start (c36ee00)
- Launching command line process (5a54f9b)
- Scheduler (8a8da2e)
- Tokens (38992c1)
- Tokens (aee5832)
- IPC tokens (7961ec8)
- Remote launch (SSH) (9e2f538)
- Mypy support (7344015)
- Tags inheritance in nested configs (8e4d7ca)
- Lightweight asyncio schedulers (8dc38e6)
- Launcher spec (9a5f09a)
- Launcher registry (dc7fad6)
- Launcher finder (537d1ae)
- Documentation and launcher finder (9e2a3f1)
- Tests and documentation (10aab51)
- Mysterious progress test (676757d)
- SSH connector (168032c)
- Dynamic output tasks (c6b3f8f)
- Dynamic task output (ff3a68d)
- Dynamic outputs (3de57cc)
Add
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
- Better class name (a3a96b2)
Pre-commit
- Upgrade flake8 to 6.1.0 (b41c585)
Security
- Npm audit fix (c1447d2)
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)