Changelog
Unreleased
-
Every install now reports its exact build (
--version,doctorversion, feed status, andfeed receive). A stale environment exits 3 with the repair command instead of a traceback,doctorgainsinstallandfeed:host-buildchecks that fail on renderer/host drift, and remote publishes warn when the host build differs. -
publishkeeps one feed item per title: publishing an episode supersedes other feed episodes with the same title (feed copies only; the library is kept) and reportssuperseded/replaced, with a notice telling AntennaPod users to delete the old download and download it again. -
Gemini TTS now classifies interactions-API compat errors (duck-typed
status_code) with the same table aserrors.APIError, including 400API_KEY_INVALIDas credentials, 429/5xx as transient with retry, and connection errors as transient. Credential failures exit 3 with a secret-free hint naming the key source, anddoctorreports the winning source.resolve_api_key_with_sourceadded;resolve_api_keyunchanged.
Releases are cut by release-please from Conventional Commit titles; each release publishes to PyPI through trusted publishing. The full history lives at https://github.com/sase-org/sase-listen/releases and the installable versions at https://pypi.org/project/sase-listen/.
To propose the next release, merge the open release-please PR (see the
release phase of the epic). To check what you have installed:
sase-listen --version