@tonyclaw/agent-inspector 3.0.6 → 3.0.7

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.
Files changed (37) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-DsvO6QyJ.js → CompareDrawer-C0Kbsm-Q.js} +1 -1
  3. package/.output/public/assets/{ProxyViewerContainer-CfP-komD.js → ProxyViewerContainer-p-rpYyiF.js} +7 -7
  4. package/.output/public/assets/{ReplayDialog-CQlLX1Uo.js → ReplayDialog-CM3dhP8v.js} +1 -1
  5. package/.output/public/assets/{RequestAnatomy-m1q-uVTl.js → RequestAnatomy-fa0JXy5p.js} +1 -1
  6. package/.output/public/assets/{ResponseView-DuLLeYSh.js → ResponseView-Bq6sC7Ay.js} +2 -2
  7. package/.output/public/assets/{StreamingChunkSequence-CN4aRFBx.js → StreamingChunkSequence-CGOun3Df.js} +1 -1
  8. package/.output/public/assets/{_sessionId-CWP4pxOU.js → _sessionId-D5fYH2C0.js} +1 -1
  9. package/.output/public/assets/{index-zfZUz67K.js → index-BEsqvywM.js} +1 -1
  10. package/.output/public/assets/index-C29Olfzt.js +1 -0
  11. package/.output/public/assets/index-DgANE0r3.css +1 -0
  12. package/.output/public/assets/{json-viewer-_4r1LBBE.js → json-viewer-B0QRbMSf.js} +1 -1
  13. package/.output/public/assets/{main-C_nEHNUM.js → main-CuKZD7n0.js} +2 -2
  14. package/.output/server/{_sessionId-CTqCAmUF.mjs → _sessionId-DdBTK3qm.mjs} +2 -2
  15. package/.output/server/_ssr/{CompareDrawer-D6b6TZ-O.mjs → CompareDrawer-m82cVZ73.mjs} +3 -3
  16. package/.output/server/_ssr/{ProxyViewerContainer-Dp7Va9_T.mjs → ProxyViewerContainer-7geuf78f.mjs} +43 -43
  17. package/.output/server/_ssr/{ReplayDialog-D_KWQ1GY.mjs → ReplayDialog-B8RlWLLH.mjs} +3 -3
  18. package/.output/server/_ssr/{RequestAnatomy-CPubXjMX.mjs → RequestAnatomy-BE7pmwpv.mjs} +2 -2
  19. package/.output/server/_ssr/{ResponseView-CsTiNoOE.mjs → ResponseView-D-sDsdQr.mjs} +2 -2
  20. package/.output/server/_ssr/{StreamingChunkSequence-Bgbzt23U.mjs → StreamingChunkSequence-DU_hThJr.mjs} +2 -2
  21. package/.output/server/_ssr/{index-P1gSpuM5.mjs → index-D0sV8UbE.mjs} +2 -2
  22. package/.output/server/_ssr/index.mjs +2 -2
  23. package/.output/server/_ssr/{json-viewer-10ciVGnc.mjs → json-viewer-CaDh1zrw.mjs} +2 -2
  24. package/.output/server/_ssr/{router-BJJ0VhsB.mjs → router-Zh2iZ_u0.mjs} +4 -4
  25. package/.output/server/{_tanstack-start-manifest_v-CltlYL3I.mjs → _tanstack-start-manifest_v-LCE-2AaF.mjs} +1 -1
  26. package/.output/server/index.mjs +73 -73
  27. package/package.json +1 -1
  28. package/src/components/ProxyViewer.tsx +13 -13
  29. package/src/components/alerts/AlertsDialog.tsx +3 -3
  30. package/src/components/ecosystem/AgentLabDialog.tsx +11 -9
  31. package/src/components/groups/GroupsDialog.tsx +3 -3
  32. package/src/components/providers/ImportWizardDialog.tsx +1 -1
  33. package/src/components/providers/ProviderCard.tsx +4 -4
  34. package/src/components/proxy-viewer/CompareDrawer.tsx +1 -1
  35. package/src/components/proxy-viewer/ConversationHeader.tsx +2 -2
  36. package/.output/public/assets/index-0pt1umWP.css +0 -1
  37. package/.output/public/assets/index-DSUEOPbC.js +0 -1
@@ -35,117 +35,117 @@ const headers = ((m) => function headersRouteRule(event) {
35
35
  }
36
36
  });
37
37
  const assets = {
38
- "/assets/CompareDrawer-DsvO6QyJ.js": {
38
+ "/assets/alibaba-TTwafVwX.svg": {
39
+ "type": "image/svg+xml",
40
+ "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
41
+ "mtime": "2026-07-07T03:30:05.671Z",
42
+ "size": 5915,
43
+ "path": "../public/assets/alibaba-TTwafVwX.svg"
44
+ },
45
+ "/assets/index-C29Olfzt.js": {
39
46
  "type": "text/javascript; charset=utf-8",
40
- "etag": '"4bbf-neNUNNWS2aRLlwwzlzUnpCV9X7Q"',
41
- "mtime": "2026-07-07T03:16:53.329Z",
42
- "size": 19391,
43
- "path": "../public/assets/CompareDrawer-DsvO6QyJ.js"
47
+ "etag": '"74-s+7/jMd3WYqZzQ3XOcigwii5CRc"',
48
+ "mtime": "2026-07-07T03:30:05.671Z",
49
+ "size": 116,
50
+ "path": "../public/assets/index-C29Olfzt.js"
44
51
  },
45
- "/assets/index-0pt1umWP.css": {
46
- "type": "text/css; charset=utf-8",
47
- "etag": '"2281f-b6adbSBuuyRm1qef8XcY8zI8Tvw"',
48
- "mtime": "2026-07-07T03:16:53.329Z",
49
- "size": 141343,
50
- "path": "../public/assets/index-0pt1umWP.css"
52
+ "/assets/CompareDrawer-C0Kbsm-Q.js": {
53
+ "type": "text/javascript; charset=utf-8",
54
+ "etag": '"4bc3-3/VJbR0ecEp8fqbT2a5kapBN4fQ"',
55
+ "mtime": "2026-07-07T03:30:05.672Z",
56
+ "size": 19395,
57
+ "path": "../public/assets/CompareDrawer-C0Kbsm-Q.js"
51
58
  },
52
- "/assets/index-DSUEOPbC.js": {
59
+ "/assets/json-viewer-B0QRbMSf.js": {
53
60
  "type": "text/javascript; charset=utf-8",
54
- "etag": '"74-OxAYH3UQoN48eatHx4yL09xqgvs"',
55
- "mtime": "2026-07-07T03:16:53.329Z",
56
- "size": 116,
57
- "path": "../public/assets/index-DSUEOPbC.js"
61
+ "etag": '"1ae6-HDeKTwqcL77vuf9Xf8Mztpyi9c0"',
62
+ "mtime": "2026-07-07T03:30:05.672Z",
63
+ "size": 6886,
64
+ "path": "../public/assets/json-viewer-B0QRbMSf.js"
58
65
  },
59
- "/assets/index-zfZUz67K.js": {
66
+ "/assets/index-BEsqvywM.js": {
60
67
  "type": "text/javascript; charset=utf-8",
61
- "etag": '"1cd2c-L9qOZ3f8PNUAGiT0rnnoST6YWfg"',
62
- "mtime": "2026-07-07T03:16:53.329Z",
68
+ "etag": '"1cd2c-4JNStjVbTapY8ZiFdMrGpVJbzaM"',
69
+ "mtime": "2026-07-07T03:30:05.672Z",
63
70
  "size": 118060,
64
- "path": "../public/assets/index-zfZUz67K.js"
71
+ "path": "../public/assets/index-BEsqvywM.js"
65
72
  },
66
- "/assets/minimax-BPMzvuL-.jpeg": {
67
- "type": "image/jpeg",
68
- "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
69
- "mtime": "2026-07-07T03:16:53.328Z",
70
- "size": 6918,
71
- "path": "../public/assets/minimax-BPMzvuL-.jpeg"
73
+ "/assets/index-DgANE0r3.css": {
74
+ "type": "text/css; charset=utf-8",
75
+ "etag": '"22822-3pXTBm3VZrblIU9z3J9JDN7tcyw"',
76
+ "mtime": "2026-07-07T03:30:05.671Z",
77
+ "size": 141346,
78
+ "path": "../public/assets/index-DgANE0r3.css"
72
79
  },
73
- "/assets/json-viewer-_4r1LBBE.js": {
80
+ "/assets/main-CuKZD7n0.js": {
74
81
  "type": "text/javascript; charset=utf-8",
75
- "etag": '"1ae6-Irtd3+8DFA2Z/Oz+6RoXClR8clw"',
76
- "mtime": "2026-07-07T03:16:53.329Z",
77
- "size": 6886,
78
- "path": "../public/assets/json-viewer-_4r1LBBE.js"
82
+ "etag": '"512fd-5AcmxJQrVhDjQwawGVXebWzVm+8"',
83
+ "mtime": "2026-07-07T03:30:05.672Z",
84
+ "size": 332541,
85
+ "path": "../public/assets/main-CuKZD7n0.js"
79
86
  },
80
- "/assets/ReplayDialog-CQlLX1Uo.js": {
87
+ "/assets/ReplayDialog-CM3dhP8v.js": {
81
88
  "type": "text/javascript; charset=utf-8",
82
- "etag": '"31d6-QUb3xhIgyzB/nFNkjGPh1V87D+8"',
83
- "mtime": "2026-07-07T03:16:53.329Z",
89
+ "etag": '"31d6-9NTEpX75drhjb91rAk+PyzE3Ffs"',
90
+ "mtime": "2026-07-07T03:30:05.672Z",
84
91
  "size": 12758,
85
- "path": "../public/assets/ReplayDialog-CQlLX1Uo.js"
92
+ "path": "../public/assets/ReplayDialog-CM3dhP8v.js"
86
93
  },
87
- "/assets/main-C_nEHNUM.js": {
88
- "type": "text/javascript; charset=utf-8",
89
- "etag": '"512fd-52gkbjgsqFGOTrK9SwcjAR0fqb4"',
90
- "mtime": "2026-07-07T03:16:53.329Z",
91
- "size": 332541,
92
- "path": "../public/assets/main-C_nEHNUM.js"
94
+ "/assets/minimax-BPMzvuL-.jpeg": {
95
+ "type": "image/jpeg",
96
+ "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
97
+ "mtime": "2026-07-07T03:30:05.671Z",
98
+ "size": 6918,
99
+ "path": "../public/assets/minimax-BPMzvuL-.jpeg"
93
100
  },
94
- "/assets/RequestAnatomy-m1q-uVTl.js": {
101
+ "/assets/RequestAnatomy-fa0JXy5p.js": {
95
102
  "type": "text/javascript; charset=utf-8",
96
- "etag": '"43f2-kRHIkcpQkfNXmUqtzlXz5Bl+zf0"',
97
- "mtime": "2026-07-07T03:16:53.329Z",
103
+ "etag": '"43f2-zAYk5x91KzRRJ64tCmBGM0YQM78"',
104
+ "mtime": "2026-07-07T03:30:05.672Z",
98
105
  "size": 17394,
99
- "path": "../public/assets/RequestAnatomy-m1q-uVTl.js"
106
+ "path": "../public/assets/RequestAnatomy-fa0JXy5p.js"
100
107
  },
101
- "/assets/ResponseView-DuLLeYSh.js": {
108
+ "/assets/StreamingChunkSequence-CGOun3Df.js": {
102
109
  "type": "text/javascript; charset=utf-8",
103
- "etag": '"47fa-l3OUJeUgO0oj1UT9vgXjilhwNEw"',
104
- "mtime": "2026-07-07T03:16:53.329Z",
105
- "size": 18426,
106
- "path": "../public/assets/ResponseView-DuLLeYSh.js"
107
- },
108
- "/assets/alibaba-TTwafVwX.svg": {
109
- "type": "image/svg+xml",
110
- "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
111
- "mtime": "2026-07-07T03:16:53.328Z",
112
- "size": 5915,
113
- "path": "../public/assets/alibaba-TTwafVwX.svg"
110
+ "etag": '"dd6-uVBRgD1iZ+bzNCittGBxPQnS57s"',
111
+ "mtime": "2026-07-07T03:30:05.672Z",
112
+ "size": 3542,
113
+ "path": "../public/assets/StreamingChunkSequence-CGOun3Df.js"
114
114
  },
115
115
  "/assets/zhipuai-BPNAnxo-.svg": {
116
116
  "type": "image/svg+xml",
117
117
  "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
118
- "mtime": "2026-07-07T03:16:53.328Z",
118
+ "mtime": "2026-07-07T03:30:05.671Z",
119
119
  "size": 11256,
120
120
  "path": "../public/assets/zhipuai-BPNAnxo-.svg"
121
121
  },
122
- "/assets/_sessionId-CWP4pxOU.js": {
122
+ "/assets/_sessionId-D5fYH2C0.js": {
123
123
  "type": "text/javascript; charset=utf-8",
124
- "etag": '"36c-J74Y+Qo3HXpibkQqcgDBULVLGW4"',
125
- "mtime": "2026-07-07T03:16:53.329Z",
124
+ "etag": '"36c-T0Z2CDujLBhIqkZaWr7QMjUQmLY"',
125
+ "mtime": "2026-07-07T03:30:05.672Z",
126
126
  "size": 876,
127
- "path": "../public/assets/_sessionId-CWP4pxOU.js"
127
+ "path": "../public/assets/_sessionId-D5fYH2C0.js"
128
128
  },
129
- "/assets/StreamingChunkSequence-CN4aRFBx.js": {
129
+ "/assets/ResponseView-Bq6sC7Ay.js": {
130
130
  "type": "text/javascript; charset=utf-8",
131
- "etag": '"dd6-2UvXJrnPm4g6fFFFYJ49Epv69bE"',
132
- "mtime": "2026-07-07T03:16:53.329Z",
133
- "size": 3542,
134
- "path": "../public/assets/StreamingChunkSequence-CN4aRFBx.js"
131
+ "etag": '"47fa-1d2SEiO5LDVauvFaf3awOUXVtu0"',
132
+ "mtime": "2026-07-07T03:30:05.672Z",
133
+ "size": 18426,
134
+ "path": "../public/assets/ResponseView-Bq6sC7Ay.js"
135
135
  },
136
136
  "/assets/qwen-CONDcHqt.png": {
137
137
  "type": "image/png",
138
138
  "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
139
- "mtime": "2026-07-07T03:16:53.328Z",
139
+ "mtime": "2026-07-07T03:30:05.671Z",
140
140
  "size": 357059,
141
141
  "path": "../public/assets/qwen-CONDcHqt.png"
142
142
  },
143
- "/assets/ProxyViewerContainer-CfP-komD.js": {
143
+ "/assets/ProxyViewerContainer-p-rpYyiF.js": {
144
144
  "type": "text/javascript; charset=utf-8",
145
- "etag": '"b4969-/yQK6/qgiUKGLd4XgJTPqx6f2BU"',
146
- "mtime": "2026-07-07T03:16:53.329Z",
147
- "size": 739689,
148
- "path": "../public/assets/ProxyViewerContainer-CfP-komD.js"
145
+ "etag": '"b4a83-phSZuesX9+pumw3nmK0JBX5WjYc"',
146
+ "mtime": "2026-07-07T03:30:05.672Z",
147
+ "size": 739971,
148
+ "path": "../public/assets/ProxyViewerContainer-p-rpYyiF.js"
149
149
  }
150
150
  };
151
151
  function readAsset(id) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonyclaw/agent-inspector",
3
- "version": "3.0.6",
3
+ "version": "3.0.7",
4
4
  "type": "module",
5
5
  "description": "Agent observability and knowledge capture layer for AI coding tools.",
6
6
  "license": "MIT",
@@ -1294,12 +1294,12 @@ function BrandHeader({
1294
1294
  if (compact) {
1295
1295
  return (
1296
1296
  <div className="bg-white/[0.035] shadow-[inset_0_1px_0_rgba(255,255,255,0.045),0_16px_44px_rgba(0,0,0,0.18)] rounded-[8px] p-3">
1297
- <div className="flex items-start justify-between gap-3">
1298
- <div className="flex min-w-0 items-start gap-2">
1297
+ <div className="flex flex-wrap items-start justify-between gap-3">
1298
+ <div className="flex min-w-fit items-start gap-2">
1299
1299
  <CrabFamily compact={true} entrancePhase={crabEntrancePhase} />
1300
- <div className="min-w-0">
1301
- <div className="flex min-w-0 items-baseline gap-2">
1302
- <span className="truncate text-base font-bold">Inspector</span>
1300
+ <div className="min-w-fit">
1301
+ <div className="flex min-w-fit flex-wrap items-baseline gap-x-2 gap-y-0.5">
1302
+ <span className="whitespace-nowrap text-base font-bold">Agent Inspector</span>
1303
1303
  <span className="hidden shrink-0 font-mono text-[11px] font-semibold text-muted-foreground sm:inline">
1304
1304
  v{packageJson.version}
1305
1305
  </span>
@@ -1324,13 +1324,13 @@ function BrandHeader({
1324
1324
  }
1325
1325
 
1326
1326
  return (
1327
- <div className="grid grid-cols-[1fr_auto_1fr] items-start gap-3 pb-6">
1328
- <div />
1329
- <h1 className="flex min-w-0 flex-col items-center gap-2 text-center">
1330
- <span className="flex max-w-[calc(100vw-7rem)] items-end gap-2 whitespace-nowrap">
1327
+ <div className="flex flex-wrap items-start justify-between gap-x-4 gap-y-3 pb-6">
1328
+ <div className="min-w-10 flex-1" aria-hidden="true" />
1329
+ <h1 className="flex min-w-fit flex-col items-center gap-2 text-center">
1330
+ <span className="flex max-w-full flex-wrap items-end justify-center gap-x-2 gap-y-1">
1331
1331
  <CrabFamily compact={false} entrancePhase={crabEntrancePhase} />
1332
- <span className="flex min-w-0 items-baseline gap-2 pl-1">
1333
- <span className="truncate text-lg font-bold">Agent Inspector</span>
1332
+ <span className="flex min-w-fit flex-wrap items-baseline justify-center gap-x-2 gap-y-0.5 pl-1">
1333
+ <span className="whitespace-nowrap text-lg font-bold">Agent Inspector</span>
1334
1334
  <span className="shrink-0 font-mono text-xs font-semibold text-muted-foreground">
1335
1335
  v{packageJson.version}
1336
1336
  </span>
@@ -1338,12 +1338,12 @@ function BrandHeader({
1338
1338
  <Plus className="size-4 shrink-0 text-muted-foreground/70" aria-hidden="true" />
1339
1339
  <McpLogo className="size-10 shrink-0" />
1340
1340
  </span>
1341
- <span className="max-w-[calc(100vw-7rem)] text-sm font-semibold text-muted-foreground">
1341
+ <span className="max-w-full text-sm font-semibold text-muted-foreground">
1342
1342
  Local First. Evidence First.
1343
1343
  </span>
1344
1344
  <McpReadyBadge />
1345
1345
  </h1>
1346
- <div className="justify-self-end flex items-center gap-1">
1346
+ <div className="flex flex-1 justify-end gap-1">
1347
1347
  <AlertsDialog />
1348
1348
  <GroupsDialog />
1349
1349
  <AgentLabDialog currentSessionId={currentSessionId} logCount={logCount} />
@@ -304,7 +304,7 @@ function AlertList({
304
304
  {categoryLabel(alert.category)}
305
305
  </span>
306
306
  </div>
307
- <div className="mt-1 truncate text-sm font-semibold">{alert.title}</div>
307
+ <div className="mt-1 text-sm font-semibold leading-snug">{alert.title}</div>
308
308
  <div className="mt-1 line-clamp-2 text-xs text-muted-foreground">
309
309
  {alert.message}
310
310
  </div>
@@ -315,8 +315,8 @@ function AlertList({
315
315
  </Badge>
316
316
  ) : null}
317
317
  </div>
318
- <div className="mt-2 flex min-w-0 items-center justify-between gap-2 text-[11px] text-muted-foreground">
319
- <span className="truncate">{providerModel(alert)}</span>
318
+ <div className="mt-2 flex min-w-0 items-start justify-between gap-2 text-[11px] text-muted-foreground">
319
+ <span className="min-w-0 leading-snug">{providerModel(alert)}</span>
320
320
  <span className="shrink-0">{formatTimestamp(alert.lastSeenAt)}</span>
321
321
  </div>
322
322
  </button>
@@ -130,13 +130,15 @@ function versionLabel(pkg: EcosystemPackage): string {
130
130
  function PackageStatusCard({ pkg }: { pkg: EcosystemPackage }): JSX.Element {
131
131
  return (
132
132
  <div className="rounded-lg bg-white/[0.025] p-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.055)]">
133
- <div className="flex items-start justify-between gap-3">
133
+ <div className="flex flex-wrap items-start justify-between gap-3">
134
134
  <div className="min-w-0">
135
- <div className="flex min-w-0 items-center gap-2">
135
+ <div className="flex min-w-0 items-start gap-2">
136
136
  <PackageCheck className="size-4 shrink-0 text-white/55" />
137
- <div className="truncate text-sm font-semibold">{pkg.name}</div>
137
+ <div className="text-sm font-semibold leading-snug">{pkg.name}</div>
138
+ </div>
139
+ <div className="mt-1 break-all font-mono text-[11px] leading-snug text-white/35">
140
+ {pkg.npmName}
138
141
  </div>
139
- <div className="mt-1 truncate font-mono text-[11px] text-white/35">{pkg.npmName}</div>
140
142
  </div>
141
143
  <Badge className={cn("shrink-0", stateClassName(pkg.state))} variant="outline">
142
144
  {stateLabel(pkg.state)}
@@ -163,7 +165,7 @@ function WorkflowTile({ workflow }: { workflow: WorkflowCard }): JSX.Element {
163
165
  <div className="flex items-start justify-between gap-3">
164
166
  <div className="flex min-w-0 items-center gap-2">
165
167
  <Icon className="size-4 shrink-0 text-cyan-200/75" />
166
- <div className="truncate text-sm font-semibold">{workflow.title}</div>
168
+ <div className="text-sm font-semibold">{workflow.title}</div>
167
169
  </div>
168
170
  <span className="rounded bg-white/[0.04] px-2 py-0.5 font-mono text-[10px] text-white/45">
169
171
  {workflow.label}
@@ -187,13 +189,13 @@ function buildSessionCommand(sessionId: string | null): string {
187
189
  function RunnerPresetCard({ preset }: { preset: EcosystemRunnerPreset }): JSX.Element {
188
190
  return (
189
191
  <div className="rounded-lg bg-white/[0.025] p-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.055)]">
190
- <div className="flex items-start justify-between gap-3">
192
+ <div className="flex flex-wrap items-start justify-between gap-3">
191
193
  <div className="min-w-0">
192
- <div className="flex min-w-0 items-center gap-2">
194
+ <div className="flex min-w-0 items-start gap-2">
193
195
  <Rocket className="size-4 shrink-0 text-cyan-200/75" />
194
- <div className="truncate text-sm font-semibold">{preset.name}</div>
196
+ <div className="text-sm font-semibold leading-snug">{preset.name}</div>
195
197
  </div>
196
- <div className="mt-1 font-mono text-[11px] text-white/35">
198
+ <div className="mt-1 break-all font-mono text-[11px] leading-snug text-white/35">
197
199
  {preset.binary} {preset.modelFlag}
198
200
  {preset.variantFlag !== null ? ` ${preset.variantFlag}` : ""}
199
201
  </div>
@@ -598,7 +598,7 @@ function GroupList({
598
598
  )}
599
599
  >
600
600
  <div className="flex min-w-0 items-center justify-between gap-2">
601
- <span className="min-w-0 truncate text-sm font-medium">{group.title}</span>
601
+ <span className="min-w-0 text-sm font-medium leading-snug">{group.title}</span>
602
602
  <Badge variant="outline" className={statusClassName(group.status)}>
603
603
  {statusLabel(group.status)}
604
604
  </Badge>
@@ -673,7 +673,7 @@ function GroupDetails({
673
673
  <div className="flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between">
674
674
  <div className="min-w-0 space-y-1">
675
675
  <div className="flex min-w-0 flex-wrap items-center gap-2">
676
- <h3 className="min-w-0 truncate text-base font-semibold">{group.title}</h3>
676
+ <h3 className="min-w-0 text-base font-semibold leading-snug">{group.title}</h3>
677
677
  <Badge variant="outline" className={statusClassName(group.status)}>
678
678
  {statusLabel(group.status)}
679
679
  </Badge>
@@ -1119,7 +1119,7 @@ function MemberRow({
1119
1119
  </div>
1120
1120
  </td>
1121
1121
  <td className="max-w-52 px-3 py-2">
1122
- <span className="block truncate">{providerModel(member)}</span>
1122
+ <span className="block whitespace-normal leading-snug">{providerModel(member)}</span>
1123
1123
  </td>
1124
1124
  <td className="px-3 py-2">
1125
1125
  <Badge variant="outline" className={statusClassName(member.status)}>
@@ -295,7 +295,7 @@ export function ImportWizardDialog({
295
295
  <span className="text-[10px] text-muted-foreground">Already added</span>
296
296
  )}
297
297
  </div>
298
- <div className="text-xs text-muted-foreground mt-1 truncate">
298
+ <div className="mt-1 text-xs leading-snug text-muted-foreground">
299
299
  {p.models.slice(0, 4).join(", ")}
300
300
  {p.models.length > 4 ? ` +${p.models.length - 4} more` : ""}
301
301
  </div>
@@ -730,13 +730,13 @@ export function ProviderCard({
730
730
  <div
731
731
  className={`flex flex-col gap-3 rounded-[8px] border border-border bg-card p-4 shadow-sm transition-all duration-500 ${isHighlighted === true ? "ring-2 ring-primary shadow-md" : ""}`}
732
732
  >
733
- <div className="flex items-start justify-between gap-2">
733
+ <div className="flex flex-wrap items-start justify-between gap-2">
734
734
  <div className="min-w-0 space-y-1">
735
- <div className="flex min-w-0 items-center gap-2">
736
- <span className="truncate font-medium">{provider.name}</span>
735
+ <div className="flex min-w-0 flex-wrap items-center gap-2">
736
+ <span className="font-medium leading-snug">{provider.name}</span>
737
737
  {providerSourceBadge}
738
738
  </div>
739
- <div className="truncate text-xs text-muted-foreground">
739
+ <div className="text-xs leading-snug text-muted-foreground">
740
740
  {compactModelLabel(provider)}
741
741
  </div>
742
742
  </div>
@@ -573,7 +573,7 @@ function SideSummary({
573
573
  #{displayNumber}
574
574
  </span>
575
575
  {log.model !== null && (
576
- <span className="font-mono text-muted-foreground truncate">{log.model}</span>
576
+ <span className="font-mono leading-snug text-muted-foreground">{log.model}</span>
577
577
  )}
578
578
  </div>
579
579
  <div className="flex items-center gap-3 text-muted-foreground font-mono">
@@ -237,11 +237,11 @@ export function ConversationHeader({
237
237
 
238
238
  {showClientIdentity && clientDisplayLabel !== null && clientDisplayLabel !== "" && (
239
239
  <span
240
- className="bg-white/[0.045] inline-flex h-6 max-w-[180px] shrink-0 items-center gap-1 rounded-md px-1.5 text-xs text-muted-foreground"
240
+ className="bg-white/[0.045] inline-flex min-h-6 shrink-0 flex-wrap items-center gap-1 rounded-md px-1.5 py-0.5 text-xs text-muted-foreground"
241
241
  title={clientTooltip ?? clientDisplayLabel}
242
242
  >
243
243
  <ClientLogo client={clientApp} className="size-4 shrink-0" />
244
- <span className="truncate font-mono tabular-nums">{clientDisplayLabel}</span>
244
+ <span className="font-mono leading-snug tabular-nums">{clientDisplayLabel}</span>
245
245
  </span>
246
246
  )}
247
247