Merge branch 'main' into gsd/phase-13-aiui-functional-conversational-node-control-and-content-surf

# Conflicts:
#	.planning/config.json
This commit is contained in:
archipelago
2026-08-06 16:02:47 -04:00
26 changed files with 1438 additions and 67 deletions
+11
View File
@@ -356,9 +356,19 @@ export const useMeshStore = defineStore('mesh', () => {
// The modal waits for 2 sightings so it doesn't flash during the couple of
// seconds an ordinary reconnect (same radio, transient blip) needs.
const detectSightings = ref<Record<string, number>>({})
/** Epoch-ms until which the device-setup modal must NOT auto-open: an
* operator-initiated radio restart (settings apply, Reboot Radio) takes
* the radio down for ~15-20s, and the modal treated that healthy,
* expected gap as "a new stick was plugged in" and interrupted the flow
* (operator, 2026-08-06). */
const suppressDetectUntil = ref(0)
function suppressDeviceDetect(ms = 90_000) {
suppressDetectUntil.value = Date.now() + ms
}
const undismissedDetectedDevices = computed(() => {
const s = status.value
if (!s) return []
if (Date.now() < suppressDetectUntil.value) return []
return (s.detected_devices || []).filter(p =>
dismissedDetected.value[p] !== pluggedAt(s, p) &&
// The port the live session occupies is not a candidate…
@@ -1148,6 +1158,7 @@ export const useMeshStore = defineStore('mesh', () => {
latestBlockHeight,
fetchStatus,
undismissedDetectedDevices,
suppressDeviceDetect,
dismissDetectedDevice,
flashFlowPath,
openFlashFlow,