From 377195f7e09ffefe48895c2bc831bbb4ec279585 Mon Sep 17 00:00:00 2001 From: Dorian Date: Mon, 30 Mar 2026 10:24:48 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20gamepad=20navigation=20for=20Mesh=20tab?= =?UTF-8?q?=20=E2=80=94=20zone-based=20panel=20nav?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Peer rows: tabindex + role=button + Enter handler for D-pad selection - Zone attributes: mesh-left, mesh-chat, mesh-tools for cross-panel nav - Actions row: data-controller-container for Up from peers - Right from peers → chat input, Right from chat → tools tabs (wide) - Down from tabs → panel fields/buttons in grid fashion Co-Authored-By: Claude Opus 4.6 (1M context) --- neode-ui/src/views/Mesh.vue | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/neode-ui/src/views/Mesh.vue b/neode-ui/src/views/Mesh.vue index 5192affe..d1051b27 100644 --- a/neode-ui/src/views/Mesh.vue +++ b/neode-ui/src/views/Mesh.vue @@ -344,7 +344,7 @@ function truncatePubkey(hex: string | null): string {
-
+
@@ -410,7 +410,7 @@ function truncatePubkey(hex: string | null): string {
-
+
@@ -441,7 +441,10 @@ function truncatePubkey(hex: string | null): string {
A
@@ -454,7 +457,10 @@ function truncatePubkey(hex: string | null): string {
#
@@ -466,7 +472,10 @@ function truncatePubkey(hex: string | null): string { v-for="peer in sortedPeers" :key="peer.contact_id" class="mesh-peer-row" :class="{ active: activeChatPeer?.contact_id === peer.contact_id, 'is-archy': isArchyNode(peer) }" + tabindex="0" + role="button" @click="openChat(peer)" + @keydown.enter="openChat(peer)" >
@@ -493,7 +502,7 @@ function truncatePubkey(hex: string | null): string {
-
+
@@ -614,8 +623,8 @@ function truncatePubkey(hex: string | null): string {
- -
+ +