feat: Tor status + cleanup, Tailscale admin, marketplace install UX

- Task 0: Tor status dot (green/red) + "Cleanup Old" rotated services button
- Task 2: BTCPay already handled (opens new tab)
- Task 3: Tailscale launches https://login.tailscale.com/admin/machines in new tab
- Task 8: Marketplace install shows inline progress on card (removed banner)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-19 16:38:11 +00:00
co-authored by Claude Opus 4.6
parent 623c0fa954
commit 83dfed17c0
4 changed files with 71 additions and 100 deletions
+2
View File
@@ -376,6 +376,7 @@ const EXTERNAL_URLS: Record<string, string> = {
'syntropy-institute': 'https://syntropy.institute',
't-zero': 'https://teeminuszero.net',
'nostrudel': 'https://nostrudel.ninja',
'tailscale': 'https://login.tailscale.com/admin/machines',
}
const APP_TITLES: Record<string, string> = {
@@ -402,6 +403,7 @@ const NEW_TAB_APPS = new Set([
'portainer', // X-Frame-Options: deny
'onlyoffice', // X-Frame-Options: SAMEORIGIN
'nginx-proxy-manager', // X-Frame-Options blocks
'tailscale', // No local web UI — opens Tailscale admin
])
const mustOpenNewTab = computed(() => NEW_TAB_APPS.has(appId.value))