Use when updating CHANGELOG.md for a release or user-facing change
CHANGELOG format and conventions for documenting Recyclarr releases.
Recyclarr uses keepachangelog.com format. The audience is non-technical end users who run Recyclarr but do not read source code. They care about what changed in their experience, not why or how.
File: CHANGELOG.md
Section order: Added, Changed, Deprecated, Removed, Fixed, Security
Entry format: - Scope: Description (#NNN)
### Fixed
- Sync: Crash while processing quality profiles (#720)
[Unreleased] section near the top of the file(#NNN) at the end of the entry when an issue exists. Omit when
there is no associated issue.CRITICAL: Changelog entries must contain ZERO implementation details. Every entry must pass this filter before being written.
Never mention any of the following:
Litmus test: If a reader would need to look at source code to understand a term, that term does not belong in the changelog.
Transformation process: When writing an entry, draft it, then strip every technical term. Restate the user-visible symptom or behavior in plain language.
# BAD: Leaks library name and internal concept
- CLI: Automatically switch to log output mode when stdout is redirected (non-TTY),
preventing garbled output from Spectre.Console animations in cron jobs and piped
commands
# GOOD: Describes the user-visible behavior only
- CLI: Automatically switch to log output mode when stdout is redirected, preventing
garbled output in cron jobs and piped commands
# BAD: Exposes internal error type
- Config: NullReferenceException when quality_profiles section is empty
# GOOD: States the symptom
- Config: Crash when quality_profiles section is empty
# BAD: References internal architecture
- Sync: Pipeline transaction phase fails to persist custom format mappings to cache
# GOOD: States what the user observes
- Sync: Custom format changes not saved between syncs
# BAD: Mentions HTTP details
- Config: Trailing slash in base_url caused HTTP 401 Unauthorized from Sonarr API
# GOOD: States the user-facing result
- Config: Trailing slash in `base_url` caused authentication errors
Required for any release with breaking changes:
## [X.0.0] - YYYY-MM-DD
This release contains **BREAKING CHANGES**. See the [vX.0 Upgrade Guide][breakingX] for required
changes you may need to make.
[breakingX]: https://recyclarr.dev/guide/upgrade-guide/vX.0/
### Changed
- **BREAKING**: Description of breaking change
Check if deprecation was in a prior release:
git log --oneline --diff-filter=A -- "path/to/deprecation" | tail -1
git tag --contains <sha> | grep -E '^v[0-9]'
X has been removed."X option has been removed. Use Y instead."Use CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
BluOS CLI (blu) for discovery, playback, grouping, and volume.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Search and analyze your own session logs (older/parent conversations) using jq.
Start voice calls via the OpenClaw voice-call plugin.
Category:developer