Rename the Arrs tab to Media Stack, now that it is one

It covers the pipeline rather than only acquisition: the arrs, the jobs that run
over the same files, and the servers that play them. The label moves; the tab id,
file and URL do not, so bookmarks and the cache key keep working.

The settings card widens with it — Play State Sync, Media Permissions, Media
Cleaner, Emby and Jellyfin were reachable only through the Settings catch-all,
which is a long way to go for a setting named after the page you are on. Match
is whole-word, so "Intermediate Sync" is not caught by "media"; section count is
unchanged at 126 with the same 5 gaps, so nothing was taken from another tab.
This commit is contained in:
Gmer4Lfe
2026-08-14 21:47:33 -04:00
parent 00328cbd0a
commit 5ad5c0df7e
4 changed files with 38 additions and 19 deletions
+7 -3
View File
@@ -1,7 +1,7 @@
<?php
// ═══════════════════════════════════════════════════════════════════════════════════════════════
// PURPOSE
// Arrs tab. Library counts, queue state, root folders and recent cleanup/discovery activity
// Media Stack tab. Library counts, queue state, root folders and recent cleanup/discovery activity
// for every Sonarr / Radarr / Lidarr instance across all nodes.
//
// DESIGN PRINCIPLES
@@ -115,7 +115,7 @@ require_once dirname(__DIR__) . '/include/ai_chat.php';
</style>
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding:0 2px;">
<span style="font-size:13px;font-weight:bold;color:#888;text-transform:uppercase;letter-spacing:.06em;">Arrs</span>
<span style="font-size:13px;font-weight:bold;color:#888;text-transform:uppercase;letter-spacing:.06em;">Media Stack</span>
<span style="font-size:11px;color:#3a3a3a;" id="vv-arrs-ts"></span>
</div>
@@ -150,7 +150,11 @@ require_once dirname(__DIR__) . '/include/ai_chat.php';
// The conf sections this page is about, drawn by the shared renderer. They were reachable
// only from the Settings tab's catch-all, which is a long way to go for a setting named
// after the page you are already looking at.
vv_conf_ui_card('vv-cf-arrs', 'arr|sonarr|radarr|lidarr', 'Arr settings');
//
// The match mirrors VV_UI_SECTION_SURFACES in confform.php and has to keep mirroring it: that
// constant is what tells the assistant where to send someone, and this is what the page actually
// draws. The two disagreeing means being given directions to a card that is not there.
vv_conf_ui_card('vv-cf-arrs', 'arr|sonarr|radarr|lidarr|media|play state|emby|jellyfin|plex', 'Media settings');
?>
<script>
(function() {