Skip to content

chore: release 0.12.0#109

Merged
pratyush618 merged 1 commit intomasterfrom
chore/release-0.12.0
May 2, 2026
Merged

chore: release 0.12.0#109
pratyush618 merged 1 commit intomasterfrom
chore/release-0.12.0

Conversation

@pratyush618
Copy link
Copy Markdown
Collaborator

Cuts version 0.12.0.

Summary

  • Bumps pyproject.toml, py_src/taskito/__init__.py, and the four crate Cargo.toml files from 0.11.10.12.0.
  • Promotes the Unreleased section in docs/changelog.md to 0.12.0 and adds every commit landed on master since 0.11.1.

Highlights of 0.12.0

Added — dashboard persistent settings (branding, links, integrations) with optimistic UI; taskito worker --pool prefork CLI flag; URL-state for dead-letter page + view.

Changed — Preact dashboard fully replaced by React + Vite + TanStack Router SPA; dashboard dead letters now group by (task, exception class); /api/resources falls back to heartbeat snapshots cross-process; async-separation boundary now machine-checkable; run_maybe_async raises a clear taskito-specific error under a running loop; Redis status discriminants sourced from JobStatus enum (compile-fails on enum reorder); enqueue_batch Rust signature widened to Option<Vec<Option<i32>>>.

Fixed — scheduler concurrency cap atomicity (TOCTOU + off-by-one); scheduler reschedule on full/closed worker channel; enqueue_many middleware contract symmetry (per-job args, mutation propagation, exception logging); result() / aresult() no longer mask terminal failures as TimeoutError; result_handler Failure branch deduped from 3× get_job to 1×; ResourcePool._active_count underflow on factory failure; prefork timeout kill; CI PyO3 finalization SIGABRT; dashboard timestamp render (year 58282); dashboard DAG cycle bound; dashboard settings storage opacity; dashboard dead-letter row keyboard accessibility.

Internalapp.py, workflows/tracker.py, redis_backend/jobs.rs, py_queue/workflow_ops.rs, and dashboard.py all split into packages/submodules; dashboard health-audit follow-ups (extracted pure modules, vitest coverage on api-client / errors / settings / refresh-interval, useExhaustiveDependencies promoted to error); dependency bumps (redis 0.27 → 1.2, libsqlite3-sys 0.30 → 0.37, thiserror 1 → 2, rand 0.8 → 0.10, etc.).

Test counts at release

  • Rust: 89 (was 78)
  • Python: 496 passed, 9 skipped across 49 files (was 469 / 46)
  • Dashboard (vitest): 81

Test plan

  • cargo check --workspace clean
  • cargo test --workspace — 89 passed
  • cargo check --workspace --features postgres — clean
  • cargo check --workspace --features redis — clean
  • uv run python -m pytest tests/python/ -v — 496 passed
  • uv run ruff check py_src/ tests/ — clean
  • uv run mypy py_src/taskito/ --no-incremental — clean
  • grep -rn "0\\.11\\.1" --include="*.toml" --include="*.py" --include="*.lock" returns empty (excluding the historical ## 0.11.1 heading in the changelog)

After merge

This PR only bumps the version. The release tag (v0.12.0) and PyPI / crates.io publish are deliberate follow-up steps, not part of this PR.

@pratyush618 pratyush618 merged commit 43e3456 into master May 2, 2026
19 checks passed
@pratyush618 pratyush618 deleted the chore/release-0.12.0 branch May 2, 2026 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant