Skip to content

Conversation

@Shlawpers
Copy link

@Shlawpers Shlawpers commented Dec 29, 2025

Description

New Feature: Added dashboard / landing page to seerr.

Optional new dashboard allows Clients to see announcements from server admin (which can be configured in the UI) as well as tie ins into tautuli to show what's currently being watched, popular this month, etc) on the dashboard.

Adds admin settings UI at /settings/dashboard (alias /settings/activity)
Adds announcements + viewer feedback (stored in config as dashboard-feedback.json, optional webhook)
Updates OpenAPI spec + i18n + docs

Key files: activity.ts, activity.ts, index.tsx, SettingsActivity.tsx, activity.md, seerr-api.yml

Migration note: settings migration (not DB): 0008_migrate_dashboard_settings.ts

AI disclosure: I used claude 4.5 opus and codex 5.2 in making this feature.

Testing:
Enabled Dashboard in Settings → Dashboard; verified status/sessions/history/popular with Plex+Tautulli, posters load, announcements render, feedback submits and is viewable by admin, disable hides link and API returns 404. Also tested regular continued use of seerr for the last week with no known issue.

All testing done in docker.

Apologies if I messed anything up with this submission, I'm new to this.

Screenshots / Logs (if applicable)

Checklist:

  • [ x] I have read and followed the contribution guidelines.
  • [x ] Disclosed any use of AI (see our policy)
  • [ x] I have updated the documentation accordingly.
Screenshot 2025-12-27 at 7 50 28 PM Screenshot 2025-12-27 at 7 50 18 PM Screenshot 2025-12-27 at 7 50 09 PM Screenshot 2025-12-27 at 7 50 02 PM
  • All new and existing tests passed. #unsure beyond whatever testing I would have done myself...
  • [x ] Successful build pnpm build
  • Translation keys pnpm i18n:extract #unsure
  • Database migration (if required)
Screenshot 2025-12-27 at 7 56 20 PM Screenshot 2025-12-27 at 7 50 33 PM

@Shlawpers Shlawpers requested a review from a team as a code owner December 29, 2025 05:16
Comment on lines +293 to +299
const response = await axios.get(url.toString(), {
responseType: 'stream',
httpsAgent: plexSettings.useSsl
? new https.Agent({ keepAlive: true })
: undefined,
timeout: 15000,
});

Check failure

Code scanning / CodeQL

Server-side request forgery Critical

The
URL
of this request depends on a
user-provided value
.
const all = await readFeedback();
all.push(entry);
try {
await fs.writeFile(feedbackFilePath, JSON.stringify(all, null, 2), 'utf-8');

Check warning

Code scanning / CodeQL

Network data written to file Medium

Write to file system depends on
Untrusted data
.
monthBuckets.set(key, bucket);
}

if (!bucket) {

Check warning

Code scanning / CodeQL

Useless conditional Warning

This negation always evaluates to false.
@github-actions
Copy link

github-actions bot commented Jan 5, 2026

👋 @Shlawpers, thank you for your contribution!
However, this pull request has been closed because it appears to contain a significant amount of AI-generated code without sufficient human review or supervision.
AI-generated code can often introduce subtle bugs, poor design patterns, or inconsistent styles that make long-term maintenance difficult and reduce overall code quality. For the sake of the project's future stability and readability, we require that all contributions meet our established coding standards and demonstrate clear developer oversight.
This pull request is also too large for effective human review. Please discuss with us on how to break down these changes into smaller, more focused PRs to ensure a thorough and efficient review process. If you'd like to revise and resubmit your changes with careful review and cleanup, we'd be happy to take another look.

@github-actions github-actions bot closed this Jan 5, 2026
@github-actions github-actions bot locked as spam and limited conversation to collaborators Jan 5, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants