In DataMind Oda, search finds a chat by the name of the chat or its workspace, and by the text inside its messages. It sits in the sidebar, and the rest of the column steps aside while you use it. This page also covers how a long chat loads its older messages as you read back. The column itself is covered in Chats and workspaces in the sidebar.
Search from the sidebar
Choose the Search row under New chat (Search sessions), or press Ctrl K (⌘ K on macOS). The row becomes the search field; if the sidebar is collapsed, it opens first, then the field takes focus.
Type what you remember. The field's hint reads Search session names and messages.
Open a result to go to that chat. Search clears and closes, and the chat comes into view. To put the search away without opening anything, press Escape or choose Clear search.
While a query is set, the results take over the column: your lists, the other sidebar sections and the panel rows stand aside until you clear the search. To change how those lists are grouped, ordered or filtered, see Group, order and filter chats.
Choosing a result opens the chat and brings its row into view in your lists; a chat in a folded group opens that group so its row shows.
Choosing an archived result does not open it: the search stays as it is, and Oda shows Archived sessions cannot be opened. Unarchive it to view. Use Unarchive session on the result's row first (Pin, rename, fork or archive a chat).
What a search covers
A search looks through the chats your list shows at that moment. A chat that is still blank, or that has no folder yet, is left out of the list, so it is not searched (Sessions: list and lifecycle covers when a chat appears).
Chat and workspace names match whatever the capitalisation, so weekly report also finds Weekly Report.
Message hits come from your messages and Oda's answers. A chat with several versions is read as the version it is showing (Edit, rewind and retry a message).
Chat search looks through the messages of your chats, not the contents of files. When Oda searches files during a task, that is a step in the chat, covered in Finding files and text.
A search reads stored records and starts no work in the chats it looks through.
What the results show
Results appear under up to two headings, each showing its count: Chats holds chats whose name or workspace matches, and In messages holds chats that match inside their message text.
A message match shows a short excerpt under the chat's name, with the matching words marked. The excerpt is cut to at most 240 characters, and a symbol such as an emoji is never split in half. Open the chat to read around the match.
A chat that matches in several places appears once, and the repeats do not use up more places.
Name matches appear as you type. Message matches follow after you pause, ranked, and while Oda looks, the results show Searching session history… with a few placeholder rows where matches will land.
Each new query cancels the one before it, so the results on screen always belong to what is in the field now. When the message search cannot finish, the name matches stay on screen.
Each result names the chat and where it belongs. A chat kept out of your lists by another feature, such as a scheduled task's runs, still appears here, labelled with that feature in place of a workspace name, for example Scheduled · Daily report (Schedule recurring tasks). It opens like any other chat.
When nothing matches, the results read No matching sessions.
The list stops at 20 matches, and Oda says so: Showing the first 20 results. Narrow your search. A more specific query finds the rest.
With Archived only selected under Filter sessions, the search shows archived chats alone, the same as the lists.
Move through the results
From the field, ArrowDown moves into the first result, and Enter opens it.
Once a result has focus, ArrowUp and ArrowDown move between results, and Enter opens the one you are on.
Escape clears the search and closes the field, from the field or from the results.
If you type with an input method, Enter and Escape go to the composition first, so Enter finishes the characters instead of opening a result.
Clicking elsewhere closes an empty field. A query you have typed stays open until you clear it or open a result.
What a query must meet
Not empty. A blank query, or one that holds only spaces, is refused with session search query must not be empty.
At most 500 UTF-16 code units. The field takes no more than that. An ordinary character counts as one, and a symbol such as most emoji counts as two. A longer query is refused with session search query must contain at most 500 UTF-16 code units.
No NUL characters. A NUL is an invisible character that can ride along in copied text. A query that contains one is refused with session search query must not contain NUL.
Oda checks a query before it searches, so a refused query runs no lookup.
When a search stops early
Cancelled. A search that is stopped before it finishes reports session search was aborted. A cancellation wins even when another problem happens at the same moment. Run the search again if you still need it.
Failed. Oda reports the failure with the detail it has. Try again, and if it keeps failing, contact your DataMind OS administrator with the message and what you searched. Other app messages are collected in Updates and troubleshooting.
Beyond the budget. All the lookups one search needs share a budget of 100. If a search needs more than the budget, it stops with a failure instead of returning part of the results. Make the query more specific and try again.
Not in every setup. A setup without chat search reports that search is not available instead of running it.
Reading back through a chat
A chat opens at its newest messages, and older ones arrive as you read back, so a long chat never loads all at once.
Older messages load in pages of up to 50 messages. A message here is one you sent or an answer from Oda.
Moving straight to an earlier point loads through it in larger steps, up to 200 messages at a time.
The chat's current state, such as its title and the model it is set to, arrives with the newest page as one block that describes the chat up to its latest entry. Pages loaded behind it bring messages only, so reading back never changes the state you see.
Pages are cut at message boundaries: the entries a message refers to travel on the page that carries the message.
When a view of a chat opens, it starts from one snapshot of the chat's current position, and live entries arrive after it, in order. An empty chat opens with an empty page rather than a failure.
After a reconnect, the view takes a fresh complete snapshot before later live entries, so nothing is glued across the break.
When history cannot load
Loading history is strict. When Oda cannot serve a request exactly, it refuses instead of guessing:
Past the end. A request for a point the chat has not reached is refused with session page through seq <n> is past cursor <n>; nothing is filled in for it.
A page that fails validation. A page request names a position and a whole positive number of messages; a request that fails validation is refused before anything is read.
Not found. A chat whose stored record cannot be found, or a stored record without its folder, is refused as not found (session/not-found) rather than guessed at.
A helper chat. A helper chat Oda started is read through its parent; a request whose parent or mode does not match the helper chat's record is refused (subagent/unauthorized).
A skipped part. If the live feed is missing a part, Oda refuses to show the history with a hole in it (session event stream skipped seq <n>) and loads the missing part again.
Questions, answered
How do I open the search field?
Choose the Search row under New chat, or press Ctrl K (⌘ K on macOS). If the sidebar is collapsed, the shortcut opens it first, then the field takes focus.
What is the difference between Chats and In messages?
Chats lists chats whose name or workspace matches, and it fills in as you type. In messages lists chats whose message text matches, ranked and arriving after a short pause, each with a short excerpt and the matching words marked.
Why can't I find a chat I know exists?
Check Filter sessions first: with Archived only, the search shows archived chats alone. A chat that is still blank or has no folder yet is not in the list, so it is not searched. If the match was inside a message, give it a moment, because message matches arrive after you pause; if that message search cannot finish, the name matches already shown stay in place. When the list points out that it shows only the first 20 results, make the query more specific to find the rest.
Why can't I open one of the search results?
The chat is archived. Archived chats can match a search, but they do not open until they are restored: Oda shows Archived sessions cannot be opened. Unarchive it to view. Use the Unarchive session button on the result's row, and the chat returns to your lists, ready to open.
Why does a chat that is not in my lists appear in search?
Some chats belong to another feature and stay out of the lists, such as a scheduled task's runs, but search still finds them. Such a result is labelled with its feature where a workspace name would sit, for example Scheduled · Daily report.
Why was my query refused when it looks short?
The limit of 500 counts UTF-16 code units, not characters: an ordinary character counts as one, and a symbol such as most emoji counts as two. A query can also be refused when it is blank or holds a NUL character, an invisible character that can ride along in copied text. Shorten the query, or remove the invisible character, and search again.
Why can a search fail instead of returning partial results?
All the lookups one search needs share a budget of 100. If a search needs more than that, it stops with a failure rather than returning part of the results. Make the query more specific and try again; if it keeps failing, contact your DataMind OS administrator.
Why did Escape not close the search while I was typing with an input method?
While an input method is still composing characters, for example while typing Chinese or Japanese, the key goes to the composition first, and the search stays open. Press Escape once more to close the search.
How far back can I read in a chat?
As far back as the chat goes. Oda loads older messages as you read back, in pages of up to 50 messages, and jumping straight to an earlier point loads through it in steps of up to 200.
Can a page cut a message in half?
No. Pages are cut at message boundaries, and a message means one you sent or an answer from Oda; the other entries that belong to a message ride on the page that carries it.
Why did my open chat reload its history?
After a reconnect, the view starts from a fresh snapshot of the chat's position before later live entries, and when the live feed is missing a part, Oda refuses to show the history with a hole in it and loads the missing part again. A reload means Oda is rebuilding a complete history, not losing one.
Does chat search look inside files too?
No. Chat search looks through the messages of your chats. When Oda searches the contents of files during a task, that is a step in the chat, covered in Finding files and text.