From 93cc0dba80393dd0778a5e893126ea0525a5a03a Mon Sep 17 00:00:00 2001 From: Pratyush Sharma <56130065+pratyush618@users.noreply.github.com> Date: Sat, 27 Jun 2026 17:02:31 +0530 Subject: [PATCH 1/4] chore: bump version to 0.17.0 --- Cargo.lock | 12 ++++++------ crates/taskito-core/Cargo.toml | 2 +- crates/taskito-java/Cargo.toml | 2 +- crates/taskito-mesh/Cargo.toml | 2 +- crates/taskito-node/Cargo.toml | 2 +- crates/taskito-python/Cargo.toml | 2 +- crates/taskito-workflows/Cargo.toml | 2 +- sdks/java/build.gradle.kts | 2 +- sdks/java/graalvm-smoke/build.gradle.kts | 2 +- sdks/java/processor/build.gradle.kts | 2 +- sdks/java/test-support/build.gradle.kts | 2 +- sdks/node/package.json | 2 +- sdks/python/pyproject.toml | 2 +- sdks/python/taskito/__init__.py | 2 +- 14 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 38dee34e..b52ff5c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1481,7 +1481,7 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" [[package]] name = "taskito-core" -version = "0.16.4" +version = "0.17.0" dependencies = [ "async-trait", "chrono", @@ -1505,7 +1505,7 @@ dependencies = [ [[package]] name = "taskito-java" -version = "0.16.4" +version = "0.17.0" dependencies = [ "async-trait", "crossbeam-channel", @@ -1523,7 +1523,7 @@ dependencies = [ [[package]] name = "taskito-mesh" -version = "0.16.4" +version = "0.17.0" dependencies = [ "base64", "bincode", @@ -1538,7 +1538,7 @@ dependencies = [ [[package]] name = "taskito-node" -version = "0.16.4" +version = "0.17.0" dependencies = [ "async-trait", "crossbeam-channel", @@ -1557,7 +1557,7 @@ dependencies = [ [[package]] name = "taskito-python" -version = "0.16.4" +version = "0.17.0" dependencies = [ "async-trait", "base64", @@ -1577,7 +1577,7 @@ dependencies = [ [[package]] name = "taskito-workflows" -version = "0.16.4" +version = "0.17.0" dependencies = [ "dagron-core", "diesel", diff --git a/crates/taskito-core/Cargo.toml b/crates/taskito-core/Cargo.toml index 293d78f1..c6e1464c 100644 --- a/crates/taskito-core/Cargo.toml +++ b/crates/taskito-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "taskito-core" -version = "0.16.4" +version = "0.17.0" edition = "2021" [features] diff --git a/crates/taskito-java/Cargo.toml b/crates/taskito-java/Cargo.toml index 4c1c9883..93d47a07 100644 --- a/crates/taskito-java/Cargo.toml +++ b/crates/taskito-java/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "taskito-java" -version = "0.16.4" +version = "0.17.0" edition = "2021" description = "Java (JNI) bindings for the Taskito task-queue core" license = "MIT" diff --git a/crates/taskito-mesh/Cargo.toml b/crates/taskito-mesh/Cargo.toml index 5ed7db3c..0cd76aff 100644 --- a/crates/taskito-mesh/Cargo.toml +++ b/crates/taskito-mesh/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "taskito-mesh" -version = "0.16.4" +version = "0.17.0" edition = "2021" [dependencies] diff --git a/crates/taskito-node/Cargo.toml b/crates/taskito-node/Cargo.toml index bba056d6..c3f85267 100644 --- a/crates/taskito-node/Cargo.toml +++ b/crates/taskito-node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "taskito-node" -version = "0.16.4" +version = "0.17.0" edition = "2021" description = "Node.js (napi-rs) bindings for the Taskito task-queue core" license = "MIT" diff --git a/crates/taskito-python/Cargo.toml b/crates/taskito-python/Cargo.toml index 27f133e8..055a74f9 100644 --- a/crates/taskito-python/Cargo.toml +++ b/crates/taskito-python/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "taskito-python" -version = "0.16.4" +version = "0.17.0" edition = "2021" [features] diff --git a/crates/taskito-workflows/Cargo.toml b/crates/taskito-workflows/Cargo.toml index a2e4c181..3ab8041c 100644 --- a/crates/taskito-workflows/Cargo.toml +++ b/crates/taskito-workflows/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "taskito-workflows" -version = "0.16.4" +version = "0.17.0" edition = "2021" [features] diff --git a/sdks/java/build.gradle.kts b/sdks/java/build.gradle.kts index 58efdc63..7b9d79ee 100644 --- a/sdks/java/build.gradle.kts +++ b/sdks/java/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "org.byteveda" -version = "0.16.4" +version = "0.17.0" java { // Sources + javadoc jars are added by the maven-publish plugin below. diff --git a/sdks/java/graalvm-smoke/build.gradle.kts b/sdks/java/graalvm-smoke/build.gradle.kts index c72a096f..d4919009 100644 --- a/sdks/java/graalvm-smoke/build.gradle.kts +++ b/sdks/java/graalvm-smoke/build.gradle.kts @@ -9,7 +9,7 @@ plugins { } group = "org.byteveda" -version = "0.16.4" +version = "0.17.0" repositories { mavenCentral() diff --git a/sdks/java/processor/build.gradle.kts b/sdks/java/processor/build.gradle.kts index e1ebf5ca..d8b8806f 100644 --- a/sdks/java/processor/build.gradle.kts +++ b/sdks/java/processor/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "org.byteveda" -version = "0.16.4" +version = "0.17.0" java { sourceCompatibility = JavaVersion.VERSION_11 diff --git a/sdks/java/test-support/build.gradle.kts b/sdks/java/test-support/build.gradle.kts index 63f38e07..87977d0e 100644 --- a/sdks/java/test-support/build.gradle.kts +++ b/sdks/java/test-support/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "org.byteveda" -version = "0.16.4" +version = "0.17.0" java { sourceCompatibility = JavaVersion.VERSION_11 diff --git a/sdks/node/package.json b/sdks/node/package.json index 4d201365..adf66b52 100644 --- a/sdks/node/package.json +++ b/sdks/node/package.json @@ -1,6 +1,6 @@ { "name": "@byteveda/taskito", - "version": "0.16.4", + "version": "0.17.0", "description": "Rust-powered task queue for Node.js — no broker required.", "license": "MIT", "type": "module", diff --git a/sdks/python/pyproject.toml b/sdks/python/pyproject.toml index 6cd3cecc..6350ccfa 100644 --- a/sdks/python/pyproject.toml +++ b/sdks/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "taskito" -version = "0.16.4" +version = "0.17.0" description = "Rust-powered task queue for Python. No broker required." requires-python = ">=3.10" license = { file = "LICENSE" } diff --git a/sdks/python/taskito/__init__.py b/sdks/python/taskito/__init__.py index 8151db3b..7d5c2c83 100644 --- a/sdks/python/taskito/__init__.py +++ b/sdks/python/taskito/__init__.py @@ -122,4 +122,4 @@ __version__ = _get_version("taskito") except PackageNotFoundError: - __version__ = "0.16.4" + __version__ = "0.17.0" From eae9fb99ab4496278cb31fb60108ab4f2733641a Mon Sep 17 00:00:00 2001 From: Pratyush Sharma <56130065+pratyush618@users.noreply.github.com> Date: Sat, 27 Jun 2026 17:03:05 +0530 Subject: [PATCH 2/4] docs: add 0.17.0 changelog --- CHANGELOG.md | 29 ++++++++++++++++++- docs/content/docs/resources/changelog.mdx | 34 +++++++++++++++++++++-- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b305c568..b105af9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,36 @@ All notable changes to taskito are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); the project follows -[Semantic Versioning](https://semver.org/spec/v2.0.0.html). All SDKs (Python, Node) and the +[Semantic Versioning](https://semver.org/spec/v2.0.0.html). All SDKs (Python, Node, Java) and the underlying Rust crates are released together, in lock-step. +## 0.17.0 + +Feature release across the SDKs: periodic-task management, task-scoped dead-letter queries, and +the first **Java SDK** release. + +### Added + +- **Java SDK.** First release, published to Maven Central as `org.byteveda:taskito`. A JNI binding + over the Taskito core with the full producer / worker / inspection / admin surface, workflows, + distributed locks, periodic tasks, an in-memory `taskito-test` backend, and a `@TaskHandler` + annotation processor. Verified under GraalVM `native-image`. +- **Periodic task management.** List, unschedule, pause, and resume registered cron tasks — + `listPeriodic` / `deletePeriodic` / `pausePeriodic` / `resumePeriodic` (Java, Node) and the + equivalent native bindings (Python). Pause toggles the task's `enabled` flag without removing it + (#313). +- **Per-task dead-letter queries.** List and purge dead-letter entries scoped to a single task — + `listDeadByTask` / `purgeDeadByTask` (Java), `deadLettersByTask` / `purgeDeadByTask` (Node), and + native bindings (Python). Filtering happens server-side so pagination stays correct (#314). +- **Per-task retry backoff (Java).** `Task.retryPolicy(...)` surfaces the core retry engine's + backoff curve — exponential with jitter, or exact explicit delays — with the retry budget still + set per enqueue (#311). + +### Changed + +- **Node now requires Node.js 20+.** Node 18 reached end-of-life; the test toolchain (vitest 4) + requires Node 20.12+. The `engines` floor and tsup target were raised accordingly (#312). + ## 0.16.4 Maintenance release. Upgrades the Rust↔Python binding layer and refreshes project docs; no diff --git a/docs/content/docs/resources/changelog.mdx b/docs/content/docs/resources/changelog.mdx index 0fa8140d..84a8743d 100644 --- a/docs/content/docs/resources/changelog.mdx +++ b/docs/content/docs/resources/changelog.mdx @@ -7,9 +7,36 @@ description: "Release history for taskito — every notable change, fix, and fea All notable changes to taskito are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); the project follows -[Semantic Versioning](https://semver.org/spec/v2.0.0.html). All SDKs (Python, Node) and the +[Semantic Versioning](https://semver.org/spec/v2.0.0.html). All SDKs (Python, Node, Java) and the underlying Rust crates are released together, in lock-step. +## 0.17.0 + +Feature release across the SDKs: periodic-task management, task-scoped dead-letter queries, and +the first **Java SDK** release. + +### Added + +- **Java SDK.** First release, published to Maven Central as `org.byteveda:taskito`. A JNI binding + over the Taskito core with the full producer / worker / inspection / admin surface, workflows, + distributed locks, periodic tasks, an in-memory `taskito-test` backend, and a `@TaskHandler` + annotation processor. Verified under GraalVM `native-image`. +- **Periodic task management.** List, unschedule, pause, and resume registered cron tasks — + `listPeriodic` / `deletePeriodic` / `pausePeriodic` / `resumePeriodic` (Java, Node) and the + equivalent native bindings (Python). Pause toggles the task's `enabled` flag without removing it + (#313). +- **Per-task dead-letter queries.** List and purge dead-letter entries scoped to a single task — + `listDeadByTask` / `purgeDeadByTask` (Java), `deadLettersByTask` / `purgeDeadByTask` (Node), and + native bindings (Python). Filtering happens server-side so pagination stays correct (#314). +- **Per-task retry backoff (Java).** `Task.retryPolicy(...)` surfaces the core retry engine's + backoff curve — exponential with jitter, or exact explicit delays — with the retry budget still + set per enqueue (#311). + +### Changed + +- **Node now requires Node.js 20+.** Node 18 reached end-of-life; the test toolchain (vitest 4) + requires Node 20.12+. The `engines` floor and tsup target were raised accordingly (#312). + ## 0.16.4 Maintenance release. Upgrades the Rust↔Python binding layer and refreshes project docs; no @@ -478,6 +505,9 @@ migration steps, rolling-upgrade notes, and the downgrade floor. --- +
+Older releases (0.1.0 – 0.10.0) + ## 0.10.0 ### Features @@ -590,8 +620,6 @@ migration steps, rolling-upgrade notes, and the downgrade floor. --- -
-Older releases (0.1.0 – 0.5.0) ## 0.5.0 From 95c4b7f1f4a30a6cf05595903be50ad38a2c280a Mon Sep 17 00:00:00 2001 From: Pratyush Sharma <56130065+pratyush618@users.noreply.github.com> Date: Sat, 27 Jun 2026 17:05:34 +0530 Subject: [PATCH 3/4] docs: drop Node Beta badge, add Java (soon) on homepage --- docs/app/components/landing/hero.tsx | 5 ++++- docs/app/styles/landing.css | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/app/components/landing/hero.tsx b/docs/app/components/landing/hero.tsx index 2ee9026f..216e559f 100644 --- a/docs/app/components/landing/hero.tsx +++ b/docs/app/components/landing/hero.tsx @@ -92,9 +92,12 @@ export function Hero() { onClick={() => setSdk(p.id === "ts" ? "node" : "python")} > {p.label} - {p.id === "ts" ? Beta : null} ))} +
diff --git a/docs/app/styles/landing.css b/docs/app/styles/landing.css index d174908f..6cdb8cb7 100644 --- a/docs/app/styles/landing.css +++ b/docs/app/styles/landing.css @@ -375,6 +375,13 @@ main { .langtab:hover { color: var(--txt2); } +.langtab:disabled { + cursor: default; + opacity: 0.65; +} +.langtab:disabled:hover { + color: var(--dim); +} .langtab.active { color: var(--txt); background: var(--panel3); From 5070d090ac7f858c1fb57dd102c969e4dd56e772 Mon Sep 17 00:00:00 2001 From: Pratyush Sharma <56130065+pratyush618@users.noreply.github.com> Date: Sat, 27 Jun 2026 17:35:33 +0530 Subject: [PATCH 4/4] docs: keep disabled lang tab inert on hover --- docs/app/styles/landing.css | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/app/styles/landing.css b/docs/app/styles/landing.css index 6cdb8cb7..f205af0e 100644 --- a/docs/app/styles/landing.css +++ b/docs/app/styles/landing.css @@ -372,16 +372,13 @@ main { background 0.15s, border-color 0.15s; } -.langtab:hover { +.langtab:not(:disabled):hover { color: var(--txt2); } .langtab:disabled { cursor: default; opacity: 0.65; } -.langtab:disabled:hover { - color: var(--dim); -} .langtab.active { color: var(--txt); background: var(--panel3);