App behavior reference
A detailed reference to screens, navigation, and the behavior behind each control.
Detailed behavior for every major app surface. For task-based instructions, start with Use Cantinarr.
- Discovery & search
- Discover
- Requests
- Media management (admin)
- Books (Chaptarr)
- Downloads & Monitoring (admin)
- Issues & AI remediation
- Transcoding (admin)
- AI assistant
- Notifications (iOS & Android)
- Settings
- Auth
Navigation
Section titled “Navigation”One authenticated shell hosts both module pages and secondary work screens over the shared ambient canvas. The chrome adapts at 900px: below it, a hamburger drawer lists modules and each module shows its pages in a floating bottom dock; at 900px+ the drawer becomes a layered persistent sidebar whose active module expands into its pages, and the bottom dock disappears. Detail, settings, approval, issue, and assistant routes therefore keep the desktop command sidebar instead of dropping users into a disconnected navigation mode. The global discovery bar appears on primary module surfaces and yields to each secondary screen’s own focused controls; its search domain follows the active discovery tab: a book search on Books and an album search on Music once connected, a title/person search on Movies, TV, and Releases: and switching discovery tabs clears the bar and closes the results overlay rather than carrying a query into a context that cannot answer it. Line-length-sensitive surfaces (search results, chat, detail pages, settings forms) cap and center their content on desktop; modal bottom sheets cap at 640px. Sheets open through showAppSheet and wrap their content in AppSheet: the theme owns the card and the single drag handle, and the body fills the sheet width, scrolls past 85% of the screen instead of clipping, and stays clear of the keyboard and home indicator. A sheet that sizes itself (a DraggableScrollableSheet, e.g. person detail) opts out and paints its own card.
| Module | Tabs | Access |
|---|---|---|
/dashboard |
Movies · TV · Releases · Books¹ · Music² | everyone |
/radarr |
Library · Queue · History · Wanted · Calendar | admin |
/sonarr |
Library · Queue · History · Wanted · Calendar | admin |
/chaptarr |
Library · Queue · History · Wanted | admin |
/lidarr |
Library · Queue · History · Wanted · Calendar | admin |
/downloads |
Queue · History | admin |
/monitoring |
Activity · History · Stats | admin |
Transcoding (/tdarr) |
Activity · Libraries | admin |
¹ Requesters need a Chaptarr grant for Books. ² Requesters need a Lidarr grant for Music. Admins can browse both before setup. All four catalog tabs also follow the server’s conditional hide preferences; Releases is visible while any of Movies, TV Shows, or Music is visible. Visible navigation maps to fixed router branches, including when only Music is granted.
/login, the OIDC browser-return routes, and /plex/continue sit outside the authenticated shell. Secondary routes inside it include /assistant, /browse/music/{popular|new-releases|genre} (music grids; period, genre, and instance_id persist the selection in the URL, and returning from an album restores the grid and scroll), /browse/:type/:feed (movie or tv, and a feed name such as featured, top-rated or discover; the Browse page’s genres, sort, year range and rating ride in the query string, so a browse link is a deep link, and a malformed one lands on that media’s tab), /detail/:type/:id (movie/tv by TMDB id; book by Chaptarr foreign id with a current library grant; native links carry source=chaptarr, while old Open Library links and /browse/books/… show the retirement screen; the target of book request-decision push taps and of approval-queue row taps; author by Chaptarr foreign author id and series by series name, both gated the same way; the targets of an Authors-row and Series-row tap, and series also of a book detail page’s own series line; album by MusicBrainz release-group id and artist by MusicBrainz artist id, available to admins before setup for albums, with requester grants required; artist pages require a library), /approvals, /issues, /issues/:id, /agent-actions, /agent-runs/:id, /settings/ai, /settings/chatgpt, /settings/grok, /settings/agent-approval-rules, /settings/change-history, /settings/change-history/:id, /settings/profile-approvals, /settings/discovery, /settings/..., /media-servers (/plex-guide redirects there), and /setup. /tautulli/<tab> redirects to the same tab under /monitoring, so bookmarks from before Tracearr still land. /settings/plex opens the Add Instance form on the Plex type, so the old Plex Invites address still lands somewhere useful.
The router guard redirects unauthenticated users to /login, remembers safe internal deep-link targets through sign-in, centrally bounces non-admins from admin routes, and requires requester Chaptarr grants for Books browsing/details and Lidarr grants for Music browsing/details. Admins can open discovery tabs, grids, and catalog details before setup; library author, series, and artist pages still need a matching instance. Explicit missing or wrong-type instance links never fall back to browsing without an instance. Account, server, role, permission, instance, and Discover visibility changes clear catalog/status providers. Hidden catalog branches unmount to stop their row subscriptions. Modules with multiple instances get an instance selector in the drawer/app bar.