From a1f914efeb5ced85a1ca503be007fc9c5634b259 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 14 May 2026 19:08:20 +0000 Subject: [PATCH 1/3] Initial plan From d7a3c7bf045de3c9390df4413d8bdf6fafbd0611 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 14 May 2026 19:14:09 +0000 Subject: [PATCH 2/3] docs: clarify Sonarr season cleanup behavior Agent-Logs-Url: https://github.com/Maintainerr/Maintainerr_docs/sessions/f74faa06-3516-41fd-a82a-b82b804363a6 Co-authored-by: enoch85 <4511254+enoch85@users.noreply.github.com> --- docs/Rules.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Rules.mdx b/docs/Rules.mdx index 4d0708a..4f2d220 100644 --- a/docs/Rules.mdx +++ b/docs/Rules.mdx @@ -75,6 +75,8 @@ When you choose `Change quality profile and search` for Radarr or Sonarr, Mainta For Sonarr season rules, additional actions are available to also clean up the parent show when it becomes empty after season processing. +Never-downloaded later seasons do not block those parent-show cleanup actions. Maintainerr only treats a monitored season as still keeping the show active when Sonarr reports episode files for that season. + :::warning Disabling an active rule group does not empty its linked collection. Existing tracked items stay there until the rule group is re-enabled or deleted. From 8c7f3348790dbc67d44afe92f5d364a0e6ead1dd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 14 May 2026 19:22:03 +0000 Subject: [PATCH 3/3] docs(api): replace legacy plex endpoints in bundled spec Agent-Logs-Url: https://github.com/Maintainerr/Maintainerr_docs/sessions/466b5446-8f05-49dc-8f58-637dcb964a87 Co-authored-by: enoch85 <4511254+enoch85@users.noreply.github.com> --- .../openapi-spec/maintainerr_api_specs.yaml | 157 +++++++++--------- 1 file changed, 83 insertions(+), 74 deletions(-) diff --git a/static/openapi-spec/maintainerr_api_specs.yaml b/static/openapi-spec/maintainerr_api_specs.yaml index 198c8a7..d0ae611 100644 --- a/static/openapi-spec/maintainerr_api_specs.yaml +++ b/static/openapi-spec/maintainerr_api_specs.yaml @@ -279,27 +279,27 @@ paths: description: '' tags: - /settings - /api/plex: + /api/media-server: get: - operationId: PlexApiController_getStatus + operationId: MediaServerController_getStatus parameters: [] responses: '200': description: '' tags: - - /plex - /api/plex/libraries: + - /media-server + /api/media-server/libraries: get: - operationId: PlexApiController_getLibraries + operationId: MediaServerController_getLibraries parameters: [] responses: '200': description: '' tags: - - /plex - /api/plex/library/{id}/content/{page}: + - /media-server + /api/media-server/library/{id}/content: get: - operationId: PlexApiController_getLibraryContent + operationId: MediaServerController_getLibraryContent parameters: - name: id required: true @@ -307,12 +307,12 @@ paths: schema: type: string - name: page - required: true - in: path + required: false + in: query schema: type: number - - name: amount - required: true + - name: limit + required: false in: query schema: type: number @@ -320,10 +320,10 @@ paths: '200': description: '' tags: - - /plex - /api/plex/meta/{id}: + - /media-server + /api/media-server/meta/{id}: get: - operationId: PlexApiController_getMetadata + operationId: MediaServerController_getMetadata parameters: - name: id required: true @@ -334,10 +334,10 @@ paths: '200': description: '' tags: - - /plex - /api/plex/meta/{id}/seen: + - /media-server + /api/media-server/meta/{id}/seen: get: - operationId: PlexApiController_getSeenBy + operationId: MediaServerController_getWatchHistory parameters: - name: id required: true @@ -348,19 +348,19 @@ paths: '200': description: '' tags: - - /plex - /api/plex/users: + - /media-server + /api/media-server/users: get: - operationId: PlexApiController_getUser + operationId: MediaServerController_getUsers parameters: [] responses: '200': description: '' tags: - - /plex - /api/plex/meta/{id}/children: + - /media-server + /api/media-server/meta/{id}/children: get: - operationId: PlexApiController_getChildrenMetadata + operationId: MediaServerController_getChildrenMetadata parameters: - name: id required: true @@ -371,81 +371,81 @@ paths: '200': description: '' tags: - - /plex - /api/plex/library/{id}/recent: + - /media-server + /api/media-server/library/{id}/recent: get: - operationId: PlexApiController_getRecentlyAdded + operationId: MediaServerController_getRecentlyAdded parameters: - name: id required: true in: path schema: - type: number + type: string responses: '200': description: '' tags: - - /plex - /api/plex/library/{id}/collections: + - /media-server + /api/media-server/library/{id}/collections: get: - operationId: PlexApiController_getCollections + operationId: MediaServerController_getCollections parameters: - name: id required: true in: path schema: - type: number + type: string responses: '200': description: '' tags: - - /plex - /api/plex/library/collection/{collectionId}: + - /media-server + /api/media-server/collection/{id}: get: - operationId: PlexApiController_getCollection + operationId: MediaServerController_getCollection parameters: - - name: collectionId + - name: id required: true in: path schema: - type: number + type: string responses: '200': description: '' tags: - - /plex + - /media-server delete: - operationId: PlexApiController_deleteCollection + operationId: MediaServerController_deleteCollection parameters: - - name: collectionId + - name: id required: true in: path schema: - type: number + type: string responses: '200': description: '' tags: - - /plex - /api/plex/library/collection/{collectionId}/children: + - /media-server + /api/media-server/collection/{id}/children: get: - operationId: PlexApiController_getCollectionChildren + operationId: MediaServerController_getCollectionChildren parameters: - - name: collectionId + - name: id required: true in: path schema: - type: number + type: string responses: '200': description: '' tags: - - /plex - /api/plex/search/{input}: + - /media-server + /api/media-server/search/{query}: get: - operationId: PlexApiController_searchLibrary + operationId: MediaServerController_searchContent parameters: - - name: input + - name: query required: true in: path schema: @@ -454,77 +454,76 @@ paths: '200': description: '' tags: - - /plex - /api/plex/library/collection/{collectionId}/child/{childId}: + - /media-server + /api/media-server/collection/{collectionId}/item/{itemId}: put: - operationId: PlexApiController_addChildToCollection + operationId: MediaServerController_addToCollection parameters: - name: collectionId required: true in: path schema: - type: number - - name: childId + type: string + - name: itemId required: true in: path schema: - type: number + type: string responses: '200': description: '' tags: - - /plex + - /media-server delete: - operationId: PlexApiController_deleteChildFromCollection + operationId: MediaServerController_removeFromCollection parameters: - name: collectionId required: true in: path schema: - type: number - - name: childId + type: string + - name: itemId required: true in: path schema: - type: number + type: string responses: '200': description: '' tags: - - /plex - /api/plex/library/collection/update: + - /media-server + /api/media-server/collection: put: - operationId: PlexApiController_updateCollection + operationId: MediaServerController_updateCollection parameters: [] responses: '200': description: '' tags: - - /plex - /api/plex/library/collection/create: + - /media-server post: - operationId: PlexApiController_createCollection + operationId: MediaServerController_createCollection parameters: [] responses: '201': description: '' tags: - - /plex - /api/plex/library/collection/settings: + - /media-server + /api/media-server/collection/visibility: put: - operationId: PlexApiController_UpdateCollectionSettings + operationId: MediaServerController_updateCollectionVisibility parameters: [] requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/CollectionHubSettingsDto' + $ref: '#/components/schemas/CollectionVisibilitySettings' responses: '200': description: '' tags: - - /plex + - /media-server /api/overseerr/movie/{id}: get: operationId: OverseerrApiController_getMovie @@ -1617,9 +1616,19 @@ components: CronScheduleDto: type: object properties: {} - CollectionHubSettingsDto: + CollectionVisibilitySettings: type: object - properties: {} + properties: + libraryId: + type: string + collectionId: + type: string + ownHome: + type: boolean + sharedHome: + type: boolean + recommended: + type: boolean RulesDto: type: object properties: {}