Skip to content

A unit refusal reads as the model's refusal; the one-column Weave stays inside its width - #73

Merged
a9lim merged 3 commits into
mainfrom
webui/unit-refusal-wording
Nov 2, 2026
Merged

a9lim merged 3 commits into
mainfrom
webui/unit-refusal-wording

Conversation

@a9lim

@a9lim a9lim commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Two dashboard bugs drowse.ai's e2e found at 5c86520a.

Unit refusal read as a tab lock. userFacingError upper-cases the error code, so UnsupportedBlockError (the 422 a unit read, token anatomy or unit activity gets on a model without unit sites: GPT-2, Pythia, Qwen3.5 base, natively and in the browser) became UNSUPPORTEDBLOCKERROR. Its BLOCK matched /LOCK|TAKEOVER|…/, so the Units room and the Token view said "Another Drowse tab is using the local model". The pattern now skips BLOCK ((?<!B)LOCK), which also stops BLOCK_SITES_* codes reading as a lock. SessionLockTimeout still reads as one. There's a regression test in conversation-library.test.mjs, and it fails without the fix.

One-column Weave 4 px too wide. When the loom is narrow or the window short, .weave becomes the scroller (overflow-y: auto, overflow-x stays hidden). Its sections kept the desktop margin: 0 -4px, so the content was 4 px wider than the weave, and scrollIntoView could shift it sideways. In one column the sections drop the negative margin, and their 4 px focus gutter now sits inside the weave.

Checks:

  • npm run check: svelte-check 0 errors and 0 warnings, ledger ratchet, all script tests.
  • npm run build: the dist is rebuilt and committed.
  • drowse.ai e2e with its submodule at this branch: the residual-model refusal test (the Units room and the Token view's Anatomy show Pythia's refusal) and the phone Weave containment test pass on chromium and iPhone WebKit. At 5c86520a both fail.

A search by ID left the old unit in the detail. In the Units room, after a row was chosen, searching a unit's ID listed the match but the detail kept the earlier unit (selected = sel ?? rows[0], and nothing reset sel). An ID search now chooses its unit, layer and kind, as choosing its row does; a word search keeps the current choice. rooms.test.mjs pins it and fails without the fix; drowse.ai's units e2e checks it in the browser.

a9lim added 3 commits November 2, 2026 09:42
…k; the one-column Weave keeps its sections' focus gutter inside it

userFacingError upper-cases the error code, so UnsupportedBlockError (the 422 a unit or anatomy
read gets on GPT-2, Pythia or Qwen3.5 base) became UNSUPPORTEDBLOCKERROR, whose BLOCK matched the
tab-lock pattern. The pattern now skips BLOCK (also BLOCK_SITES_*); SessionLockTimeout still reads
as a lock.

In the one-column Weave (narrow loom or short window) the weave is the scroller and its sections
kept their desktop margin 0 -4px, so the weave's content was 4 px wider than the weave.
@a9lim
a9lim merged commit ccb6ba8 into main Nov 2, 2026
12 checks passed
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