@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.
@@ -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-[8.5rem] shrink-0 items-center gap-1 rounded-xl px-3 text-sm shadow-xs md:min-h-9",
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
  >
@@ -65,7 +65,7 @@ export function RowShell({
65
65
  )}
66
66
  >
67
67
  {leading}
68
- <span className="flex min-w-[7rem] flex-1 flex-col leading-tight">
68
+ <span className="@container flex min-w-0 flex-1 flex-col leading-tight">
69
69
  {children}
70
70
  </span>
71
71
  {aside}
@@ -61,7 +61,7 @@ export function RowSubtitle({
61
61
  <LiveLine {...live} />
62
62
  {group && (
63
63
  <span
64
- className="text-muted-foreground/70 flex min-w-0 shrink-0 items-center gap-1 truncate text-xs"
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(cls, "hover:text-foreground min-h-11 w-full md:min-h-8")}
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-0 flex-1 items-center">
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-0 flex-1 items-center gap-2 rounded-xl px-3 shadow-xs focus-within:ring-2 md:min-h-9">
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
- <MiddleTruncate
65
- text={name}
66
- className="text-[15px] font-semibold tracking-tight"
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 variant="ghost" size="icon" className="h-8 w-8">
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>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saadnvd1/agent-os",
3
- "version": "0.3.542",
3
+ "version": "0.3.543",
4
4
  "description": "Self-hosted web UI for managing Claude Code sessions",
5
5
  "bin": {
6
6
  "agent-os": "scripts/agent-os"