feat: bitcoin-ui CSS fix, HTTPS proxy support, deploy script improvements
Bitcoin UI: - Replace cdn.tailwindcss.com with locally bundled tailwind.css (CSP blocks external scripts) - Make all asset paths relative for nginx proxy compatibility - Add bitcoin-ui build/deploy to deploy-to-target.sh (was missing entirely) - Use --network host (bitcoin-ui proxies Bitcoin RPC at 127.0.0.1:8332) HTTPS mixed content fix: - Add HTTPS_PROXY_PATHS in AppSession.vue — when parent page is HTTPS, iframe loads through nginx proxy instead of direct HTTP port - Prevents browser blocking HTTP iframes inside HTTPS pages - All Tailscale servers use HTTPS, this was breaking all app iframes Deploy & first-boot improvements: - first-boot-containers.sh auto-detects disk size for pruning vs txindex - first-boot-containers.sh checks fallback source path for UI containers - Added mempool-electrs to APP_PORTS mapping - ElectrumX container creation in first-boot - Podman doctor/fix/uptime skills added Also includes: session persistence, identity management, LND transactions, ElectrumX status UI, nostr-provider improvements, Web5 enhancements Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -222,16 +222,18 @@ router.beforeEach(async (to, _from, next) => {
|
||||
// If authenticated and visiting /login: show login immediately, validate in background.
|
||||
// This prevents endless spinner on mobile when checkSession hangs (slow/unreachable network).
|
||||
if (to.path === '/login' && store.isAuthenticated) {
|
||||
// Redirect back to intended page (from ?redirect= query) or default to home
|
||||
const redirectTo = (to.query.redirect as string) || '/dashboard'
|
||||
if (store.needsSessionValidation()) {
|
||||
next()
|
||||
checkSessionWithTimeout(store).then((valid) => {
|
||||
if (valid) {
|
||||
router.replace({ name: 'home' }).catch(() => {})
|
||||
router.replace(redirectTo).catch(() => {})
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
next({ name: 'home' })
|
||||
next(redirectTo)
|
||||
return
|
||||
}
|
||||
next()
|
||||
@@ -245,7 +247,7 @@ router.beforeEach(async (to, _from, next) => {
|
||||
next()
|
||||
store.checkSession().then((valid) => {
|
||||
if (!valid) {
|
||||
router.replace('/login').catch(() => {})
|
||||
router.replace({ path: '/login', query: { redirect: to.fullPath } }).catch(() => {})
|
||||
}
|
||||
})
|
||||
return
|
||||
@@ -258,7 +260,7 @@ router.beforeEach(async (to, _from, next) => {
|
||||
next()
|
||||
return
|
||||
}
|
||||
next('/login')
|
||||
next({ path: '/login', query: { redirect: to.fullPath } })
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user