@hachej/boring-ui-kit 0.4.58 → 0.4.60

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 (61) hide show
  1. package/bin/boring-ui-blocks.mjs +49 -4
  2. package/package.json +6 -6
  3. package/r/_shared.json +19 -0
  4. package/r/agent-target.json +4 -4
  5. package/r/app-shell.json +17 -17
  6. package/r/board-viewer.json +10 -10
  7. package/r/button.json +4 -4
  8. package/r/data-table.json +21 -0
  9. package/r/diagram-viewer.json +6 -4
  10. package/r/dock.json +1 -1
  11. package/r/documents.json +13 -14
  12. package/r/drawing-viewer.json +6 -4
  13. package/r/empty-state.json +22 -0
  14. package/r/feedback.json +14 -14
  15. package/r/file-tree.json +4 -4
  16. package/r/highlights.json +3 -3
  17. package/r/html-viewer.json +3 -3
  18. package/r/inline-question.json +22 -0
  19. package/r/kpi-stat.json +22 -0
  20. package/r/list-row.json +21 -0
  21. package/r/looks-viewer.json +6 -6
  22. package/r/maquette-viewer.json +7 -6
  23. package/r/markdown-editor.json +10 -9
  24. package/r/mockup-viewer.json +5 -5
  25. package/r/page-header.json +22 -0
  26. package/r/pi-ambient.json +12 -12
  27. package/r/pi-app-kinds.json +10 -10
  28. package/r/pi-app.json +17 -17
  29. package/r/pi-artifacts.json +4 -4
  30. package/r/pi-chat-approval.json +4 -4
  31. package/r/pi-chat-attachments.json +4 -4
  32. package/r/pi-chat-markdown.json +3 -3
  33. package/r/pi-chat-mentions.json +4 -4
  34. package/r/pi-chat-pickers.json +4 -4
  35. package/r/pi-chat-plugins.json +11 -11
  36. package/r/pi-chat-question.json +3 -3
  37. package/r/pi-chat-slash.json +5 -5
  38. package/r/pi-chat-subagent.json +4 -4
  39. package/r/pi-chat-voice.json +7 -7
  40. package/r/pi-chat.json +18 -18
  41. package/r/pi-workspace.json +3 -3
  42. package/r/placed-agent.json +7 -7
  43. package/r/provider-setup.json +4 -4
  44. package/r/record-viewer.json +5 -3
  45. package/r/registry.json +577 -280
  46. package/r/shared-chat.json +11 -11
  47. package/r/space-card.json +22 -0
  48. package/r/spaces.json +7 -5
  49. package/r/status-narrative.json +22 -0
  50. package/r/task-list-viewer.json +28 -3
  51. package/r/theme.json +118 -50
  52. package/r/version-history.json +2 -2
  53. package/r/viewer-code.json +5 -5
  54. package/r/viewer-frame.json +9 -9
  55. package/r/viewer-html.json +7 -7
  56. package/r/viewer-image.json +5 -5
  57. package/r/viewer-markdown.json +7 -7
  58. package/r/viewer-pdf.json +6 -6
  59. package/r/viewers.json +6 -6
  60. package/r/windows.json +4 -4
  61. package/r/wiring-chips.json +22 -0
package/r/registry.json CHANGED
@@ -7,7 +7,10 @@
7
7
  "name": "theme",
8
8
  "type": "registry:theme",
9
9
  "title": "Theme",
10
- "description": "The shadcn tokens every Tailwind item is styled with (neutral base, light and dark) and their Tailwind v4 `@theme inline` bindings. The CLI adds only the tokens the host does not define yet. The examples compile the same values (lab/studio/tailwind.mjs).",
10
+ "description": "Optional default theme tokens and Tailwind v4 bindings: original grey canvas, flat white surface roles, compact type and semantic statuses. Explicit shadcn add overwrites matching host tokens; blocks never install this theme automatically. Font families are declarations only; hosts load the fonts and own primitive geometry and icons.",
11
+ "dependencies": [
12
+ "@fontsource-variable/geist-mono@5.3.0"
13
+ ],
11
14
  "cssVars": {
12
15
  "theme": {
13
16
  "color-background": "var(--background)",
@@ -25,6 +28,7 @@
25
28
  "color-accent": "var(--accent)",
26
29
  "color-accent-foreground": "var(--accent-foreground)",
27
30
  "color-destructive": "var(--destructive)",
31
+ "color-success": "var(--success)",
28
32
  "color-border": "var(--border)",
29
33
  "color-input": "var(--input)",
30
34
  "color-ring": "var(--ring)",
@@ -33,6 +37,16 @@
33
37
  "color-chart-3": "var(--chart-3)",
34
38
  "color-chart-4": "var(--chart-4)",
35
39
  "color-chart-5": "var(--chart-5)",
40
+ "color-sidebar": "var(--sidebar)",
41
+ "color-sidebar-foreground": "var(--sidebar-foreground)",
42
+ "color-sidebar-primary": "var(--sidebar-primary)",
43
+ "color-sidebar-primary-foreground": "var(--sidebar-primary-foreground)",
44
+ "color-sidebar-accent": "var(--sidebar-accent)",
45
+ "color-sidebar-accent-foreground": "var(--sidebar-accent-foreground)",
46
+ "color-sidebar-border": "var(--sidebar-border)",
47
+ "color-sidebar-ring": "var(--sidebar-ring)",
48
+ "text-xs": "var(--text-body)",
49
+ "text-sm": "var(--text-title)",
36
50
  "radius-sm": "calc(var(--radius) - 4px)",
37
51
  "radius-md": "calc(var(--radius) - 2px)",
38
52
  "radius-lg": "var(--radius)",
@@ -72,34 +86,57 @@
72
86
  "radius-pm-popover": "var(--pm-radius-popover)",
73
87
  "radius-pm-send": "var(--pm-radius-send)",
74
88
  "shadow-pm-popover": "var(--pm-shadow-popover)",
75
- "color-pm-label": "var(--pm-label)"
89
+ "color-pm-label": "var(--pm-label)",
90
+ "font-sans": "var(--font-sans)",
91
+ "font-mono": "var(--font-mono)",
92
+ "color-success-soft": "var(--success-soft)",
93
+ "color-success-soft-foreground": "var(--success-soft-foreground)",
94
+ "color-warning": "var(--warning)",
95
+ "color-warning-soft": "var(--warning-soft)",
96
+ "color-warning-soft-foreground": "var(--warning-soft-foreground)",
97
+ "color-info": "var(--info)",
98
+ "color-info-soft": "var(--info-soft)",
99
+ "color-info-soft-foreground": "var(--info-soft-foreground)",
100
+ "color-destructive-soft": "var(--destructive-soft)",
101
+ "color-destructive-soft-foreground": "var(--destructive-soft-foreground)"
76
102
  },
77
103
  "light": {
78
- "radius": "0.75rem",
79
- "background": "oklch(1 0 0)",
80
- "foreground": "oklch(0.141 0.005 285.823)",
104
+ "radius": "0.5rem",
105
+ "background": "oklch(0.97 0 0)",
106
+ "foreground": "oklch(0.2 0 0)",
81
107
  "card": "oklch(1 0 0)",
82
- "card-foreground": "oklch(0.141 0.005 285.823)",
83
- "popover": "oklch(1 0 0)",
84
- "popover-foreground": "oklch(0.141 0.005 285.823)",
108
+ "card-foreground": "var(--foreground)",
109
+ "popover": "var(--card)",
110
+ "popover-foreground": "var(--foreground)",
85
111
  "primary": "oklch(0.21 0.006 285.885)",
86
112
  "primary-foreground": "oklch(0.985 0 0)",
87
- "secondary": "oklch(0.967 0.001 286.375)",
88
- "secondary-foreground": "oklch(0.21 0.006 285.885)",
89
- "muted": "oklch(0.967 0.001 286.375)",
90
- "muted-foreground": "oklch(0.52 0.016 285.938)",
91
- "accent": "oklch(0.955 0.003 286.375)",
92
- "accent-foreground": "oklch(0.21 0.006 285.885)",
93
- "destructive": "oklch(0.577 0.245 27.325)",
94
- "border": "oklch(0.92 0.004 286.32)",
95
- "input": "oklch(0.89 0.005 286.32)",
96
- "ring": "oklch(0.55 0.02 286.067)",
97
- "chart-1": "oklch(0.646 0.222 41.116)",
98
- "chart-2": "oklch(0.6 0.118 184.704)",
99
- "chart-3": "oklch(0.398 0.07 227.392)",
100
- "chart-4": "oklch(0.828 0.189 84.429)",
101
- "chart-5": "oklch(0.769 0.188 70.08)",
102
- "shell": "oklch(0.975 0.002 286)",
113
+ "secondary": "var(--muted)",
114
+ "secondary-foreground": "var(--foreground)",
115
+ "muted": "oklch(0.95 0 0)",
116
+ "muted-foreground": "color-mix(in oklab, var(--foreground) 57%, var(--background))",
117
+ "accent": "oklch(0.94 0 0)",
118
+ "accent-foreground": "var(--foreground)",
119
+ "destructive": "oklch(0.577 0.2 27)",
120
+ "success": "oklch(0.527 0.154 150)",
121
+ "border": "oklch(0.91 0 0)",
122
+ "input": "var(--border)",
123
+ "ring": "oklch(0.55 0.02 286)",
124
+ "chart-1": "oklch(0.55 0.17 264)",
125
+ "chart-2": "oklch(0.58 0.15 160)",
126
+ "chart-3": "oklch(0.63 0.15 75)",
127
+ "chart-4": "oklch(0.6 0.18 15)",
128
+ "chart-5": "oklch(0.57 0.12 300)",
129
+ "shell": "var(--background)",
130
+ "text-body": "0.75rem",
131
+ "text-title": "0.875rem",
132
+ "sidebar": "var(--background)",
133
+ "sidebar-foreground": "var(--foreground)",
134
+ "sidebar-primary": "var(--primary)",
135
+ "sidebar-primary-foreground": "var(--primary-foreground)",
136
+ "sidebar-accent": "var(--accent)",
137
+ "sidebar-accent-foreground": "var(--accent-foreground)",
138
+ "sidebar-border": "var(--border)",
139
+ "sidebar-ring": "var(--ring)",
103
140
  "shadow-xs": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
104
141
  "shadow-sm": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
105
142
  "shadow-md": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
@@ -134,33 +171,54 @@
134
171
  "pm-shadow-popover": "0 0 0 1px var(--border), 0 8px 24px rgb(0 0 0 / 0.14)",
135
172
  "pm-label": "var(--foreground)",
136
173
  "pm-mark-line": "35%",
137
- "pm-mark-width": "2px"
174
+ "pm-mark-width": "2px",
175
+ "warning": "oklch(0.6 0.15 65)",
176
+ "info": "oklch(0.5 0.2 264)",
177
+ "font-sans": "'Geist', ui-sans-serif, system-ui, sans-serif",
178
+ "font-mono": "'Geist Mono', ui-monospace, Menlo, monospace",
179
+ "success-soft": "color-mix(in oklab, var(--success) 14%, var(--card))",
180
+ "success-soft-foreground": "var(--success)",
181
+ "warning-soft": "color-mix(in oklab, var(--warning) 16%, var(--card))",
182
+ "warning-soft-foreground": "var(--warning)",
183
+ "info-soft": "color-mix(in oklab, var(--info) 12%, var(--card))",
184
+ "info-soft-foreground": "var(--info)",
185
+ "destructive-soft": "color-mix(in oklab, var(--destructive) 12%, var(--card))",
186
+ "destructive-soft-foreground": "var(--destructive)"
138
187
  },
139
188
  "dark": {
140
- "background": "oklch(0.175 0.006 285.885)",
141
- "foreground": "oklch(0.985 0 0)",
142
- "card": "oklch(0.205 0.006 285.885)",
143
- "card-foreground": "oklch(0.985 0 0)",
144
- "popover": "oklch(0.205 0.006 285.885)",
145
- "popover-foreground": "oklch(0.985 0 0)",
146
- "primary": "oklch(0.92 0.004 286.32)",
147
- "primary-foreground": "oklch(0.21 0.006 285.885)",
148
- "secondary": "oklch(0.274 0.006 286.033)",
149
- "secondary-foreground": "oklch(0.985 0 0)",
150
- "muted": "oklch(0.255 0.006 286.033)",
151
- "muted-foreground": "oklch(0.72 0.015 286.067)",
152
- "accent": "oklch(0.3 0.006 286.033)",
153
- "accent-foreground": "oklch(0.985 0 0)",
154
- "destructive": "oklch(0.704 0.191 22.216)",
155
- "border": "oklch(1 0 0 / 11%)",
156
- "input": "oklch(1 0 0 / 16%)",
157
- "ring": "oklch(0.65 0.02 286.067)",
158
- "chart-1": "oklch(0.488 0.243 264.376)",
159
- "chart-2": "oklch(0.696 0.17 162.48)",
160
- "chart-3": "oklch(0.769 0.188 70.08)",
161
- "chart-4": "oklch(0.627 0.265 303.9)",
162
- "chart-5": "oklch(0.645 0.246 16.439)",
163
- "shell": "oklch(0.13 0.005 285.823)",
189
+ "background": "oklch(0.18 0 0)",
190
+ "foreground": "oklch(0.96 0 0)",
191
+ "card": "oklch(0.23 0 0)",
192
+ "card-foreground": "var(--foreground)",
193
+ "popover": "var(--card)",
194
+ "popover-foreground": "var(--foreground)",
195
+ "primary": "oklch(0.92 0 0)",
196
+ "primary-foreground": "oklch(0.2 0 0)",
197
+ "secondary": "var(--muted)",
198
+ "secondary-foreground": "var(--foreground)",
199
+ "muted": "oklch(0.27 0 0)",
200
+ "muted-foreground": "color-mix(in oklab, var(--foreground) 62%, var(--background))",
201
+ "accent": "oklch(0.28 0 0)",
202
+ "accent-foreground": "var(--foreground)",
203
+ "destructive": "oklch(0.7 0.19 22)",
204
+ "success": "oklch(0.7 0.17 150)",
205
+ "border": "oklch(1 0 0 / 10%)",
206
+ "input": "var(--border)",
207
+ "ring": "oklch(0.65 0.02 286)",
208
+ "chart-1": "oklch(0.72 0.15 264)",
209
+ "chart-2": "oklch(0.75 0.15 160)",
210
+ "chart-3": "oklch(0.78 0.15 75)",
211
+ "chart-4": "oklch(0.73 0.16 15)",
212
+ "chart-5": "oklch(0.74 0.12 300)",
213
+ "shell": "var(--background)",
214
+ "sidebar": "var(--background)",
215
+ "sidebar-foreground": "var(--foreground)",
216
+ "sidebar-primary": "var(--primary)",
217
+ "sidebar-primary-foreground": "var(--primary-foreground)",
218
+ "sidebar-accent": "var(--accent)",
219
+ "sidebar-accent-foreground": "var(--accent-foreground)",
220
+ "sidebar-border": "var(--border)",
221
+ "sidebar-ring": "var(--ring)",
164
222
  "shadow-xs": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
165
223
  "shadow-sm": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
166
224
  "shadow-md": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
@@ -195,7 +253,17 @@
195
253
  "pm-shadow-popover": "0 0 0 1px var(--border), 0 8px 24px rgb(0 0 0 / 0.14)",
196
254
  "pm-label": "var(--foreground)",
197
255
  "pm-mark-line": "35%",
198
- "pm-mark-width": "2px"
256
+ "pm-mark-width": "2px",
257
+ "warning": "oklch(0.78 0.15 75)",
258
+ "info": "oklch(0.72 0.14 254)",
259
+ "success-soft": "color-mix(in oklab, var(--success) 22%, var(--card))",
260
+ "success-soft-foreground": "var(--success)",
261
+ "warning-soft": "color-mix(in oklab, var(--warning) 22%, var(--card))",
262
+ "warning-soft-foreground": "var(--warning)",
263
+ "info-soft": "color-mix(in oklab, var(--info) 22%, var(--card))",
264
+ "info-soft-foreground": "var(--info)",
265
+ "destructive-soft": "color-mix(in oklab, var(--destructive) 22%, var(--card))",
266
+ "destructive-soft-foreground": "var(--destructive)"
199
267
  }
200
268
  }
201
269
  },
@@ -249,11 +317,11 @@
249
317
  "description": "Host action metadata composed with the consumer’s shadcn Button, Toggle and DropdownMenu.",
250
318
  "dependencies": [
251
319
  "react@^19.0.0",
252
- "react-dom@^19.0.0",
253
- "lucide-react@^1.51.0"
320
+ "react-dom@^19.0.0"
254
321
  ],
255
322
  "registryDependencies": [
256
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
323
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
324
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
257
325
  ],
258
326
  "files": [
259
327
  {
@@ -274,8 +342,8 @@
274
342
  "title": "Markdown editor",
275
343
  "description": "A host-owned styled wrapper over the concrete borrowed Markdown controller.",
276
344
  "dependencies": [
277
- "@hachej/boring-ui-kit@^0.4.58",
278
- "@hachej/boring-files@^0.4.58",
345
+ "@hachej/boring-ui-kit@^0.4.60",
346
+ "@hachej/boring-files@^0.4.60",
279
347
  "react@^19.0.0",
280
348
  "react-dom@^19.0.0",
281
349
  "marked@^17.0.6",
@@ -290,8 +358,7 @@
290
358
  "@tiptap/extension-image@^3.31.4",
291
359
  "@tiptap/extension-highlight@^3.31.4",
292
360
  "@tiptap/extension-bubble-menu@^3.31.4",
293
- "@tiptap/extension-floating-menu@^3.31.4",
294
- "lucide-react@^1.51.0"
361
+ "@tiptap/extension-floating-menu@^3.31.4"
295
362
  ],
296
363
  "files": [
297
364
  {
@@ -346,6 +413,7 @@
346
413
  "max-width": "75ch",
347
414
  "width": "100%",
348
415
  "margin-inline": "auto",
416
+ "font-size": "var(--text-xs)",
349
417
  "line-height": "var(--leading-relaxed)",
350
418
  "overflow-wrap": "anywhere"
351
419
  },
@@ -353,19 +421,19 @@
353
421
  "margin": "0.75rem 0"
354
422
  },
355
423
  ".boring-markdown-recipe[data-boring=\"markdown-editor\"] .boring-markdown-content h1": {
356
- "font-size": "var(--text-3xl)",
424
+ "font-size": "var(--text-sm)",
357
425
  "line-height": "var(--leading-tight)",
358
426
  "margin": "1.25rem 0 0.75rem",
359
427
  "font-weight": "var(--font-weight-semibold)"
360
428
  },
361
429
  ".boring-markdown-recipe[data-boring=\"markdown-editor\"] .boring-markdown-content h2": {
362
- "font-size": "var(--text-2xl)",
430
+ "font-size": "var(--text-sm)",
363
431
  "line-height": "var(--leading-tight)",
364
432
  "margin": "1.25rem 0 0.75rem",
365
433
  "font-weight": "var(--font-weight-semibold)"
366
434
  },
367
435
  ".boring-markdown-recipe[data-boring=\"markdown-editor\"] .boring-markdown-content h3": {
368
- "font-size": "var(--text-xl)",
436
+ "font-size": "var(--text-sm)",
369
437
  "margin": "1rem 0 0.5rem",
370
438
  "font-weight": "var(--font-weight-semibold)"
371
439
  },
@@ -431,7 +499,8 @@
431
499
  },
432
500
  "docs": "Create and own a MarkdownController from @hachej/boring-ui-kit/markdown. Pass it to MarkdownEditor. The wrapper does not acquire resources or dispose the controller. Check the repository release notes for available npm versions; local tarball tests do not establish registry availability.",
433
501
  "registryDependencies": [
434
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json"
502
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json",
503
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
435
504
  ]
436
505
  },
437
506
  {
@@ -440,8 +509,8 @@
440
509
  "title": "HTML source and passive preview",
441
510
  "description": "Exact HTML source editing with a reconstructed passive preview and borrowed controller. Browser security qualification remains separate.",
442
511
  "dependencies": [
443
- "@hachej/boring-ui-kit@^0.4.58",
444
- "@hachej/boring-files@^0.4.58",
512
+ "@hachej/boring-ui-kit@^0.4.60",
513
+ "@hachej/boring-files@^0.4.60",
445
514
  "react@^19.0.0",
446
515
  "react-dom@^19.0.0"
447
516
  ],
@@ -489,7 +558,7 @@
489
558
  }
490
559
  },
491
560
  "registryDependencies": [
492
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json"
561
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json"
493
562
  ]
494
563
  },
495
564
  {
@@ -498,22 +567,22 @@
498
567
  "title": "Pi chat",
499
568
  "description": "A complete Tailwind chat over the borrowed native chat controller: composer, messages, one collapsible activity block per turn (tool calls and reasoning), message queue, history and feedback cards for the opt-in feedback tool (lists, and Show offers that the host page resolves). Chat only: no layout. Owned, editable source; no AI SDK. The question, approval, sub-agent and artifact cards are separate items (pi-chat-question, pi-chat-approval, pi-chat-subagent, pi-artifacts); without them a question or an approval shows a \"waiting for your answer\" notice, a sub-agent call is an ordinary tool step and no artifact is offered. The optional pi-ambient and pi-workspace blocks build on it.",
500
569
  "dependencies": [
501
- "@hachej/boring-ui-kit@^0.4.58",
502
- "@hachej/boring-files@^0.4.58",
570
+ "@hachej/boring-ui-kit@^0.4.60",
571
+ "@hachej/boring-files@^0.4.60",
503
572
  "react@^19.0.0",
504
573
  "react-dom@^19.0.0",
505
574
  "@base-ui/react@1.9.0",
506
575
  "@earendil-works/pi-durable@~1.4.0",
507
576
  "@earendil-works/chord@~1.4.0",
508
577
  "@earendil-works/pi-ai@~1.4.0",
509
- "@modelcontextprotocol/sdk@^1.32.1",
510
- "lucide-react@^1.51.0",
578
+ "@modelcontextprotocol/sdk@^1.32.2",
511
579
  "@shadcn/react@0.3.1",
512
580
  "zod@^4.6.5"
513
581
  ],
514
582
  "registryDependencies": [
515
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
516
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json"
583
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
584
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json",
585
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
517
586
  ],
518
587
  "files": [
519
588
  {
@@ -710,13 +779,13 @@
710
779
  "title": "Pi chat Markdown",
711
780
  "description": "Markdown for the chat's assistant replies: safe token-by-token rendering (raw HTML shown as text, no images fetched, http(s) links only), code blocks, tables, task lists and /command buttons. Plug it in with `renderText={markdownText}`; without it pi-chat shows replies as plain text.",
712
781
  "dependencies": [
713
- "@hachej/boring-ui-kit@^0.4.58",
782
+ "@hachej/boring-ui-kit@^0.4.60",
714
783
  "react@^19.0.0",
715
784
  "marked@^17.0.6",
716
- "entities@^8.1.0"
785
+ "entities@^9.0.0"
717
786
  ],
718
787
  "registryDependencies": [
719
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
788
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json"
720
789
  ],
721
790
  "files": [
722
791
  {
@@ -732,12 +801,12 @@
732
801
  "title": "Pi chat slash menu",
733
802
  "description": "The composer's `/` menu of commands and skills (and the Commands entry of the + menu). Plug it in with `slash={{ ...config, Picker: SlashPicker }}`; without it pi-chat has no `/` menu.",
734
803
  "dependencies": [
735
- "@hachej/boring-ui-kit@^0.4.58",
736
- "react@^19.0.0",
737
- "lucide-react@^1.51.0"
804
+ "@hachej/boring-ui-kit@^0.4.60",
805
+ "react@^19.0.0"
738
806
  ],
739
807
  "registryDependencies": [
740
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
808
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
809
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
741
810
  ],
742
811
  "files": [
743
812
  {
@@ -753,11 +822,11 @@
753
822
  "title": "Pi chat mentions",
754
823
  "description": "The composer's `@` picker for files and other mentionable things. Plug it in with `mentions={{ ...config, Picker: MentionPicker }}`; without it typing `@` opens nothing (sent mentions still show as chips).",
755
824
  "dependencies": [
756
- "react@^19.0.0",
757
- "lucide-react@^1.51.0"
825
+ "react@^19.0.0"
758
826
  ],
759
827
  "registryDependencies": [
760
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
828
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
829
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
761
830
  ],
762
831
  "files": [
763
832
  {
@@ -773,11 +842,11 @@
773
842
  "title": "Pi chat model and effort picker",
774
843
  "description": "The composer's one model-and-effort pill. Plug it in with `model={{ ...config, Picker: ModelEffortPicker }}` (or on `effort`); without it pi-chat shows no pill.",
775
844
  "dependencies": [
776
- "react@^19.0.0",
777
- "lucide-react@^1.51.0"
845
+ "react@^19.0.0"
778
846
  ],
779
847
  "registryDependencies": [
780
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
848
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
849
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
781
850
  ],
782
851
  "files": [
783
852
  {
@@ -793,13 +862,13 @@
793
862
  "title": "Pi chat voice messages",
794
863
  "description": "Tap-to-record voice messages: a compatibility export of the kit's chat-react/voice recorder hook, the composer's record button and the pending voice bubble, plus useHoldToRecord. Plug it in with `voiceMessage={{ ...config, ...voiceMessagePlugin }}`; without it pi-chat has no voice button.",
795
864
  "dependencies": [
796
- "@hachej/boring-ui-kit@^0.4.58",
797
- "react@^19.0.0",
798
- "lucide-react@^1.51.0"
865
+ "@hachej/boring-ui-kit@^0.4.60",
866
+ "react@^19.0.0"
799
867
  ],
800
868
  "registryDependencies": [
801
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
802
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
869
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
870
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
871
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
803
872
  ],
804
873
  "files": [
805
874
  {
@@ -831,11 +900,11 @@
831
900
  "description": "The full-screen phone camera the composer's + menu opens (Take a photo). Plug it in with `attachments={{ ...config, Camera: CameraSheet }}`; without it the menu offers file upload only.",
832
901
  "dependencies": [
833
902
  "react@^19.0.0",
834
- "react-dom@^19.0.0",
835
- "lucide-react@^1.51.0"
903
+ "react-dom@^19.0.0"
836
904
  ],
837
905
  "registryDependencies": [
838
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
906
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
907
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
839
908
  ],
840
909
  "files": [
841
910
  {
@@ -852,11 +921,11 @@
852
921
  "description": "The human-in-the-loop question card for `ask_user` (choices, free text, answered state). Plug it in with `cards={{ question: QuestionCard }}`; without it pi-chat shows a \"waiting for your answer\" notice with no answer UI.",
853
922
  "dependencies": [
854
923
  "react@^19.0.0",
855
- "lucide-react@^1.51.0",
856
924
  "@earendil-works/pi-ai@~1.4.0"
857
925
  ],
858
926
  "registryDependencies": [
859
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
927
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
928
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
860
929
  ],
861
930
  "files": [
862
931
  {
@@ -872,13 +941,13 @@
872
941
  "title": "Pi chat approval card",
873
942
  "description": "The Approve / Deny card for host tools wrapped with `requireApproval`. Plug it in with `cards={{ approval: ApprovalCard }}`; without it pi-chat shows a \"waiting for your answer\" notice with no answer UI.",
874
943
  "dependencies": [
875
- "@hachej/boring-ui-kit@^0.4.58",
944
+ "@hachej/boring-ui-kit@^0.4.60",
876
945
  "react@^19.0.0",
877
- "lucide-react@^1.51.0",
878
946
  "@earendil-works/pi-ai@~1.4.0"
879
947
  ],
880
948
  "registryDependencies": [
881
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
949
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
950
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
882
951
  ],
883
952
  "files": [
884
953
  {
@@ -895,11 +964,11 @@
895
964
  "description": "The card for a tool call that ran a sub-agent (`delegate`, and the run card of a started run). Plug it in with `cards={{ subagent: subagentCard }}`; without it the call is an ordinary tool step.",
896
965
  "dependencies": [
897
966
  "react@^19.0.0",
898
- "lucide-react@^1.51.0",
899
967
  "@earendil-works/pi-ai@~1.4.0"
900
968
  ],
901
969
  "registryDependencies": [
902
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
970
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
971
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
903
972
  ],
904
973
  "files": [
905
974
  {
@@ -920,14 +989,14 @@
920
989
  "title": "Pi artifacts",
921
990
  "description": "Artifact descriptors, kinds and the artifact card that opens generated content in the host's panel. Plug it in with `artifacts={{ ...artifactCards, open, isOpen, kinds }}`; without it pi-chat offers no artifact. pi-app and the viewers import their artifact kinds and types from it.",
922
991
  "dependencies": [
923
- "@hachej/boring-ui-kit@^0.4.58",
992
+ "@hachej/boring-ui-kit@^0.4.60",
924
993
  "react@^19.0.0",
925
- "lucide-react@^1.51.0",
926
994
  "@earendil-works/pi-ai@~1.4.0",
927
995
  "@earendil-works/pi-durable@~1.4.0"
928
996
  ],
929
997
  "registryDependencies": [
930
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
998
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
999
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
931
1000
  ],
932
1001
  "files": [
933
1002
  {
@@ -951,17 +1020,17 @@
951
1020
  "react@^19.0.0"
952
1021
  ],
953
1022
  "registryDependencies": [
954
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json",
955
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-markdown.json",
956
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-slash.json",
957
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-mentions.json",
958
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-pickers.json",
959
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-voice.json",
960
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-attachments.json",
961
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-question.json",
962
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-approval.json",
963
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-subagent.json",
964
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-artifacts.json"
1023
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
1024
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-markdown.json",
1025
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-slash.json",
1026
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-mentions.json",
1027
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-pickers.json",
1028
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-voice.json",
1029
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-attachments.json",
1030
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-question.json",
1031
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-approval.json",
1032
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-subagent.json",
1033
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-artifacts.json"
965
1034
  ],
966
1035
  "files": [
967
1036
  {
@@ -977,21 +1046,21 @@
977
1046
  "title": "Pi ambient agent",
978
1047
  "description": "AmbientChat, a compact floating agent bar that grows into a chat window over an existing page, and AgentNotifications, toasts over the kit's shared chat-react run notifications (with the one guarded browser Notification helper). A block over the pi-chat item; its in-window artifact panel uses the pi-workspace layout.",
979
1048
  "dependencies": [
980
- "@hachej/boring-ui-kit@^0.4.58",
1049
+ "@hachej/boring-ui-kit@^0.4.60",
981
1050
  "react@^19.0.0",
982
1051
  "react-dom@^19.0.0",
983
1052
  "@earendil-works/pi-durable@~1.4.0",
984
- "@earendil-works/pi-ai@~1.4.0",
985
- "lucide-react@^1.51.0"
1053
+ "@earendil-works/pi-ai@~1.4.0"
986
1054
  ],
987
1055
  "registryDependencies": [
988
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json",
989
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-plugins.json",
990
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-question.json",
991
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-artifacts.json",
992
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-workspace.json",
993
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
994
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json"
1056
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
1057
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-plugins.json",
1058
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-question.json",
1059
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-artifacts.json",
1060
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-workspace.json",
1061
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
1062
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json",
1063
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
995
1064
  ],
996
1065
  "files": [
997
1066
  {
@@ -1020,7 +1089,7 @@
1020
1089
  "react@^19.0.0"
1021
1090
  ],
1022
1091
  "registryDependencies": [
1023
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
1092
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json"
1024
1093
  ],
1025
1094
  "files": [
1026
1095
  {
@@ -1040,9 +1109,9 @@
1040
1109
  "react-dom@^19.0.0"
1041
1110
  ],
1042
1111
  "registryDependencies": [
1043
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json",
1044
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
1045
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/dock.json"
1112
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
1113
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
1114
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/dock.json"
1046
1115
  ],
1047
1116
  "files": [
1048
1117
  {
@@ -1064,12 +1133,12 @@
1064
1133
  "description": "Sandboxed *.mockup.html artifacts with host theme variables (or a given shadcn theme through themeOverride), lazy Tailwind compilation and feedback point comments. Host presentation only; artifact scripts run in an opaque-origin InteractiveFrame, never in the host.",
1065
1134
  "dependencies": [
1066
1135
  "react@^19.0.0",
1067
- "lucide-react@^1.51.0",
1068
1136
  "tailwindcss@4.3.3",
1069
1137
  "zod@^4.6.5"
1070
1138
  ],
1071
1139
  "registryDependencies": [
1072
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-frame.json"
1140
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-frame.json",
1141
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1073
1142
  ],
1074
1143
  "files": [
1075
1144
  {
@@ -1110,12 +1179,12 @@
1110
1179
  "title": "Looks viewer",
1111
1180
  "description": "A looks@1 artifact kind for *.looks.json: the same *.mockup.html key screen in 2 to 6 shadcn themes side by side (label, one-line personality, colour, font and radius swatches, Pick), then layout variants in the chosen look. A look is a shadcn preset and its theme block, applied to each sandboxed frame through MockupViewer's themeOverride. The host decides what a pick does.",
1112
1181
  "dependencies": [
1113
- "react@^19.0.0",
1114
- "lucide-react@^1.51.0"
1182
+ "react@^19.0.0"
1115
1183
  ],
1116
1184
  "registryDependencies": [
1117
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/mockup-viewer.json",
1118
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
1185
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/mockup-viewer.json",
1186
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
1187
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1119
1188
  ],
1120
1189
  "files": [
1121
1190
  {
@@ -1141,8 +1210,7 @@
1141
1210
  "title": "Record viewer",
1142
1211
  "description": "Typed RecordTable and RecordList, with grouping, app-defined status badges and host row actions. createRecordsKind renders *.records.json (records@1), with a phone list and exact raw-text fallback for invalid files. English and French labels and locale formatting.",
1143
1212
  "dependencies": [
1144
- "react@^19.0.0",
1145
- "lucide-react@^1.51.0"
1213
+ "react@^19.0.0"
1146
1214
  ],
1147
1215
  "files": [
1148
1216
  {
@@ -1165,6 +1233,9 @@
1165
1233
  "type": "registry:component",
1166
1234
  "target": "components/record-viewer/records-kind.tsx"
1167
1235
  }
1236
+ ],
1237
+ "registryDependencies": [
1238
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1168
1239
  ]
1169
1240
  },
1170
1241
  {
@@ -1173,8 +1244,7 @@
1173
1244
  "title": "Diagram viewer",
1174
1245
  "description": "DiagramViewer, DiagramView and diagramKind: an agent's *.diagram.json (format v1, versioned: nodes, edges, optional groups, highlighted path and note) as boxes and numbered arrows with a legend that says what happens and who acts. Layers run left to right while they fit and top to bottom on a phone, scrolling inside their own box; no layout library. A superset of a maquette's workflow, which the maquette viewer draws with DiagramView. Its kind is in the pi-app-kinds default list, which an app passes to the pi-app artifact panel; an app kind placed before it wins.",
1175
1246
  "dependencies": [
1176
- "react@^19.0.0",
1177
- "lucide-react@^1.51.0"
1247
+ "react@^19.0.0"
1178
1248
  ],
1179
1249
  "files": [
1180
1250
  {
@@ -1202,6 +1272,9 @@
1202
1272
  "type": "registry:component",
1203
1273
  "target": "components/diagram-viewer/diagram-kind.tsx"
1204
1274
  }
1275
+ ],
1276
+ "registryDependencies": [
1277
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1205
1278
  ]
1206
1279
  },
1207
1280
  {
@@ -1210,9 +1283,8 @@
1210
1283
  "title": "Drawing viewer",
1211
1284
  "description": "DrawingViewer, drawingKind and describeDrawing: an Excalidraw (.excalidraw) or draw.io (.drawio) file, read-only, drawn by the tool's own renderer on a white page fitted to the shapes: Excalidraw's exportToSvg (its fonts served by the app, never its CDN) and the official diagrams.net viewer, vendored in the kit (@hachej/boring-ui-kit/drawio-viewer), in a sandboxed frame without network. Shown as an image, so nothing in the file runs; an unreadable file shows an inline error. onRead hands the shapes and arrows the renderer read (kind, place, size, label, colours, from and to). Each renderer loads the first time a drawing of its format opens; the kind is not in the pi-app-kinds default list, so apps without drawings install nothing.",
1212
1285
  "dependencies": [
1213
- "@hachej/boring-ui-kit@^0.4.58",
1286
+ "@hachej/boring-ui-kit@^0.4.60",
1214
1287
  "react@^19.0.0",
1215
- "lucide-react@^1.51.0",
1216
1288
  "@excalidraw/excalidraw@0.18.1"
1217
1289
  ],
1218
1290
  "files": [
@@ -1251,6 +1323,9 @@
1251
1323
  "type": "registry:component",
1252
1324
  "target": "components/drawing-viewer/drawing-kind.tsx"
1253
1325
  }
1326
+ ],
1327
+ "registryDependencies": [
1328
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1254
1329
  ]
1255
1330
  },
1256
1331
  {
@@ -1259,11 +1334,12 @@
1259
1334
  "title": "Maquette viewer",
1260
1335
  "description": "MaquetteViewer and maquetteKind: a PM agent's *.maquette.json mock-up (format v1, versioned) one screen at a time, drawn from the host's shadcn components, under one thin icon bar: Back, previous and next (also arrow keys and swipe), an optional comment icon (point mode of the feedback item: a note pinned on a block names the maquette path, screen id and block id) and a menu with guided tours and How it works (the workflow, inline or a linked *.diagram.json, drawn by the diagram-viewer item in a dialog). Optional phone or desktop frame and #screen=<id> deep links. Its kind is in the pi-app-kinds default list, which an app passes to the pi-app artifact panel; an app kind placed before it wins.",
1261
1336
  "dependencies": [
1262
- "react@^19.0.0",
1263
- "lucide-react@^1.51.0"
1337
+ "react@^19.0.0"
1264
1338
  ],
1265
1339
  "registryDependencies": [
1266
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/diagram-viewer.json"
1340
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/diagram-viewer.json",
1341
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/data-table.json",
1342
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1267
1343
  ],
1268
1344
  "files": [
1269
1345
  {
@@ -1328,17 +1404,17 @@
1328
1404
  "title": "Board viewer",
1329
1405
  "description": "A board@1 artifact kind for *.board.json. Lazy native tldraw projection of maquette screens, sandboxed HTML mock-ups, goto arrows and notes. Conditional board-file autosave; phone viewing without accidental frame edits. Hosts supply their resource client, asset URLs and license key.",
1330
1406
  "dependencies": [
1331
- "@hachej/boring-ui-kit@^0.4.58",
1332
- "@hachej/boring-files@^0.4.58",
1407
+ "@hachej/boring-ui-kit@^0.4.60",
1408
+ "@hachej/boring-files@^0.4.60",
1333
1409
  "react@^19.0.0",
1334
- "lucide-react@1.51.0",
1335
- "tldraw@5.5.2"
1410
+ "tldraw@5.6.0"
1336
1411
  ],
1337
1412
  "registryDependencies": [
1338
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/maquette-viewer.json",
1339
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/mockup-viewer.json",
1340
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-artifacts.json",
1341
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
1413
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/maquette-viewer.json",
1414
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/mockup-viewer.json",
1415
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-artifacts.json",
1416
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
1417
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1342
1418
  ],
1343
1419
  "files": [
1344
1420
  {
@@ -1374,16 +1450,16 @@
1374
1450
  "title": "Shared chat",
1375
1451
  "description": "Optional multi-party host log presentation over PiChat's generic composition seams. No agent runtime or speaking policy.",
1376
1452
  "dependencies": [
1377
- "@hachej/boring-ui-kit@^0.4.58",
1378
- "react@^19.0.0",
1379
- "lucide-react@^1.51.0"
1453
+ "@hachej/boring-ui-kit@^0.4.60",
1454
+ "react@^19.0.0"
1380
1455
  ],
1381
1456
  "registryDependencies": [
1382
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json",
1383
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-plugins.json",
1384
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-markdown.json",
1385
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-mentions.json",
1386
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
1457
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
1458
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-plugins.json",
1459
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-markdown.json",
1460
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-mentions.json",
1461
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
1462
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1387
1463
  ],
1388
1464
  "files": [
1389
1465
  {
@@ -1439,21 +1515,21 @@
1439
1515
  "title": "Pi agent app",
1440
1516
  "description": "AgentWorkspace: a whole agent page in one component. Left: the sessions pane (search, New, rename, archive, delete; collapsible, a drawer on a narrow screen). Center: PiChat. Right: the artifact panel (versions, file viewer, auto-open of new artifacts) in the ArtifactWorkspace panel, a full-screen sheet on a phone; it draws files with the kinds the app passes in artifactKinds (defaultKinds of the pi-app-kinds item is the default list). layout=\"embedded\" drops the left column for one compact top bar (title, History, Library, New) that joins an app-shell screen header. Props are data and callbacks; hooks for the conversations handler (useConversations), the chat transport (useRemoteChat) and saved resources (useSaved).",
1441
1517
  "dependencies": [
1442
- "@hachej/boring-ui-kit@^0.4.58",
1443
- "@hachej/boring-files@^0.4.58",
1518
+ "@hachej/boring-ui-kit@^0.4.60",
1519
+ "@hachej/boring-files@^0.4.60",
1444
1520
  "react@^19.0.0",
1445
- "react-dom@^19.0.0",
1446
- "lucide-react@^1.51.0"
1521
+ "react-dom@^19.0.0"
1447
1522
  ],
1448
1523
  "registryDependencies": [
1449
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json",
1450
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-plugins.json",
1451
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-artifacts.json",
1452
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-workspace.json",
1453
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-frame.json",
1454
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
1455
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json",
1456
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/file-tree.json"
1524
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
1525
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-plugins.json",
1526
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-artifacts.json",
1527
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-workspace.json",
1528
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-frame.json",
1529
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
1530
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json",
1531
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/file-tree.json",
1532
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1457
1533
  ],
1458
1534
  "files": [
1459
1535
  {
@@ -1539,16 +1615,16 @@
1539
1615
  "title": "Pi agent app default kinds",
1540
1616
  "description": "defaultKinds({ locale, comments }): the artifact kinds the pi-app item draws with by default, in order: maquette, diagram, mock-up and records, then Markdown, HTML, SVG, CSV, image and PDF (documentKinds). Pass it as AgentWorkspace's artifactKinds (or ViewerOptions.kinds), with an app's own kinds before it. Each kind loads its viewer on first open.",
1541
1617
  "registryDependencies": [
1542
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-app.json",
1543
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-markdown.json",
1544
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-html.json",
1545
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-image.json",
1546
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-pdf.json",
1547
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-code.json",
1548
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/maquette-viewer.json",
1549
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/diagram-viewer.json",
1550
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/mockup-viewer.json",
1551
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/record-viewer.json"
1618
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-app.json",
1619
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-markdown.json",
1620
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-html.json",
1621
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-image.json",
1622
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-pdf.json",
1623
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-code.json",
1624
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/maquette-viewer.json",
1625
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/diagram-viewer.json",
1626
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/mockup-viewer.json",
1627
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/record-viewer.json"
1552
1628
  ],
1553
1629
  "files": [
1554
1630
  {
@@ -1565,14 +1641,14 @@
1565
1641
  "description": "PlacedAgentWorkspace: AgentWorkspace over ONE controller, as a page (the app's Agent tab) or collapsed beside the app. Collapsed on a wide screen it is a floating AmbientChat; on a phone inside an app shell the same controller is lent to the shell's bottom drawer (useAgentLoan of app-shell), so one chat drawer serves the app. Outside a shell on a phone it stays the page. Placement is remembered (usePlacedAgentState) or controlled; usePlacedAgent gives collapse and expand to buttons inside it. The page stays mounted while collapsed, so its open file survives. Layout only: Pi owns the conversation.",
1566
1642
  "dependencies": [
1567
1643
  "react@^19.0.0",
1568
- "react-dom@^19.0.0",
1569
- "lucide-react@^1.51.0"
1644
+ "react-dom@^19.0.0"
1570
1645
  ],
1571
1646
  "registryDependencies": [
1572
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-app.json",
1573
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-ambient.json",
1574
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/app-shell.json",
1575
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
1647
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-app.json",
1648
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-ambient.json",
1649
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/app-shell.json",
1650
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
1651
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
1576
1652
  ],
1577
1653
  "files": [
1578
1654
  {
@@ -1588,12 +1664,11 @@
1588
1664
  "title": "Feedback",
1589
1665
  "description": "Feedback from the chat composer: one Feedback button starts feedback mode on the application page (hover, click to pin a numbered note, hold ⌥ to use the app, optional voice), and one chip carries the notes to the next message. FeedbackBar, NoteBubble, FeedbackChip with its review, useComposerFeedback for the pi-chat composer, and PickerOverlay styles. Optional, not mounted by default: PointButton, AnnotateSheet, FeedbackList and FeedbackReport. Picking, masking, anchoring and placement stay in @hachej/boring-feedback/page and /ui, so restyling cannot weaken them.",
1590
1666
  "dependencies": [
1591
- "@hachej/boring-feedback@^0.4.58",
1592
- "@hachej/boring-ui-kit@^0.4.58",
1593
- "@hachej/boring-files@^0.4.58",
1667
+ "@hachej/boring-feedback@^0.4.60",
1668
+ "@hachej/boring-ui-kit@^0.4.60",
1669
+ "@hachej/boring-files@^0.4.60",
1594
1670
  "react@^19.0.0",
1595
- "react-dom@^19.0.0",
1596
- "lucide-react@^1.51.0"
1671
+ "react-dom@^19.0.0"
1597
1672
  ],
1598
1673
  "files": [
1599
1674
  {
@@ -2068,9 +2143,10 @@
2068
2143
  }
2069
2144
  },
2070
2145
  "registryDependencies": [
2071
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json",
2072
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-voice.json",
2073
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
2146
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
2147
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-voice.json",
2148
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
2149
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
2074
2150
  ]
2075
2151
  },
2076
2152
  {
@@ -2079,21 +2155,21 @@
2079
2155
  "title": "App shell: layouts, list/detail and agent layer",
2080
2156
  "description": "AppShell with three layouts. B \"workspace\" puts a ListDetail on a screen (phone: the list, then the detail as a stack step with Back; wide: a 20rem list and the detail side by side, sidebar as an icon rail). C \"chat\" wraps the app's own AgentWorkspace (untouched, passed as the nav item's render; install the pi-app item yourself) in the same sidebar, account menu and header; it takes no shell agent. A \"screen\": one screen at a time, every screen kept mounted. On a phone bottom tabs (at most four; more give three plus a « Plus » sheet) and an avatar button that opens the account sheet; on a wide screen the shadcn sidebar (icon rail, NavUser). One header per screen through useScreenHeader (title, subtitle, back, up to two actions, the rest behind « … »). The account menu holds « Améliorer l'app » (the improve agent), the app's own entries and sign out. AppSheet is the one bottom sheet (one open at a time, Back closes it). It mounts the AgentLayer: one agent's PiChat above the app (phone: a drawer with peek, half and full snap points; wide: a right panel), the improve agent in the same layer, optional push-to-talk and point mode. Also useAgentContext and readAgentContext (the screen on show travels as `context` with each submit) and useBackLayer, the one Back manager. Built on explicitly pinned Base UI drawer and dropdown-menu recipes, plus the sidebar and avatar of the host's own shadcn style.",
2081
2157
  "dependencies": [
2082
- "@hachej/boring-feedback@^0.4.58",
2083
- "@hachej/boring-ui-kit@^0.4.58",
2158
+ "@hachej/boring-feedback@^0.4.60",
2159
+ "@hachej/boring-ui-kit@^0.4.60",
2084
2160
  "@base-ui/react@^1.9.0",
2085
2161
  "react@^19.0.0",
2086
- "react-dom@^19.0.0",
2087
- "lucide-react@^1.51.0"
2162
+ "react-dom@^19.0.0"
2088
2163
  ],
2089
2164
  "registryDependencies": [
2090
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json",
2091
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-plugins.json",
2092
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat-voice.json",
2093
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/dock.json",
2094
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/feedback.json",
2095
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
2096
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json"
2165
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
2166
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-plugins.json",
2167
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat-voice.json",
2168
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/dock.json",
2169
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/feedback.json",
2170
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
2171
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json",
2172
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
2097
2173
  ],
2098
2174
  "css": {
2099
2175
  "@layer base": {
@@ -2222,15 +2298,15 @@
2222
2298
  "title": "Viewer frame",
2223
2299
  "description": "The standard viewer top bar every viewer draws in (title, status, viewer controls, Refresh, Share, Copy, Download, Open in new tab, Close, overflow menu), its window labels, download, share and media helpers and the sandboxed interactive HTML frame. The viewers' styles live here. Each viewer is its own item (viewer-markdown, viewer-html, viewer-image, viewer-pdf, viewer-code) with a cheap kind module and a view loaded on first open.",
2224
2300
  "dependencies": [
2225
- "@hachej/boring-ui-kit@^0.4.58",
2301
+ "@hachej/boring-ui-kit@^0.4.60",
2226
2302
  "react@^19.0.0",
2227
- "react-dom@^19.0.0",
2228
- "lucide-react@^1.51.0"
2303
+ "react-dom@^19.0.0"
2229
2304
  ],
2230
2305
  "registryDependencies": [
2231
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
2232
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json",
2233
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/version-history.json"
2306
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
2307
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json",
2308
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/version-history.json",
2309
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
2234
2310
  ],
2235
2311
  "files": [
2236
2312
  {
@@ -2652,9 +2728,8 @@
2652
2728
  "title": "Markdown viewer",
2653
2729
  "description": "The Markdown kind: `markdownKind` (match, loader) and `MarkdownPane`, the tiptap editor with a formatting toolbar and prose styling over the kit's revisioned Markdown controller, in the viewer frame. The pane and tiptap load the first time a Markdown file opens.",
2654
2730
  "dependencies": [
2655
- "@hachej/boring-ui-kit@^0.4.58",
2731
+ "@hachej/boring-ui-kit@^0.4.60",
2656
2732
  "react@^19.0.0",
2657
- "lucide-react@^1.51.0",
2658
2733
  "marked@^17.0.6",
2659
2734
  "@tiptap/core@^3.31.4",
2660
2735
  "@tiptap/react@^3.31.4",
@@ -2670,10 +2745,11 @@
2670
2745
  "@tiptap/extension-floating-menu@^3.31.4"
2671
2746
  ],
2672
2747
  "registryDependencies": [
2673
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-frame.json",
2674
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/markdown-editor.json",
2675
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
2676
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json"
2748
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-frame.json",
2749
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/markdown-editor.json",
2750
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
2751
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json",
2752
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
2677
2753
  ],
2678
2754
  "files": [
2679
2755
  {
@@ -2694,14 +2770,14 @@
2694
2770
  "title": "HTML viewer",
2695
2771
  "description": "The HTML kind: `htmlKind` (match, loader) and `HtmlPane`, the passive HTML preview (sandboxed when the host opts in) and source editor, in the viewer frame. The pane loads the first time an HTML file opens.",
2696
2772
  "dependencies": [
2697
- "@hachej/boring-ui-kit@^0.4.58",
2698
- "react@^19.0.0",
2699
- "lucide-react@^1.51.0"
2773
+ "@hachej/boring-ui-kit@^0.4.60",
2774
+ "react@^19.0.0"
2700
2775
  ],
2701
2776
  "registryDependencies": [
2702
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-frame.json",
2703
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
2704
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json"
2777
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-frame.json",
2778
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
2779
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json",
2780
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
2705
2781
  ],
2706
2782
  "files": [
2707
2783
  {
@@ -2722,12 +2798,12 @@
2722
2798
  "title": "Image viewer",
2723
2799
  "description": "The image kind: `imageKind` (match on PNG, JPEG, GIF, WebP and SVG, loader) and `ImagePane`, zoom and pan in the viewer frame. The pane loads the first time an image opens.",
2724
2800
  "dependencies": [
2725
- "react@^19.0.0",
2726
- "lucide-react@^1.51.0"
2801
+ "react@^19.0.0"
2727
2802
  ],
2728
2803
  "registryDependencies": [
2729
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-frame.json",
2730
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
2804
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-frame.json",
2805
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
2806
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
2731
2807
  ],
2732
2808
  "files": [
2733
2809
  {
@@ -2753,14 +2829,14 @@
2753
2829
  "title": "PDF viewer",
2754
2830
  "description": "The PDF kind: `pdfKind` (match, loader) and `PdfPane` in the viewer frame (the browser's viewer, or pdf.js pages where there is none), and LocalFileViewer for browser-only files. The pane loads the first time a PDF opens.",
2755
2831
  "dependencies": [
2756
- "@hachej/boring-files@^0.4.58",
2832
+ "@hachej/boring-files@^0.4.60",
2757
2833
  "react@^19.0.0",
2758
- "lucide-react@^1.51.0",
2759
- "pdfjs-dist@6.4.299"
2834
+ "pdfjs-dist@6.5.438"
2760
2835
  ],
2761
2836
  "registryDependencies": [
2762
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-frame.json",
2763
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-image.json"
2837
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-frame.json",
2838
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-image.json",
2839
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
2764
2840
  ],
2765
2841
  "files": [
2766
2842
  {
@@ -2791,12 +2867,12 @@
2791
2867
  "title": "Code viewers",
2792
2868
  "description": "The SVG and CSV kinds: `svgKind` (a preview from a blob URL, or its source) and `csvKind` (a table), drawn inside the artifact panel's bar. Each view loads the first time its artifact opens; other code stays in the panel's code block.",
2793
2869
  "dependencies": [
2794
- "react@^19.0.0",
2795
- "lucide-react@^1.51.0"
2870
+ "react@^19.0.0"
2796
2871
  ],
2797
2872
  "registryDependencies": [
2798
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-frame.json",
2799
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
2873
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-frame.json",
2874
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json",
2875
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
2800
2876
  ],
2801
2877
  "files": [
2802
2878
  {
@@ -2823,12 +2899,12 @@
2823
2899
  "description": "Deprecated aggregate: installs every viewer item (viewer-frame, viewer-markdown, viewer-html, viewer-image, viewer-pdf, viewer-code). Add the items you use instead.",
2824
2900
  "files": [],
2825
2901
  "registryDependencies": [
2826
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-frame.json",
2827
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-markdown.json",
2828
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-html.json",
2829
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-image.json",
2830
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-pdf.json",
2831
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-code.json"
2902
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-frame.json",
2903
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-markdown.json",
2904
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-html.json",
2905
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-image.json",
2906
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-pdf.json",
2907
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-code.json"
2832
2908
  ]
2833
2909
  },
2834
2910
  {
@@ -2838,11 +2914,11 @@
2838
2914
  "description": "A shadcn popover for configuring model access: pick any registered Pi provider and model, save an API key (masked, shows \"saved\"), run a device-code subscription sign-in (code, link and status), set an optional gateway and see when a provider needs one. Transport-agnostic: props in, callbacks out, no fetch. Owned, editable source; fits the pi-chat controls slot.",
2839
2915
  "dependencies": [
2840
2916
  "react@^19.0.0",
2841
- "react-dom@^19.0.0",
2842
- "lucide-react@^1.51.0"
2917
+ "react-dom@^19.0.0"
2843
2918
  ],
2844
2919
  "registryDependencies": [
2845
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
2920
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
2921
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
2846
2922
  ],
2847
2923
  "files": [
2848
2924
  {
@@ -2858,8 +2934,8 @@
2858
2934
  "title": "Consumer task-list viewer",
2859
2935
  "description": "A consumer-defined task-list schema and controller over the shared text buffer, with a restylable borrowed React renderer.",
2860
2936
  "dependencies": [
2861
- "@hachej/boring-ui-kit@^0.4.58",
2862
- "@hachej/boring-files@^0.4.58",
2937
+ "@hachej/boring-ui-kit@^0.4.60",
2938
+ "@hachej/boring-files@^0.4.60",
2863
2939
  "react@^19.0.0",
2864
2940
  "react-dom@^19.0.0",
2865
2941
  "zod@^4.6.5"
@@ -2891,11 +2967,36 @@
2891
2967
  "display": "grid",
2892
2968
  "gap": "0.5rem"
2893
2969
  },
2970
+ ".boring-task-list-recipe[data-boring=\"task-list-viewer\"] h2": {
2971
+ "font-size": "var(--text-sm)",
2972
+ "font-weight": "600"
2973
+ },
2894
2974
  ".boring-task-list-recipe[data-boring=\"task-list-viewer\"] li": {
2975
+ "display": "grid",
2976
+ "grid-template-columns": "minmax(0, 1fr) auto",
2977
+ "align-items": "center",
2978
+ "gap": "0.5rem"
2979
+ },
2980
+ ".boring-task-list-recipe[data-boring=\"task-list-viewer\"] li > label": {
2895
2981
  "display": "flex",
2896
2982
  "align-items": "center",
2897
2983
  "gap": "0.5rem",
2898
- "flex-wrap": "wrap"
2984
+ "min-width": "0",
2985
+ "overflow-wrap": "anywhere"
2986
+ },
2987
+ ".boring-task-list-recipe[data-boring=\"task-list-viewer\"] form": {
2988
+ "display": "grid",
2989
+ "grid-template-columns": "minmax(0, 1fr) auto",
2990
+ "align-items": "center",
2991
+ "gap": "0.5rem"
2992
+ },
2993
+ ".boring-task-list-recipe[data-boring=\"task-list-viewer\"] form > label": {
2994
+ "grid-column": "1 / -1"
2995
+ },
2996
+ ".boring-task-list-recipe[data-boring=\"task-list-viewer\"] .boring-task-list-actions": {
2997
+ "display": "flex",
2998
+ "flex-wrap": "wrap",
2999
+ "gap": "0.5rem"
2899
3000
  },
2900
3001
  ".boring-task-list-recipe[data-boring=\"task-list-viewer\"] [role=\"alert\"]": {
2901
3002
  "color": "var(--destructive)"
@@ -2909,11 +3010,11 @@
2909
3010
  "title": "Version history rows",
2910
3011
  "description": "Shared view-only version rows and menu metadata with relative time, provenance and Current. No file reads, publication or restoration.",
2911
3012
  "dependencies": [
2912
- "@hachej/boring-files@^0.4.58",
3013
+ "@hachej/boring-files@^0.4.60",
2913
3014
  "react@^19.0.0"
2914
3015
  ],
2915
3016
  "registryDependencies": [
2916
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json"
3017
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json"
2917
3018
  ],
2918
3019
  "files": [
2919
3020
  {
@@ -2929,14 +3030,14 @@
2929
3030
  "title": "File tree",
2930
3031
  "description": "Browse, search, upload, rename, move, delete and inspect retained versions through one revisionProvider binding. Uses the consumer's shadcn Button, dropdown-menu and dialog with shared version-history rows; Base UI style only.",
2931
3032
  "dependencies": [
2932
- "@hachej/boring-ui-kit@^0.4.58",
2933
- "@hachej/boring-files@^0.4.58",
3033
+ "@hachej/boring-ui-kit@^0.4.60",
3034
+ "@hachej/boring-files@^0.4.60",
2934
3035
  "react@^19.0.0",
2935
3036
  "lucide-react@^1.51.0"
2936
3037
  ],
2937
3038
  "registryDependencies": [
2938
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
2939
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/version-history.json"
3039
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3040
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/version-history.json"
2940
3041
  ],
2941
3042
  "files": [
2942
3043
  {
@@ -2953,22 +3054,21 @@
2953
3054
  "title": "Documents: the Library, a file and its revisions",
2954
3055
  "description": "The workspace's Library as the list, the chosen file in its viewer and its retained revisions beside it (an older one opens read-only). DocumentSheet opens one document over the app for a host's « Voir la fiche », with an optional « Toutes les fiches ». Every read goes through one revisionProvider binding.",
2955
3056
  "dependencies": [
2956
- "@hachej/boring-ui-kit@^0.4.58",
2957
- "@hachej/boring-files@^0.4.58",
2958
- "react@^19.0.0",
2959
- "lucide-react@^1.51.0"
3057
+ "@hachej/boring-ui-kit@^0.4.60",
3058
+ "@hachej/boring-files@^0.4.60",
3059
+ "react@^19.0.0"
2960
3060
  ],
2961
3061
  "registryDependencies": [
2962
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json",
2963
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/button.json",
2964
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-artifacts.json",
2965
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-app.json",
2966
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-app-kinds.json",
2967
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/app-shell.json",
2968
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/file-tree.json",
2969
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-frame.json",
2970
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-image.json",
2971
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/viewer-pdf.json"
3062
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3063
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/button.json",
3064
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-artifacts.json",
3065
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-app.json",
3066
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-app-kinds.json",
3067
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/app-shell.json",
3068
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/file-tree.json",
3069
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-frame.json",
3070
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-image.json",
3071
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/viewer-pdf.json"
2972
3072
  ],
2973
3073
  "files": [
2974
3074
  {
@@ -3004,15 +3104,15 @@
3004
3104
  "title": "Point and dictate on app data",
3005
3105
  "description": "Tap explicitly marked JSON app context, dictate once and show the same app agent’s native reply without opening chat. Host-controlled presentation; no feedback report or second controller.",
3006
3106
  "dependencies": [
3007
- "@hachej/boring-ui-kit@^0.4.58",
3008
- "@hachej/boring-feedback@^0.4.58",
3107
+ "@hachej/boring-ui-kit@^0.4.60",
3108
+ "@hachej/boring-feedback@^0.4.60",
3009
3109
  "@earendil-works/pi-durable@~1.4.0",
3010
3110
  "react@^19.0.0",
3011
3111
  "react-dom@^19.0.0"
3012
3112
  ],
3013
3113
  "registryDependencies": [
3014
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/app-shell.json",
3015
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/pi-chat.json"
3114
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/app-shell.json",
3115
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/pi-chat.json"
3016
3116
  ],
3017
3117
  "files": [
3018
3118
  {
@@ -3033,13 +3133,13 @@
3033
3133
  "title": "Anchored highlights",
3034
3134
  "description": "Exact Markdown highlights and comments in a conditional workspace sidecar.",
3035
3135
  "dependencies": [
3036
- "@hachej/boring-ui-kit@^0.4.58",
3037
- "@hachej/boring-files@^0.4.58",
3136
+ "@hachej/boring-ui-kit@^0.4.60",
3137
+ "@hachej/boring-files@^0.4.60",
3038
3138
  "react@^19.0.0",
3039
3139
  "react-dom@^19.0.0"
3040
3140
  ],
3041
3141
  "registryDependencies": [
3042
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/markdown-editor.json"
3142
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/markdown-editor.json"
3043
3143
  ],
3044
3144
  "files": [
3045
3145
  {
@@ -3056,11 +3156,11 @@
3056
3156
  "description": "Host utility windows with shared pointer-capture drag, resize, focus stacking, minimize/close, remembered rectangles and a keyboard launcher; full-screen Drawer below 768px. No agent or content persistence.",
3057
3157
  "dependencies": [
3058
3158
  "react@^19.0.0",
3059
- "react-dom@^19.0.0",
3060
- "lucide-react@^1.51.0"
3159
+ "react-dom@^19.0.0"
3061
3160
  ],
3062
3161
  "registryDependencies": [
3063
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.58/r/utils.json"
3162
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3163
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
3064
3164
  ],
3065
3165
  "files": [
3066
3166
  {
@@ -3076,9 +3176,8 @@
3076
3176
  "title": "Spaces",
3077
3177
  "description": "A client for a host's Spaces service: useSpaces, SpaceSwitcher and MembersSheet over a transport the app gives. Membership and roles stay the host's; no route or app wording.",
3078
3178
  "dependencies": [
3079
- "@hachej/boring-files@^0.4.58",
3080
- "react@^19.0.0",
3081
- "lucide-react@^1.51.0"
3179
+ "@hachej/boring-files@^0.4.60",
3180
+ "react@^19.0.0"
3082
3181
  ],
3083
3182
  "files": [
3084
3183
  {
@@ -3106,6 +3205,204 @@
3106
3205
  "type": "registry:component",
3107
3206
  "target": "components/spaces/members-sheet.tsx"
3108
3207
  }
3208
+ ],
3209
+ "registryDependencies": [
3210
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
3211
+ ]
3212
+ },
3213
+ {
3214
+ "name": "_shared",
3215
+ "type": "registry:lib",
3216
+ "title": "Kit icons",
3217
+ "description": "One fixed semantic icon-symbol map for all kit blocks and bundled primitives. Real Phosphor defaults; hosts may replace this shared module or use existing icon props, independently of theme tokens.",
3218
+ "dependencies": [
3219
+ "@phosphor-icons/react@2.1.10",
3220
+ "react@^19.0.0"
3221
+ ],
3222
+ "files": [
3223
+ {
3224
+ "path": "registry/_shared/icons.ts",
3225
+ "type": "registry:lib",
3226
+ "target": "components/_shared/icons.ts"
3227
+ }
3228
+ ]
3229
+ },
3230
+ {
3231
+ "name": "kpi-stat",
3232
+ "type": "registry:component",
3233
+ "title": "KPI stat and row",
3234
+ "description": "A muted label, a title-size value in tabular mono numerals and an optional delta (up in success, down in destructive; an unchanged value shows none). `KpiRow` is the one surface that holds a row of stats.",
3235
+ "dependencies": [
3236
+ "react@^19.0.0"
3237
+ ],
3238
+ "registryDependencies": [
3239
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3240
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
3241
+ ],
3242
+ "files": [
3243
+ {
3244
+ "path": "registry/kpi-stat/kpi-stat.tsx",
3245
+ "type": "registry:component",
3246
+ "target": "components/kpi-stat/kpi-stat.tsx"
3247
+ }
3248
+ ]
3249
+ },
3250
+ {
3251
+ "name": "list-row",
3252
+ "type": "registry:component",
3253
+ "title": "List row",
3254
+ "description": "A row with a leading slot, a title, a muted subtitle and a trailing slot. Hover wash, no separator lines, 44px touch target on phones, truncation instead of wrapping.",
3255
+ "dependencies": [
3256
+ "react@^19.0.0"
3257
+ ],
3258
+ "registryDependencies": [
3259
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json"
3260
+ ],
3261
+ "files": [
3262
+ {
3263
+ "path": "registry/list-row/list-row.tsx",
3264
+ "type": "registry:component",
3265
+ "target": "components/list-row/list-row.tsx"
3266
+ }
3267
+ ]
3268
+ },
3269
+ {
3270
+ "name": "inline-question",
3271
+ "type": "registry:component",
3272
+ "title": "Inline question",
3273
+ "description": "A waiting question shown where it is mentioned. A decision (gate or review) is approve or refuse; a question takes up to four choices or free text. Props only: the host posts the answer under the signed-in person's own login. Soft info or warning tint while waiting, a muted answered state, 44px targets on phones.",
3274
+ "dependencies": [
3275
+ "react@^19.0.0"
3276
+ ],
3277
+ "registryDependencies": [
3278
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3279
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
3280
+ ],
3281
+ "files": [
3282
+ {
3283
+ "path": "registry/inline-question/inline-question.tsx",
3284
+ "type": "registry:component",
3285
+ "target": "components/inline-question/inline-question.tsx"
3286
+ }
3287
+ ]
3288
+ },
3289
+ {
3290
+ "name": "status-narrative",
3291
+ "type": "registry:component",
3292
+ "title": "Status narrative",
3293
+ "description": "The status paragraph of a home or a chat: text and link parts in order, the time and author underneath, one needs-you count, an optional refresh. Props only: the host fetches, writes the sentences and formats the time.",
3294
+ "dependencies": [
3295
+ "react@^19.0.0"
3296
+ ],
3297
+ "registryDependencies": [
3298
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3299
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
3300
+ ],
3301
+ "files": [
3302
+ {
3303
+ "path": "registry/status-narrative/status-narrative.tsx",
3304
+ "type": "registry:component",
3305
+ "target": "components/status-narrative/status-narrative.tsx"
3306
+ }
3307
+ ]
3308
+ },
3309
+ {
3310
+ "name": "space-card",
3311
+ "type": "registry:component",
3312
+ "title": "Space card",
3313
+ "description": "One app or space at a glance: working and waiting counts, a Quiet state when both are 0, an unreadable state that is never shown as quiet, an optional last ship. Props only; a button when it can open.",
3314
+ "dependencies": [
3315
+ "react@^19.0.0"
3316
+ ],
3317
+ "registryDependencies": [
3318
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3319
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
3320
+ ],
3321
+ "files": [
3322
+ {
3323
+ "path": "registry/space-card/space-card.tsx",
3324
+ "type": "registry:component",
3325
+ "target": "components/space-card/space-card.tsx"
3326
+ }
3327
+ ]
3328
+ },
3329
+ {
3330
+ "name": "wiring-chips",
3331
+ "type": "registry:component",
3332
+ "title": "Wiring chips",
3333
+ "description": "What an app is wired to, one small chip each with a state dot (ok, needs attention, not readable); the state is also spoken, not colour alone. Props only.",
3334
+ "dependencies": [
3335
+ "react@^19.0.0"
3336
+ ],
3337
+ "registryDependencies": [
3338
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3339
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
3340
+ ],
3341
+ "files": [
3342
+ {
3343
+ "path": "registry/wiring-chips/wiring-chips.tsx",
3344
+ "type": "registry:component",
3345
+ "target": "components/wiring-chips/wiring-chips.tsx"
3346
+ }
3347
+ ]
3348
+ },
3349
+ {
3350
+ "name": "empty-state",
3351
+ "type": "registry:component",
3352
+ "title": "Empty state",
3353
+ "description": "An icon, a title, an optional hint and an optional action, as a plain centred column on the surface.",
3354
+ "dependencies": [
3355
+ "react@^19.0.0"
3356
+ ],
3357
+ "registryDependencies": [
3358
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3359
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
3360
+ ],
3361
+ "files": [
3362
+ {
3363
+ "path": "registry/empty-state/blank-state.tsx",
3364
+ "type": "registry:component",
3365
+ "target": "components/empty-state/blank-state.tsx"
3366
+ }
3367
+ ]
3368
+ },
3369
+ {
3370
+ "name": "page-header",
3371
+ "type": "registry:component",
3372
+ "title": "Page header",
3373
+ "description": "A 14px semibold title, an optional badge, an actions slot, and one `assistant` prop that says where the assistant opens (beside the page or over it).",
3374
+ "dependencies": [
3375
+ "react@^19.0.0"
3376
+ ],
3377
+ "registryDependencies": [
3378
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json",
3379
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/_shared.json"
3380
+ ],
3381
+ "files": [
3382
+ {
3383
+ "path": "registry/page-header/page-header.tsx",
3384
+ "type": "registry:component",
3385
+ "target": "components/page-header/page-header.tsx"
3386
+ }
3387
+ ]
3388
+ },
3389
+ {
3390
+ "name": "data-table",
3391
+ "type": "registry:component",
3392
+ "title": "Data table",
3393
+ "description": "A fixed-layout table that never scrolls sideways. Columns carry a priority; cells truncate; numbers are mono and right-aligned; below 520px of container width the rows stack as label/value pairs.",
3394
+ "dependencies": [
3395
+ "react@^19.0.0"
3396
+ ],
3397
+ "registryDependencies": [
3398
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.60/r/utils.json"
3399
+ ],
3400
+ "files": [
3401
+ {
3402
+ "path": "registry/data-table/data-table.tsx",
3403
+ "type": "registry:component",
3404
+ "target": "components/data-table/data-table.tsx"
3405
+ }
3109
3406
  ]
3110
3407
  }
3111
3408
  ]