From a78541a341152e29b2a4590a3635d79f543610bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sun, 16 Aug 2026 02:46:26 +0000 Subject: [PATCH] circle-play for the background job button, at full strength MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit White rather than muted, 18px rather than 16. Its neighbours on that row are pickers — they report what is already selected — and this is the only control there that does something, so it should not be wearing the same recessive grey as a label. The glyph was a radio tower, chosen because a play button implies one-shot. That reasoning was too clever: most of what gets started here is a long-running process, and a watcher is still something you press start on. Recognisable beats precise at this size. The dialog's own title icon changes with it. A button and the thing it opens wearing different glyphs is a small lie about them being the same feature. tsgo clean, frontend builds. Co-Authored-By: Claude Opus 5 --- .../apps/Chat/components/BackgroundJobDialog.tsx | 4 ++-- .../src/apps/Chat/components/ModelSelector.tsx | 14 ++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/workspaces/officerdev/src/apps/Chat/components/BackgroundJobDialog.tsx b/src/workspaces/officerdev/src/apps/Chat/components/BackgroundJobDialog.tsx index cb4a79b9..b1d1e5cf 100644 --- a/src/workspaces/officerdev/src/apps/Chat/components/BackgroundJobDialog.tsx +++ b/src/workspaces/officerdev/src/apps/Chat/components/BackgroundJobDialog.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { Radio } from 'lucide-react'; +import { CirclePlay } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Dialog, @@ -87,7 +87,7 @@ export const BackgroundJobDialog = ({ open, onOpenChange, cwd, onSubmit }: Backg - + Background job diff --git a/src/workspaces/officerdev/src/apps/Chat/components/ModelSelector.tsx b/src/workspaces/officerdev/src/apps/Chat/components/ModelSelector.tsx index 06be1c5b..72636411 100644 --- a/src/workspaces/officerdev/src/apps/Chat/components/ModelSelector.tsx +++ b/src/workspaces/officerdev/src/apps/Chat/components/ModelSelector.tsx @@ -1,5 +1,5 @@ import { useEffect } from 'react'; -import { Radio } from 'lucide-react'; +import { CirclePlay } from 'lucide-react'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import type { ModelOption } from 'state/useModels'; import { getProviderDisplayName } from 'state/useModels'; @@ -126,15 +126,21 @@ export function ModelSelector({ )} {/* Background job. Sits between the harness (left) and the model (right), in the gap `justify-between` already leaves — session-level, like its neighbours, rather than about the - message being typed. `Radio` because it listens; a play button would imply one-shot. */} + message being typed. + + Full-strength and a size up, unlike its muted neighbours: those are pickers reporting what is + already set, and this is the one control on this row that DOES something. The earlier glyph was + a radio tower, on the reasoning that a play button implies one-shot — but most of what gets + started here is a long-running process, and a watcher is still something you press start on. + Recognisable beats precise at 18px. */} {onBackgroundJob && ( )} {/* The thinking toggle used to render here. It is gone because it did nothing: `thinking` is