fix(setup): wizard navigation round-trips — back to Setup tab, goal-aware channels back button, configure launches the app
Demo images / Build & push demo images (push) Failing after 1m56s

- "Back to Goals" now returns to Home's Setup tab (?tab=setup) instead of
  landing on the dashboard tab.
- The channels screen remembers when a setup wizard sent you there
  (?from=goal) — its back button reads "Back to Setup" and returns to the
  wizard; it also now uses the shared BackButton pill instead of a bare
  link.
- "Open & Configure" steps launch the actual app via the app launcher —
  iframe apps overlay on top of the wizard, tab-only apps (BTCPay,
  Nextcloud) open a tab, mobile uses the in-app browser — instead of
  routing to the app-details page.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
archipelago
2026-07-16 22:16:58 -04:00
co-authored by Claude Fable 5
parent 55d7f19545
commit 73d181abea
5 changed files with 67 additions and 31 deletions
+19 -8
View File
@@ -1,12 +1,6 @@
<template>
<div class="pb-16 md:pb-4">
<!-- Back Button -->
<button @click="router.replace('/dashboard/apps/lnd')" class="mb-6 flex items-center gap-2 text-white/70 hover:text-white transition-colors">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
</svg>
Back to LND
</button>
<BackButton :label="backLabel" desktop-margin="mb-6" @click="goBack" />
<h1 class="text-2xl font-bold text-white mb-6">Lightning Channels</h1>
@@ -15,8 +9,25 @@
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router'
import { computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import BackButton from '@/components/BackButton.vue'
import LightningChannelsPanel from '@/components/LightningChannelsPanel.vue'
const route = useRoute()
const router = useRouter()
// When a setup wizard sent us here (?from=goal&goal=<id>), back returns to it.
const fromGoalId = computed(() =>
route.query.from === 'goal' && typeof route.query.goal === 'string' ? route.query.goal : null,
)
const backLabel = computed(() => (fromGoalId.value ? 'Back to Setup' : 'Back to LND'))
function goBack() {
if (fromGoalId.value) {
router.push(`/dashboard/goals/${fromGoalId.value}`)
} else {
router.replace('/dashboard/apps/lnd')
}
}
</script>