diff --git a/docs/external-access-and-websites.md b/docs/external-access-and-websites.md
index 4c8e523e..abd4e867 100644
--- a/docs/external-access-and-websites.md
+++ b/docs/external-access-and-websites.md
@@ -69,12 +69,38 @@ run only through `scripts/test-backend-isolated.sh`; use a worktree-local target
### Current integration checkpoint
+The operator reaffirmed the existing Setup walkthrough design during UAT.
+The follow-up UI uses the existing numbered goal cards, progress styling and
+Back/Continue navigation, with one expanded step. Previously saved connections
+are reused; installed Blossom omits the installation step. Blossom installation
+uses the normal app-store installer. Navigation itself never saves, signs or
+publishes. This UI revision is now active on Framework. The actual dashboard walkthrough
+saved the synthetic draft, archived it in local Blossom with a profile identity,
+fetched it back to verify exact bytes, and published it through FIPS port 32000.
+The 390-pixel mobile layout passed the overflow check. Browser request monitoring
+recorded no external requests during this journey.
+
+Live archive acceptance exposed an older `node-*` identity whose `is_node` flag
+was false. The container correctly rejected its upload because the canonical
+signer allowlist excludes legacy node records. The website identity filter now
+matches that rule, including node-name fallbacks and public-key validation, and
+checks it again before signing. No public Nostr event or external replica was
+created during this failure. The selected 20-test suite covers the regression and
+walkthrough navigation; the production typecheck and Vite build passed. A further
+new-project connection-inheritance check passed, giving eight Setup and thirteen
+Nostr tests for the revised UI.
+
Blossom is installed and healthy on Framework through the normal app installer.
Protocol, real HTTP/HTTPS tab signing and lifecycle/data-preservation evidence is
-recorded in `apps/blossom/README.md`. The combined dashboard/backend candidate has
-not yet been deployed. No public Nostr test events or external file replicas have
-been created. The temporary public proxy route and certificate were removed after
-their standalone acceptance checks.
+recorded in `apps/blossom/README.md`. The combined dashboard/backend candidate
+from local commit `28a92fcc` is now deployed privately on Framework. The
+authenticated publishing status probe passes; native Bitcoin/LND process IDs and
+start times are unchanged. Complete browser acceptance is still in progress. No public Nostr test events or external file replicas have
+been created. The earlier standalone proxy route/certificate were removed. A new owned UAT
+route now connects the dashboard-published synthetic site to
+`https://free.archipelago.builders` through Yaya. Trusted TLS, exact page bytes,
+`/rpc` returning 404, and traversal rejection (400) pass. The route remains for UAT;
+full revoke/restart qualification is still in progress.
New source work includes local Blossom website archives, explicit app-only guest
credentials, and an on-demand HTTPS check against exact published page bytes.
@@ -93,15 +119,19 @@ remain unfinished. Source validation and standalone routes must not be described
as acceptance of those features or of the complete dashboard journey.
The current dashboard production build and supported AIUI build both pass and
-are staged separately on Framework. The original backend and full web tree are
-backed up for rollback; the live dashboard has not been switched. The selected
+are activated on Framework. The original backend and full web tree remain
+backed up for rollback. The selected
dashboard suite passed 36 tests; subsequent HTTPS UI coverage passed six tests,
and tightened Nostr signing/receipt coverage passed 12 tests. The latest combined
18-test run, TypeScript check and dashboard rebuild passed. Catalog drift is zero
(37 catalog entries, 64 manifests). Full isolated backend validation now passes
1,699 tests, zero failures and four explicit ignores. The focused app-gate run
passes 53 tests, and all three credential tests pass. The deployable backend build
-is still pending at this checkpoint; passing tests is not live-node acceptance.
+passed. Its stripped deployment artifact SHA-256 is
+`11e571a7636779d7a956f9e98dab951f19de12262cf89e5ea478cdc8ba864eae`.
+Passing tests and the initial authenticated activation probe do not establish
+complete live-node acceptance. The private catalogue signing ceremony remains
+pending; six app-sharing policies have not yet been activated.
## Development evidence (2026-10-08, not release acceptance)
diff --git a/neode-ui/src/components/SetupWalkthrough.vue b/neode-ui/src/components/SetupWalkthrough.vue
new file mode 100644
index 00000000..b18e481c
--- /dev/null
+++ b/neode-ui/src/components/SetupWalkthrough.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ Step {{ index + 1 }} of {{ steps.length }}
+ In progress
+
{{ websiteMode ? 'Create a website on your node and choose where people can find it.' : 'Choose how people will connect to selected services on your node.' }}
{{ websiteMode ? 'Create a website on your node and choose where people can find it.' : 'Choose how people will connect to selected services on your node.' }}
-
{{ error }}
-
{{ message }}
-
Working…
-
-
+
{{ error }}
+
{{ message }}
+
Working…
+
+
+
+
Where should it be available?
+
Choose any combination. Each connection will be checked separately.
+
+
{{ status.fips_address ? 'A local FIPS address exists. This does not yet verify a website or app route.' : 'No local FIPS address detected. FIPS must be connected before its routes can be verified.' }}
+ Manage shared connections
+
+
+
+
+
Local website files
Blossom is installed. You can skip installation.
@@ -267,20 +332,21 @@ onMounted(refresh)
Install Blossom from the app catalogue to store website files on this node. Create a profile identity first; Blossom uses the normal Archipelago signer.
- Install Blossom
+
+ View app details
Return here after installation. This step is optional for a simple HTML page served directly by the node.
Installation and local uploads do not announce anything on Nostr. Publishing files externally requires a separate review of the content and destinations.
-
{{ status.notice }}
-
+
+
Continue from AIUI
Create a new project from the HTML you selected in AIUI. Existing projects remain unchanged.
-
+
Your websites
@@ -288,8 +354,10 @@ onMounted(refresh)
-
+
Describe and preview
+ Open AIUI to create a website
+
In AIUI, use “Continue to website setup” on your HTML preview to bring it back here for review.
Generate a simple page with a model installed on this node, or paste HTML from AIUI. Generation stays on your node.
@@ -299,19 +367,36 @@ onMounted(refresh)
Preview blocks scripts, forms and external requests. It cannot access your dashboard.
-
-
Where should it be available?
-
Choose any combination. Each connection will be checked separately.
-
-
{{ status.fips_address ? 'A local FIPS address exists. This does not yet verify a website or app route.' : 'No local FIPS address detected. FIPS must be connected before its routes can be verified.' }}
- Manage shared connections
+
+
Local website files
+
+
Blossom is installed. You can skip installation.
+ Manage local Blossom
+
+
+
+
+
Save your edits before storing this version in Blossom.
+
Verified local snapshot: {{ current.local_archive.size }} bytes · {{ new Date(current.local_archive.created_at).toLocaleString() }} · SHA-256 {{ current.local_archive.sha256 }}
+
This stores the saved draft shown below. Later edits need another explicit store. Local files require node login; this does not create a public Blossom endpoint.
+
+
+
+
Install Blossom from the app catalogue to store website files on this node. Create a profile identity first; Blossom uses the normal Archipelago signer.
+
+ View app details
+
Return here after installation. This step is optional for a simple HTML page served directly by the node.
+
+
Installation and local uploads do not announce anything on Nostr. Publishing files externally requires a separate review of the content and destinations.
-
+
+
Saved revisions
+
{{ new Date(revision.created_at).toLocaleString() }}
+
+
+
+
+
Your domain
Use a domain you own, or buy one with Bitcoin or Lightning. FIPS and Tor addresses do not need a domain purchase.
Give someone access to one application without sharing your dashboard login. Only apps that explicitly support guest sharing are offered. Their own account permissions still apply.
@@ -371,8 +459,9 @@ onMounted(refresh)
-
-
+
+
+
Publish the saved version on FIPS or your proxy
Anyone who can reach this node through FIPS can view this website. Save your draft first. Scripts and external resources remain blocked in this first static-site version.
@@ -385,7 +474,7 @@ onMounted(refresh)
External access is not verified. The FIPS firewall must allow this website’s port, {{ current.fips_publication.port }}.
-
+
Publish the saved version on Tor
Share an onion address without buying a domain. Anyone who knows the address can read the page in Tor Browser. Your node keeps the address keys when you unpublish.
@@ -398,7 +487,7 @@ onMounted(refresh)
An address alone does not confirm that Tor has connected or that visitors can reach the page.
-
+
Publish a named nsite
Upload a public static copy to a Blossom server, then announce it on your chosen Nostr relays. Your saved source stays on your node. A compatible nsite gateway can give it a browser address without buying a domain.