fix(ui): companion QR absolute 146 URL + Dashboard swipe type guard

- Companion app QR encoded a relative path (/packages/...apk.zip) which
  can't resolve when scanned by a phone. Point it at the absolute 146
  release-server URL so the download works from any device.
- Dashboard tab-swipe: guard tabs[next] (noUncheckedIndexedAccess) so the
  frontend type-checks/builds.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
archipelago 2026-06-19 09:50:10 -04:00
parent 837cc02812
commit 0ac67f5092
2 changed files with 7 additions and 2 deletions

View File

@ -79,7 +79,10 @@ import { ref, onMounted, watch } from 'vue'
import * as QRCode from 'qrcode'
const STORAGE_KEY = 'neode_companion_intro_seen'
const DEFAULT_DOWNLOAD_URL = '/packages/archipelago-companion.apk.zip'
// Absolute URL so the QR works when scanned by a phone (a relative path has no
// host to resolve). Points at the companion APK hosted on the 146 release server
// (publicly reachable) rather than the local node's /packages copy.
const DEFAULT_DOWNLOAD_URL = 'http://146.59.87.168:3000/lfg2025/archy/raw/branch/main/neode-ui/public/packages/archipelago-companion.apk.zip'
const visible = ref(false)
const qrDataUrl = ref('')

View File

@ -318,7 +318,9 @@ function onContentTouchEnd(e: TouchEvent) {
if (idx < 0) return
const next = idx + (dx < 0 ? 1 : -1) // swipe left next tab, right previous
if (next < 0 || next >= tabs.length) return
router.push(tabs[next].to).catch(() => {})
const target = tabs[next]
if (!target) return
router.push(target.to).catch(() => {})
}
watch(() => route.path, (newPath) => {