feat: fix img pasting in new ink plus newline after tools

This commit is contained in:
Brooklyn Nicholson 2026-04-11 13:14:32 -05:00
parent b04248f4d5
commit 3fd5cf6e3c
8 changed files with 198 additions and 75 deletions

View file

@ -20,7 +20,15 @@ import { useCompletion } from './hooks/useCompletion.js'
import { useInputHistory } from './hooks/useInputHistory.js'
import { useQueue } from './hooks/useQueue.js'
import { writeOsc52Clipboard } from './lib/osc52.js'
import { buildToolTrailLine, compactPreview, fmtK, hasInterpolation, isToolTrailResultLine, pick, sameToolTrailGroup } from './lib/text.js'
import {
buildToolTrailLine,
compactPreview,
fmtK,
hasInterpolation,
isToolTrailResultLine,
pick,
sameToolTrailGroup
} from './lib/text.js'
import { DEFAULT_THEME, fromSkin, type Theme } from './theme.js'
import type {
ActiveTool,
@ -111,7 +119,9 @@ const toTranscriptMessages = (rows: unknown): Msg[] => {
let pendingTools: string[] = []
for (const row of rows) {
if (!row || typeof row !== 'object') continue
if (!row || typeof row !== 'object') {
continue
}
const role = (row as any).role
const text = (row as any).text
@ -120,18 +130,24 @@ const toTranscriptMessages = (rows: unknown): Msg[] => {
const name = (row as any).name ?? 'tool'
const ctx = (row as any).context ?? ''
pendingTools.push(buildToolTrailLine(name, ctx))
continue
}
if (typeof text !== 'string' || !text.trim()) continue
if (typeof text !== 'string' || !text.trim()) {
continue
}
if (role === 'assistant') {
const msg: Msg = { role, text }
if (pendingTools.length) {
msg.tools = pendingTools
pendingTools = []
}
result.push(msg)
continue
}
@ -2008,6 +2024,7 @@ export function App({ gw }: { gw: GatewayClient }) {
<ToolTrail
activity={busy ? activity : []}
animateCot={busy && !streaming}
padAfter={!!streaming}
t={theme}
tools={tools}
trail={turnTrail}