0.20.0 - 2026-11-06
Highlights: Capture change-aware archive history and preserve literal SQLite paths.
-
Update CrawlKit to v0.17.4 to preserve literal SQLite paths when opening archives, taking snapshots, and checking freshness; reject ambiguous Windows paths.
-
Keep snapshot CI build caches separate from faster checks and refresh them when the release configuration or workflow changes.
-
Refresh Kong, SQLite, analyzer dependencies, Node and GoReleaser; retain the Go 1.27.0 minimum and Go 1.27.3 toolchain.
-
Share Linux CI setup and Go caches across Japanese, Chinese, and Korean helper tests while retaining native macOS Kiwi validation.
-
Give the race-and-coverage CI job its own Go cache so faster dependency and lint jobs cannot reserve its immutable cache entry before race builds finish.
-
Run CodeQL daily on main instead of on every main push, preserving pull-request and manual analysis and preventing their cancellation by scheduled runs.
-
Add an operator helper for cloning only the current committed snapshot, keeping local publication stages from accumulating archive history.
-
Add
update --no-fetchfor externally refreshed snapshot caches and refuse Git mutations on owner-marked checkouts, preventing ordinary or automatic updates from rebuilding their Git history. -
Add a read-only hosted history diagnostic for an exact published private checkpoint, with authenticated restore, bounded anonymous channel and failure-ledger evidence, and no collection or publication changes.
-
Keep scheduled report-history acquisition independent of unrelated guild-wide message failures, while retaining daily guild discovery and required member refresh with visible failure and unchanged checkpoint verification.
-
Skip unchanged guild, channel, member, message and attachment content writes. Preserve every check in append-only history and use a latest-check overlay for freshness guards.
-
Compare canonical Gateway/REST content while retaining exact incoming records and legacy raw bytes in content-addressed evidence. Preserve unknown fields, original array shapes, timestamp precision, signed URLs and whitespace.
-
Record numeric guild/channel counters, including zero, in value-change histories. Keep relationship identifiers as content.
-
Keep mention IDs stable and attachment rows in place, retaining removed legacy mention IDs in immutable history.
-
Serve change feed contract 2 beside unchanged contract 1, adding content, metrics, checks and exact native-input evidence; snapshot replacement suspends only replaced-table triggers.