Separate new requests from request tracking
Magent CI/CD / verify (push) Canceled after 7m35s
Magent CI/CD / deploy-prod (push) Canceled after 0s
Magent CI/CD / deploy-beta (push) Canceled after 0s

This commit is contained in:
2026-08-31 16:02:00 +12:00
parent 8f810e0f36
commit ecf9b230c1
9 changed files with 30 additions and 18 deletions
+3 -3
View File
@@ -326,7 +326,7 @@ const SETTING_LABEL_OVERRIDES: Record<string, string> = {
site_login_show_local_login: 'Login page: local Magent sign-in', site_login_show_local_login: 'Login page: local Magent sign-in',
site_login_show_forgot_password: 'Login page: forgot password', site_login_show_forgot_password: 'Login page: forgot password',
site_login_show_signup_link: 'Login page: invite signup link', site_login_show_signup_link: 'Login page: invite signup link',
site_nav_show_requests: 'Top navigation: Requests', site_nav_show_requests: 'Top navigation: New Requests',
log_file_max_bytes: 'Log file max size (bytes)', log_file_max_bytes: 'Log file max size (bytes)',
log_file_backup_count: 'Rotated log files to keep', log_file_backup_count: 'Rotated log files to keep',
log_http_client_level: 'Service HTTP log level', log_http_client_level: 'Service HTTP log level',
@@ -357,7 +357,7 @@ const labelFromKey = (key: string) =>
.replace('site banner enabled', 'Sitewide banner enabled') .replace('site banner enabled', 'Sitewide banner enabled')
.replace('site banner message', 'Sitewide banner message') .replace('site banner message', 'Sitewide banner message')
.replace('site banner tone', 'Sitewide banner tone') .replace('site banner tone', 'Sitewide banner tone')
.replace('site nav show requests', 'Top navigation: Requests') .replace('site nav show requests', 'Top navigation: New Requests')
.replace('site changelog', 'Changelog text') .replace('site changelog', 'Changelog text')
const formatBytes = (value?: number | null) => { const formatBytes = (value?: number | null) => {
@@ -869,7 +869,7 @@ export default function SettingsPage({ section }: SettingsPageProps) {
site_login_show_forgot_password: 'Show the forgot-password link on the login page.', site_login_show_forgot_password: 'Show the forgot-password link on the login page.',
site_login_show_signup_link: 'Show the invite signup link on the login page.', site_login_show_signup_link: 'Show the invite signup link on the login page.',
site_nav_show_requests: site_nav_show_requests:
'Show the Requests item in the top navigation. Disable during beta while request routing is being reworked.', 'Show the New Requests item in the top navigation. Disable it while request creation is unavailable.',
site_changelog: 'One update per line for the public changelog.', site_changelog: 'One update per line for the public changelog.',
} }
@@ -2,7 +2,7 @@
import { useEffect, useRef, useState } from 'react' import { useEffect, useRef, useState } from 'react'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import { authFetch, clearToken, getApiBase, getToken } from '../../lib/auth' import { authFetch, clearToken, getApiBase, getToken } from '../lib/auth'
type MediaType = 'movie' | 'tv' type MediaType = 'movie' | 'tv'
@@ -99,7 +99,7 @@ const formatDuration = (milliseconds?: number | null) => {
return `${(milliseconds / 1000).toFixed(1)} s` return `${(milliseconds / 1000).toFixed(1)} s`
} }
export default function RequestPortalClient() { export default function NewRequestClient() {
const router = useRouter() const router = useRouter()
const searchSectionRef = useRef<HTMLElement | null>(null) const searchSectionRef = useRef<HTMLElement | null>(null)
const resultsSectionRef = useRef<HTMLElement | null>(null) const resultsSectionRef = useRef<HTMLElement | null>(null)
@@ -311,7 +311,7 @@ export default function RequestPortalClient() {
<main className="card request-portal-page"> <main className="card request-portal-page">
<header className="request-portal-hero"> <header className="request-portal-hero">
<div> <div>
<span className="section-kicker">Request portal</span> <span className="section-kicker">New requests</span>
<h1>Find something worth watching.</h1> <h1>Find something worth watching.</h1>
<p>Choose what you want, find the right title, then tailor the request before it goes to Seerr.</p> <p>Choose what you want, find the right title, then tailor the request before it goes to Seerr.</p>
</div> </div>
+9
View File
@@ -0,0 +1,9 @@
import NewRequestClient from './NewRequestClient'
export const metadata = {
title: 'New Requests | Magent',
}
export default function NewRequestsPage() {
return <NewRequestClient />
}
+1 -1
View File
@@ -253,7 +253,7 @@ export default function HomePage() {
<section className="home-command"> <section className="home-command">
<div className="home-command-copy"> <div className="home-command-copy">
<span className="section-kicker">Request lookup</span> <span className="section-kicker">Request lookup</span>
<h1>Find a media request</h1> <h1>My requests</h1>
<p> <p>
Enter a title and year, or jump straight to a request using its request number. Enter a title and year, or jump straight to a request using its request number.
</p> </p>
+2 -2
View File
@@ -692,10 +692,10 @@ export default function PortalClient({ workspace }: PortalClientProps) {
<button <button
type="button" type="button"
className={workspace === 'request' ? 'is-active' : ''} className={workspace === 'request' ? 'is-active' : ''}
onClick={() => router.push('/portal/requests')} onClick={() => router.push('/new-requests')}
disabled={workspace === 'request'} disabled={workspace === 'request'}
> >
Requests New requests
</button> </button>
<button <button
type="button" type="button"
+1 -2
View File
@@ -1,6 +1,5 @@
import { redirect } from 'next/navigation' import { redirect } from 'next/navigation'
export default function PortalIndexPage() { export default function PortalIndexPage() {
redirect('/portal/requests') redirect('/new-requests')
} }
+2 -2
View File
@@ -1,5 +1,5 @@
import RequestPortalClient from './RequestPortalClient' import { redirect } from 'next/navigation'
export default function RequestPortalPage() { export default function RequestPortalPage() {
return <RequestPortalClient /> redirect('/new-requests')
} }
+1 -1
View File
@@ -8,7 +8,7 @@ const NAV_GROUPS = [
items: [ items: [
{ href: '/admin', label: 'Overview' }, { href: '/admin', label: 'Overview' },
{ href: '/admin/diagnostics', label: 'System health' }, { href: '/admin/diagnostics', label: 'System health' },
{ href: '/portal/requests', label: 'Request portal' }, { href: '/new-requests', label: 'New requests' },
{ href: '/admin/issues', label: 'Issue tracking' }, { href: '/admin/issues', label: 'Issue tracking' },
], ],
}, },
+8 -4
View File
@@ -75,13 +75,17 @@ export default function HeaderActions() {
] ]
const commonItems = [ const commonItems = [
{ href: '/', label: 'Health', match: (path: string) => path === '/' }, {
href: '/',
label: 'My Requests',
match: (path: string) => path === '/' || path.startsWith('/requests/'),
},
...(showRequestsNav ...(showRequestsNav
? [ ? [
{ {
href: '/portal/requests', href: '/new-requests',
label: 'Requests', label: 'New Requests',
match: (path: string) => path === '/portal/requests' || path.startsWith('/requests/'), match: (path: string) => path === '/new-requests',
}, },
] ]
: []), : []),