fix(mesh): view crashed with a temporal-dead-zone error on load
"[Vue Error] ReferenceError: Cannot access 'b' before initialization" from Ye.immediate, taking the whole Mesh view down. A watcher with `immediate: true` runs DURING setup. This one calls handleFetchContent, whose body touches consts declared further down the setup block — so on any session where history already contained an inline content_ref, it dereferenced a binding that did not exist yet. handleFetchContent itself is a hoisted `function`, which is why the call site looked innocent. The initial pass moves to onMounted, which runs after setup completes: every binding is initialized, and already-loaded history still gets the same treatment as new messages, which is what `immediate` was there for. Also adds .planning/todos/pending/2026-08-07-open-task-list.md — one flat list of everything open, including the app-lifecycle reports (fedimint guardian installs but does not work, BTCPay wipe not wiping, Bitcoin Knots vanishing, fedimint gateway dying at 88%), the missing app_install tool behind "!ai install bitcoin knots", and the LND UI 401s. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
58c759c149
commit
0a23c99463
@@ -0,0 +1,87 @@
|
||||
# Open task list — 2026-08-07
|
||||
|
||||
Single flat list. Everything open, from operator reports and on-device evidence.
|
||||
`[x]` = fixed AND deployed AND verified on archi-dev-box.
|
||||
|
||||
## GSD Phase 13 (14/15 — 13-15 is the only plan left)
|
||||
|
||||
- [x] 13-15 check 4 — CSP boundary: BLOCKED in AIUI frame, GOT 200 at top
|
||||
- [x] 13-15 check 1 — AIUI renders (operator: "it's fine")
|
||||
- [x] 13-15 check 3 — share video + document (operator: "seems fine")
|
||||
- [ ] 13-15 check 2 — content grid: BLOCKED, no film content exists on this node
|
||||
- [ ] Write 13-UAT.md, fill 13-VALIDATION.md, close 13-15 + the phase
|
||||
- [ ] Record-not-fix: music view (D-13), Routstr live paid request, E-09 study
|
||||
- [ ] Pre-existing: 01-05..01-10, 02-12 have PLAN without SUMMARY
|
||||
|
||||
## Fixed + deployed today
|
||||
|
||||
- [x] Gate deleted apps' `Authorization` header — broke every Nostr signer everywhere
|
||||
- [x] Gate 401'd credential-less PWA manifest fetches
|
||||
- [x] AI Data Access grants → node-side (per-origin localStorage was the cause)
|
||||
- [x] Content cards carried the PREVIOUS item's description
|
||||
- [x] IndeeHub relay 502 (root-owned volume vs uid-1000 container user)
|
||||
- [x] `content_list` scope: own | peers | purchased | films + 2 new RPCs
|
||||
- [x] Content loads progressively (peers no longer block the grid)
|
||||
- [x] Mesh view crash: `Cannot access 'b' before initialization` — an
|
||||
`immediate: true` watcher ran during setup and touched consts declared later
|
||||
|
||||
## Assistant / AI capability
|
||||
|
||||
- [ ] **No `app_install` tool** — `!ai please install bitcoin knots` correctly said it
|
||||
can't. Add install/uninstall behind the 13-08 confirm gate.
|
||||
- [ ] **`!archy` / `!ai` over mesh must action commands** — restart/stop/install and
|
||||
everything else sensible, with text responses. Same tool surface as embedded.
|
||||
- [ ] **Prose instead of surfaces** — only 1 of 10 transcript turns used a grid/card/
|
||||
viewer. Apps, bitcoin status, LN balance, files, configs, logs all rendered as prose.
|
||||
- [ ] Audit all ten `AIContextCategory` values for real coverage, not stubs
|
||||
- [ ] `files` context request times out
|
||||
- [ ] Cmd/Ctrl+K → "search with AIUI" must carry the query into the expanded chat
|
||||
- [ ] More mock content types
|
||||
|
||||
## App lifecycle (operator-reported, serious)
|
||||
|
||||
- [ ] **Fedimint guardian installs but does not work**
|
||||
- [ ] **BTCPay Server: uninstall-with-wipe reinstalls with an account still enabled** —
|
||||
wipe is not wiping; must come back genuinely fresh
|
||||
- [ ] **Bitcoin Knots disappeared again**, plus other apps
|
||||
- [ ] **Fedimint gateway disappeared at 88% install**
|
||||
- [ ] Volume-ownership bug family: reconciler logs `chown /var/lib/archipelago/
|
||||
postgres-btcpay failed` — same shape as the relay fix. Sweep rootless volumes.
|
||||
|
||||
## Node / app-gate
|
||||
|
||||
- [ ] **LND UI: every `:18083/proxy/lnd/*` call 401s** — the node's own `*-ui` apps need
|
||||
session passthrough; memory says that rides DISK manifests (catalog refuses
|
||||
build-source). Check whether it regressed or was never applied on that node.
|
||||
- [ ] `/app/filebrowser/api/resources/` 401 — same family
|
||||
- [ ] Gate `Authorization` fix touches 27 gated apps — only IndeeHub retested
|
||||
(Vaultwarden, Jellyfin, Nextcloud/WebDAV, Gitea, Grafana still unverified)
|
||||
- [ ] `/api/app-catalog` → 502, repeatedly
|
||||
|
||||
## Content / IndeeHub
|
||||
|
||||
- [ ] `content.browse-all-peers` needs an OVERALL time budget — >45s is unusable
|
||||
- [ ] IndeeHub adapter wired but unverifiable here: catalogue is empty (`count: 0`)
|
||||
- [ ] IndeeHub `wss://relay.nostr.band` closes before established
|
||||
|
||||
## AIUI polish
|
||||
|
||||
- [ ] **Background image takes ages to load** — likely unoptimised/uncompressed asset;
|
||||
check size and preload/lazy strategy
|
||||
- [ ] Web-search blocked by CSP on EVERY query (13-09: the web-search setting must
|
||||
drive the CSP node-side — allowlist, not wildcard)
|
||||
- [ ] `strfry.png` / `strfry.svg` 404 — icon missing from
|
||||
`neode-ui/public/assets/img/app-icons/` (44 icons present, strfry not among them)
|
||||
- [ ] ChatWindow `Failed to scroll to index N after 10 attempts`
|
||||
|
||||
## Bigger pieces
|
||||
|
||||
- [ ] **Node-side Nostr signer** — collapses IndeeHub private auth, the app-auth half of
|
||||
the gate work, and Phase C zaps into one design. Keys stay out of browser + model.
|
||||
- [ ] Research pass from AIUI's seed/history + Nostr-first ethos before designing
|
||||
|
||||
## Note
|
||||
|
||||
Console logs supplied 2026-08-07 came from **framework-pt (100.65.115.109)**, not
|
||||
archi-dev-box — Jellyfin on :8096 and :9100 are that node. Today's fixes are deployed to
|
||||
archi-dev-box ONLY.
|
||||
@@ -1656,9 +1656,18 @@ const fetchedUrls = ref<Map<string, string>>(new Map())
|
||||
// `immediate: true` so already-loaded history gets the same treatment as
|
||||
// newly-arriving messages.
|
||||
const autoFetchedCids = new Set<string>()
|
||||
watch(
|
||||
() => chatMessages.value.length,
|
||||
() => {
|
||||
|
||||
// NOT `immediate: true`. This watcher calls handleFetchContent, whose body
|
||||
// touches consts declared further down the setup block — and an immediate
|
||||
// watcher runs DURING setup, before those exist. Vue surfaced it as
|
||||
// "ReferenceError: Cannot access 'b' before initialization" from
|
||||
// Ye.immediate, and it fired whenever history already contained an inline
|
||||
// content_ref, taking the whole Mesh view down with it.
|
||||
//
|
||||
// onMounted runs after setup completes, so every binding is initialized and
|
||||
// already-loaded history still gets the same treatment as new messages —
|
||||
// which is what `immediate` was there for.
|
||||
function autoFetchInlineContent() {
|
||||
for (const msg of chatMessages.value) {
|
||||
const payload = msg.typed_payload as { cid?: string; inline?: boolean } | undefined
|
||||
if (
|
||||
@@ -1673,9 +1682,10 @@ watch(
|
||||
void handleFetchContent(msg.typed_payload as any)
|
||||
}
|
||||
}
|
||||
},
|
||||
{ immediate: true },
|
||||
)
|
||||
}
|
||||
|
||||
watch(() => chatMessages.value.length, autoFetchInlineContent)
|
||||
onMounted(autoFetchInlineContent)
|
||||
|
||||
// Transport chooser modal state — populated when advice comes back as
|
||||
// "choose" (size fits both inline-over-mesh AND Tor). User picks a path;
|
||||
|
||||
Reference in New Issue
Block a user