github jamcalli/Pulsarr v0.8.4

8 hours ago

Changes

🚀 Feature Release - React Query & Apprise Improvements

Overview

Migrates Dashboard and Approvals UI to React Query for improved performance and loading states. Adds format-aware Apprise notification batching and TMDB deep links across all content notifications.

Key Updates

React Query Migration

  • Dashboard overhaul: Date/limit filters, user popovers with stale-while-revalidate loading patterns
  • Approvals feature: Server-side pagination, sorting, and multi-select filtering
  • Shared user options: New useUserOptions hook provides consistent user selection across features
  • Better loading states: Skeleton loaders and optimistic updates replace manual loading spinners

Apprise Notification Improvements

  • Email Sender: Admins configure SMTP once, users enter just their email address instead of full Apprise URLs - works in Discord bot, user edit, and System Apprise URL fields
  • Format-aware batching: HTML notifications sent separately from text-native services (Discord, Telegram, Slack) - prevents raw HTML appearing in text channels
  • Format detection cache: Reduces redundant Apprise API calls with 24-hour TTL
  • Standardized text formatting: Clean, consistent plain text output for services that don't support HTML
  • TMDB deep links: All content notifications now include direct links to TMDB (movies, shows with season/episode support)

First-Start Experience

  • Checklist dialog: New users see a guided checklist before initial sync to ensure proper configuration
  • Version display: App version now shown in header bar for easier troubleshooting

Bug Fixes

  • Plex label sync: Case-insensitive label comparisons prevent duplicate labels (e.g., "pulsarr-user-john" vs "Pulsarr-User-John")
  • Webhook modal: Auth header fields now visible when editing endpoints with existing headers
  • Approval filters: Multi-select enabled for content type and triggered-by filters
  • SQL injection prevention: LIKE wildcards properly escaped in approval search queries
  • Modal confirmations: Async handlers awaited before closing modals to prevent race conditions

Technical Changes

New Hooks & Utilities

  • useApprovalModalActions - Extracted approval action logic from components
  • useWorkflowMutations - Centralized workflow start/stop mutations
  • getTmdbUrl - Utility for generating TMDB deep links with full test coverage

Refactoring

  • Removed withMinLoadingDuration wrapper in favor of React Query mutation states
  • Consolidated duplicated code across approvals feature
  • Renamed utilities/stores/ to utilities/store/ for consistency

Migration & Compatibility

Docker users

docker pull lakker/pulsarr:latest

Manual installation

git pull origin master
npm install
npm run migrate
npm run build
npm run start:prod

Database migrations (automatic on startup):

  • 075: Adds appriseEmailSender config field for simplified email notifications

Full Changelog: v0.8.3...v0.8.4
Docker Image: lakker/pulsarr:0.8.4

🔄 Dependencies

Docker

docker pull lakker/pulsarr:0.8.4

Contributors

@actions-user, @jamcalli, @renovate[bot] and renovate[bot]

Don't miss a new Pulsarr release

NewReleases is sending notifications on new releases.