docs(help): bring the user guide back in line with the current app The help was written on 2026-10-14 and about forty user-visible changes merged since without touching it, so several pages described controls that no longer exist: Missions still listed four playbooks and a Save step for preferences that now save on each change, the depth editor kept its old names, notifications still had their former switches, and voice input pointed to a microphone button that is not in the composer. Every English page was re-checked claim by claim against the current labels (English UI messages) and behaviour, then the nine translations were updated to match, using each locale's own UI labels. Notable corrections: Missions (Compare two models, autosaving defaults with Apply to / Global / Reset, Subsession nesting depth, prepared hand-offs, retired-task interrupts, the named causes of "Mission Control is unavailable", standalone server support); conversations and history (reasoning/tool durations, token lines adding up the cleanup selection, presets including Nothing, timeline markers following Message content, in-place reveal of long text, Open in session, focus after send, Queue message / Steer now, Retrying); settings (notification routing table and defaults, Stats, Mode, info tips, Server setting badge, localized native menus); shortcuts (72 actions, Clear shortcut, Ctrl/Cmd+K); voice (More actions entries, Save status); files (live Workspace refresh, Show 200 more); OpenCode, install, server and updates (2.1.1 recommended, OpenCode 2 beside an older installation, version card first, private loopback listener for Missions, preview releases offered once all builds are published); providers, integrations, browser, SideCars, desktop and remote pages. Translations also repaired older drift, mainly the project-tab closing passages. The Chat settings table header (Default state, its title, item column, the thinking row and its accessible label) was still English in eight locales; it is now translated so the help can cite what users see. AGENTS.md now asks every PR changing user-visible behavior to update the affected help pages in the same PR, since CI validates structure and links but not whether the text still matches the UI; it also corrects the needs-input notification default. USER_HELP.md no longer claims native menus stay English. Validation: npm run test:help (all ten locales, 25 pages, heading ids unchanged), a full help build, and the i18n and transcript-visibility unit tests.
7.8 KiB
History, search and cleanup
Stored history, what the transcript currently displays and the model's compacted context are separate. Choose navigation or filtering before deleting anything.
Search full history
- Open Search chat history in the conversation header, or use its configured shortcut (default Ctrl/Cmd+F).
- Select Entire session or Entire workspace and enter a search term.
- Enable Include tools and thinking if you need technical content as well as readable text.
- Select an excerpt, or use Next results to continue beyond the current page.
Search is literal and case-insensitive, over stored history rather than only mounted transcript rows. Workspace scope follows the opened project's authorized directory tree and worktrees, not every project on the OpenCode service; its results are grouped by conversation, each named by its title and the worktree that currently holds it. File/image attachment bytes and opaque provider state are not searchable text.
The progress line This page: … results · … messages scanned describes this result page, not workspace totals. Results arrive in batches. Skipped oversized or unsupported messages are reported; absence of a hit does not prove those messages contain no match. New messages arriving during a scan need a fresh search to be included consistently.
Opening an empty search does not scan history. Changing query/scope, closing the window or leaving the session cancels obsolete search work. If a read fails, use Retry; it does not submit a prompt or mutate history.
Open results and use the timeline
- Choose a current-session search result to jump to its surrounding passage.
- Choose a result from another session to open a separate preview of that message; use Open in session to go to that conversation at the hit.
- In Message timeline, hover or focus a marker for an excerpt, then select it to navigate. Use the first/latest message controls to return to the ends of stored history.
The timeline represents full session structure even when the transcript holds only a bounded passage. Jumps load the destination rather than fetching every intervening message. Other-session search previews do not load that session's entire transcript or select it; only Open in session switches conversations.
Tool markers follow Message content: a tool type hidden there has no marker (none with Nothing), except a tool waiting for a permission. A step that only ran tools shows just its tool markers, without an empty agent marker.
While a jump loads, the old passage stays visible. A newer jump or manual transcript interaction supersedes obsolete navigation; a failed jump leaves the visible passage intact. Retry the destination rather than repeatedly reloading the whole project. Historical reading does not change the composer agent/model selection.
The timeline is hidden when the conversation is too narrow (below 420 CSS pixels); use search and transcript controls there. Its saved visibility preference is not erased by that responsive change.
Choose the right history operation
| Operation | Where | Scope and consequence |
|---|---|---|
| Display filtering | Message content, or Settings → Chat | Shared transcript display preferences; hides/collapses content without deleting it |
| Compaction | Palette Compact Session | Native summary/context compaction for the selected session, not technical-output deletion |
| One-response cleanup | Message More actions → Remove tools and reasoning from this response | Permanently removes eligible completed technical parts; preserves final text |
| Session technical cleanup | Palette Remove Session Tools and Reasoning | Plans across full stored session history, including pre-compaction messages; preserves final text and message/session metadata |
| Delete session | Session row Delete session, or selected-session delete | Recursively deletes the native conversation and its descendant subsessions/history after confirmation; no undo |
| Scrub Sessions | Command palette | Broader session deletion, not a display or context-size setting |
Message content applies across conversations. Choose a preset (Nothing, Minimal, Balanced or Everything) at its top or in Settings → Chat, then adjust individual rows; the Message content preset menu then shows Custom. Hiding tools does not disable tools, change permissions or remove stored output. To keep rendering responsive, very large messages show Show … more at an omitted gap, and very long text or tool output stops at a … more characters hidden line with Show all, or Show … more when much remains, which may take several steps. Revealing either is display-only and does not recover deleted content.
Compact a session
- Select the intended conversation.
- Run Compact Session from the command palette.
- Wait for the native compaction result or inspect Compact failed before deciding whether to retry.
Compaction changes the context OpenCode uses to continue the session. It is not a promise to erase earlier stored messages: full-history search and technical cleanup can still reach pre-compaction content. Do not compact as a substitute for deleting sensitive stored history.
Remove tools and reasoning
- Choose the one-response action, or run Remove Session Tools and Reasoning for the selected session.
- Review the planned tool/reasoning counts and any skipped-content warning.
- Confirm Remove. For whole-session work, follow the progress above the transcript and use its cancellation control if needed.
Only eligible completed tools and reasoning are removed. Active/incomplete content is not pruned; changed content is refused rather than silently expanding what you confirmed. Final text and message/session metadata remain, but removed technical output has no undo. Preserve anything you need before confirming.
Session cleanup is not atomic across the whole session. Successful earlier removals remain if a later message conflicts or fails. Cancellation stops future batches; it does not roll back an already dispatched batch, which may still commit.
For a busy-storage error, wait for current execution/storage work to finish. For a changed-message error, reload and select again. For an unavailable plugin, reconnect/reopen CodeNomad and inspect the error before retrying. After an uncertain reply, refresh and assess the remaining content; do not assume either that nothing happened or that the whole session was cleaned.
Delete and scrub sessions
Deleting a parent session also deletes its descendant subsessions and their history. Inspect the conversation family before confirming. Mission specialist cleanup is different: it keeps sessions that have children.
- Prefer a specific row's Delete session when you know exactly which conversation should go.
- For broader maintenance, run Scrub Sessions and read the Deep Clean Sessions confirmation.
- Confirm only if empty sessions, completed subagent sessions and unused forks may be removed.
Scrub operates on the current project's known session candidates and can remove more than blank main sessions. It is not an archive operation and has no undo. Do not use it merely to hide a busy sidebar. The independent Auto-cleanup blank sessions preference is narrower: it checks that a session is genuinely empty rather than treating an unloaded transcript as empty.
Deletion removes conversations, not Git commits or a rollback of filesystem/external effects. If cleanup only partly succeeds, already deleted sessions stay deleted. Review the remaining list and errors before retrying. See Conversations for forks/undo and Projects for deleting temporary folders or worktrees.