Conversation
… notifications (#84, #68) Requests page redesign (#68): - Filter tabs replacing stat cards (admin-style pills with counts) - Cards redesigned: subtle backdrop, inline status/quality, bottom action bar - Glass-morphism action bar with approve/decline/settings - Sections: pending requests separated from processed - Infinite scroll replacing pagination button - Admin cleanup modal: bulk delete by status - Skeleton loading state Quality management (#84): - Quality badge displayed on request cards - Admin COG modal: change quality, service, root folder before approving - GET /requests/:id/resolve endpoint — previews path, rule match, service - PUT /requests/:id — update quality/rootFolder - Root folder selector with available paths from service + custom option - Folder rule "quality" condition type added Notification links (#84): - siteUrl field in AppSettings (configurable in admin General tab) - Direct media links in Discord embeds and Telegram messages - buildSiteLink helper with caching Backend: - POST /requests/cleanup — bulk delete by statuses (admin.danger RBAC) - Approve endpoint accepts qualityOptionId override - resolveServiceContext passes qualityOptionId to folder rules - RuleMatch now carries ruleName for display - sendToService accepts rootFolderOverride (priority over rules) - qualityOption included in GET /requests response i18n: EN + FR for all new strings
Backend: - BlacklistedMedia model (tmdbId, mediaType, title, posterPath, reason, createdBy) - CRUD admin endpoints: GET/POST/DELETE /admin/blacklist + check endpoint - Request creation blocked with 403 if media is blacklisted - isBlacklisted() helper in requestService Frontend — Admin > Media > Blacklist tab: - Search bar with debounced TMDB search + dropdown results - Confirm modal with poster preview + reason input - Grid of blocked media with poster cards (like homepage) - Hover: title/reason always visible, unblock button slides up smoothly - Shield ban badge on each card Frontend — Media detail page: - "Blocked" button (disabled, red shield icon) replaces "Request" for blacklisted media - Tooltip shows the reason i18n: EN + FR
Cleanup modal redesign: - Tri-state per status: Keep / Remove from Oscarr / Remove from Oscarr + Service - Segment control UI with colored active states - Backend deletes media from Radarr/Sonarr when "Oscarr + Service" selected - deleteMedia() added to ArrClient interface + Radarr/Sonarr implementations - All 5 statuses shown (pending, available, approved, declined, failed) with counts - Failed status gets purple color to distinguish from declined (red) Code review fixes: - Blacklist bypass via collection requests: isBlacklisted check added - PUT /:id 404 guard: findUnique before update - Resolve endpoint: try/catch around resolveServiceContext (502 on TMDB failure) - Race condition: await PUT before approve in settings modal - Save button: proper try/catch instead of swallowed .catch - admin.danger added to PERMISSION_DESCRIPTIONS - Blacklist check accessible to all authenticated users (not admin-only)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Major feature branch addressing community requests (#84) and requests page redesign (#68).
Requests page redesign (#68)
Quality management (#84)
GET /requests/:id/resolve— previews path, rule match, service, available root foldersPUT /requests/:id— update quality/rootFolder with 404 guardqualitycondition typeNotification links (#84)
siteUrlfield in AppSettings (admin General tab)Media blacklist
BlacklistedMediamodel (tmdbId, mediaType, title, posterPath, reason)Advanced cleanup
deleteMedia()on ArrClient interface (Radarr DELETE /movie, Sonarr DELETE /series)Code review fixes
admin.dangerpermission description addedCloses #84, closes #68
Test plan