Skip to content

Releases: dmoliveira/ailoop

ailoop v0.2.8

Choose a tag to compare

@dmoliveira dmoliveira released this 30 Jul 03:18
61326f1

ailoop v0.2.8

Fixes

  • Retry admission now serializes with durable stop mutations. A stop committed before admission
    suppresses the retry, while a later stop still cancels admitted work through the normal active-run
    path.
  • Stop intent now remains dominant over later pause requests while explicit resume continues to run
    remaining work.

Security

  • State lock handling now pins operations to owner-controlled, non-group/world-writable state
    namespaces; rejects unsafe path types, ownership, hardlinks, and changed lock identities; normalizes
    .locks and lock files to modes 0700 and 0600; and writes diagnostic PIDs only after successful
    lock validation.
  • The configured state-root ancestry, processes sharing the effective user ID, and non-local
    filesystem lock semantics remain trusted boundaries rather than claimed isolation guarantees.

Compatibility

  • prompt.pre_prompt_enabled, prompt.attach_agent_file, loop.continue_on_error, and
    tasks.stop_when_complete now require values that PyYAML parses as booleans. Quoted strings,
    numbers, null, and collections are rejected with field-specific configuration errors.
  • Use unquoted YAML true and false for portable, explicit configuration. PyYAML legacy spellings
    that already parse as booleans remain accepted.

Quality

  • The release-preparation suite passes 506 tests with 85% coverage, including adversarial lock-path,
    retry-control, explicit-resume, and strict-config regressions.

Install

pipx install ./ai_loop-0.2.8-py3-none-any.whl
ailoop --help

PyPI publication is not part of this release.

ailoop v0.2.7

Choose a tag to compare

@dmoliveira dmoliveira released this 29 Jul 23:06
3c8b0c5

ailoop v0.2.7

Fixes

  • Programmatic loop-table rebuilds now suppress DataTable.RowHighlighted, so refreshes no longer
    rebind transient rows or clear unsaved loop drafts, selection, cursor position, or workspace
    branch state.

Quality

  • Added Python 3.11 CI regression coverage for the refresh and draft-preservation path.

Install

pipx install ./ai_loop-0.2.7-py3-none-any.whl
ailoop --help

PyPI publication is not part of this release.

ailoop v0.2.6

Choose a tag to compare

@dmoliveira dmoliveira released this 29 Jul 18:48
e813027

ailoop v0.2.6

Fixes

  • Lock teardown and file-close failures no longer turn an already committed state mutation into a
    reported operation failure.
  • Best-effort postcommit event suppression is limited to storage OSError failures; programming
    errors and interrupts still surface.
  • Ambiguous append-succeeded-then-raised outcomes do not retry or duplicate events, workers, or
    consumed follow-up intent.

Quality

  • 418 tests pass with 85% coverage on the corrective release line.
  • Python 3.11 and Python 3.13 CI, Ruff, package metadata checks, clean-wheel installation, and
    downloaded checksum verification are required before completion.

Install

pipx install ./ai_loop-0.2.6-py3-none-any.whl
ailoop --help

PyPI publication is not part of this release.

ailoop v0.2.5

Choose a tag to compare

@dmoliveira dmoliveira released this 29 Jul 18:33
0bcf21e

ailoop v0.2.5

Reliability

  • Memory IDs are collision-safe and publication cannot overwrite an existing entry.
  • Arbitrary runner output bytes remain exact on disk and render safely in summaries, CLI, and TUI.
  • Committed run intents remain successful when best-effort event journaling fails.
  • Retry and reset executions preserve distinct prompt, stdout, and stderr evidence.
  • Concurrent workspace-history appends and compaction are serialized and atomic.

TUI safety

  • Hidden or editor-focused memory shortcuts fail closed.
  • Loop actions require a visible, stable row identity; hidden query drafts cannot mutate loops.
  • Memory archive and delete confirmations are bound to the same entry ID across both keypresses.
  • Detached worker and replay feedback reports launch requests and recoverable launch failures honestly.

Quality

  • Release validation includes 405 passing tests with 85% coverage, Ruff, package checks,
    clean-wheel installation, Python 3.11 and Python 3.13 CI, and downloaded artifact checksum
    verification.

Install

Download the wheel attached to this GitHub release, then run:

pipx install ./ai_loop-0.2.5-py3-none-any.whl
ailoop --help

PyPI publication is not part of this release.

ailoop v0.2.4

Choose a tag to compare

@dmoliveira dmoliveira released this 29 Jul 08:50
b96fa61

ailoop v0.2.4

Fixes

  • Configured loop creation now writes complete state atomically and removes a newly created loop if
    creation-event or workspace-history persistence fails. (#104)
  • Scheduled loops now fail closed while a worker is active: follow-up metadata changes are rejected,
    emergency stop is the only claimed-process control, and cleanup failures are refresh-only. (#104)
  • Scheduled draft, branch strategy, safety, and notification surfaces now describe saved planning
    metadata honestly; unsupported controls are disabled and excluded from keyboard focus. (#104)

Safety

  • Recoverable service and worker-spawn failures now report the error, refresh state, and avoid false
    success messages. Unsaved follow-up text is preserved when a worker cannot start. (#104)
  • Start, resume, follow-up, and next-iteration side effects occur only after their corresponding
    persistence or spawn step succeeds. (#104)

Quality

  • Added regressions for creation rollback, fail-closed scheduled edits, compact-layout capability
    copy, planning-only focus behavior, recoverable mutations and spawns, and input preservation. (#104)
  • Release validation: 319 tests passed with 85% coverage; Ruff, diff, compile, and lock checks
    passed; Python 3.11 and Python 3.13 PR CI passed; wheel and source distributions passed
    twine check; and the wheel installed and reported version 0.2.4 in a clean environment.

Install

Download the wheel attached to this GitHub release, then run:

pipx install ./ai_loop-0.2.4-py3-none-any.whl
ailoop --help

PyPI publication is not part of this release.

ailoop v0.2.3

Choose a tag to compare

@dmoliveira dmoliveira released this 29 Jul 07:45
2a5ee26

ailoop v0.2.3

Fixes

  • Post-run task-file validation failures now emit a dedicated truthful event while preserving the
    original validation exception as the primary error. Secondary history/event failures are attached
    as notes instead of masking it. (#101)
  • Saved scheduled configurations can transition atomically to fixed or infinite execution, while
    requests that remain scheduled are still rejected from manual restart. (#102)
  • TUI restart and worker-spawn failures are reported without escaping the action handler. Scheduled
    help now shows emergency stop only for a claimed process and never advertises deletion while the
    loop is active. (#102)

Safety

  • Deferred validation catches only expected OSError/ValueError failures; interrupts and process
    exits retain their normal control-flow semantics.
  • Completed iteration accounting, output artifacts, and resume numbering remain durable across
    task-file validation failures.
  • A failed worker spawn leaves the converted executable configuration persisted and idle, with an
    explicit recoverable error message.

Quality

  • Added validation-primary combined-failure, deleted-task-file, resume-artifact, scheduled-mode
    transition, spawn-failure, emergency-stop-help, and delete-help regressions.
  • Release validation: 293 tests passed with 83% coverage; Ruff and lock checks passed; wheel
    and source distributions passed twine check; and the wheel installed and reported version
    0.2.3 in a clean virtual environment.

Install

Download the wheel attached to this GitHub release, then run:

pipx install ./ai_loop-0.2.3-py3-none-any.whl
ailoop --help

PyPI publication is not part of this release.

ailoop v0.2.2

Choose a tag to compare

@dmoliveira dmoliveira released this 29 Jul 06:26
954c43e

ailoop v0.2.2

Fixes

  • Completed iteration accounting now survives post-run task-file validation failures, so a
    successful runner is not repeated after the task file is repaired. (#97)
  • memory edit patches only explicitly supplied fields against the latest snapshot instead of
    resetting omitted values to current application defaults. (#98)
  • Scheduled loops are presented honestly as saved configurations while scheduler execution is
    unavailable. Unsupported runtime controls are disabled and guarded. (#99)

Safety

  • Finalized iteration events and workspace history are persisted before post-run validation errors
    surface.
  • Memory updates use stable per-entry locks and durable atomic replacement; concurrent edits and
    usage updates no longer lose each other.
  • Scheduled follow-ups are saved without spawning a process, pending manual work cannot be
    overwritten by a schedule save, and emergency stop remains available for a claimed process.

Quality

  • Added regressions for task-file failure recovery, memory patch/version integrity, concurrent
    memory mutation, atomic-write failures, scheduled keyboard actions, and scheduler-unavailable
    status copy.
  • Release validation: 287 tests passed with 83% coverage; Ruff and lock checks passed; wheel
    and source distributions passed twine check; and the wheel installed and ran in a clean
    virtual environment.

Install

Download the wheel attached to this GitHub release, then run:

pipx install ./ai_loop-0.2.2-py3-none-any.whl
ailoop --help

PyPI publication is not part of this release.

ailoop v0.2.1

Choose a tag to compare

@dmoliveira dmoliveira released this 28 Jul 17:20
08f2cf4

ailoop v0.2.1

Fixes

  • ailoop resume now establishes an explicit run intent for paused and stopped loops.
  • Loop state and control transitions are transactional, so newer pause or stop requests win
    before a detached dashboard worker can claim the next iteration.
  • State writes use durable atomic replacement, while event appends are flushed and synced.

Safety

  • On POSIX, catchable runner exits clean and reap the original process group before the loop
    becomes resumable.
  • Unconfirmed cleanup records cleanup_failed and blocks rerun, resume, control, and removal;
    it does not claim that the process was terminated.
  • Abrupt parent SIGKILL can leave a runner alive and require manual cleanup. The persisted loop
    remains active and fails closed instead of authorizing duplicate work.
  • Removed loop IDs are durably retired and cannot be reused by delayed workers or events.
  • Scheduled loops remain configuration-only until scheduler execution is implemented.

Quality

  • Added lifecycle-safety coverage for control races, durable claims, cleanup failures,
    process-group teardown, retired IDs, removal races, and scheduled-loop guardrails.
  • CI passes on Python 3.11 and 3.13.
  • 272 tests pass with 83% coverage.

Install

Download the wheel attached to this GitHub release, then run:

pipx install ./ai_loop-0.2.1-py3-none-any.whl
ailoop --help

PyPI publication is not part of this release.

ailoop v0.2.0

Choose a tag to compare

@dmoliveira dmoliveira released this 28 Jul 12:51
6f33bf2

ailoop v0.2.0

Adds

  • Searchable TUI loop navigation across loop IDs, state, mode, runner, agent, prompt, workspace, and task-file metadata.
  • A recent-workspace picker plus workspace-aware follow-up and history tracking.
  • Runner iteration timeouts and more responsive stop behavior.

Changes

  • TUI controls preserve unsaved editor input while searching and switching loops.
  • Workspace-root validation and status are surfaced before spawning a runner.
  • Loop refreshes reuse one state snapshot instead of repeatedly scanning state files.
  • The Textual dependency now targets the tested 8.2 release line instead of an incompatible legacy floor.

Fixes

  • Stop TUI refresh callbacks safely during shutdown.
  • Observe pause and stop controls during loop delays.
  • Interrupt active runners when a stop is requested.
  • Validate workspace roots before spawning.
  • Clarify queued follow-up and reset/restart behavior.

Quality

  • Expanded TUI, service, prompting, and workspace-loop regression coverage.
  • Added CI for Python 3.11 and 3.13.
  • Enforced an 80% branch-coverage floor.

Install

Download the wheel attached to this GitHub release, then run:

pipx install ./ai_loop-0.2.0-py3-none-any.whl
ailoop --help

PyPI publication is not part of this release.

ailoop v0.1.0

Choose a tag to compare

@dmoliveira dmoliveira released this 15 May 21:49

ailoop v0.1.0

  • Launches ailoop, a small CLI for running AI terminal tools in safe, repeatable loops.
  • Adds YAML config, CLI overrides, and durable local state for resumable runs.
  • Supports OpenCode, Codex, Claude, and other command-template runners.
  • Includes strict Markdown task-file mode for structured iterative work.
  • Ships pause, resume, stop, logs, stats, tail, and JSON output for automation.