Repository navigation
Find text in the open pad #250
Copy link
Copy link
Open
Labels
DesktopEditorTiptap & ProsemirrorTiptap & ProsemirrorFeatureMobileUIenhancementNew feature or requestNew feature or requesttiptap
Description
Activity
- addedenhancementNew feature or requestNew feature or requestEditorTiptap & ProsemirrorTiptap & Prosemirror
on Sep 9, 2026 Cohesion
Find is pad text. It is not Settings → Documents “Search documents”. It is not Filter.
iOS and macOS Safari
- macOS Safari:
Mod-fmust open the find bar and stop Safari’s own find. Folded text isdisplay: none, so Safari find misses it. - iPhone and iPad: the Find toolbar control opens the same compact bar. Do not use a BottomSheet. A sheet drops the iOS keyboard.
- Keep the bar above the visual viewport. Next and previous stay tappable while the keyboard is open.
- A hardware keyboard on iPad may use Enter and Shift-Enter. Software keyboard still needs on-bar next and previous.
- macOS Safari:
Safari follow-up from iOS find slash jump:
- Mac Safari:
preventDefaultonMod-fcan steal Find on Page. Prove that steal. - iPhone and many iPad
Cmd-fevents never reach JS. Keep the Find control. A failed steal is not a bug. - Do not reuse
matchSectionsas the hit engine. It skips Title.
- Mac Safari:
Spec review: Find sits next to Filter. No new docked 32 by 32 control.
UX cohesion (epic #249):
Find is caret step through pad text. It is not Filter (hide Sections) and not Command jump (go to a place).
The bar is a compact L0 pad control next to Filter (
ToolbarButton+ daisyUIinput). Not a BottomSheet, not FilterPanel, not Spotlight.This card owns open, close, Escape, and the polite live region. #248 does not cover the find bar. Do not add Find to the #175 help table.
Metadata
Metadata
Assignees
Labels
DesktopEditorTiptap & ProsemirrorTiptap & ProsemirrorFeatureMobileUIenhancementNew feature or requestNew feature or requesttiptap
Parent
#249 Deepen the installed PWA. Sibling of #247, #248, and #251. Not blocked by them.
What to build
Add caret find on the open pad. The user types a query, sees hits, and steps the caret to the next or previous hit.
Filter stays Filter. It hides Sections. It is not find. Rename the Filter field so it no longer says “Find in document”.
Acceptance criteria
Mod-fopens that bar and does not open the browser find dialog.3 of 12.200+, and step only those 200.aria-labeland placeholder no longer say “Find in document”. The panel title stays Filter.Agent Brief
Category: enhancement
Summary: Real find on the pad, plus an honest Filter label.
Current behavior:
The Filter panel title is Filter. Its field still says “Find in document”. Apply hides unmatched Sections. It does not step hits or move the caret.
Folded Section bodies use
display: none. Browser find cannot see them. The pad does not bindMod-f.matchSectionsskips Title and the nodes under Title. It is a Section index for Filter. It is not the hit engine.A viewer can already run Filter. History unmounts the pad editor.
Desired behavior:
Open a find bar from a toolbar control next to Filter. On desktop,
Mod-fopens the same bar and steals browser find. That steal is required, because folded text is hidden from the page.Walk the live pad document. Include Title. Ignore Pad title, the chat composer, and History.
Treat the query as a trimmed, case-insensitive substring. Do not add whole-word, regex, or replace.
When the bar opens, snapshot the current folds. For the current hit, unfold that Section only. Leave the rest of the snapshot in place. Do not replace the whole fold set with one id. Closing the bar restores the snapshot. Filter can stay on.
Paint hits with a new inline decoration class. Do not write the stored Highlight mark. Do not reuse the Filter highlight class. Do not put a live region inside the editor.
Cap paint and stepping at 200 hits. If there are more, show
200+.A Read-only viewer can find. An Editing lock still allows find. Do not run find when History has unmounted the pad.
#175 is theme flip and a two-key help dialog. Do not add find to that help table.
Key interfaces:
Out of scope
Mod-f