diff --git a/ui/desktop/src/components/BaseChat.tsx b/ui/desktop/src/components/BaseChat.tsx index 9f6657e2..f0b7f189 100644 --- a/ui/desktop/src/components/BaseChat.tsx +++ b/ui/desktop/src/components/BaseChat.tsx @@ -136,6 +136,17 @@ function BaseChatContent({ const isMobile = useIsMobile(); const { state: sidebarState } = useSidebar(); + const isMacOS = (window?.electron?.platform || 'darwin') === 'darwin'; + // When the sidebar is collapsed the chat spans full width and the top-left + // strip holds the floating controls (sidebar toggle / new-window / dashboard) + // plus, on macOS, the window traffic lights. Shrink the pill wrapper to fit and + // offset it PAST the controls so it neither overlaps them nor lets its + // -webkit-app-region: drag surface swallow their clicks (app-region is resolved + // by the compositor, so a full-width drag wrapper eats clicks even under a + // higher-z no-drag button). Expanded keeps the full-width draggable header strip + // — there the controls sit over the sidebar, not over this wrapper. + const sessionPillWrapperCls = + sidebarState === 'collapsed' ? `w-fit ${isMacOS ? 'ml-[184px]' : 'ml-[104px]'}` : 'w-full pl-4'; const setView = useNavigation(); const contentClassName = cn('pr-1 pb-10', (isMobile || sidebarState === 'collapsed') && 'pt-11'); @@ -676,7 +687,7 @@ function BaseChatContent({
@@ -688,7 +699,7 @@ function BaseChatContent({ // window — only the pill's own (inline-flex) bounding box is // marked no-drag (done inside SessionNamePill).
{workflow?.title && ( -
+
)} @@ -777,7 +788,7 @@ function BaseChatContent({
diff --git a/ui/desktop/src/components/BioRouterSidebar/AppSidebar.tsx b/ui/desktop/src/components/BioRouterSidebar/AppSidebar.tsx index a2d83334..a5366589 100644 --- a/ui/desktop/src/components/BioRouterSidebar/AppSidebar.tsx +++ b/ui/desktop/src/components/BioRouterSidebar/AppSidebar.tsx @@ -148,7 +148,7 @@ function RunningChatItem({
-
+
setOpen(true)} - className="group inline-flex w-full items-center gap-3 rounded-xl bg-background-default px-3 py-3 shadow-[0_10px_24px_-24px_rgba(32,25,15,0.38)] transition-[background-color,box-shadow] duration-150 hover:bg-background-medium/82 hover:shadow-[0_12px_26px_-22px_rgba(32,25,15,0.42)] focus:outline-none focus:ring-1 focus:ring-ring" + className="group inline-flex w-full items-center gap-3 rounded-xl border border-border-subtle bg-background-default px-3 py-3 transition-colors duration-150 hover:bg-background-medium/82 focus:outline-none focus:ring-1 focus:ring-ring" > - +

Knowledge

@@ -61,7 +64,7 @@ function KnowledgeViewInner() {

-
+
setChangeLogOpen(true)} previewSha={previewSha} diff --git a/ui/desktop/src/components/knowledge/graph/KnowledgeGraphPanel.tsx b/ui/desktop/src/components/knowledge/graph/KnowledgeGraphPanel.tsx index 0f01f69a..90299437 100644 --- a/ui/desktop/src/components/knowledge/graph/KnowledgeGraphPanel.tsx +++ b/ui/desktop/src/components/knowledge/graph/KnowledgeGraphPanel.tsx @@ -68,7 +68,7 @@ export function KnowledgeGraphPanel({ onOpenChangeLog, previewSha, onClearPrevie variant="secondary" size="sm" shape="round" - className="bg-background-muted/82 shadow-[0_8px_18px_-18px_rgba(32,25,15,0.32)] hover:bg-background-strong" + className="border border-border-subtle bg-background-muted/82 hover:bg-background-strong" onClick={() => void refresh()} disabled={!activeKbId || loading} title="Refresh graph" @@ -78,7 +78,7 @@ export function KnowledgeGraphPanel({ onOpenChangeLog, previewSha, onClearPrevie diff --git a/ui/desktop/src/components/sessions/SessionsInsights.tsx b/ui/desktop/src/components/sessions/SessionsInsights.tsx index 987e777b..64b6ad34 100644 --- a/ui/desktop/src/components/sessions/SessionsInsights.tsx +++ b/ui/desktop/src/components/sessions/SessionsInsights.tsx @@ -230,7 +230,7 @@ export function SessionInsights() {

diff --git a/ui/desktop/src/components/settings/SettingsView.tsx b/ui/desktop/src/components/settings/SettingsView.tsx index 38a92424..d7478d64 100644 --- a/ui/desktop/src/components/settings/SettingsView.tsx +++ b/ui/desktop/src/components/settings/SettingsView.tsx @@ -72,8 +72,11 @@ export default function SettingsView({ <>

- -

Settings

+ +

Settings

+

+ Manage models, chat behavior, and application preferences +

diff --git a/ui/desktop/src/components/settings/app/AppSettingsSection.tsx b/ui/desktop/src/components/settings/app/AppSettingsSection.tsx index dd217d15..007407f6 100644 --- a/ui/desktop/src/components/settings/app/AppSettingsSection.tsx +++ b/ui/desktop/src/components/settings/app/AppSettingsSection.tsx @@ -124,7 +124,7 @@ export default function AppSettingsSection({ scrollToSection }: AppSettingsSecti {/* Appearance */}
-

+

Appearance

@@ -217,7 +217,7 @@ export default function AppSettingsSection({ scrollToSection }: AppSettingsSecti {/* Theme */}
-

+

Theme

Customize the look and feel of BioRouter

@@ -230,7 +230,7 @@ export default function AppSettingsSection({ scrollToSection }: AppSettingsSecti {/* Help & Feedback */}
-

+

Help & Feedback

@@ -267,7 +267,7 @@ export default function AppSettingsSection({ scrollToSection }: AppSettingsSecti {!shouldShowUpdates && (

-

+

Version

@@ -290,7 +290,7 @@ export default function AppSettingsSection({ scrollToSection }: AppSettingsSecti {UPDATES_ENABLED && shouldShowUpdates && (
-

+

Updates

diff --git a/ui/desktop/src/components/settings/chat/ChatSettingsSection.tsx b/ui/desktop/src/components/settings/chat/ChatSettingsSection.tsx index 2283c5e6..b52f6342 100644 --- a/ui/desktop/src/components/settings/chat/ChatSettingsSection.tsx +++ b/ui/desktop/src/components/settings/chat/ChatSettingsSection.tsx @@ -10,7 +10,9 @@ export default function ChatSettingsSection() {

-

Mode

+

+ Mode +

Configure how BioRouter interacts with tools and extensions

@@ -22,7 +24,7 @@ export default function ChatSettingsSection() {
-

+

Response Styles

@@ -36,7 +38,7 @@ export default function ChatSettingsSection() {

-

+

Capabilities

@@ -52,7 +54,7 @@ export default function ChatSettingsSection() {

-

+

App SDK

@@ -67,7 +69,9 @@ export default function ChatSettingsSection() {

-

Editor

+

+ Editor +

@@ -76,7 +80,9 @@ export default function ChatSettingsSection() {
-

Project

+

+ Project +

diff --git a/ui/desktop/src/components/settings/config/ConfigSettings.tsx b/ui/desktop/src/components/settings/config/ConfigSettings.tsx index dc9ead7e..0303ee14 100644 --- a/ui/desktop/src/components/settings/config/ConfigSettings.tsx +++ b/ui/desktop/src/components/settings/config/ConfigSettings.tsx @@ -144,7 +144,7 @@ export default function ConfigSettings() { return (
-

+

Configuration

diff --git a/ui/desktop/src/components/settings/models/ModelsSection.tsx b/ui/desktop/src/components/settings/models/ModelsSection.tsx index dcbcc71f..29b5c976 100644 --- a/ui/desktop/src/components/settings/models/ModelsSection.tsx +++ b/ui/desktop/src/components/settings/models/ModelsSection.tsx @@ -83,7 +83,7 @@ export default function ModelsSection({ setView }: ModelsSectionProps) {

-

+

Current Model

@@ -107,7 +107,9 @@ export default function ModelsSection({ setView }: ModelsSectionProps) {
-

Reset

+

+ Reset +

diff --git a/ui/desktop/src/components/settings/models/subcomponents/SwitchModelModal.tsx b/ui/desktop/src/components/settings/models/subcomponents/SwitchModelModal.tsx index 93bca293..8de927f0 100644 --- a/ui/desktop/src/components/settings/models/subcomponents/SwitchModelModal.tsx +++ b/ui/desktop/src/components/settings/models/subcomponents/SwitchModelModal.tsx @@ -392,7 +392,7 @@ export const SwitchModelModal = ({ className={[ 'biorouter-modal-row flex items-start gap-3 py-2.5 px-3 rounded-xl cursor-pointer transition-colors duration-150', isSelected - ? '!border-border-default bg-background-medium shadow-sm' + ? '!border-border-default bg-background-medium' : 'hover:!border-border-default hover:bg-background-medium', ].join(' ')} > diff --git a/ui/desktop/src/components/settings/permission/PermissionSetting.tsx b/ui/desktop/src/components/settings/permission/PermissionSetting.tsx index fe02803d..db654171 100644 --- a/ui/desktop/src/components/settings/permission/PermissionSetting.tsx +++ b/ui/desktop/src/components/settings/permission/PermissionSetting.tsx @@ -81,7 +81,7 @@ export default function PermissionSettingsView({ onClose }: { onClose: () => voi }, []); return ( -
+
@@ -102,7 +102,9 @@ export default function PermissionSettingsView({ onClose }: { onClose: () => voi
-

Permission Rules

+

+ Permission Rules +

Hidden instructions that will be passed to the provider to help direct and add context to your responses. diff --git a/ui/desktop/src/components/skills/SkillsView.tsx b/ui/desktop/src/components/skills/SkillsView.tsx index c3bfa78b..92f5ba13 100644 --- a/ui/desktop/src/components/skills/SkillsView.tsx +++ b/ui/desktop/src/components/skills/SkillsView.tsx @@ -163,43 +163,41 @@ export default function SkillsView() { data-search-scroll-area > {/* Header */} -

- -
-

Skills

-

- Reusable instruction sets that guide BioRouter's behavior.{' '} - {getSearchShortcutText()} to search. -

-
-
- - - -
-
-
+ +
+

Skills

+

+ Reusable instruction sets that guide BioRouter's behavior. {getSearchShortcutText()}{' '} + to search. +

+
+
+ + + +
+
{/* List */}
-
+
-

Report a Problem

-

+

Report a Problem

+

You can download a diagnostics zip file to share with the team, or file a bug directly on GitHub with your system details pre-filled. A diagnostics report contains the following:

-
    +
    • Basic system info
    • Your current session messages
    • Recent log files
    • Configuration settings
    -

    +

    Warning: If your session contains sensitive information, do not share the diagnostics file publicly.

    -

    +

    If you file a bug, consider attaching the diagnostics report to it.

{isDownloading && ( -
+
Preparing diagnostics bundle...
diff --git a/ui/desktop/src/components/ui/dropdown-menu.tsx b/ui/desktop/src/components/ui/dropdown-menu.tsx index ff3962d4..0598a7be 100644 --- a/ui/desktop/src/components/ui/dropdown-menu.tsx +++ b/ui/desktop/src/components/ui/dropdown-menu.tsx @@ -149,7 +149,7 @@ function DropdownMenuSeparator({ return ( ); @@ -201,7 +201,7 @@ function DropdownMenuSubContent({ ) { data-slot="sidebar-inset" className={cn( 'biorouter-sidebar-inset-depth bg-background relative flex w-full flex-1 flex-col min-w-0', - // For inset variant (used in the app) - 'md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm', + // For inset variant (used in the app): flush against the straight, + // full-height sidebar — no rounded corners or floating shadow, which + // otherwise leave a notch where the rounded panel meets the square sidebar. + 'md:peer-data-[variant=inset]:ml-0', // For offcanvas variant - ensure content doesn't go under sidebar 'md:peer-data-[collapsible=offcanvas]:peer-data-[state=expanded]:ml-[var(--sidebar-width)]', 'md:peer-data-[collapsible=offcanvas]:peer-data-[state=collapsed]:ml-0', diff --git a/ui/desktop/src/components/workflows/CreateEditWorkflowModal.tsx b/ui/desktop/src/components/workflows/CreateEditWorkflowModal.tsx index f7289e74..2c55d6f8 100644 --- a/ui/desktop/src/components/workflows/CreateEditWorkflowModal.tsx +++ b/ui/desktop/src/components/workflows/CreateEditWorkflowModal.tsx @@ -434,7 +434,7 @@ export default function CreateEditWorkflowModal({ {copied ? ( ) : ( - + )} {copied ? 'Copied!' : 'Copy'} diff --git a/ui/desktop/src/components/workflows/WorkflowActivities.tsx b/ui/desktop/src/components/workflows/WorkflowActivities.tsx index e3bfbeac..696f4d06 100644 --- a/ui/desktop/src/components/workflows/WorkflowActivities.tsx +++ b/ui/desktop/src/components/workflows/WorkflowActivities.tsx @@ -31,7 +31,7 @@ export default function WorkflowActivities({ return (
{messagePill && ( -
+
append(substitutedContent)} title={substitutedContent.length > 60 ? substitutedContent : undefined} - className="cursor-pointer px-3 py-1.5 text-sm hover:bg-background-medium transition-colors" + className="cursor-pointer px-3 py-1.5 text-sm border border-border-subtle [box-shadow:none] hover:bg-background-medium transition-colors" > {substitutedContent.length > 60 ? substitutedContent.slice(0, 60) + '...' diff --git a/ui/desktop/src/components/workflows/WorkflowInfoModal.tsx b/ui/desktop/src/components/workflows/WorkflowInfoModal.tsx index e5f3782d..1a628bd9 100644 --- a/ui/desktop/src/components/workflows/WorkflowInfoModal.tsx +++ b/ui/desktop/src/components/workflows/WorkflowInfoModal.tsx @@ -40,7 +40,7 @@ export default function WorkflowInfoModal({