Search inside files; mid-turn messages under the task; an italic, tighter task strip - #64
Merged
Merged
Conversation
…eside it The find box under the tree only matched paths, so finding where a string is used meant asking an agent or opening a terminal. A two-word switch at the box's right edge -- Name, Text -- now picks what it searches; Files mode only, since Changes and Commits filter lists they already hold. Text runs `git grep` on the server (`/api/worktrees/:id/grep`): tracked plus untracked, minus ignored, no binaries, fixed strings with `-e` so a pasted error message or a query starting with a dash is still just text, and `-z` because a colon in a path otherwise splits it. Bounded at 200 lines and 20 per file; git is asked for one past that so a file cut short says "More in this file" rather than looking complete -- measured, a 120-hit file showed 20 and nothing else before. The query is not trimmed here as a name is: `line 7 ` matched lines 70-79 until it kept its space. Debounced 150ms, since this reads every file where a name search reads one list. Results are the name search's tree with each file's lines under it, number then text, the match bright. A line opens its file with the cursor on that line, scrolled to the middle -- a new `goto` on the editor, keyed by path and nonce so it lands on the file it names and not the one showing while that loads. Measured on a scratch instance: line 121 of 181 opened centred with the cursor on it and its row lit; Enter in the box opens the first line hit; the switch hands the keyboard back to the box. A Markdown file shown rendered has no lines to land on and opens at the top. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A message typed while Claude is working is not written as a `user` record: Claude folds it into the running turn and records a `queued_command` attachment. The reader only looked at user records, so every "also make it italic" said mid-turn was missing from under the task -- measured in this worktree, where three of them were absent. Surveyed over every local transcript: 289 in `prompt` mode, none also written as a user record, so reading both cannot count one twice; `task-notification` mode is machinery and stays out. They are always follow-ups, never the task. One of the three was fourteen words, and `isTask` by word count alone would have made "the last prompt display should strip ..." the worktree's task, replacing the one it was a remark on. The test fails with that guard removed. The strip is italic -- task and follow-ups both -- because all of it is quoted: your words, set apart from the interface's own. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Measured 24px from the last line of the strip to the terminal -- 13px of padding, the rule, 10px of margin -- before Claude's own screen adds a blank row of its own, so the strip read as floating free of what it describes. Now 10px above the text, 8px below it and 4px to the terminal: 12px from text to Claude. Co-Authored-By: Claude Opus 5 (1M context) <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.
The files search can look inside the files, from a Name/Text switch beside it
The find box under the tree only matched paths, so finding where a string is
used meant asking an agent or opening a terminal. A two-word switch at the
box's right edge -- Name, Text -- now picks what it searches; Files mode only,
since Changes and Commits filter lists they already hold.
Text runs
git grepon the server (/api/worktrees/:id/grep): tracked plusuntracked, minus ignored, no binaries, fixed strings with
-eso a pastederror message or a query starting with a dash is still just text, and
-zbecause a colon in a path otherwise splits it. Bounded at 200 lines and 20 per
file; git is asked for one past that so a file cut short says "More in this
file" rather than looking complete -- measured, a 120-hit file showed 20 and
nothing else before. The query is not trimmed here as a name is:
line 7matched lines 70-79 until it kept its space. Debounced 150ms, since this reads
every file where a name search reads one list.
Results are the name search's tree with each file's lines under it, number
then text, the match bright. A line opens its file with the cursor on that
line, scrolled to the middle -- a new
gotoon the editor, keyed by path andnonce so it lands on the file it names and not the one showing while that
loads. Measured on a scratch instance: line 121 of 181 opened centred with the
cursor on it and its row lit; Enter in the box opens the first line hit; the
switch hands the keyboard back to the box. A Markdown file shown rendered has
no lines to land on and opens at the top.
Messages sent mid-turn show under the task, and the task strip is italic
A message typed while Claude is working is not written as a
userrecord:Claude folds it into the running turn and records a
queued_commandattachment. The reader only looked at user records, so every "also make it
italic" said mid-turn was missing from under the task -- measured in this
worktree, where three of them were absent. Surveyed over every local
transcript: 289 in
promptmode, none also written as a user record, soreading both cannot count one twice;
task-notificationmode is machinery andstays out.
They are always follow-ups, never the task. One of the three was fourteen
words, and
isTaskby word count alone would have made "the last promptdisplay should strip ..." the worktree's task, replacing the one it was a
remark on. The test fails with that guard removed.
The strip is italic -- task and follow-ups both -- because all of it is
quoted: your words, set apart from the interface's own.
The task strip sits close to the Claude it describes
Measured 24px from the last line of the strip to the terminal -- 13px of
padding, the rule, 10px of margin -- before Claude's own screen adds a blank
row of its own, so the strip read as floating free of what it describes. Now
10px above the text, 8px below it and 4px to the terminal: 12px from text to
Claude.
🤖 Generated with Claude Code