diff --git a/CHANGELOG.md b/CHANGELOG.md
index 71544142..042cc290 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## v1.7.96-alpha (2026-06-15)
+
+- The screen attached to your node now shows the normal Archipelago interface and your dashboard after you sign in, instead of a separate, stripped-down grid of app icons that could appear in its place. That extra screen has been removed so the attached display matches what you see everywhere else.
+- On a brand-new node, the attached screen now walks through the same welcome and setup steps you'd see on a phone or laptop, and shows the normal sign-in screen once the node is set up — so the on-device display always matches the rest of the interface.
+- Behind the scenes, a new automated two-node test now exercises real node-to-node features — browsing another node's shared files and handling a removed node — against live nodes before each release, so node-to-node problems are caught earlier.
+
## v1.7.95-alpha (2026-06-15)
- Browsing another node's shared files now works over the fast encrypted mesh. Opening a peer's cloud could fail with a generic "Operation failed" message because the request for their file list wasn't permitted over the mesh and came back as "not found" — and it never retried over Tor. The mesh now serves the file list directly, and if a peer can't answer over the mesh the node automatically falls back to Tor instead of giving up.
diff --git a/neode-ui/src/router/index.ts b/neode-ui/src/router/index.ts
index 6ad001e6..bc7bf681 100644
--- a/neode-ui/src/router/index.ts
+++ b/neode-ui/src/router/index.ts
@@ -84,12 +84,18 @@ const router = createRouter({
meta: { public: true },
},
{
+ // The kiosk display no longer has its own launcher screen. It runs the
+ // normal app (onboarding → login → dashboard) like any other client.
+ // This route only persists kiosk mode + safe-area insets, then redirects
+ // to the root app. The launcher still points Chromium here (not directly
+ // at `/`) so the 'kiosk' flag gets set — App.vue uses it to skip the
+ // remote relay, which would otherwise double xdotool input on the kiosk
+ // display. Public so the auth guard doesn't bounce us before beforeEnter.
path: '/kiosk',
name: 'kiosk',
- component: () => import('../views/Kiosk.vue'),
+ meta: { public: true },
+ component: () => import('../views/RootRedirect.vue'),
beforeEnter: (to) => {
- // Persist kiosk mode before redirect so App.vue can skip the remote relay
- // (relay duplicates xdotool input on the kiosk display)
localStorage.setItem('kiosk', 'true')
const safeArea = to.query.safe_area
const safeAreaPx = Array.isArray(safeArea) ? safeArea[0] : safeArea
@@ -106,6 +112,8 @@ const router = createRouter({
if (safeAreaYPx && /^\d{1,3}$/.test(safeAreaYPx)) {
localStorage.setItem('archipelago_kiosk_safe_area_y_px', safeAreaYPx)
}
+ // Grid screen removed — hand off to the normal app flow.
+ return { path: '/' }
},
},
{
diff --git a/neode-ui/src/style.css b/neode-ui/src/style.css
index 412ecf7d..fbc1d738 100644
--- a/neode-ui/src/style.css
+++ b/neode-ui/src/style.css
@@ -62,7 +62,6 @@
.glass-card:focus-visible,
.sidebar-nav-item:focus-visible,
.path-option-card:focus-visible,
-.kiosk-app-tile:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
diff --git a/neode-ui/src/views/Kiosk.vue b/neode-ui/src/views/Kiosk.vue
deleted file mode 100644
index ada7fa81..00000000
--- a/neode-ui/src/views/Kiosk.vue
+++ /dev/null
@@ -1,286 +0,0 @@
-
- {{ currentTime }}
-
Archipelago
-
The screen attached to your node now shows the normal Archipelago interface and your dashboard after you sign in, instead of a separate, stripped-down grid of app icons that could appear in its place. That extra screen has been removed so the attached display matches what you see everywhere else.
+On a brand-new node, the attached screen now walks through the same welcome and setup steps you'd see on a phone or laptop, and shows the normal sign-in screen once the node is set up — so the on-device display always matches the rest of the interface.
+Behind the scenes, a new automated two-node test now exercises real node-to-node features — browsing another node's shared files and handling a removed node — against live nodes before each release, so node-to-node problems are caught earlier.
+