feat: add @wterm/search for grid and scrollback find#37
Open
mvanhorn wants to merge 1 commit into
Open
Conversation
Adds a new package that finds text across the visible grid and the 1000-line WASM scrollback ring buffer. Closes the Ctrl+F gap where browser find only matches DOM-rendered rows and misses anything that has scrolled out of view.
|
@mvanhorn is attempting to deploy a commit to the Vercel Labs Team on Vercel. A member of the Team first needs to authorize it. |
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.
Adds
@wterm/search, a new package that finds text across the visible grid and the 1000-line WASM scrollback ring buffer.Closes the Ctrl+F gap today: the browser's native find only matches DOM-rendered rows, so anything scrolled out of view (which in wterm lives in the WASM ring buffer, not the DOM) is silently unmatchable.
Usage
Each match returns
{ row, col, length, source: "grid" | "scrollback" }, so callers can layer an overlay, jump-to, or count UI on top.Scope
v1 returns match positions. Overlay rendering (CSS Highlight API) is deliberately out of scope for this PR to keep the surface small; it can land as a follow-up that consumes these positions.
Approach
packages/@wterm/search/@wterm/coreexportscaseSensitive,regex,wholeWordTesting
New tests in
packages/@wterm/search/src/__tests__/:findNext/findPreviouswrap-around behaviorfindAllacross grid + scrollback boundaryFull repo CI is green:
pnpm test,pnpm format:check,pnpm typecheck,pnpm buildall clean.Demo
Search finds
ERRORacross the live grid and the scrollback buffer. The faded rows on the right live in the WASM ring buffer, not the DOM, so browser Ctrl+F misses them andfindNext("ERROR")reaches them.Notes
@wterm/coreor@wterm/domAGENTS.md🤖 Generated with Claude Code