Skip to content

fix(ni): the unlock effect loads the board once, not in a loop - #519

Merged
SecureCloudGroup merged 1 commit into
mainfrom
round20/board-load-once
Oct 14, 2026
Merged

SecureCloudGroup merged 1 commit into
mainfrom
round20/board-load-once

Conversation

@SecureCloudGroup

Copy link
Copy Markdown
Owner

Second blocker from the real-browser recording. With the vault unlocked, /ni fired GET /api/ni/board back to back, forever (dozens of requests per 0.1 s on a board with three live cards; the page never reached network idle). The unlock $effect called load() under tracking; load()'s synchronous prefix reads items (a $state) and reassigns it after the fetch, so each reload re-ran the effect. The call now runs under untrack, so the effect depends on the unlocked flag only; the 10 s poll, the visibility poll and the 3 s fast-poll (interval callbacks, untracked) are unchanged. The board's first-card crash (#517) had masked it. Gates: svelte-check 0 / 0, vitest 648, bundle rebuilt. Verification: the clip worker re-measures the request rate on the real page after its tree refresh. Merge before tagging v0.26.0.

The effect that reloads the board when the vault flips to unlocked called load() under
tracking; load()'s synchronous prefix reads `items` (a $state) and then reassigns it after
the fetch, so every reload re-ran the effect and the page issued GET /api/ni/board back to
back, forever (dozens per 0.1 s on a board with three live cards). The call now runs under
`untrack`, so the effect depends on the unlocked flag only. Found recording the Neural
Interface clip; the first-card crash fixed in #517 had hidden it.
@SecureCloudGroup
SecureCloudGroup merged commit 2134f9c into main Oct 14, 2026
13 checks passed
@SecureCloudGroup
SecureCloudGroup deleted the round20/board-load-once branch October 14, 2026 15:50
SecureCloudGroup added a commit that referenced this pull request Oct 14, 2026
…screenshot (#520)

* docs(media): quickstart clip 12 — the Neural Interface — and the board screenshot

Recorded with tools/gifgen against main after #517/#518/#519, deterministically: the released
Library pack v1.5.0 mounted read-only into the demo container, canned model turns for the intent,
query, design pick and fit check of three asks, and recorded source responses served by the
recorder-only shim (gated on SB_GIFDEMO=1 + SB_GIFDEMO_NI; every other fetch refused). The clip:
ask in plain words, tap the Library source it found, check the designed card, live on the board;
a second ask; an honest stop with a dataset link. Board screenshot 04-neural-board.png (three live
cards). README row 12; docs/03 embeds; gifgen README and run.sh (`./run.sh 12` does take, encode,
poster, sheet and the docshot). Help bundle rebuilt.

* gifgen: parse the design-pick skeleton with string slicing, not backtracking regexes (CodeQL py/polynomial-redos)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant