@oh-my-pi/pi-coding-agent
Added
- Added a Copy button that leads the turn footer under an answer in Tern (
⧉ · 2m13s · 71K tok · $0.85 this turn, in place of the clock), which copies that answer
Changed
- Running agents and background jobs in Tern now share one compact counter over the composer (an icon and a count each, the words on hover) instead of two "N running" pills; each count still opens its own sheet
- In Tern,
/session pinand/usage resetopen the same picker sheet as the other small selectors (the active account checked, a confirm strip before a reset is spent, unusable accounts dimmed with the reason); the thinking level picker shows each level's depth as a meter, the plugin and queue mode pickers use badges (version, installed, scope, recommended) and plain-language names instead of bracketed text, and the theme picker no longer repeats "(current)" beside its check - In Tern, the text editor an extension opens (and the ask tool's custom answer and note) is now a sheet in the composer's place: the title over its details, the text written straight on the sheet, and Open in editor, Cancel and Submit buttons whose keys show in their tooltips instead of a keycap hint row
Fixed
- Fixed
grepon a single file showing in Tern as separate boxed snippets with no file row or syntax colors; it now looks the same as agrepover a directory
@oh-my-pi/pi-tui
Added
AssistantMessageComponent's native turn footer leads with a Copy icon (omp.turn.copy) and a dot instead of the clock icon; it copies the answer's text and shows when the host handles transcript actions
Changed
UserMessageComponent's native hover toolbar (omp.user.tools) leads with Copy and Rewind icon buttons (copy,rewind) instead of text labels, then a dot and the time, like the turn usage footerContextUsageView's native body (on terminals withmeter) leads with the tokens used and the room left before auto-compaction, then one stacked bar ticked at the threshold, the breakdown as rows (omp.context.cat,.cat.free,.cat.buffer: swatch, name, tokens, share; the exact count in the row'stitle) and the snapcompact estimate as labelled rows (omp.context.snap); the blocks meter and legendkvare gone, andcontextUsageHeadno longer repeats the window sizeAskDialogComponent's native root isomp.editor.ask(collapsed:omp.editor.ask.hidden, the countdown, the question asomp.ask.summary, Skip and Show): a chosen answer is theaccent-toned row (a check also carries the check icon) instead of the highlighted one; multi-select Other… isomp.ask.other.check; the question tabs check answered questions and say their keys in the strip'stitle; the countdown moves from the head to the action bar beside Hide; the preview isomp.ask.preview; the Review tab leads withomp.ask.noticeand lists answers (omp.ask.answers) by question name with inline code mono and no(Recommended)suffix; option descriptions run inline code mono, notes ride the row's detail asem; Submit/Next's tooltip names only Enter (and Space on a multi-select)MCPAddWizard's native sheet asks one question per step: a phase strip (omp.mcpAdd.progressofomp.mcpAdd.phase, toned done/current/upcoming andneutralwhen no auth was needed), the question and its lead (omp.mcpAdd.title,omp.mcpAdd.tagfor optional fields,omp.mcpAdd.lead), then a mono field with a placeholder and its rule or refusal (omp.mcpAdd.field,tone: "error";omp.mcpAdd.note), choice rows with icons and mono tags (omp.mcpAdd.choices), status lines (omp.mcpAdd.status,omp.mcpAdd.checks,omp.mcpAdd.error) or the review rows (omp.mcpAdd.summary). Cancel, Back and Continue / Save server buttons run Ctrl+C, Esc and Enter instead of a key-hint strip. The connection test shows its own busy step, the OAuth client secret field is masked, and the review saves on Enter (no Yes/No choice)ReportPanel's native body carries the roleomp.report.bodyHookInputComponentdescribes a dock sheet (omp.overlay.hook-inputcol) likeHookEditorComponent's: the title's first line (omp.hook-input.title, the countdown asomp.hook-input.timer) over its further lines (omp.hook-input.detail), the field (omp.hook-input.field,tone: "error"while a submit was refused) with its placeholder, and Cancel / Submit buttons that run Esc / Enter; the key legend under the field is terminal-onlyJobsSheet's native body is a master–detail split (omp.jobs.split:omp.jobs.master|omp.jobs.detail): the job list grouped Running / Recent (omp.jobs.grouplabels), each row a type icon tinted by status with its duration, beside the selected job's status pill, live elapsed and Cancel job (omp.jobs.status), its task title or command (omp.jobs.title/omp.jobs.command), facts (omp.jobs.facts: agent, directory, pids, exit code, artifact) and output (omp.jobs.out,omp.jobs.nooutput); the footer counts running and recent jobs (omp.jobs.summary), and no jobs shows an empty state (omp.jobs.empty). Task jobs no longer draw anagentnode hereBtwHistoryPanel's native sheet is centered and reads like a mail reader: the questions as two-line rows (omp.btw.history, listomp.btw.list/omp.btw.list.idlewhile the answer has the keys) beside the selected thread (omp.btw.reader›omp.btw.thread›omp.btw.turn:omp.btw.question/omp.btw.followup,omp.btw.meta,omp.btw.answer,omp.btw.error), the follow-up field under the last answer (omp.btw.composer), and footer buttons Stop answer, Copy answer, Close and Follow up (Cancel and Send while composing) in place of the focus labels and key-hint strip; an empty history is anmdsheet (omp.btw.empty)
Fixed
CountdownTimer's nativeelapsedno longer sendsstopped: 0, which froze every native countdown (extension input, selector and editor prompts) at zero from the start- The native backend's focus now reaches a field inside an
overlay/pickersheet hoisted into the layer from a dock component (the MCP add wizard, login), so that field shows the live caret and focus ring MCPAddWizardkeeps a refused name or URL in its field, clears a stale refusal on Back, ignores a connection test that settles after the user stepped back, and Edit OAuth settings after a failed sign-in opens the settings again instead of doing nothing
Full Changelog: v18.10.0...v18.10.1