Skip to content

Releases: experimaestro/experimaestro-python

v2.0.0b26

18 Jan 16:26

Choose a tag to compare

feat(scheduler): properly track SCHEDULED state for batch jobs

- Add _set_job_state_from_process() to check process state and set job
  state to SCHEDULED or RUNNING accordingly
- Add aio_wait_until_running() to Process base class with polling default
- SLURM: implement event-driven aio_wait_until_running() using watcher
- Add clock icon (🕐) for SCHEDULED state in TUI
- Show informative message when trying to view logs for SCHEDULED jobs

This enables proper tracking of jobs that are submitted to batch systems
like SLURM but not yet executing. The TUI now shows a distinct icon and
prevents attempts to view logs that don't exist yet.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v2.0.0b25

18 Jan 14:47

Choose a tag to compare

feat(experiments): improve mock_modules with automatic decorators and…

v2.0.0b24

18 Jan 12:29

Choose a tag to compare

feat(experiments): add mock_modules function and fix module mocking i…

v2.0.0b23

17 Jan 13:10

Choose a tag to compare

feat(experiments): add FakeModuleFinder and support module names in p…

v2.0.0b22

17 Jan 11:53

Choose a tag to compare

feat(scheduler): add adaptive file polling with FileWatcher

Add a new polling module that provides hybrid file watching:
- FileWatcher combines watchdog with adaptive polling (0.5s to 30s)
- When watchdog fires, polling interval resets to minimum
- When files are idle, polling interval gradually increases
- Provides reliable change detection as fallback when watchdog misses events

Integrate FileWatcher into EventReader for more reactive file monitoring.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v2.0.0b21

17 Jan 07:34

Choose a tag to compare

feat(tui): add OSC 52 clipboard support for remote/tmux environments

Clipboard operations now work over SSH and tmux by using OSC 52 escape
sequences as a fallback when pyperclip fails. This enables copy actions
(like 'f' to copy path) to work in remote terminal sessions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v2.0.0b20

17 Jan 07:17

Choose a tag to compare

feat(tui): add OSC 52 clipboard support for remote/tmux environments

Clipboard operations now work over SSH and tmux by using OSC 52 escape
sequences as a fallback when pyperclip fails. This enables copy actions
(like 'f' to copy path) to work in remote terminal sessions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v2.0.0b19

16 Jan 23:30

Choose a tag to compare

fix(events): prevent duplicate event processing due to race condition

When processing event files in order (e.g., events-2.jsonl triggering
read of events-1.jsonl), the on_created callback could later reset the
file position to 0, causing events to be processed twice.

Fix: Only set file position to 0 in on_created if not already tracked.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

v2.0.0b18

14 Jan 19:05

Choose a tag to compare

feat(locking): migrate from fasteners to filelock with unified event …

v2.0.0b17

12 Jan 10:33

Choose a tag to compare

fix(state): cache jobs to receive progress events in TUI

Jobs loaded via get_jobs() were not being cached, so when JobProgressEvent
arrived, there was no job in _job_cache to apply it to. Progress updates
were forwarded to TUI but the underlying job data wasn't updated.

Add _get_or_load_job() method that caches jobs when loaded, ensuring
progress events can be applied to cached jobs between get_jobs() calls.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>