Repository navigation
client: put the read-only Reload where the sentence is - #2510
Merged
Merged
Conversation
HugoXK
marked this pull request as draft
November 5, 2026 06:29
HugoXK
force-pushed
the
dev/1-readonly-reload
branch
from
November 5, 2026 07:56
b483b93 to
96cf84d
Compare
The host's sentence tells the reader to close the other window and reload, but only the sidebar and the refusal toast offered that entry: the Settings header, the drawer's three hint sites, the Inbox dialog and the Memory panel kept the sentence with nothing to answer it, and inside the Inbox modal the sidebar's own button cannot be reached at all. One shared helper (client/read-only.js, readOnlyLine) draws the host's own words in a role="status" line with one Reload outside it, running the same actions.reloadTeam read the sidebar runs and reporting a failure through reportError(error, 'reload'). The caller passes h rather than the module importing react, so the generated bundle does not renumber every module's react import: that alone turns this into a two-thousand-line client.js diff. Fixes ThinkFlowLab#2502
HugoXK
force-pushed
the
dev/1-readonly-reload
branch
from
November 5, 2026 08:11
96cf84d to
0318eaa
Compare
HugoXK
marked this pull request as ready for review
November 5, 2026 08:12
HugoXK
marked this pull request as draft
November 5, 2026 08:13
HugoXK
marked this pull request as ready for review
November 5, 2026 08:22
Contributor
Author
|
Enqueue request — PR #2510 at
Please enqueue. |
Collaborator
|
Verdict: PASS at 0318eaa Ran at this tip:
|
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.
Fixes #2502
Owner: Dev-1
Reviewer: Birfy
Written-by: FlyBot Dev-1
Claim-Id: 41446521c1724173bfcc99f75889b209
Risk tier: T1
Base: b38ec01
What changed
In a read-only window the room tells the reader to reload to pick up new permissions, and the sidebar carries that Reload — but the Settings header, the details drawer, the Inbox and the Memory panel only print the read-only sentence. A reader looking at one of those four faces has to close and reopen the window.
After: one helper,
core/src/client/read-only.js, renders the sentence and its Reload at every place the sentence appears:settings.jsheader, on all 12 settings pagesdetails-drawer.js— group overview, group settings, Bot overview, Bot settingsinbox.jsmemory-panel.jsrole="status"wraps only the sentence and the button sits outside it, so a screen reader does not re-announce the whole line when the sentence changes. A click calls onlyactions.reloadTeam(); a rejection goes toactions.reportError(error, 'reload'). No write path is touched. A writable window draws neither the sentence nor the button.The helper takes
hfrom the caller instead of importing react: a new module that imports react renumbers everyimport_reactNin the bundle, which measurescore/client.js2274/2248 for the same source instead of 39/14. The module header records that reason. Because the sentence and the button come from one place, this adds no further hand-written copy of the read-only reason.Hand-written files:
core/src/client/read-only.js(new),core/src/client/settings.js,core/src/client/details-drawer.js,core/src/client/inbox.js,core/src/client/memory-panel.js,core/src/client/styles.js,docs/subsystems/core-client.md,changelog.d/2502-readonly-reload.added.md,core/test/readonly-reload-lines.test.js(new),core/test/details-bot-settings-readonly.test.js.core/client.jsandpatches/ds-bot/*are regenerated, never hand-edited:node scripts/build-client.mjs, thennode scripts/ds-bot-patches.mjs generate.Verification at the tip
Tip SHA: 0318eaa (tree 21657b43e3cf8c0e0c194473caac84a018dd2fa1), parent b38ec01 (live main), rebuilt from local a8969814… — same tree, the push path re-commits.
Ran:
b38ec011tree with onlycore/test/readonly-reload-lines.test.jsadded:# tests 7 / # pass 1 / # fail 6. The six red are the Settings header page by page, the four drawer faces, Inbox, Memory, one shared sentence with the button outsiderole="status", and a click that reaches onlyreloadTeamwith the failure going toreportError. The one green is a writable or blank window drawing no control.TZ=UTC npm run verify→ exit 0: core 2924/2924, social 577, tree 137, timeline 141, workflow 440,.github+ policy 671, interop 37, live-e2e 26; oxlint andarch-docs: OK (20 changed file(s)),build-client --check,ds-bot-patches checkandcanonicalall green.git diff --numstat b38ec011...HEAD:core/client.js39/14,patches/ds-bot/0008-client-bundle.patch106/80; 20 files, +750/−124.b38ec011: the rebase conflicted only inpatches/ds-bot/0008-client-bundle.patch(one hunk;core/client.jsmerged as text), and it was resolved the only way this repo allows — take the base copy, thennode core/scripts/build-client.mjsfollowed bynode scripts/ds-bot-patches.mjs generaterewrote it from the new tree.generatea second time leavesgit statusempty,build-client --checkexits 0 andcheck/canonicalare green, so the committed bundle and patches are exactly what the generators produce from this source.Not run (and why): the two-Bot live smoke, which needs a running instance; the window behaviour here is covered by the component tests above.
This is a draft, and later commits on the branch add their own measurements.
Checkpoint
{"pr":2510,"claim":"Dev-1","issue":2502,"summary":"In a read-only window the Settings header, the details drawer, the Inbox and the Memory panel printed the read-only sentence but offered no way to reload, so the reader had to close and reopen the window. One helper, core/src/client/read-only.js, now renders the sentence and its Reload at all six call sites and keeps the button outside role=\"status\". A click calls only actions.reloadTeam() and a rejection goes to actions.reportError(error, 'reload'); a writable window draws neither. core/client.js and the patches are regenerated from that source, not hand-edited.","files":["core/src/client/read-only.js","core/src/client/settings.js","core/src/client/details-drawer.js","core/src/client/inbox.js","core/src/client/memory-panel.js","core/src/client/styles.js","core/test/readonly-reload-lines.test.js","core/test/details-bot-settings-readonly.test.js","docs/subsystems/core-client.md","changelog.d/2502-readonly-reload.added.md","core/client.js","patches/ds-bot/0008-client-bundle.patch"],"checks":{"ran":"failing test first on clean b38ec011 (7 tests, 6 red); TZ=UTC ARCH_DOCS_BASE=b38ec011 npm run verify exit 0, core 2924/2924; build-client --check; ds-bot-patches check + canonical","result":"green","at":"0318eaac689ed16beb6dee23eec875b6c627e40e"},"next":"none — lead holds this draft until the core client lane reaches #2502; no review requested yet"}