Changes
🛠️ Bug Fix Release - Approval Rollback & Tag Cleanup
Overview
Fixes approval workflow reliability where failed routing left requests marked as "approved" with no content added. Adds a maintenance endpoint to clean up orphaned tag references. Fixes Telegram notification formatting.
Key Updates
Approval Workflow Fixes
- Rollback on routing failure: When routing to Sonarr/Radarr fails, approval status now rolls back to
pendinginstead of stayingapproved - Atomic approve+route: New
approveAndRoute()method ensures SSE events and webhooks only fire after routing succeeds - Pre-flight health check: Batch approvals verify instance connectivity before processing
- Discord bot updated: Review flow uses the new atomic approval pattern
Orphaned Tag Reference Cleanup
- New endpoint:
POST /api/v1/tags/user/cleanup-orphaned-refsscans all movies/series for tag IDs referencing non-existent tags and removes them - Use case: Fixes references orphaned by *arr upgrades, external tag deletions, or partial migrations
- Per-instance reporting: Returns itemsScanned, orphanedTagsFound, and itemsUpdated per Radarr/Sonarr instance
Telegram Notification Fix
- Issue: Telegram notifications failed because Apprise reports Telegram as HTML-native, but Telegram only supports a tiny subset of HTML tags
- Fix: Override
tgramschema format totextinstead of HTML
Migration & Compatibility
Docker users
docker pull lakker/pulsarr:latestManual installation
git pull origin master
npm install
npm run build
npm run start:prodNo database migrations in this release.
Full Changelog: v0.8.7...v0.8.8
Docker Image: lakker/pulsarr:0.8.8
- Fix: Approval Rollback and Tag Cleanup (#860) @jamcalli
- feat(tags): add endpoint to cleanup orphaned tag references (#859) @jamcalli
- fix(approval): rollback status to pending when routing fails (#845) @jamcalli
- fix(apprise): override Telegram schema format to text for compatibility (#851) @jamcalli
🔄 Dependencies
- chore(deps): update react (#857) @renovate[bot]
- chore(deps): lock file maintenance (#858) @renovate[bot]
- chore(deps): update dev dependencies (non-critical) (#856) @renovate[bot]
- chore(deps): update dependency @tanstack/react-query to v5.90.16 (#854) @renovate[bot]
- chore(deps): update dependency close-with-grace to v2.4.0 (#855) @renovate[bot]
- chore(deps): update build tools (#853) @renovate[bot]
Docker
docker pull lakker/pulsarr:0.8.8
Contributors
@actions-user, @jamcalli, @renovate[bot] and renovate[bot]