Skip to content

Commit 8dbcd4b

Browse files
committed
vb, changelog
1 parent 0550e36 commit 8dbcd4b

6 files changed

Lines changed: 32 additions & 12 deletions

File tree

CHANGELOG.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,33 @@
11
# Changelog
22
## [Unreleased]
33

4+
## [0.52.0] - 2026-06-01
5+
46
### Added
57

68
- `haiku-ingester run-batch`: one discover sweep across every configured source, drains the queue, then exits. Orphan deletion requires a persisted `ingester.db`.
9+
- `max_file_size` (bytes) on every source type rejects oversized files before they are read into memory; they dead-letter as a permanent `FileTooLargeError`. FS and S3 check the size from metadata before fetching; HTTP and WebDAV rely on a `Content-Length` response header, so a server that omits it is not enforced.
10+
11+
### Changed
12+
13+
- Idle workers wake on enqueue via an `asyncio.Condition` instead of polling on `poll_idle_interval_s`.
14+
- `sync_state` writes are batched into one transaction per sweep (`SyncStateRepo.batch_upsert`) instead of one commit per file.
15+
- HTTP and WebDAV sources reuse a single `httpx.AsyncClient` across `head`/`fetch`/`discover` instead of opening one per request.
16+
- Periodic poll sweeps start after a random jitter of 0–25% of `poll_interval_s`.
17+
- New partial index `idx_jobs_succeeded_completed` backs the dashboard rolling-throughput query.
718

819
### Removed
920

1021
- `haiku-ingester run-once`. Use `run-batch` to ingest configured sources, or `serve` for continuous operation.
1122

23+
### Fixed
24+
25+
- Revision-less HTTP/S3/WebDAV resources (no ETag or Last-Modified) emit `UNCHANGED` once known instead of re-ingesting on every sweep.
26+
- Deleted, unreadable, and directory paths (`FileNotFoundError`, `PermissionError`, `IsADirectoryError`, `NotADirectoryError`) classify as permanent failures instead of exhausting retries first.
27+
- FS `discover()` and the watch loop no longer crash when a file is removed between listing and `stat()`.
28+
- HTTP `discover()` catches only `httpx.TransportError`; other exceptions propagate instead of being emitted as UPSERT.
29+
- A `sync_state` write that fails after a job is marked succeeded is logged instead of crashing the worker.
30+
1231
## [0.51.0] - 2026-05-29
1332

1433
### Added
@@ -1637,7 +1656,8 @@ Existing documents without DoclingDocument data will work but won't have provena
16371656

16381657
- Initial version tracking
16391658

1640-
[Unreleased]: https://github.com/ggozad/haiku.rag/compare/0.51.0...HEAD
1659+
[Unreleased]: https://github.com/ggozad/haiku.rag/compare/0.52.0...HEAD
1660+
[0.52.0]: https://github.com/ggozad/haiku.rag/compare/0.51.0...0.52.0
16411661
[0.51.0]: https://github.com/ggozad/haiku.rag/compare/0.50.0...0.51.0
16421662
[0.50.0]: https://github.com/ggozad/haiku.rag/compare/0.48.1...0.50.0
16431663
[0.48.1]: https://github.com/ggozad/haiku.rag/compare/0.48.0...0.48.1

app/backend/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dependencies = [
88
"uvicorn[standard]>=0.40.0",
99
"pydantic-ai-slim[ag-ui,anthropic,openai]>=1.81.0",
1010
"python-dotenv>=1.2.1",
11-
"haiku.rag-slim>=0.51.0",
11+
"haiku.rag-slim>=0.52.0",
1212
"logfire[pydantic-ai]>=3.17.0",
1313
]
1414

evaluations/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
name = "haiku.rag-evals"
44
description = "Benchmarking and evaluation scripts for haiku.rag"
5-
version = "0.51.0"
5+
version = "0.52.0"
66
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
77
license = { text = "MIT" }
88
requires-python = ">=3.12"

haiku_rag_slim/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
name = "haiku.rag-slim"
44
description = "Opinionated agentic RAG powered by LanceDB, Pydantic AI, and Docling - Minimal dependencies"
5-
version = "0.51.0"
5+
version = "0.52.0"
66
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
77
license = { text = "MIT" }
88
readme = { file = "README.md", content-type = "text/markdown" }

pyproject.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
name = "haiku.rag"
44
description = "Opinionated agentic RAG powered by LanceDB, Pydantic AI, and Docling"
5-
version = "0.51.0"
5+
version = "0.52.0"
66
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
77
license = { text = "MIT" }
88
readme = { file = "README.md", content-type = "text/markdown" }
@@ -30,17 +30,17 @@ classifiers = [
3030
]
3131

3232
dependencies = [
33-
"haiku.rag-slim[docling,voyageai,mxbai,cohere,zeroentropy,tui,cross-encoder]==0.51.0",
33+
"haiku.rag-slim[docling,voyageai,mxbai,cohere,zeroentropy,tui,cross-encoder]==0.52.0",
3434
]
3535

3636
[project.scripts]
3737
haiku-rag = "haiku.rag.cli:cli"
3838

3939
[project.optional-dependencies]
4040
tui = ["textual>=8.2.4"]
41-
s3 = ["haiku.rag-slim[s3]==0.51.0"]
42-
cross-encoder = ["haiku.rag-slim[cross-encoder]==0.51.0"]
43-
ingester = ["haiku.rag-slim[ingester]==0.51.0"]
41+
s3 = ["haiku.rag-slim[s3]==0.52.0"]
42+
cross-encoder = ["haiku.rag-slim[cross-encoder]==0.52.0"]
43+
ingester = ["haiku.rag-slim[ingester]==0.52.0"]
4444

4545
[build-system]
4646
requires = ["hatchling"]

uv.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)