@hachej/boring-ui-kit 0.4.6 → 0.4.8

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 (46) hide show
  1. package/README.md +6 -2
  2. package/dist/markdown-editor.d.ts +6 -4
  3. package/dist/markdown-editor.js +64 -24
  4. package/dist/markdown-extensions.d.ts +2 -1
  5. package/dist/markdown-extensions.js +78 -10
  6. package/dist/markdown-icons.d.ts +20 -0
  7. package/dist/markdown-icons.js +2 -0
  8. package/dist/markdown-parser.js +1 -1
  9. package/dist/markdown-preserved.d.ts +4 -0
  10. package/dist/markdown-preserved.js +126 -0
  11. package/dist/markdown-safety.d.ts +2 -4
  12. package/dist/markdown-safety.js +16 -33
  13. package/dist/markdown-source.d.ts +17 -0
  14. package/dist/markdown-source.js +74 -0
  15. package/dist/viewer-components.d.ts +22 -0
  16. package/package.json +2 -2
  17. package/r/agent-target.json +4 -4
  18. package/r/app-shell.json +9 -9
  19. package/r/board-viewer.json +5 -5
  20. package/r/button.json +1 -1
  21. package/r/diagram-viewer.json +1 -1
  22. package/r/dock.json +1 -1
  23. package/r/documents.json +12 -12
  24. package/r/feedback-preview.json +1 -1
  25. package/r/feedback.json +16 -45
  26. package/r/file-tree.json +5 -5
  27. package/r/highlights.json +4 -4
  28. package/r/html-viewer.json +3 -3
  29. package/r/maquette-viewer.json +2 -2
  30. package/r/markdown-editor.json +9 -5
  31. package/r/mockup-viewer.json +1 -1
  32. package/r/pi-ambient.json +7 -7
  33. package/r/pi-app.json +16 -16
  34. package/r/pi-chat.json +34 -10
  35. package/r/pi-workspace.json +5 -5
  36. package/r/placed-agent.json +27 -0
  37. package/r/provider-setup.json +2 -2
  38. package/r/record-viewer.json +1 -1
  39. package/r/registry.json +178 -136
  40. package/r/requests-board.json +1 -1
  41. package/r/shared-chat.json +3 -3
  42. package/r/task-list-viewer.json +2 -2
  43. package/r/utils.json +1 -1
  44. package/r/version-history.json +3 -3
  45. package/r/viewers.json +32 -11
  46. package/r/windows.json +1 -1
package/r/registry.json CHANGED
@@ -153,7 +153,7 @@
153
153
  "lucide-react@^1.51.0"
154
154
  ],
155
155
  "registryDependencies": [
156
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
156
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
157
157
  "dropdown-menu",
158
158
  "button",
159
159
  "toggle",
@@ -181,8 +181,8 @@
181
181
  "title": "Markdown editor",
182
182
  "description": "A host-owned styled wrapper over the concrete borrowed Markdown controller.",
183
183
  "dependencies": [
184
- "@hachej/boring-ui-kit@^0.4.6",
185
- "@hachej/boring-files@^0.4.6",
184
+ "@hachej/boring-ui-kit@^0.4.8",
185
+ "@hachej/boring-files@^0.4.8",
186
186
  "react@^19.0.0",
187
187
  "react-dom@^19.0.0",
188
188
  "marked@^17.0.6",
@@ -197,7 +197,8 @@
197
197
  "@tiptap/extension-image@^3.31.4",
198
198
  "@tiptap/extension-highlight@^3.31.4",
199
199
  "@tiptap/extension-bubble-menu@^3.31.4",
200
- "@tiptap/extension-floating-menu@^3.31.4"
200
+ "@tiptap/extension-floating-menu@^3.31.4",
201
+ "lucide-react@^1.51.0"
201
202
  ],
202
203
  "files": [
203
204
  {
@@ -337,7 +338,10 @@
337
338
  },
338
339
  "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.",
339
340
  "registryDependencies": [
340
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/button.json"
341
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/button.json",
342
+ "button",
343
+ "toggle",
344
+ "dropdown-menu"
341
345
  ]
342
346
  },
343
347
  {
@@ -346,8 +350,8 @@
346
350
  "title": "HTML source and passive preview",
347
351
  "description": "Exact HTML source editing with a reconstructed passive preview and borrowed controller. Browser security qualification remains separate.",
348
352
  "dependencies": [
349
- "@hachej/boring-ui-kit@^0.4.6",
350
- "@hachej/boring-files@^0.4.6",
353
+ "@hachej/boring-ui-kit@^0.4.8",
354
+ "@hachej/boring-files@^0.4.8",
351
355
  "react@^19.0.0",
352
356
  "react-dom@^19.0.0"
353
357
  ],
@@ -395,7 +399,7 @@
395
399
  }
396
400
  },
397
401
  "registryDependencies": [
398
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/button.json"
402
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/button.json"
399
403
  ]
400
404
  },
401
405
  {
@@ -404,8 +408,9 @@
404
408
  "title": "Pi chat",
405
409
  "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, a human-in-the-loop question card, an Approve / Deny card for host tools wrapped with requireApproval optional artifact cards that open generated content in the host's panel, 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 optional pi-ambient and pi-workspace blocks build on it.",
406
410
  "dependencies": [
407
- "@hachej/boring-ui-kit@^0.4.6",
408
- "@hachej/boring-files@^0.4.6",
411
+ "@hachej/boring-ui-kit@^0.4.8",
412
+ "@hachej/boring-files@^0.4.8",
413
+ "@hachej/boring-feedback@^0.4.8",
409
414
  "react@^19.0.0",
410
415
  "react-dom@^19.0.0",
411
416
  "marked@^17.0.6",
@@ -420,8 +425,9 @@
420
425
  "zod@^4.6.5"
421
426
  ],
422
427
  "registryDependencies": [
423
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
424
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/button.json",
428
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
429
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/button.json",
430
+ "dialog",
425
431
  "tooltip",
426
432
  "trace",
427
433
  "message",
@@ -508,6 +514,21 @@
508
514
  "type": "registry:component",
509
515
  "target": "components/pi-chat/history.tsx"
510
516
  },
517
+ {
518
+ "path": "registry/pi-chat/image-viewer.tsx",
519
+ "type": "registry:component",
520
+ "target": "components/pi-chat/image-viewer.tsx"
521
+ },
522
+ {
523
+ "path": "registry/pi-chat/feedback-content.ts",
524
+ "type": "registry:lib",
525
+ "target": "components/pi-chat/feedback-content.ts"
526
+ },
527
+ {
528
+ "path": "registry/pi-chat/sent-feedback.tsx",
529
+ "type": "registry:component",
530
+ "target": "components/pi-chat/sent-feedback.tsx"
531
+ },
511
532
  {
512
533
  "path": "registry/pi-chat/markdown.tsx",
513
534
  "type": "registry:component",
@@ -668,6 +689,10 @@
668
689
  "min-height": "2.75rem",
669
690
  "min-width": "2.75rem"
670
691
  },
692
+ ".pi-chat [data-testid=\"message-feedback\"] [data-slot=\"button\"]": {
693
+ "min-height": "3rem",
694
+ "min-width": "3rem"
695
+ },
671
696
  ".pi-chat [data-testid=\"queue\"] button, .pi-chat button[data-testid=\"composer-queue\"]": {
672
697
  "min-height": "3rem",
673
698
  "min-width": "3rem"
@@ -698,7 +723,7 @@
698
723
  "title": "Pi ambient agent",
699
724
  "description": "AmbientChat, a compact floating agent bar that grows into a chat window over an existing page, and AgentNotifications, toasts for finished, failed and waiting tasks (with the one guarded browser Notification helper). A block over the pi-chat item; its in-window artifact panel uses the pi-workspace layout.",
700
725
  "dependencies": [
701
- "@hachej/boring-ui-kit@^0.4.6",
726
+ "@hachej/boring-ui-kit@^0.4.8",
702
727
  "react@^19.0.0",
703
728
  "react-dom@^19.0.0",
704
729
  "@earendil-works/pi-durable@~1.2.0",
@@ -706,11 +731,11 @@
706
731
  "lucide-react@^1.51.0"
707
732
  ],
708
733
  "registryDependencies": [
709
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
710
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-chat.json",
711
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-workspace.json",
712
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
713
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/button.json",
734
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
735
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-chat.json",
736
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-workspace.json",
737
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
738
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/button.json",
714
739
  "message-scroller",
715
740
  "button",
716
741
  "toggle",
@@ -746,7 +771,7 @@
746
771
  "react@^19.0.0"
747
772
  ],
748
773
  "registryDependencies": [
749
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json"
774
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json"
750
775
  ],
751
776
  "files": [
752
777
  {
@@ -766,10 +791,10 @@
766
791
  "react-dom@^19.0.0"
767
792
  ],
768
793
  "registryDependencies": [
769
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
770
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-chat.json",
771
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
772
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/dock.json",
794
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
795
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-chat.json",
796
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
797
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/dock.json",
773
798
  "badge",
774
799
  "card"
775
800
  ],
@@ -798,7 +823,7 @@
798
823
  "zod@^4.6.5"
799
824
  ],
800
825
  "registryDependencies": [
801
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/viewers.json",
826
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/viewers.json",
802
827
  "badge",
803
828
  "toggle",
804
829
  "tooltip"
@@ -836,7 +861,7 @@
836
861
  "lucide-react@^1.51.0"
837
862
  ],
838
863
  "registryDependencies": [
839
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
864
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
840
865
  "table",
841
866
  "badge",
842
867
  "item",
@@ -872,7 +897,7 @@
872
897
  "lucide-react@^1.51.0"
873
898
  ],
874
899
  "registryDependencies": [
875
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
900
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
876
901
  "alert",
877
902
  "badge"
878
903
  ],
@@ -909,8 +934,8 @@
909
934
  "lucide-react@^1.51.0"
910
935
  ],
911
936
  "registryDependencies": [
912
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
913
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/diagram-viewer.json",
937
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
938
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/diagram-viewer.json",
914
939
  "alert",
915
940
  "badge",
916
941
  "bubble",
@@ -987,16 +1012,16 @@
987
1012
  "title": "Board viewer",
988
1013
  "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.",
989
1014
  "dependencies": [
990
- "@hachej/boring-ui-kit@^0.4.6",
991
- "@hachej/boring-files@^0.4.6",
1015
+ "@hachej/boring-ui-kit@^0.4.8",
1016
+ "@hachej/boring-files@^0.4.8",
992
1017
  "react@^19.0.0",
993
1018
  "lucide-react@1.51.0",
994
1019
  "tldraw@5.5.2"
995
1020
  ],
996
1021
  "registryDependencies": [
997
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/maquette-viewer.json",
998
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/mockup-viewer.json",
999
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-chat.json",
1022
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/maquette-viewer.json",
1023
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/mockup-viewer.json",
1024
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-chat.json",
1000
1025
  "button",
1001
1026
  "alert",
1002
1027
  "card",
@@ -1031,13 +1056,13 @@
1031
1056
  "title": "Shared chat",
1032
1057
  "description": "Optional multi-party host log presentation over PiChat's generic composition seams. No agent runtime or speaking policy.",
1033
1058
  "dependencies": [
1034
- "@hachej/boring-ui-kit@^0.4.6",
1059
+ "@hachej/boring-ui-kit@^0.4.8",
1035
1060
  "react@^19.0.0",
1036
1061
  "lucide-react@^1.51.0"
1037
1062
  ],
1038
1063
  "registryDependencies": [
1039
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-chat.json",
1040
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
1064
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-chat.json",
1065
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
1041
1066
  "avatar",
1042
1067
  "badge",
1043
1068
  "button",
@@ -1101,27 +1126,27 @@
1101
1126
  "title": "Pi agent app",
1102
1127
  "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 viewers (artifact panel with versions, file viewer, auto-open of new artifacts) in the ArtifactWorkspace panel, a full-screen sheet on a phone. 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).",
1103
1128
  "dependencies": [
1104
- "@hachej/boring-ui-kit@^0.4.6",
1105
- "@hachej/boring-files@^0.4.6",
1129
+ "@hachej/boring-ui-kit@^0.4.8",
1130
+ "@hachej/boring-files@^0.4.8",
1106
1131
  "react@^19.0.0",
1107
1132
  "react-dom@^19.0.0",
1108
1133
  "lucide-react@^1.51.0"
1109
1134
  ],
1110
1135
  "registryDependencies": [
1111
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
1112
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-chat.json",
1113
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-workspace.json",
1114
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/viewers.json",
1115
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/maquette-viewer.json",
1116
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/diagram-viewer.json",
1117
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/mockup-viewer.json",
1118
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/record-viewer.json",
1119
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
1120
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/button.json",
1136
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
1137
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-chat.json",
1138
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-workspace.json",
1139
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/viewers.json",
1140
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/maquette-viewer.json",
1141
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/diagram-viewer.json",
1142
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/mockup-viewer.json",
1143
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/record-viewer.json",
1144
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
1145
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/button.json",
1121
1146
  "drawer",
1122
1147
  "dialog",
1123
1148
  "button",
1124
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/file-tree.json",
1149
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/file-tree.json",
1125
1150
  "dropdown-menu",
1126
1151
  "scroll-area",
1127
1152
  "separator",
@@ -1202,25 +1227,50 @@
1202
1227
  }
1203
1228
  ]
1204
1229
  },
1230
+ {
1231
+ "name": "placed-agent",
1232
+ "type": "registry:block",
1233
+ "title": "Placed agent",
1234
+ "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.",
1235
+ "dependencies": [
1236
+ "react@^19.0.0",
1237
+ "react-dom@^19.0.0",
1238
+ "lucide-react@^1.51.0"
1239
+ ],
1240
+ "registryDependencies": [
1241
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-app.json",
1242
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-ambient.json",
1243
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/app-shell.json",
1244
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
1245
+ "button"
1246
+ ],
1247
+ "files": [
1248
+ {
1249
+ "path": "registry/placed-agent/placed-agent-workspace.tsx",
1250
+ "type": "registry:component",
1251
+ "target": "components/placed-agent/placed-agent-workspace.tsx"
1252
+ }
1253
+ ]
1254
+ },
1205
1255
  {
1206
1256
  "name": "app-shell",
1207
1257
  "type": "registry:block",
1208
1258
  "title": "App shell: layouts, list/detail and agent layer",
1209
1259
  "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.",
1210
1260
  "dependencies": [
1211
- "@hachej/boring-feedback@^0.4.6",
1212
- "@hachej/boring-ui-kit@^0.4.6",
1261
+ "@hachej/boring-feedback@^0.4.8",
1262
+ "@hachej/boring-ui-kit@^0.4.8",
1213
1263
  "@base-ui/react@^1.9.0",
1214
1264
  "react@^19.0.0",
1215
1265
  "react-dom@^19.0.0",
1216
1266
  "lucide-react@^1.51.0"
1217
1267
  ],
1218
1268
  "registryDependencies": [
1219
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-chat.json",
1220
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/dock.json",
1221
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/feedback.json",
1222
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
1223
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/button.json",
1269
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-chat.json",
1270
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/dock.json",
1271
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/feedback.json",
1272
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
1273
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/button.json",
1224
1274
  "drawer",
1225
1275
  "sidebar",
1226
1276
  "avatar",
@@ -1358,8 +1408,8 @@
1358
1408
  "title": "Viewers",
1359
1409
  "description": "The standard viewer top bar (title, status, viewer controls, Refresh, Share, Copy, Download, Open in new tab, Close, overflow menu) with Tailwind panes over it: the Markdown editor with a formatting toolbar and prose styling, the passive HTML preview and source editor, an image viewer with zoom and pan, a PDF viewer, and LocalFileViewer for browser-only files. Owned, editable source over the borrowed controllers; no AI SDK.",
1360
1410
  "dependencies": [
1361
- "@hachej/boring-ui-kit@^0.4.6",
1362
- "@hachej/boring-files@^0.4.6",
1411
+ "@hachej/boring-ui-kit@^0.4.8",
1412
+ "@hachej/boring-files@^0.4.8",
1363
1413
  "react@^19.0.0",
1364
1414
  "react-dom@^19.0.0",
1365
1415
  "marked@^17.0.6",
@@ -1379,17 +1429,18 @@
1379
1429
  "pdfjs-dist@6.3.289"
1380
1430
  ],
1381
1431
  "registryDependencies": [
1382
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
1383
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
1384
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/button.json",
1432
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
1433
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
1434
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/button.json",
1385
1435
  "button",
1386
1436
  "toggle",
1387
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/version-history.json",
1437
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/version-history.json",
1388
1438
  "toggle-group",
1389
1439
  "dialog",
1390
1440
  "textarea",
1391
1441
  "badge",
1392
- "dropdown-menu"
1442
+ "dropdown-menu",
1443
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/markdown-editor.json"
1393
1444
  ],
1394
1445
  "files": [
1395
1446
  {
@@ -1739,6 +1790,26 @@
1739
1790
  "height": "auto",
1740
1791
  "margin": "1rem 0"
1741
1792
  },
1793
+ ".boring-viewer .boring-markdown-content .boring-markdown-preserved": {
1794
+ "margin": "0.75rem 0",
1795
+ "color": "var(--muted-foreground)",
1796
+ "font-family": "var(--font-mono)",
1797
+ "font-size": "var(--text-sm)"
1798
+ },
1799
+ ".boring-viewer .boring-markdown-content .boring-markdown-preserved small": {
1800
+ "font-size": "var(--text-xs)"
1801
+ },
1802
+ ".boring-viewer .boring-markdown-content .boring-markdown-preserved pre": {
1803
+ "margin": "0.25rem 0",
1804
+ "padding": "0.5rem 0.75rem",
1805
+ "white-space": "pre-wrap",
1806
+ "overflow-wrap": "anywhere"
1807
+ },
1808
+ ".boring-viewer .boring-markdown-content .boring-markdown-preserved-inline": {
1809
+ "color": "var(--muted-foreground)",
1810
+ "font-family": "var(--font-mono)",
1811
+ "font-size": "var(--text-sm)"
1812
+ },
1742
1813
  ".boring-viewer .boring-markdown-content .boring-markdown-image": {
1743
1814
  "display": "inline-flex",
1744
1815
  "max-width": "100%",
@@ -1826,8 +1897,8 @@
1826
1897
  "lucide-react@^1.51.0"
1827
1898
  ],
1828
1899
  "registryDependencies": [
1829
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
1830
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
1900
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
1901
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
1831
1902
  "button",
1832
1903
  "input",
1833
1904
  "label",
@@ -1848,9 +1919,9 @@
1848
1919
  "title": "Feedback",
1849
1920
  "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.",
1850
1921
  "dependencies": [
1851
- "@hachej/boring-feedback@^0.4.6",
1852
- "@hachej/boring-ui-kit@^0.4.6",
1853
- "@hachej/boring-files@^0.4.6",
1922
+ "@hachej/boring-feedback@^0.4.8",
1923
+ "@hachej/boring-ui-kit@^0.4.8",
1924
+ "@hachej/boring-files@^0.4.8",
1854
1925
  "react@^19.0.0",
1855
1926
  "react-dom@^19.0.0",
1856
1927
  "lucide-react@^1.51.0"
@@ -1954,7 +2025,7 @@
1954
2025
  "[data-boring=\"feedback\"] .boring-feedback-keys": {
1955
2026
  "opacity": "0.8"
1956
2027
  },
1957
- "[data-boring=\"feedback\"]:is(.boring-feedback-sheet, .boring-feedback-report, .boring-feedback-list, .boring-feedback-bubble, .boring-feedback-review, .boring-feedback-pointbar, .boring-feedback-preview, .boring-feedback-bar)": {
2028
+ "[data-boring=\"feedback\"]:is(.boring-feedback-sheet, .boring-feedback-report, .boring-feedback-list, .boring-feedback-bubble, .boring-feedback-review, .boring-feedback-banner, .boring-feedback-preview, .boring-feedback-bar)": {
1958
2029
  "padding-inline": "var(--card-spacing)"
1959
2030
  },
1960
2031
  "[data-boring=\"feedback\"].boring-feedback-sheet": {
@@ -2126,10 +2197,6 @@
2126
2197
  "color": "var(--boring-feedback-muted)",
2127
2198
  "font-size": "var(--text-sm, 0.875rem)"
2128
2199
  },
2129
- "[data-boring=\"feedback\"] .boring-feedback-alt": {
2130
- "color": "var(--boring-feedback-muted)",
2131
- "font-size": "var(--text-xs, 0.75rem)"
2132
- },
2133
2200
  "[data-boring=\"feedback\"].boring-feedback-bar[data-docked=\"true\"] > .boring-feedback-hint": {
2134
2201
  "flex": "1 1 10rem",
2135
2202
  "max-width": "none",
@@ -2225,47 +2292,21 @@
2225
2292
  "display": "grid",
2226
2293
  "gap": "0.25rem"
2227
2294
  },
2228
- "[data-boring=\"feedback\"].boring-feedback-pointbar": {
2295
+ "[data-boring=\"feedback\"].boring-feedback-banner": {
2229
2296
  "position": "fixed",
2230
2297
  "left": "8px",
2231
2298
  "right": "8px",
2232
2299
  "z-index": "2147483000",
2233
2300
  "max-width": "32rem",
2234
- "margin": "0 auto"
2235
- },
2236
- "[data-boring=\"feedback\"] .boring-feedback-point-line": {
2237
- "display": "flex",
2238
- "align-items": "center",
2239
- "gap": "0.5rem",
2240
- "min-width": "0",
2241
- "padding": "0 0.25rem"
2242
- },
2243
- "[data-boring=\"feedback\"] .boring-feedback-point-hint": {
2244
- "flex": "1",
2245
- "min-width": "0",
2246
- "font-weight": "var(--font-weight-semibold, 600)"
2247
- },
2248
- "[data-boring=\"feedback\"] .boring-feedback-point-count": {
2249
- "flex": "none",
2250
- "color": "var(--boring-feedback-muted)",
2251
- "font-size": "var(--text-sm, 0.875rem)",
2252
- "font-variant-numeric": "tabular-nums"
2253
- },
2254
- "[data-boring=\"feedback\"] .boring-feedback-point-actions": {
2255
- "display": "flex",
2301
+ "margin": "0 auto",
2302
+ "flex-direction": "row",
2256
2303
  "align-items": "center",
2257
- "gap": "0.375rem"
2258
- },
2259
- "[data-boring=\"feedback\"] .boring-feedback-point-spacer": {
2260
- "flex": "1"
2304
+ "gap": "0.75rem"
2261
2305
  },
2262
2306
  "@media (max-width: 640px), (pointer: coarse)": {
2263
2307
  "[data-boring=\"feedback\"] .boring-feedback-hint": {
2264
2308
  "display": "none"
2265
2309
  },
2266
- "[data-boring=\"feedback\"] .boring-feedback-alt": {
2267
- "display": "none"
2268
- },
2269
2310
  "[data-boring=\"feedback\"].boring-feedback-bar": {
2270
2311
  "top": "auto",
2271
2312
  "bottom": "12px",
@@ -2348,14 +2389,15 @@
2348
2389
  }
2349
2390
  },
2350
2391
  "registryDependencies": [
2351
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-chat.json",
2352
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
2392
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-chat.json",
2393
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
2353
2394
  "button",
2354
2395
  "toggle",
2355
2396
  "badge",
2356
2397
  "item",
2357
2398
  "card",
2358
- "textarea"
2399
+ "textarea",
2400
+ "switch"
2359
2401
  ]
2360
2402
  },
2361
2403
  {
@@ -2364,7 +2406,7 @@
2364
2406
  "title": "Feedback preview",
2365
2407
  "description": "PreviewBanner: a live, reversible preview of a change in the page (Approve / Discard) over `@hachej/boring-feedback/preview`, whose subagent calls models through a host gateway. Separate from `feedback` so annotation-only apps do not install the model SDK; install `feedback` first (its styles cover the banner).",
2366
2408
  "dependencies": [
2367
- "@hachej/boring-feedback@^0.4.6",
2409
+ "@hachej/boring-feedback@^0.4.8",
2368
2410
  "@earendil-works/pi-ai@~1.2.0",
2369
2411
  "react@^19.0.0"
2370
2412
  ],
@@ -2388,8 +2430,8 @@
2388
2430
  "title": "Consumer task-list viewer",
2389
2431
  "description": "A consumer-defined task-list schema and controller over the shared text buffer, with a restylable borrowed React renderer.",
2390
2432
  "dependencies": [
2391
- "@hachej/boring-ui-kit@^0.4.6",
2392
- "@hachej/boring-files@^0.4.6",
2433
+ "@hachej/boring-ui-kit@^0.4.8",
2434
+ "@hachej/boring-files@^0.4.8",
2393
2435
  "react@^19.0.0",
2394
2436
  "react-dom@^19.0.0",
2395
2437
  "zod@^4.6.5"
@@ -2445,12 +2487,12 @@
2445
2487
  "title": "Version history rows",
2446
2488
  "description": "Shared view-only version rows and menu metadata with relative time, provenance and Current. No file reads, publication or restoration.",
2447
2489
  "dependencies": [
2448
- "@hachej/boring-files@^0.4.6",
2490
+ "@hachej/boring-files@^0.4.8",
2449
2491
  "react@^19.0.0"
2450
2492
  ],
2451
2493
  "registryDependencies": [
2452
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
2453
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/button.json",
2494
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
2495
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/button.json",
2454
2496
  "button"
2455
2497
  ],
2456
2498
  "files": [
@@ -2467,15 +2509,15 @@
2467
2509
  "title": "File tree",
2468
2510
  "description": "Browse, search, upload and inspect retained versions through one revisionProvider binding. Uses the consumer's shadcn Button and dropdown-menu with shared version-history rows; Base UI style only.",
2469
2511
  "dependencies": [
2470
- "@hachej/boring-ui-kit@^0.4.6",
2471
- "@hachej/boring-files@^0.4.6",
2512
+ "@hachej/boring-ui-kit@^0.4.8",
2513
+ "@hachej/boring-files@^0.4.8",
2472
2514
  "react@^19.0.0",
2473
2515
  "lucide-react@^1.51.0"
2474
2516
  ],
2475
2517
  "registryDependencies": [
2476
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
2477
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
2478
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/version-history.json",
2518
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
2519
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
2520
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/version-history.json",
2479
2521
  "button",
2480
2522
  "dropdown-menu",
2481
2523
  "collapsible",
@@ -2500,20 +2542,20 @@
2500
2542
  "title": "Documents: the Library, a file and its revisions",
2501
2543
  "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.",
2502
2544
  "dependencies": [
2503
- "@hachej/boring-ui-kit@^0.4.6",
2504
- "@hachej/boring-files@^0.4.6",
2545
+ "@hachej/boring-ui-kit@^0.4.8",
2546
+ "@hachej/boring-files@^0.4.8",
2505
2547
  "react@^19.0.0",
2506
2548
  "lucide-react@^1.51.0"
2507
2549
  ],
2508
2550
  "registryDependencies": [
2509
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/theme.json",
2510
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
2511
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/button.json",
2512
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-chat.json",
2513
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-app.json",
2514
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/app-shell.json",
2515
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/file-tree.json",
2516
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/viewers.json",
2551
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/theme.json",
2552
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
2553
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/button.json",
2554
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-chat.json",
2555
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-app.json",
2556
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/app-shell.json",
2557
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/file-tree.json",
2558
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/viewers.json",
2517
2559
  "drawer",
2518
2560
  "button",
2519
2561
  "scroll-area",
@@ -2553,15 +2595,15 @@
2553
2595
  "title": "Point and dictate on app data",
2554
2596
  "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.",
2555
2597
  "dependencies": [
2556
- "@hachej/boring-ui-kit@^0.4.6",
2557
- "@hachej/boring-feedback@^0.4.6",
2598
+ "@hachej/boring-ui-kit@^0.4.8",
2599
+ "@hachej/boring-feedback@^0.4.8",
2558
2600
  "@earendil-works/pi-durable@~1.2.0",
2559
2601
  "react@^19.0.0",
2560
2602
  "react-dom@^19.0.0"
2561
2603
  ],
2562
2604
  "registryDependencies": [
2563
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/app-shell.json",
2564
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/pi-chat.json",
2605
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/app-shell.json",
2606
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/pi-chat.json",
2565
2607
  "button",
2566
2608
  "card",
2567
2609
  "message",
@@ -2586,7 +2628,7 @@
2586
2628
  "title": "Requests board",
2587
2629
  "description": "Host-fed compact requests and responsive list/detail with questions and decisions.",
2588
2630
  "registryDependencies": [
2589
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
2631
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
2590
2632
  "badge",
2591
2633
  "button",
2592
2634
  "input",
@@ -2623,13 +2665,13 @@
2623
2665
  "title": "Anchored highlights",
2624
2666
  "description": "Exact Markdown highlights and comments in a conditional workspace sidecar.",
2625
2667
  "dependencies": [
2626
- "@hachej/boring-ui-kit@^0.4.6",
2627
- "@hachej/boring-files@^0.4.6",
2668
+ "@hachej/boring-ui-kit@^0.4.8",
2669
+ "@hachej/boring-files@^0.4.8",
2628
2670
  "react@^19.0.0",
2629
2671
  "react-dom@^19.0.0"
2630
2672
  ],
2631
2673
  "registryDependencies": [
2632
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/markdown-editor.json",
2674
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/markdown-editor.json",
2633
2675
  "button",
2634
2676
  "textarea",
2635
2677
  "label",
@@ -2655,7 +2697,7 @@
2655
2697
  "lucide-react@^1.51.0"
2656
2698
  ],
2657
2699
  "registryDependencies": [
2658
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.6/r/utils.json",
2700
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.8/r/utils.json",
2659
2701
  "button",
2660
2702
  "card",
2661
2703
  "badge",