search() and captureText() beyond "visible" are unreachable: Search/Region are unrouted correlated families #2
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Terminal.search(),cancelSearch()andcaptureText()for anything but"visible"now refuse locally: there is no path from a browser to eitheroperation.
captureText("visible")is unaffected — it reads the shadow screenon this side of the wire.
This is a capability regression against the pre-reset build, tracked here so
it is not mistaken for a decision to drop the features.
Why
Before felis's wire-baseline reset both rode
InputMsgon the attachedstream:
InputMsg::Search/SearchCancelanswered byGridMsg::SearchMatch/SearchDone, andInputMsg::CaptureScrollback/CaptureRegionanswered byGridMsg::ScrollbackRow/ScrollbackDone/CaptureRegion. The broker carried them for free, because it relays the wholeInputfamily in one direction and the wholeGridfamily in the other.At
105b089979369fd310757375af3df7900ae7e523none of those variants exist.Search is
SearchMsg::Query→SearchMsg::Match→ConnMsg::End, and exportis
RegionMsg::Rows→RegionMsg::Row→RegionMsg::RowsDone→ConnMsg::End— correlated families whose stream ids the connection driver allocates. The
gateway's broker routes neither, and says so
(
felis-web-gatewaydocs/broker.md, "Stream frames"):Leaving the old
sendInputcalls in place would have been worse than removingthem. A frame the daemon cannot decode is no longer skipped — it ends the
connection with a typed error — so a search box that still wrote
{"Search": …}would have cost the user the session behind the tab.What it costs today
web/mobile.html's search box and its "last command output" button reportthe refusal instead of answering.
revealLine()survives (it takes a line index, whatever produced it), butnothing in the browser produces search hits to feed it.
Work
Restoring either needs the gateway to route a correlated family, which is a
gateway change first:
request id can be allocated for a browser-originated
Search/Regionrequest, and route the matching reply items and the
ConnMsg::End/ConnMsg::Errorterminator back under the stream'ssid.search()/cancelSearch()/captureText(scrollback | command_output | last_command)and their pending-reply plumbing againstthe shapes the broker settles on.
SearchMsg::Matchcarriesline_index,text,byte_spans,col_spansas before;RegionMsg::Rowcarriesresolved
textplussoft_wrap_continued, so the wasm side needs no rowdecode this time (the old
FelisView::captureRowexport is gone with itsframe and should not come back).
protocolMinor()if the routing lands behind a wire minor.