Repository navigation
Home dock Channels: type-ahead, page commands and focus target find the Channels page - #33869
Conversation
…page through its container HomeDockChannelsPageReadersTests: TabContent.inputReadiness and InternalPageView.focusTarget read only 'content as? PageWebView', so for the docked Home in Channels mode (the page inside HomeDockView, a PageWebViewContainer) the type-ahead has no input readiness and the focus target is the dock view. #29386 review note 3. Fails here.
…s focus target find the Home dock's Channels page #29386 review note 3. TabContent.inputReadiness, KeyRouter.focusedPage and InternalPageView.focusTarget now find a tab's page through PageWebView.shown(in:), the rule TabContent.childWindowTab already uses: the content itself when it is a page, else the page a PageWebViewContainer shows (the docked Home's Channels page while Channels shows). Before, for Channels: no type-ahead (keys typed at its first open were not held for the page), no page commands or page context from the key router, and on a WebKit fallback the dock view (which takes no keys) became first responder. Messages mode is unchanged: the dock shows no page there, and its primary input still comes first in focusTarget.
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: green on the base 61092fe; do not merge until green; see lane-rules Shipped in:
|
|
Found 10 test failures on Blacksmith runners: Failures
|
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (codex gpt-6-astra high, next-review, since=20261103T135059Z): SHIP at 181170d
SHIP at 181170d
Visual verdict: no images; Leo tries the build
Checked the changed readers against dock mode switching, type-ahead delivery, and page-command routing; no correctness findings. macOS tests were not rerun in this box.
Follow-ups: none
|
Review (claude-opus-5.5-review-subagent): FIX at 181170d Read-only review of the diff 044672e..181170d, plus the readers' callers at the head. I did not run a build or a test on this machine. I read the log of fleet step Finding 1 (FIX, correctness): on the docked Channels view, the type-ahead now eats the page's own single-key shortcuts until the person first focuses a text field
Other callers checked (no defect found)
Finding 2 (minor, PR body)The Testing section still says "step 1c75dbbabce3f97f63f64ead (...): RESULT." Replace RESULT with the result: passed at 181170d, exit 0, 3 suites passed. Finding 3 (test scope, acceptable)The stand-in
|
Review of #33869 (FIX at 181170d): TabContent.inputReadiness through PageWebView.shown(in:) gave the docked Channels page a type-ahead hold. That page focuses no input when it opens, so its readiness stays not ready and the hold ate its own bare keys (j, k, r, t, c, e) until the 2 s limit. inputReadiness reads a page tab's own page again; the test now guards that a page a container shows gets no readiness. KeyRouter.focusedPage and InternalPageView.focusTarget keep the shown(in:) rule. The standalone Channels tab (its content is the page) has the same hold on bare keys today; that is not changed here.
|
Review (claude-opus-5.5-review-subagent): SHIP at 0446888 Read-only review of the delta 181170d..0446888 (one commit) and of the new PR body. I did not run a build or a test on this machine. I read the fleet results with Finding 1 of the previous review: closed
Remaining changes: no defect found
PR body
|
|
Checks at 0446888 before ready-to-land: 69 pass, 1 pending, 1 red. The red is a base finding, not this PR's: |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Summary
Follow-up of #29386 (its review, note 3). The docked Home's Channels page is a page inside the dock's view (
HomeDockView, aPageWebViewContainer), not the tab's content itself. #29386 taughtTabContent.childWindowTabto find it throughPageWebView.shown(in:). Two other page readers still looked forcontent as? PageWebViewonly:KeyRouter.focusedPage: the key router named no focused page for Channels.InternalPageView.focusTarget: on a WebKit page (a fallback, or a Chromium page with no session yet), the dock view, which takes no keys, became the first responder.Both now use
PageWebView.shown(in:): the content itself when it is a page, else the page that a container shows now (Channels while Channels shows). Messages mode is unchanged: the dock shows no page there, and its primary input still comes first infocusTarget.The type-ahead (
TabContent.inputReadiness) stays on the old rule on purpose. The review of 181170d found that the Channels page focuses no input when it opens, so a type-ahead hold would eat its own bare keys (j, k, r, t, c, e) until its 2 s limit. The standalone Channels tab (content is the page itself) has that hold today; this PR does not change it.Testing
HomeDockChannelsPageReadersTests(CmuxNextAppTests), commit a33a4f6. Fleet step de1f3ed1f96753a127a810dc failed on its focus-target assertion (focusTarget → the dock). (Its inputReadiness assertion was the wrong rule; the head replaces it with a guard that the type-ahead gets no readiness for a container's page.)Observed / Not run
Observed: the red and green steps above, and the compile.
Not run: a journey that types into Channels at its first open (debug.key sequence mode has no event timestamp on the capture minis; STATUS 1582 notes). The test uses a test container, not the real
HomeDockView;HomeDockView.shownPageView's mode gate and theKeyRouter.focusedPagechange have no test of their own (both rest on code reading and the review).Changelog
Fixed: Home's Channels view takes the keyboard when Chromium cannot show it and it reopens in WebKit
Proof
No capture: no visible change; the change is which view takes the keys.