@saadnvd1/agent-os 0.3.542 → 0.3.543
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/Away/AwayToggle.tsx +1 -1
- package/components/SessionList/LoadGauge.tsx +1 -1
- package/components/SessionList/ProjectFilter.tsx +1 -1
- package/components/SessionList/RowShell.tsx +1 -1
- package/components/SessionList/RowSubtitle.tsx +2 -2
- package/components/SessionList/SessionShelves.tsx +4 -1
- package/components/SessionList/SidebarHeader.tsx +6 -6
- package/components/SessionList/SidebarSearch.tsx +2 -2
- package/components/SessionList/WorkspaceSwitcher.tsx +4 -33
- package/components/ThemeToggle.tsx +5 -1
- package/package.json +1 -1
|
@@ -51,7 +51,7 @@ export function AwayToggle() {
|
|
|
51
51
|
}
|
|
52
52
|
disabled={setAway.isPending}
|
|
53
53
|
className={cn(
|
|
54
|
-
"relative h-11 w-11 md:h-8 md:w-8",
|
|
54
|
+
"relative h-11 w-11 md:h-8 md:w-8 [@media(hover:none)]:md:h-11 [@media(hover:none)]:md:w-11",
|
|
55
55
|
away &&
|
|
56
56
|
"bg-amber-500/20 text-amber-700 ring-1 ring-amber-500/50 hover:bg-amber-500/30 dark:text-amber-300"
|
|
57
57
|
)}
|
|
@@ -37,7 +37,7 @@ export function LoadGauge() {
|
|
|
37
37
|
size="icon-sm"
|
|
38
38
|
aria-label={`Machine load ${load.level}. ${summary}`}
|
|
39
39
|
title={summary}
|
|
40
|
-
className="-ml-1.5 h-11 w-11 shrink-0 md:ml-0 md:h-8 md:w-6"
|
|
40
|
+
className="-ml-1.5 h-11 w-11 shrink-0 md:ml-0 md:h-8 md:w-6 [@media(hover:none)]:md:-ml-1.5 [@media(hover:none)]:md:h-11 [@media(hover:none)]:md:w-11"
|
|
41
41
|
>
|
|
42
42
|
<span className={cn("h-2 w-2 rounded-full", DOT[load.level])} />
|
|
43
43
|
</Button>
|
|
@@ -25,7 +25,7 @@ export function ProjectFilter({
|
|
|
25
25
|
<button
|
|
26
26
|
type="button"
|
|
27
27
|
className={cn(
|
|
28
|
-
"bg-card flex min-h-11 max-w-[
|
|
28
|
+
"bg-card flex min-h-11 max-w-[7.5rem] shrink items-center gap-1 rounded-xl px-3 text-sm shadow-xs md:min-h-9 [@media(hover:none)]:md:min-h-11",
|
|
29
29
|
current && "text-primary"
|
|
30
30
|
)}
|
|
31
31
|
>
|
|
@@ -61,7 +61,7 @@ export function RowSubtitle({
|
|
|
61
61
|
<LiveLine {...live} />
|
|
62
62
|
{group && (
|
|
63
63
|
<span
|
|
64
|
-
className="text-muted-foreground/70
|
|
64
|
+
className="text-muted-foreground/70 hidden min-w-0 shrink items-center gap-1 truncate text-xs @[14rem]:flex"
|
|
65
65
|
title={group.kind === "recipe" ? "A recipe run" : "A piece of a plan"}
|
|
66
66
|
>
|
|
67
67
|
{group.kind === "recipe" ? (
|
|
@@ -73,7 +73,7 @@ export function RowSubtitle({
|
|
|
73
73
|
</span>
|
|
74
74
|
)}
|
|
75
75
|
{(project || detail || usage) && (
|
|
76
|
-
<span className="text-muted-foreground/70 truncate text-xs">
|
|
76
|
+
<span className="text-muted-foreground/70 min-w-0 truncate text-xs">
|
|
77
77
|
{[usage && usageLabel(usage), detail?.slice(0, 200), project]
|
|
78
78
|
.filter(Boolean)
|
|
79
79
|
.join(" · ")}
|
|
@@ -48,7 +48,10 @@ function ShelfLabel({
|
|
|
48
48
|
type="button"
|
|
49
49
|
onClick={onToggle}
|
|
50
50
|
aria-expanded={!collapsed}
|
|
51
|
-
className={cn(
|
|
51
|
+
className={cn(
|
|
52
|
+
cls,
|
|
53
|
+
"hover:text-foreground min-h-11 w-full md:min-h-8 [@media(hover:none)]:md:min-h-11"
|
|
54
|
+
)}
|
|
52
55
|
>
|
|
53
56
|
{text}
|
|
54
57
|
</button>
|
|
@@ -62,15 +62,15 @@ export function SidebarHeader(props: SidebarHeaderProps) {
|
|
|
62
62
|
const workspaceId = props.workspace?.id ?? null;
|
|
63
63
|
const schedules = useSchedulesGlance(workspaceId);
|
|
64
64
|
return (
|
|
65
|
-
<div className="flex items-center gap-1 px-3 pt-3 pb-2">
|
|
66
|
-
<div className="flex min-w-
|
|
65
|
+
<div className="flex flex-wrap items-center gap-x-1 px-3 pt-3 pb-2">
|
|
66
|
+
<div className="flex min-w-[9.5rem] flex-1 items-center">
|
|
67
67
|
<WorkspaceSwitcher
|
|
68
68
|
workspaces={props.workspaces}
|
|
69
69
|
current={props.workspace}
|
|
70
70
|
/>
|
|
71
71
|
<LoadGauge />
|
|
72
72
|
</div>
|
|
73
|
-
<div className="flex shrink-0 items-center gap-0.5">
|
|
73
|
+
<div className="ml-auto flex shrink-0 items-center gap-0.5">
|
|
74
74
|
<AwayToggle />
|
|
75
75
|
<ADropdownMenu
|
|
76
76
|
trigger={
|
|
@@ -80,7 +80,7 @@ export function SidebarHeader(props: SidebarHeaderProps) {
|
|
|
80
80
|
aria-label={
|
|
81
81
|
schedules.failedText ? `More (${schedules.failedText})` : "More"
|
|
82
82
|
}
|
|
83
|
-
className="relative h-11 w-11 md:h-8 md:w-8"
|
|
83
|
+
className="relative h-11 w-11 md:h-8 md:w-8 [@media(hover:none)]:md:h-11 [@media(hover:none)]:md:w-11"
|
|
84
84
|
>
|
|
85
85
|
<MoreHorizontal className="h-4 w-4" />
|
|
86
86
|
{schedules.failed > 0 && (
|
|
@@ -88,7 +88,7 @@ export function SidebarHeader(props: SidebarHeaderProps) {
|
|
|
88
88
|
aria-hidden
|
|
89
89
|
className={cn(
|
|
90
90
|
failedDot,
|
|
91
|
-
"ring-background absolute top-2 right-2 ring-2 md:top-1 md:right-1"
|
|
91
|
+
"ring-background absolute top-2 right-2 ring-2 md:top-1 md:right-1 [@media(hover:none)]:md:top-2 [@media(hover:none)]:md:right-2"
|
|
92
92
|
)}
|
|
93
93
|
/>
|
|
94
94
|
)}
|
|
@@ -149,7 +149,7 @@ export function SidebarHeader(props: SidebarHeaderProps) {
|
|
|
149
149
|
<Button
|
|
150
150
|
size="icon-sm"
|
|
151
151
|
aria-label="New"
|
|
152
|
-
className="ml-0.5 h-11 w-11 rounded-[10px] md:h-8 md:w-8"
|
|
152
|
+
className="ml-0.5 h-11 w-11 rounded-[10px] md:h-8 md:w-8 [@media(hover:none)]:md:h-11 [@media(hover:none)]:md:w-11"
|
|
153
153
|
>
|
|
154
154
|
<Plus className="h-4 w-4" />
|
|
155
155
|
</Button>
|
|
@@ -7,7 +7,7 @@ import { sidebarUiActions } from "@/stores/sidebarUi";
|
|
|
7
7
|
// sessions too.
|
|
8
8
|
export function SidebarSearch({ query }: { query: string }) {
|
|
9
9
|
return (
|
|
10
|
-
<label className="bg-card text-muted-foreground focus-within:ring-primary/40 flex min-h-11 min-w-
|
|
10
|
+
<label className="bg-card text-muted-foreground focus-within:ring-primary/40 flex min-h-11 min-w-[6rem] flex-1 items-center gap-2 rounded-xl px-3 shadow-xs focus-within:ring-2 md:min-h-9 [@media(hover:none)]:md:min-h-11">
|
|
11
11
|
<Search className="h-3.5 w-3.5 shrink-0" />
|
|
12
12
|
<input
|
|
13
13
|
type="search"
|
|
@@ -28,7 +28,7 @@ export function SidebarSearch({ query }: { query: string }) {
|
|
|
28
28
|
type="button"
|
|
29
29
|
aria-label="Clear search"
|
|
30
30
|
onClick={() => sidebarUiActions.setQuery("")}
|
|
31
|
-
className="-mr-3 flex h-11 w-11 items-center justify-center md:h-7 md:w-7"
|
|
31
|
+
className="-mr-3 flex h-11 w-11 items-center justify-center md:h-7 md:w-7 [@media(hover:none)]:md:h-11 [@media(hover:none)]:md:w-11"
|
|
32
32
|
>
|
|
33
33
|
<X className="h-3.5 w-3.5" />
|
|
34
34
|
</button>
|
|
@@ -59,12 +59,11 @@ export function WorkspaceSwitcher({
|
|
|
59
59
|
<button
|
|
60
60
|
type="button"
|
|
61
61
|
title={name}
|
|
62
|
-
className="hover:bg-foreground/[0.04] -ml-1.5 flex min-h-11 min-w-0 items-center gap-2 rounded-lg px-2 md:min-h-9"
|
|
62
|
+
className="hover:bg-foreground/[0.04] -ml-1.5 flex min-h-11 min-w-0 items-center gap-2 rounded-lg px-2 md:min-h-9 [@media(hover:none)]:md:min-h-11"
|
|
63
63
|
>
|
|
64
|
-
<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
/>
|
|
64
|
+
<span className="truncate text-[15px] font-semibold tracking-tight">
|
|
65
|
+
{name}
|
|
66
|
+
</span>
|
|
68
67
|
<ChevronDown className="text-muted-foreground h-3.5 w-3.5 shrink-0" />
|
|
69
68
|
</button>
|
|
70
69
|
</DM.DropdownMenuTrigger>
|
|
@@ -190,31 +189,3 @@ export function WorkspaceSwitcher({
|
|
|
190
189
|
</>
|
|
191
190
|
);
|
|
192
191
|
}
|
|
193
|
-
|
|
194
|
-
const TAIL = 4;
|
|
195
|
-
|
|
196
|
-
// Cuts a name that doesn't fit in the middle ("All wo…aces"), so the end
|
|
197
|
-
// that tells similar names apart stays: the head truncates, the tail doesn't.
|
|
198
|
-
function MiddleTruncate({
|
|
199
|
-
text,
|
|
200
|
-
className,
|
|
201
|
-
}: {
|
|
202
|
-
text: string;
|
|
203
|
-
className?: string;
|
|
204
|
-
}) {
|
|
205
|
-
if (text.length <= TAIL * 2) {
|
|
206
|
-
return <span className={`truncate ${className}`}>{text}</span>;
|
|
207
|
-
}
|
|
208
|
-
// Screen readers get the name whole, not as two words.
|
|
209
|
-
return (
|
|
210
|
-
<span className={`flex min-w-0 ${className}`}>
|
|
211
|
-
<span className="sr-only">{text}</span>
|
|
212
|
-
<span aria-hidden className="truncate whitespace-pre">
|
|
213
|
-
{text.slice(0, -TAIL)}
|
|
214
|
-
</span>
|
|
215
|
-
<span aria-hidden className="shrink-0 whitespace-pre">
|
|
216
|
-
{text.slice(-TAIL)}
|
|
217
|
-
</span>
|
|
218
|
-
</span>
|
|
219
|
-
);
|
|
220
|
-
}
|
|
@@ -30,7 +30,11 @@ export function ThemeToggle() {
|
|
|
30
30
|
return (
|
|
31
31
|
<DropdownMenu>
|
|
32
32
|
<DropdownMenuTrigger asChild>
|
|
33
|
-
<Button
|
|
33
|
+
<Button
|
|
34
|
+
variant="ghost"
|
|
35
|
+
size="icon"
|
|
36
|
+
className="h-8 w-8 [@media(hover:none)]:md:h-11 [@media(hover:none)]:md:w-11"
|
|
37
|
+
>
|
|
34
38
|
<Palette className="h-4 w-4" />
|
|
35
39
|
<span className="sr-only">Change theme</span>
|
|
36
40
|
</Button>
|