fix(web): the refusal view declared note twice, so no page ran (#810 regression) - #817
Merged
Merged
Conversation
…regression) #810 added `const note = el("p")` to refusedView beside the existing `const note = el("p", "detail")`. A duplicate declaration in one scope is a SyntaxError for the whole module, so render.js did not load and every console built from main showed a blank shell. The first is now `howNote`. Nothing caught it because the repo has no JavaScript toolchain. A new scan in test_client_assets fails any module that declares one name twice in one block scope, with a self-test that it catches the #810 shape and passes sibling blocks and loop heads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
eaitbrahim
added a commit
that referenced
this pull request
Sep 25, 2026
…e switcher with no tokens (#818) MINOR: #810 and #814/#816 add console features. No schema change since 0.16.0, so a deployment needs no `keel migrate` step beyond the usual idempotent run. What lands: #807 -- a quote-increment cache record predating quote_increment is a MISS, not an "unknown". #810 -- the refused view says how to get the address it asks you to paste; #817 fixes its duplicate `const note`, which blanked the console. #813 (#812) -- the cycle line ends `vetoed=N (rail, ...)`, so a rail veto no longer reads as a silent drop. #815 + #816 (#814) -- a console switcher beside the session chip. /api/config carries no session token; /switch/<port> redirects into the chosen console's own hand-off, local deployments only. Eight workspace versions and the inter-package `==` pins move together, plus the refreshed uv.lock the release workflow checks first. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
#810 (a1ee344) added
const note = el("p")torefusedViewinrender.js, but that function already declaresconst note = el("p", "detail"). Declaring the same name twice in one scope is aSyntaxErrorfor the whole module.render.jsnever loads,main.jsimports it, and so every console built from currentmainshows a blank shell. The browser reportsIdentifier 'note' has already been declared.It isn't released (no tag contains a1ee344), and
~/keelruns 0.16.0, so nothing deployed is affected.Fix
notetohowNote.test_no_module_declares_a_name_twice_in_one_scoperuns over every module instatic/js/. It scans for aconst/let/classname declared twice in one block scope, after_code_onlystrips strings and comments.test_the_redeclaration_scan_can_failpins that the scan catches the feat(console): the refusal now says how to GET the address it asks you to paste #810 shape and doesn't flag the same name in sibling blocks or loop heads.Why tests missed it
The repo deliberately has no JavaScript toolchain, so nothing ever parses the client. This scan covers the one class of parse error that got through. It is not a general parser.
Verification
render.jswith['note']and passed on the other nine modules before the fix.node --checkparses the fixedrender.js.tests/web: 987 passed.ruffis clean.🤖 Generated with Claude Code