chore: release 0.12.0#109
Merged
pratyush618 merged 1 commit intomasterfrom May 2, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cuts version 0.12.0.
Summary
pyproject.toml,py_src/taskito/__init__.py, and the four crateCargo.tomlfiles from0.11.1→0.12.0.Unreleasedsection indocs/changelog.mdto0.12.0and adds every commit landed onmastersince0.11.1.Highlights of 0.12.0
Added — dashboard persistent settings (branding, links, integrations) with optimistic UI;
taskito worker --pool preforkCLI 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/resourcesfalls back to heartbeat snapshots cross-process; async-separation boundary now machine-checkable;run_maybe_asyncraises a clear taskito-specific error under a running loop; Redis status discriminants sourced fromJobStatusenum (compile-fails on enum reorder);enqueue_batchRust signature widened toOption<Vec<Option<i32>>>.Fixed — scheduler concurrency cap atomicity (TOCTOU + off-by-one); scheduler reschedule on full/closed worker channel;
enqueue_manymiddleware contract symmetry (per-job args, mutation propagation, exception logging);result()/aresult()no longer mask terminal failures asTimeoutError;result_handlerFailure branch deduped from 3×get_jobto 1×;ResourcePool._active_countunderflow 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.Internal —
app.py,workflows/tracker.py,redis_backend/jobs.rs,py_queue/workflow_ops.rs, anddashboard.pyall split into packages/submodules; dashboard health-audit follow-ups (extracted pure modules, vitest coverage on api-client / errors / settings / refresh-interval,useExhaustiveDependenciespromoted toerror); 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
Test plan
cargo check --workspacecleancargo test --workspace— 89 passedcargo check --workspace --features postgres— cleancargo check --workspace --features redis— cleanuv run python -m pytest tests/python/ -v— 496 passeduv run ruff check py_src/ tests/— cleanuv run mypy py_src/taskito/ --no-incremental— cleangrep -rn "0\\.11\\.1" --include="*.toml" --include="*.py" --include="*.lock"returns empty (excluding the historical## 0.11.1heading 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.