feat: cloud native file browser, settings Claude auth, deploy hardening

- Add native Cloud file browser with FileBrowser API integration
- Add cloud store, filebrowser-client, useAudioPlayer, useFileType composables
- Add Cloud components: FileGrid, FileCard, FileCardGrid, CloudToolbar
- Add Claude authentication section to Settings with OAuth status check
- Harden deploy script to preserve /aiui/ and claude-login.html
- Add nginx proxies for btcpay, homeassistant, filebrowser (HTTPS block)
- Add app configs for filebrowser, searxng, penpot in package.rs
- Update goal progress tracking with app aliases
- Improve mobile back button composable with ResizeObserver
- Update various views with cloud integration and UI refinements

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-04 23:05:01 +00:00
co-authored by Claude Opus 4.6
parent 173bf8fc0f
commit d7ff678e9d
26 changed files with 2053 additions and 265 deletions
+15
View File
@@ -475,6 +475,12 @@ const ROUTE_TO_PACKAGE_KEY: Record<string, string> = {
tailscale: 'tailscale',
}
/** Backend may register under variant container names */
const PACKAGE_ALIASES: Record<string, string[]> = {
immich: ['immich_server', 'immich-server'],
nextcloud: ['nextcloud-aio', 'nextcloud-server'],
}
function resolvePackageKey(routeId: string): string {
return ROUTE_TO_PACKAGE_KEY[routeId] ?? routeId
}
@@ -490,6 +496,15 @@ const pkg = computed(() => {
if (store.packages[routeId]) {
return store.packages[routeId]
}
// Check known aliases (backend may use variant container names)
const aliases = PACKAGE_ALIASES[routeId]
if (aliases) {
for (const alias of aliases) {
if (store.packages[alias]) {
return store.packages[alias]
}
}
}
// Fall back to dummy apps
if (dummyApps[routeId]) {
return dummyApps[routeId]