|
1 | 1 | # Changelog |
2 | 2 | ## [Unreleased] |
3 | 3 |
|
| 4 | +## [0.52.0] - 2026-06-01 |
| 5 | + |
4 | 6 | ### Added |
5 | 7 |
|
6 | 8 | - `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. |
7 | 18 |
|
8 | 19 | ### Removed |
9 | 20 |
|
10 | 21 | - `haiku-ingester run-once`. Use `run-batch` to ingest configured sources, or `serve` for continuous operation. |
11 | 22 |
|
| 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 | + |
12 | 31 | ## [0.51.0] - 2026-05-29 |
13 | 32 |
|
14 | 33 | ### Added |
@@ -1637,7 +1656,8 @@ Existing documents without DoclingDocument data will work but won't have provena |
1637 | 1656 |
|
1638 | 1657 | - Initial version tracking |
1639 | 1658 |
|
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 |
1641 | 1661 | [0.51.0]: https://github.com/ggozad/haiku.rag/compare/0.50.0...0.51.0 |
1642 | 1662 | [0.50.0]: https://github.com/ggozad/haiku.rag/compare/0.48.1...0.50.0 |
1643 | 1663 | [0.48.1]: https://github.com/ggozad/haiku.rag/compare/0.48.0...0.48.1 |
|
0 commit comments