Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion crates/taskito-core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "taskito-core"
version = "0.16.4"
version = "0.17.0"
edition = "2021"

[features]
Expand Down
2 changes: 1 addition & 1 deletion crates/taskito-java/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
2 changes: 1 addition & 1 deletion crates/taskito-mesh/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "taskito-mesh"
version = "0.16.4"
version = "0.17.0"
edition = "2021"

[dependencies]
Expand Down
2 changes: 1 addition & 1 deletion crates/taskito-node/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
2 changes: 1 addition & 1 deletion crates/taskito-python/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "taskito-python"
version = "0.16.4"
version = "0.17.0"
edition = "2021"

[features]
Expand Down
2 changes: 1 addition & 1 deletion crates/taskito-workflows/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "taskito-workflows"
version = "0.16.4"
version = "0.17.0"
edition = "2021"

[features]
Expand Down
5 changes: 4 additions & 1 deletion docs/app/components/landing/hero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,12 @@ export function Hero() {
onClick={() => setSdk(p.id === "ts" ? "node" : "python")}
>
{p.label}
{p.id === "ts" ? <span className="tag beta">Beta</span> : null}
</button>
))}
<button type="button" className="langtab" disabled>
Java
<span className="tag soon">Soon</span>
</button>
Comment thread
coderabbitai[bot] marked this conversation as resolved.
<CopyButton text={active.code} />
</div>
<div id="hero-panes">
Expand Down
6 changes: 5 additions & 1 deletion docs/app/styles/landing.css
Original file line number Diff line number Diff line change
Expand Up @@ -372,9 +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.active {
color: var(--txt);
background: var(--panel3);
Expand Down
34 changes: 31 additions & 3 deletions docs/content/docs/resources/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -478,6 +505,9 @@ migration steps, rolling-upgrade notes, and the downgrade floor.

---

<details>
<summary>Older releases (0.1.0 – 0.10.0)</summary>

## 0.10.0

### Features
Expand Down Expand Up @@ -590,8 +620,6 @@ migration steps, rolling-upgrade notes, and the downgrade floor.

---

<details>
<summary>Older releases (0.1.0 – 0.5.0)</summary>

## 0.5.0

Expand Down
2 changes: 1 addition & 1 deletion sdks/java/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion sdks/java/graalvm-smoke/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ plugins {
}

group = "org.byteveda"
version = "0.16.4"
version = "0.17.0"

repositories {
mavenCentral()
Expand Down
2 changes: 1 addition & 1 deletion sdks/java/processor/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {
}

group = "org.byteveda"
version = "0.16.4"
version = "0.17.0"

java {
sourceCompatibility = JavaVersion.VERSION_11
Expand Down
2 changes: 1 addition & 1 deletion sdks/java/test-support/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {
}

group = "org.byteveda"
version = "0.16.4"
version = "0.17.0"

java {
sourceCompatibility = JavaVersion.VERSION_11
Expand Down
2 changes: 1 addition & 1 deletion sdks/node/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion sdks/python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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" }
Expand Down
2 changes: 1 addition & 1 deletion sdks/python/taskito/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,4 @@

__version__ = _get_version("taskito")
except PackageNotFoundError:
__version__ = "0.16.4"
__version__ = "0.17.0"