Skip to content

Releases: helliott20/prunerr

v1.4.9

12 May 22:28
ab9ec3a

Choose a tag to compare

Plex library sync now runs on a schedule (#24)

Prunerr no longer waits for you to click "Sync Library" — a new scheduled task pulls fresh data from Plex automatically, so newly-added movies and shows appear without manual intervention.

What's new

  • Scheduled Plex sync — new syncPlexLibrary task runs at 02:00 daily by default (configurable in Settings → Plex Library Sync, with the same interval / time / day-of-week controls as the Scan Schedule card).
  • Activity log — scheduled syncs now appear in the activity log as "Scheduled Plex Sync" with started / completed / failed / skipped entries and metadata (items added/updated, duration).
  • Health endpointGET /api/health/status now also returns lastSync, lastSyncAt, lastSyncSuccess, nextSync, and syncSchedule so UIs can show "last synced X minutes ago".

Under the hood

  • Manual and scheduled syncs share a single in-progress lock (new syncCoordinator), so they can never run scanner.scanAll() against Plex at the same time.
  • Schedule persists across restarts (init-time hydration from saved plexSync_* settings).

What's Changed

New Contributors

Full Changelog: v1.4.8...v1.4.9

What's Changed

New Contributors

Full Changelog: v1.4.8...v1.4.9

v1.4.8

04 May 14:04

Choose a tag to compare

Full Changelog: v1.4.7...v1.4.8

v1.4.7

02 May 20:30

Choose a tag to compare

Bug fix

Activity Log and Deletion History no longer dropped when a downstream step fails. executeDelete ran all post-deletion bookkeeping (history write, rule lookup, activity log, status update) inside a single outer try-catch. If any step threw — most commonly the history write under transient SQLite contention — the outer catch fired before the activity log was written, the call returned success: false, and processDeletionQueue then skipped the Discord notification too. The Sonarr/Radarr deletion had already succeeded, so the file was gone with no record anywhere in Prunerr.

Each step now has its own try-catch and warns on failure without poisoning the rest. Activity Log entries now get a Rule #N fallback name when the rule lookup itself fails, so the Activity Log "Rule" filter still catches them. Tests cover all three failure modes.

Full Changelog: v1.4.6...v1.4.7

v1.4.6

02 May 20:24

Choose a tag to compare

Bug fix

Deletion notifications no longer silently skipped. The scheduled processDeletionQueue and sendDeletionReminders tasks could fail to fire their Discord notifications if dependency injection hadn't been wired by the time the cron ran — items got deleted via Sonarr/Radarr but the user heard nothing.

Both tasks now fall through to the global notification service when DI is unwired, matching the pattern used by notifyItemsQueued since v1.4.3. Added unit tests covering both paths so this regression can't recur.

Full Changelog: v1.4.5...v1.4.6

v1.4.5

24 Apr 22:01

Choose a tag to compare

Bug fix

Plex sync no longer resets the deletion queue — syncing your library was overwriting the queue status on existing items back to monitored, clearing them from the Queue page. The next rule scan would then re-queue the same items, producing duplicate Activity Log entries.

Sync now refreshes Plex metadata (titles, file sizes, watch counts, posters, etc.) without touching user- or rule-managed state (queue status, grace period, matched rule, protection flags).

Full Changelog: v1.4.4...v1.4.5

v1.4.4

23 Apr 20:57

Choose a tag to compare

What's new

Richer activity events — the Activity Log and Dashboard Recent Activity widget now show readable event descriptions with rule context, instead of raw slugs like item_queued.

Activity Log page

  • Each row shows a friendly title (e.g. "Queued for deletion", "Library scan completed") with a secondary "Matched rule: {name}" line where applicable.
  • Inline chips surface the metadata that was already being stored but never shown: grace period, deletion action (Unmonitor Only / Delete Files / etc.), Overseerr reset flag, file size, scan duration, items scanned/flagged.
  • Mobile cards now also show the actor name next to the actor badge.

Dashboard Recent Activity widget

  • Event text matches the Activity Log formatter, so scans, deletions, protections, rule matches, and manual actions all read clearly.
  • Target titles are now linked inline, and all six event types have distinct icons (was four).

Under the hood

  • /api/activity, /api/activity/recent, and /api/activity/item/:id now return parsed metadata on the wire instead of a JSON string.
  • New shared formatActivity() helper in the client keeps the Activity Log and Dashboard rendering consistent.

Full Changelog: v1.4.3...v1.4.4

v1.4.3

23 Apr 19:33

Choose a tag to compare

Full Changelog: v1.4.2...v1.4.3

v1.4.2

21 Apr 09:28

Choose a tag to compare

Full Changelog: v1.4.1...v1.4.2

v1.4.1

07 Apr 12:17

Choose a tag to compare

Full Changelog: v1.4.0...v1.4.1

v1.4.0

07 Apr 10:51
1a029bc

Choose a tag to compare

What's Changed

  • feat: light/dark mode toggle and mobile responsiveness by @helliott20 in #19

Full Changelog: v1.3.2...v1.4.0