diff --git a/apps/desktop/electron/main.ts b/apps/desktop/electron/main.ts
index b51bc4088b..229e080c55 100644
--- a/apps/desktop/electron/main.ts
+++ b/apps/desktop/electron/main.ts
@@ -5902,6 +5902,7 @@ function installDevToolsShortcut(window) {
if (input.key === 'F12') {
if (f12Blocked) {
event.preventDefault()
+
return
}
// Not blocked — fall through to open DevTools.
diff --git a/apps/desktop/src/app/chat/composer/ime-composition-dom-repro.test.tsx b/apps/desktop/src/app/chat/composer/ime-composition-dom-repro.test.tsx
index 917942cb43..79febaa0de 100644
--- a/apps/desktop/src/app/chat/composer/ime-composition-dom-repro.test.tsx
+++ b/apps/desktop/src/app/chat/composer/ime-composition-dom-repro.test.tsx
@@ -157,6 +157,7 @@ describe('composer IME composition — send button visibility (#39614)', () => {
if (composingRef.current) {
return
}
+
flushEditorToDraft(event.currentTarget)
}}
onKeyDown={handleKeyDown}
diff --git a/apps/desktop/src/app/chat/index.tsx b/apps/desktop/src/app/chat/index.tsx
index 12ac010ece..9f77e4f617 100644
--- a/apps/desktop/src/app/chat/index.tsx
+++ b/apps/desktop/src/app/chat/index.tsx
@@ -401,9 +401,7 @@ export const ChatView = memo(function ChatView({
// direct nav). Derived in render so the swap reads instantly: the same frame
// the id changes we drop the old transcript and show the loader, instead of
// waiting for the resume effect (which paints a frame later) to clear them.
- const routeSessionMismatch = isPrimary
- ? isRouteSessionMismatch(routedSessionId, selectedSessionId, sessions)
- : false
+ const routeSessionMismatch = isPrimary ? isRouteSessionMismatch(routedSessionId, selectedSessionId, sessions) : false
// The compact new-session pop-out skips the wordmark/tagline intro — it's a
// scratch window, not the full-height empty state.
diff --git a/apps/desktop/src/app/chat/route-session-state.ts b/apps/desktop/src/app/chat/route-session-state.ts
index 1c35b157f9..90c0c269df 100644
--- a/apps/desktop/src/app/chat/route-session-state.ts
+++ b/apps/desktop/src/app/chat/route-session-state.ts
@@ -25,7 +25,6 @@ export function isRouteSessionMismatch(
}
return !sessions.some(
- session =>
- sessionMatchesStoredId(session, routedSessionId) && sessionMatchesStoredId(session, selectedSessionId)
+ session => sessionMatchesStoredId(session, routedSessionId) && sessionMatchesStoredId(session, selectedSessionId)
)
}
diff --git a/apps/desktop/src/components/assistant-ui/thread/system-message.tsx b/apps/desktop/src/components/assistant-ui/thread/system-message.tsx
index 4fefc7a306..112611ffe0 100644
--- a/apps/desktop/src/components/assistant-ui/thread/system-message.tsx
+++ b/apps/desktop/src/components/assistant-ui/thread/system-message.tsx
@@ -60,9 +60,7 @@ export const SystemMessage: FC = () => {
steered
·
- {steerNote.groups.text.trim()}
- {' '}
-
+ {steerNote.groups.text.trim()}
)
}
@@ -93,8 +91,7 @@ export const SystemMessage: FC = () => {
·
>
- )}
- {' '}
+ )}{' '}
)
@@ -111,8 +108,7 @@ export const SystemMessage: FC = () => {
data-role="system"
data-slot="aui_system-message-root"
>
-
- {' '}
+ {' '}
)
diff --git a/apps/desktop/src/components/assistant-ui/thread/timeline-timestamp.tsx b/apps/desktop/src/components/assistant-ui/thread/timeline-timestamp.tsx
index 8a920aeb92..71773c1a66 100644
--- a/apps/desktop/src/components/assistant-ui/thread/timeline-timestamp.tsx
+++ b/apps/desktop/src/components/assistant-ui/thread/timeline-timestamp.tsx
@@ -45,8 +45,7 @@ export const TimelineTimestamp: FC<{
return null
}
- const completed =
- validUnixSeconds(completedAt) && completedAt > timestamp ? unixDate(completedAt) : null
+ const completed = validUnixSeconds(completedAt) && completedAt > timestamp ? unixDate(completedAt) : null
const validCompletedAt = completed && validUnixSeconds(completedAt) ? completedAt : undefined
const startLabel = formatTimelineRange(timestamp, undefined)
@@ -96,7 +95,8 @@ export const MessageTimelineTimestamp: FC<{
timelineTimestamp?: unknown
}
- const solePart = s.message.parts.length === 1 ? (s.message.parts[0] as { completedAt?: unknown; timestamp?: unknown }) : null
+ const solePart =
+ s.message.parts.length === 1 ? (s.message.parts[0] as { completedAt?: unknown; timestamp?: unknown }) : null
return (
Boolean(solePart) &&
diff --git a/apps/desktop/src/lib/chat-messages.ts b/apps/desktop/src/lib/chat-messages.ts
index 2a8edd941f..8f26f8c000 100644
--- a/apps/desktop/src/lib/chat-messages.ts
+++ b/apps/desktop/src/lib/chat-messages.ts
@@ -1270,7 +1270,9 @@ const assistantTimelineMatch = (stored: ChatMessage, local: ChatMessage) => {
}
const localToolIds = new Set(
- local.parts.filter(part => part.type === 'tool-call').map(part => (part.type === 'tool-call' ? part.toolCallId : ''))
+ local.parts
+ .filter(part => part.type === 'tool-call')
+ .map(part => (part.type === 'tool-call' ? part.toolCallId : ''))
)
const toolMatch = stored.parts.some(part => part.type === 'tool-call' && localToolIds.has(part.toolCallId))
@@ -1338,7 +1340,9 @@ export function reconcileLocalAssistantTimeline(
const unusedLocalParts = new Set(local.parts.map((_, index) => index))
const parts = message.parts.map(part => {
- const localIndex = local.parts.findIndex((candidate, index) => unusedLocalParts.has(index) && timelinePartMatch(part, candidate))
+ const localIndex = local.parts.findIndex(
+ (candidate, index) => unusedLocalParts.has(index) && timelinePartMatch(part, candidate)
+ )
if (localIndex === -1) {
return part
diff --git a/apps/desktop/src/lib/chat-runtime.ts b/apps/desktop/src/lib/chat-runtime.ts
index aaa594160d..c00dd185ea 100644
--- a/apps/desktop/src/lib/chat-runtime.ts
+++ b/apps/desktop/src/lib/chat-runtime.ts
@@ -536,7 +536,10 @@ export function coalesceToolOnlyAssistants(messages: ChatMessage[], cache: ToolM
...prev,
completedAt: [prev.completedAt, message.completedAt, ...message.parts.map(part => part.completedAt)]
.filter((value): value is number => value !== undefined)
- .reduce((latest, value) => (latest === undefined ? value : Math.max(latest, value)), undefined),
+ .reduce(
+ (latest, value) => (latest === undefined ? value : Math.max(latest, value)),
+ undefined
+ ),
parts: [...prev.parts, ...message.parts]
}
diff --git a/ui-tui/src/domain/messages.ts b/ui-tui/src/domain/messages.ts
index 1edac1e90f..86d2b29223 100644
--- a/ui-tui/src/domain/messages.ts
+++ b/ui-tui/src/domain/messages.ts
@@ -31,7 +31,8 @@ export const toTranscriptMessages = (rows: unknown): Msg[] => {
const { context, display_kind, name, role, text, timestamp } = row as TranscriptRow
- const createdAt = typeof timestamp === 'number' && Number.isFinite(timestamp) && timestamp > 0 ? timestamp : undefined
+ const createdAt =
+ typeof timestamp === 'number' && Number.isFinite(timestamp) && timestamp > 0 ? timestamp : undefined
if (role === 'tool') {
pending.push(buildToolTrailLine(name ?? 'tool', context ?? ''))