diff --git a/apps/desktop/src/app/chat/composer/index.tsx b/apps/desktop/src/app/chat/composer/index.tsx
index dbcef7bfe28..19b71ed6543 100644
--- a/apps/desktop/src/app/chat/composer/index.tsx
+++ b/apps/desktop/src/app/chat/composer/index.tsx
@@ -1043,9 +1043,7 @@ export function ChatBar({
- {isHelpHint && }
- {trigger && !argStageEmpty && (
-
- )}
- {!poppedOut && (
-
- )}
- {/* Drag region: covers the transparent grab margin around the surface.
+ {isHelpHint && }
+ {trigger && !argStageEmpty && (
+
+ )}
+ {!poppedOut && (
+
+ )}
+ {/* Drag region: covers the transparent grab margin around the surface.
The surface sits on top (z-4) so only the exposed ring receives this
element's hover/cursor — grab cursor + a diagonal hatch (/////)
appear when you hover the draggable margin, never over the input.
The hatch pattern + opacity ladder live in styles.css. */}
- {popoutAllowed && (
-
- )}
-
-
+ {popoutAllowed && (
-
+ )}
+
- {/* Contribution seams: banners above, a row below, inline
- additions beside the "+" menu and before the controls.
- All four render nothing until something contributes. */}
-
-
-
- {queueEdit && editingQueuedPrompt && (
-
-
- {t.composer.editingQueuedInComposer}
-
-
-
-
-
-
- )}
- {attachments.length > 0 && }
+
+
-
- {contextMenu}
-
-
-
{input}
-
-
- {controls}
+ {/* Contribution seams: banners above, a row below, inline
+ additions beside the "+" menu and before the controls.
+ All four render nothing until something contributes. */}
+
+
+
+ {queueEdit && editingQueuedPrompt && (
+
+
+ {t.composer.editingQueuedInComposer}
+
+
+
+
+
+
+ )}
+ {attachments.length > 0 && }
+
+
+ {contextMenu}
+
+
+
{input}
+
+
+ {controls}
+
+
-
-
{/* Underside: chrome-free strip BELOW the composer. Outside the root
for the same reason as the micro actions — it must not fall inside
diff --git a/apps/desktop/src/app/command-palette/index.tsx b/apps/desktop/src/app/command-palette/index.tsx
index ff7af6b5c91..ce82571d7d2 100644
--- a/apps/desktop/src/app/command-palette/index.tsx
+++ b/apps/desktop/src/app/command-palette/index.tsx
@@ -277,7 +277,9 @@ const PaletteRow = memo(function PaletteRow({
)}
{item.detail && {item.detail}}
- {combo && }
+ {combo && (
+
+ )}
{item.to && }
{item.active && }
diff --git a/apps/desktop/src/app/session/hooks/use-session-actions/utils.ts b/apps/desktop/src/app/session/hooks/use-session-actions/utils.ts
index 019328d21c5..2c0913fb6dc 100644
--- a/apps/desktop/src/app/session/hooks/use-session-actions/utils.ts
+++ b/apps/desktop/src/app/session/hooks/use-session-actions/utils.ts
@@ -100,16 +100,8 @@ const _chatMessageFieldsExhaustive: {
[K in Exclude]: never
} = {}
-const COMPARED_FIELDS = [
- 'id',
- 'role',
- 'pending',
- 'error',
- 'hidden',
- 'branchGroupId',
- 'interim',
- 'reactions'
-] as const
+const COMPARED_FIELDS = ['id', 'role', 'pending', 'error', 'hidden', 'branchGroupId', 'interim', 'reactions'] as const
+
const IGNORED_FIELDS = ['timestamp', 'attachmentRefs', 'parts', 'rowId'] as const
// Compile-time check: every ChatMessagePart discriminant must be handled by
@@ -193,10 +185,7 @@ export function chatReactionsEquivalent(a: ChatMessage['reactions'], b: ChatMess
return (
aList.length === bList.length &&
- aList.every(
- (reaction, index) =>
- reaction.emoji === bList[index].emoji && reaction.author === bList[index].author
- )
+ aList.every((reaction, index) => reaction.emoji === bList[index].emoji && reaction.author === bList[index].author)
)
}
diff --git a/apps/desktop/src/components/assistant-ui/thread/message-reactions.tsx b/apps/desktop/src/components/assistant-ui/thread/message-reactions.tsx
index 749335b1c38..05d07a5b12f 100644
--- a/apps/desktop/src/components/assistant-ui/thread/message-reactions.tsx
+++ b/apps/desktop/src/components/assistant-ui/thread/message-reactions.tsx
@@ -117,10 +117,7 @@ export const ReactionPicker: FC<{
// Opt this one surface out of the shared popover glass: emoji hover
// tints at 15% alpha are unreadable over blurred transcript text.
// Overriding the local surface var keeps the arrow matched for free.
- className={cn(
- 'w-auto p-1 [--popover-surface:var(--ui-bg-elevated)]',
- !expanded && 'flex gap-0.5'
- )}
+ className={cn('w-auto p-1 [--popover-surface:var(--ui-bg-elevated)]', !expanded && 'flex gap-0.5')}
onCloseAutoFocus={event => event.preventDefault()}
side="top"
>
diff --git a/apps/desktop/src/store/projects.ts b/apps/desktop/src/store/projects.ts
index 22e9ce2af81..ca4511e6186 100644
--- a/apps/desktop/src/store/projects.ts
+++ b/apps/desktop/src/store/projects.ts
@@ -1128,7 +1128,11 @@ export async function openFolderAsProject(dir?: string): Promise {
setSidebarAgentsGrouped(true)
enterProject(existing)
} else {
- const name = target.replace(/[/\\]+$/, '').split(/[/\\]/).pop() || target
+ const name =
+ target
+ .replace(/[/\\]+$/, '')
+ .split(/[/\\]/)
+ .pop() || target
try {
const created = await createProject({ name, folders: [target], primaryPath: target, use: true })
diff --git a/apps/desktop/src/store/reactions.ts b/apps/desktop/src/store/reactions.ts
index c8c2b414a8a..c75af2b81f1 100644
--- a/apps/desktop/src/store/reactions.ts
+++ b/apps/desktop/src/store/reactions.ts
@@ -62,10 +62,7 @@ export async function toggleMessageReaction(
const gateway = activeGateway()
if (!sessionId || !gateway) {
- notifyError(
- new Error(!sessionId ? 'No active session' : 'Gateway not connected'),
- 'Could not react'
- )
+ notifyError(new Error(!sessionId ? 'No active session' : 'Gateway not connected'), 'Could not react')
return
}