Skip to content

feat(requestmodal): warning for not yet released media#1739

Open
rienafairefr wants to merge 1 commit into
seerr-team:developfrom
rienafairefr:warn-request-releases
Open

feat(requestmodal): warning for not yet released media#1739
rienafairefr wants to merge 1 commit into
seerr-team:developfrom
rienafairefr:warn-request-releases

Conversation

@rienafairefr
Copy link
Copy Markdown

@rienafairefr rienafairefr commented Jun 24, 2025

Description

In order to help users decide if or when to request a movie that is not yet released outside of theaters

This shows a warning in the Movie Request Modal that is shown when a movie has no Digital or Physical release, or when the planned Digital or Physical release is in the future.

apologies js code is probably not great (not my main language)

  • copilot AI reviewed that code and made suggestions that I incorporated (in reviews below)

Screenshot (if UI-related)

id: 1136867
image
id: 1071585
image

How Has This Been Tested?

pnpm run dev targeting my seerr server instance
Using TV shows and movies that fit the warning (not yet released)

Checklist:

  • I have read and followed the contribution guidelines.
  • Disclosed any use of AI (see our policy)
  • Successful build pnpm build
  • Translation keys pnpm i18n:extract
  • Database migration (if required)

Issues Fixed or Closed

Summary by CodeRabbit

  • New Features

    • Added a "Warn about Non-released" setting (disabled by default) to notify when requesting movies or TV seasons that lack release dates or have future releases.
  • UI

    • Warning alerts shown in movie and TV request modals when the setting is enabled.
  • Localization

    • Added new user-facing messages and helper tip copy for the setting and request warnings.
  • Documentation

    • New doc section describing the setting and its behavior.

Review Change Stack

Comment thread package.json
Comment thread CHANGELOG.md Outdated
@rienafairefr rienafairefr force-pushed the warn-request-releases branch 3 times, most recently from 0ede7c8 to 883f8a2 Compare August 19, 2025 19:28
@rienafairefr rienafairefr force-pushed the warn-request-releases branch from 883f8a2 to 2823e78 Compare October 27, 2025 17:15
@rienafairefr rienafairefr requested a review from a team as a code owner October 27, 2025 17:15
Copy link
Copy Markdown
Member

@gauthier-th gauthier-th left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • I think this should be available under a setting, disabled by default. Not everyone wants to have this warning displayed.
  • The same behavior should be implemented for series as well.

Comment thread src/i18n/locale/fr.json
Comment thread src/components/RequestModal/MovieRequestModal.tsx Outdated
@rienafairefr rienafairefr force-pushed the warn-request-releases branch from 2f364c3 to 8323f75 Compare October 28, 2025 17:42
@github-actions github-actions Bot added the merge conflict Cannot merge due to merge conflicts label Oct 30, 2025
@github-actions
Copy link
Copy Markdown

This pull request has merge conflicts. Please resolve the conflicts so the PR can be successfully reviewed and merged.

@M0NsTeRRR
Copy link
Copy Markdown
Member

Hello @rienafairefr could you rebase and update your PR with the review given by gauthier ?

@rienafairefr rienafairefr force-pushed the warn-request-releases branch from 8323f75 to ec8d9fa Compare March 6, 2026 16:52
@github-actions github-actions Bot removed the merge conflict Cannot merge due to merge conflicts label Mar 6, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 6, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a new boolean setting warnNonReleased (default false) across config, OpenAPI schema, backend settings/types, frontend settings UI, request modals, context defaults, app initialization, and localization to surface warnings for unreleased media.

Changes

WarnNonReleased end-to-end

Layer / File(s) Summary
API schema & backend settings
seerr-api.yml, server/interfaces/api/settingsInterfaces.ts, server/lib/settings/index.ts
Add warnNonReleased: boolean to OpenAPI MainSettings; add property to server interfaces and settings storage; initialize default false and include in full public settings.
Frontend settings, context, docs, config
src/components/Settings/SettingsMain/index.tsx, src/context/SettingsContext.tsx, src/pages/_app.tsx, cypress/config/settings.cypress.json, docs/using-seerr/settings/general.md, src/i18n/locale/en.json
Expose warnNonReleased in SettingsMain (messages, initialValues, submit payload, checkbox); add default to SettingsContext and app initial props; add cypress config flag, update docs, and add i18n keys.
RequestModal (Movie) warnings
src/components/RequestModal/MovieRequestModal.tsx
Import settings, compute discoverRegion and regional non-theatrical release timing, introduce i18n key, and render conditional warning Alert when enabled.
RequestModal (TV) warnings
src/components/RequestModal/TvRequestModal.tsx
Add i18n strings; compute selected seasons' air dates (future/missing); render up to two conditional warning Alerts when enabled.

Sequence Diagram

sequenceDiagram
    actor User
    participant UI as Request Modal
    participant Settings as Settings Context
    participant API as Backend API

    User->>UI: Open request modal / select media
    UI->>Settings: Read currentSettings.warnNonReleased
    Settings-->>UI: Return warnNonReleased
    UI->>UI: Compute regional release or season air dates
    alt warnNonReleased enabled AND item not released
        UI->>User: Render non-released warning alert
    else
        UI->>User: No warning shown
    end
    User->>UI: Submit request
    UI->>API: POST request
    API-->>UI: Respond
    UI-->>User: Show result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • gauthier-th
  • fallenbagel
  • M0NsTeRRR

Poem

🐰 I hopped through settings, tiny and bright,
To flag releases not yet in sight,
A gentle nudge before you plea,
So patience hops in company,
🥕 A soft warn for what’s not yet free.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main feature: adding a warning system for non-released media in request modals, which is the core change across the entire changeset.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@rienafairefr rienafairefr force-pushed the warn-request-releases branch from ec8d9fa to 650ea7a Compare March 6, 2026 16:57
@rienafairefr rienafairefr marked this pull request as draft March 6, 2026 17:02
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (2)
src/components/RequestModal/MovieRequestModal.tsx (2)

72-76: Consider simplifying with nullish coalescing.

The nested ternaries work correctly but could be more concise.

♻️ Optional simplification
-  const discoverRegion = user?.settings?.discoverRegion
-    ? user.settings.discoverRegion
-    : settings.currentSettings.discoverRegion
-    ? settings.currentSettings.discoverRegion
-    : 'US';
+  const discoverRegion =
+    user?.settings?.discoverRegion ??
+    settings.currentSettings.discoverRegion ??
+    'US';
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/RequestModal/MovieRequestModal.tsx` around lines 72 - 76, The
nested ternary that computes discoverRegion is verbose; replace it with a
concise nullish coalescing expression using the existing symbols
(user?.settings?.discoverRegion, settings.currentSettings.discoverRegion) so
discoverRegion = user?.settings?.discoverRegion ??
settings.currentSettings.discoverRegion ?? 'US' (keep the same resolution order
and fallback).

80-82: Simplify the nonTheatricalInTheFuture logic.

The condition (!nonTheatricalReleases || nonTheatricalReleases.length > 0) is confusing and partially redundant:

  • When nonTheatricalReleases is undefined, the ?.every() returns undefined anyway, making the entire expression falsy.
  • The !nonTheatricalReleases check is thus unnecessary.

The intent appears to be: "releases exist AND all are in the future."

♻️ Proposed simplification
   const nonTheatricalInTheFuture =
-    (!nonTheatricalReleases || nonTheatricalReleases.length > 0) &&
-    nonTheatricalReleases?.every((r) => new Date(r.release_date) > new Date());
+    nonTheatricalReleases &&
+    nonTheatricalReleases.length > 0 &&
+    nonTheatricalReleases.every((r) => new Date(r.release_date) > new Date());
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/RequestModal/MovieRequestModal.tsx` around lines 80 - 82, The
conditional for nonTheatricalInTheFuture is using a redundant
!nonTheatricalReleases check; change the logic to explicitly require that
nonTheatricalReleases is an array with length > 0 and that every release’s
release_date is in the future. In other words, replace the current expression
for nonTheatricalInTheFuture with a check that nonTheatricalReleases is
present/array and has length > 0, then call nonTheatricalReleases.every(r => new
Date(r.release_date) > new Date()); reference symbols: nonTheatricalInTheFuture,
nonTheatricalReleases, and r.release_date.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/RequestModal/TvRequestModal.tsx`:
- Around line 386-390: Remove the stray console.log and stop hardcoding
airDateInTheFuture; compute it from seasonsAirDates instead by mapping
data?.seasons to their airDate (already done in seasonsAirDates) and then
checking whether every non-null airDate is in the future (or at least one is,
matching MovieRequestModal logic) to derive airDateInTheFuture; update the usage
of airDateInTheFuture in TvRequestModal so the unreleased state reflects actual
season air dates rather than always true.
- Around line 508-516: The conditional is calling airDateInTheFuture as a
function which causes a runtime error; change the JSX to use boolean
conjunction: check settings.currentSettings.warnNonReleased &&
airDateInTheFuture && then render the <div> with the Alert (using Alert,
intl.formatMessage, messages.requesttvNotReleased) so the alert only renders
when both booleans are true.

In `@src/components/Settings/SettingsMain/index.tsx`:
- Around line 56-58: Update the text for the warnNonReleased setting to indicate
it only shows a warning (does not block requests): change the warnNonReleasedTip
value so it reads that Seerr will display a warning banner to requesters if a
title is not yet released, and ensure the visible label warnNonReleased remains
the same; apply the exact same wording change to the i18n key warnNonReleasedTip
in en.json and mirror the updated copy in the settings documentation
(general.md) so UI, locale, and docs stay aligned.

In `@src/i18n/locale/en.json`:
- Line 569: The added i18n key
components.RequestModal.requestmovieNonTheattricalInTheFuture is unused and
inconsistent with MovieRequestModal which formats
components.RequestModal.requestmovieNotReleased; replace or remove the dead key
and add/update components.RequestModal.requestmovieNotReleased in
src/i18n/locale/en.json with the combined message text that covers both "in the
future" and "absent" cases so MovieRequestModal's calls resolve correctly (refer
to MovieRequestModal and the message id
components.RequestModal.requestmovieNotReleased).

---

Nitpick comments:
In `@src/components/RequestModal/MovieRequestModal.tsx`:
- Around line 72-76: The nested ternary that computes discoverRegion is verbose;
replace it with a concise nullish coalescing expression using the existing
symbols (user?.settings?.discoverRegion,
settings.currentSettings.discoverRegion) so discoverRegion =
user?.settings?.discoverRegion ?? settings.currentSettings.discoverRegion ??
'US' (keep the same resolution order and fallback).
- Around line 80-82: The conditional for nonTheatricalInTheFuture is using a
redundant !nonTheatricalReleases check; change the logic to explicitly require
that nonTheatricalReleases is an array with length > 0 and that every release’s
release_date is in the future. In other words, replace the current expression
for nonTheatricalInTheFuture with a check that nonTheatricalReleases is
present/array and has length > 0, then call nonTheatricalReleases.every(r => new
Date(r.release_date) > new Date()); reference symbols: nonTheatricalInTheFuture,
nonTheatricalReleases, and r.release_date.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: bfb30d86-c0c8-475f-a16c-3c929140bede

📥 Commits

Reviewing files that changed from the base of the PR and between ff4ab21 and ec8d9fa.

📒 Files selected for processing (11)
  • cypress/config/settings.cypress.json
  • docs/using-seerr/settings/general.md
  • seerr-api.yml
  • server/interfaces/api/settingsInterfaces.ts
  • server/lib/settings/index.ts
  • src/components/RequestModal/MovieRequestModal.tsx
  • src/components/RequestModal/TvRequestModal.tsx
  • src/components/Settings/SettingsMain/index.tsx
  • src/context/SettingsContext.tsx
  • src/i18n/locale/en.json
  • src/pages/_app.tsx

Comment thread src/components/RequestModal/TvRequestModal.tsx Outdated
Comment thread src/components/RequestModal/TvRequestModal.tsx
Comment thread src/components/Settings/SettingsMain/index.tsx Outdated
Comment thread src/i18n/locale/en.json Outdated
@rienafairefr rienafairefr force-pushed the warn-request-releases branch from 650ea7a to 1b6e19d Compare March 7, 2026 09:57
@rienafairefr
Copy link
Copy Markdown
Author

Added a similar feature (governed by the same config flag) for TV requests

image

@rienafairefr rienafairefr changed the title feat(movierequestmodal): warning for no non-theatrical release (or in the future) feat(tvrequestmodal) feat(movierequestmodal): warning for no yet released media Mar 7, 2026
@rienafairefr rienafairefr requested a review from gauthier-th March 7, 2026 10:02
@rienafairefr rienafairefr force-pushed the warn-request-releases branch from 1b6e19d to 4367d97 Compare March 7, 2026 10:08
@rienafairefr
Copy link
Copy Markdown
Author

Should be ready now, my thanks to the reviewers

@0xSysR3ll 0xSysR3ll marked this pull request as ready for review March 7, 2026 12:00
@rienafairefr rienafairefr force-pushed the warn-request-releases branch 2 times, most recently from bbf021b to 484526f Compare March 11, 2026 21:00
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/RequestModal/MovieRequestModal.tsx`:
- Around line 28-29: The component MovieRequestModal currently uses the single
copy key requestmovieNotReleased for two distinct states (no recorded releases
vs. a future release) which is misleading; add two separate i18n keys (e.g.,
requestMovieNoRelease for when !nonTheatricalReleases?.length and
requestMovieFutureRelease for when a release exists but is in the future),
update the render branches in MovieRequestModal to pick the appropriate key
based on nonTheatricalReleases and the release date check, and replace uses of
the old requestmovieNotReleased in both places (including the edit branch) so
each state shows the correct message.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6a9941ec-f42e-43ab-abe3-e5c48609efd4

📥 Commits

Reviewing files that changed from the base of the PR and between 4367d97 and 484526f.

📒 Files selected for processing (11)
  • cypress/config/settings.cypress.json
  • docs/using-seerr/settings/general.md
  • seerr-api.yml
  • server/interfaces/api/settingsInterfaces.ts
  • server/lib/settings/index.ts
  • src/components/RequestModal/MovieRequestModal.tsx
  • src/components/RequestModal/TvRequestModal.tsx
  • src/components/Settings/SettingsMain/index.tsx
  • src/context/SettingsContext.tsx
  • src/i18n/locale/en.json
  • src/pages/_app.tsx
🚧 Files skipped from review as they are similar to previous changes (8)
  • src/components/RequestModal/TvRequestModal.tsx
  • src/i18n/locale/en.json
  • cypress/config/settings.cypress.json
  • src/context/SettingsContext.tsx
  • server/interfaces/api/settingsInterfaces.ts
  • src/pages/_app.tsx
  • seerr-api.yml
  • docs/using-seerr/settings/general.md

Comment thread src/components/RequestModal/MovieRequestModal.tsx
@0xSysR3ll 0xSysR3ll changed the title feat(tvrequestmodal) feat(movierequestmodal): warning for no yet released media feat(requestmodal): warning for no yet released media Mar 12, 2026
@rienafairefr rienafairefr force-pushed the warn-request-releases branch from 484526f to 4ec57ac Compare March 22, 2026 20:19
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
src/components/RequestModal/TvRequestModal.tsx (2)

391-393: Consider using a type predicate for proper type narrowing.

The filter callback removes undefined values, but TypeScript won't narrow the type automatically. Adding a type predicate ensures element in the subsequent .map() is correctly typed as string.

♻️ Suggested improvement
 const selectedSeasonsPresentAirDates = selectedSeasonsAirDates
-  .filter((i) => i !== undefined)
-  .map((element) => new Date(Date.parse(element)));
+  .filter((i): i is string => i !== undefined)
+  .map((element) => new Date(Date.parse(element)));
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/RequestModal/TvRequestModal.tsx` around lines 391 - 393, The
filter on selectedSeasonsAirDates removes undefined but TypeScript doesn't
narrow the type; change the filter to use a type predicate so that
selectedSeasonsPresentAirDates's map sees a string (e.g. replace .filter((i) =>
i !== undefined) with a predicate like .filter((i): i is string => i !==
undefined) so new Date(Date.parse(element)) in the subsequent .map() is
correctly typed).

540-540: Prefer strict equality for undefined check.

Use === undefined instead of == undefined for consistency with the pattern used on line 392.

♻️ Suggested fix
-      selectedSeasonsAirDates.some((element) => element == undefined) && (
+      selectedSeasonsAirDates.some((element) => element === undefined) && (
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/RequestModal/TvRequestModal.tsx` at line 540, In
TvRequestModal, the undefined check inside the selectedSeasonsAirDates.some(...)
predicate uses loose equality (==); change it to strict equality (===) so the
expression reads selectedSeasonsAirDates.some(element => element === undefined)
to match the pattern used elsewhere (e.g., line with strict checks) and ensure
consistent, type-safe comparisons.
src/components/Settings/SettingsMain/index.tsx (1)

56-58: Minor text quality suggestion for the setting label and tip.

Consider refining the phrasing for clarity and fixing the extra space before the colon in the tip.

📝 Suggested text improvements
-  warnNonReleased: 'Warn if Non released',
+  warnNonReleased: 'Warn About Unreleased Media',
   warnNonReleasedTip:
-    "If still only in theatres, or not yet released, Seerr will show a warning to the would-be requester : This helps warn about requests that can't yet be fulfilled",
+    "If still only in theaters or not yet released, Seerr will show a warning to the requester. This helps warn about requests that can't yet be fulfilled.",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/Settings/SettingsMain/index.tsx` around lines 56 - 58, The
label and tooltip strings for the setting keys warnNonReleased and
warnNonReleasedTip need clearer wording and removal of the stray space before
the colon; update warnNonReleased to something like "Warn if Not Released" (or
similar clearer phrasing) and change warnNonReleasedTip to a concise sentence
without the extra space before the colon, e.g. "If a movie is still only in
theatres or not yet released, Seerr will show a warning to the requester: this
helps prevent requests that cannot yet be fulfilled." Ensure you replace the
existing values for warnNonReleased and warnNonReleasedTip with the improved
wording.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/RequestModal/TvRequestModal.tsx`:
- Around line 521-534: The alert title is built with a multi-line template
literal causing literal newlines/leading spaces; update the construction in
TvRequestModal to build a compact single-line title (e.g., compute datesStr =
selectedSeasonsAirDateInTheFuture.map(...).join(', ') using intl.formatDate,
then set title = `${intl.formatMessage(messages.requesttvNotReleased)}
(${datesStr})` or use string concatenation) so no extra whitespace/newlines are
included; locate the code around selectedSeasonsAirDateInTheFuture and
messages.requesttvNotReleased to apply the change.

---

Nitpick comments:
In `@src/components/RequestModal/TvRequestModal.tsx`:
- Around line 391-393: The filter on selectedSeasonsAirDates removes undefined
but TypeScript doesn't narrow the type; change the filter to use a type
predicate so that selectedSeasonsPresentAirDates's map sees a string (e.g.
replace .filter((i) => i !== undefined) with a predicate like .filter((i): i is
string => i !== undefined) so new Date(Date.parse(element)) in the subsequent
.map() is correctly typed).
- Line 540: In TvRequestModal, the undefined check inside the
selectedSeasonsAirDates.some(...) predicate uses loose equality (==); change it
to strict equality (===) so the expression reads
selectedSeasonsAirDates.some(element => element === undefined) to match the
pattern used elsewhere (e.g., line with strict checks) and ensure consistent,
type-safe comparisons.

In `@src/components/Settings/SettingsMain/index.tsx`:
- Around line 56-58: The label and tooltip strings for the setting keys
warnNonReleased and warnNonReleasedTip need clearer wording and removal of the
stray space before the colon; update warnNonReleased to something like "Warn if
Not Released" (or similar clearer phrasing) and change warnNonReleasedTip to a
concise sentence without the extra space before the colon, e.g. "If a movie is
still only in theatres or not yet released, Seerr will show a warning to the
requester: this helps prevent requests that cannot yet be fulfilled." Ensure you
replace the existing values for warnNonReleased and warnNonReleasedTip with the
improved wording.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5084884d-50b4-4cbc-aca1-bdd0106bf44c

📥 Commits

Reviewing files that changed from the base of the PR and between 484526f and 4ec57ac.

📒 Files selected for processing (11)
  • cypress/config/settings.cypress.json
  • docs/using-seerr/settings/general.md
  • seerr-api.yml
  • server/interfaces/api/settingsInterfaces.ts
  • server/lib/settings/index.ts
  • src/components/RequestModal/MovieRequestModal.tsx
  • src/components/RequestModal/TvRequestModal.tsx
  • src/components/Settings/SettingsMain/index.tsx
  • src/context/SettingsContext.tsx
  • src/i18n/locale/en.json
  • src/pages/_app.tsx
✅ Files skipped from review due to trivial changes (7)
  • docs/using-seerr/settings/general.md
  • cypress/config/settings.cypress.json
  • src/context/SettingsContext.tsx
  • src/pages/_app.tsx
  • seerr-api.yml
  • server/lib/settings/index.ts
  • src/i18n/locale/en.json
🚧 Files skipped from review as they are similar to previous changes (2)
  • server/interfaces/api/settingsInterfaces.ts
  • src/components/RequestModal/MovieRequestModal.tsx

Comment thread src/components/RequestModal/TvRequestModal.tsx Outdated
Comment thread src/components/RequestModal/TvRequestModal.tsx Fixed
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an optional “warn about non-released media” setting and surfaces warnings in the request modals when a movie/season appears to have no non-theatrical release date or the relevant date is in the future.

Changes:

  • Introduces warnNonReleased as a persisted main setting and exposes it via public settings.
  • Adds a new checkbox to General Settings to toggle the warning behavior.
  • Displays warning alerts in Movie and TV request modals; updates i18n strings and docs accordingly.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
src/pages/_app.tsx Adds warnNonReleased to initial public settings fallback.
src/context/SettingsContext.tsx Adds warnNonReleased to default settings context.
src/components/Settings/SettingsMain/index.tsx Wires warnNonReleased into settings form initial values + submission and adds a new checkbox.
src/components/RequestModal/MovieRequestModal.tsx Computes non-theatrical release status and shows a warning alert when enabled.
src/components/RequestModal/TvRequestModal.tsx Computes selected seasons’ air dates and shows warnings when enabled.
server/lib/settings/index.ts Adds warnNonReleased to settings types/defaults and public settings output.
server/interfaces/api/settingsInterfaces.ts Exposes warnNonReleased on PublicSettingsResponse.
src/i18n/locale/en.json Adds new translation strings for the setting and warnings.
seerr-api.yml Documents warnNonReleased in the MainSettings schema.
docs/using-seerr/settings/general.md Documents the new setting.
cypress/config/settings.cypress.json Adds warnNonReleased to Cypress settings fixture.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/components/RequestModal/TvRequestModal.tsx Outdated
Comment thread src/components/RequestModal/TvRequestModal.tsx
Comment thread src/components/RequestModal/TvRequestModal.tsx Outdated
Comment thread src/components/RequestModal/MovieRequestModal.tsx Outdated
Comment thread src/components/RequestModal/MovieRequestModal.tsx Outdated
Comment thread src/components/RequestModal/MovieRequestModal.tsx
Comment thread src/i18n/locale/en.json
Comment thread src/i18n/locale/en.json Outdated
Comment thread docs/using-seerr/settings/general.md Outdated
@bonswouar
Copy link
Copy Markdown

Maybe this should be a separate feature request, but it would be great if the message was customizable (personnally I'd like to inform AND congrats users that request an unreleased media, as it's always prefered to request them early than late for my use case)

@gauthier-th
Copy link
Copy Markdown
Member

Maybe this should be a separate feature request, but it would be great if the message was customizable (personnally I'd like to inform AND congrats users that request an unreleased media, as it's always prefered to request them early than late for my use case)

I'm not sure we're willing to implement that. All messages in the app are the same for everyone.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

This pull request has merge conflicts. Please resolve the conflicts so the PR can be successfully reviewed and merged.

@github-actions github-actions Bot added the merge conflict Cannot merge due to merge conflicts label May 9, 2026
@M0NsTeRRR
Copy link
Copy Markdown
Member

@rienafairefr Can you address Copilot feedback?

@rienafairefr
Copy link
Copy Markdown
Author

@rienafairefr Can you address Copilot feedback?

Reviewed those, I think should all be addressed now

@rienafairefr rienafairefr force-pushed the warn-request-releases branch 2 times, most recently from 8ceb312 to e6756dc Compare May 19, 2026 20:34
@github-actions github-actions Bot removed merge conflict Cannot merge due to merge conflicts blocked:template labels May 19, 2026
@0xSysR3ll
Copy link
Copy Markdown
Contributor

You forgot to run pnpm format and pnpm i18n:extract

Comment thread src/components/Settings/SettingsMain/index.tsx Outdated
Comment thread src/i18n/locale/en.json Outdated
@rienafairefr rienafairefr force-pushed the warn-request-releases branch from cfc124a to febfb52 Compare May 26, 2026 19:50
@gauthier-th gauthier-th changed the title feat(requestmodal): warning for no yet released media feat(requestmodal): warning for not yet released media May 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Set minimum release status to request media

8 participants