@hachej/boring-ui-kit 0.4.11 → 0.4.12

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 (44) hide show
  1. package/dist/shared-chat/socket.js +3 -1
  2. package/dist/shared-chat/source.d.ts +7 -1
  3. package/package.json +2 -2
  4. package/r/agent-target.json +4 -4
  5. package/r/app-shell.json +10 -8
  6. package/r/board-viewer.json +6 -6
  7. package/r/button.json +1 -1
  8. package/r/diagram-viewer.json +2 -2
  9. package/r/dock.json +1 -1
  10. package/r/documents.json +11 -11
  11. package/r/feedback-preview.json +1 -1
  12. package/r/feedback.json +7 -6
  13. package/r/file-tree.json +5 -5
  14. package/r/highlights.json +3 -3
  15. package/r/html-viewer.json +3 -3
  16. package/r/looks-viewer.json +1 -1
  17. package/r/maquette-viewer.json +3 -3
  18. package/r/markdown-editor.json +3 -3
  19. package/r/mockup-viewer.json +1 -1
  20. package/r/pi-ambient.json +11 -8
  21. package/r/pi-app.json +18 -16
  22. package/r/pi-artifacts.json +32 -0
  23. package/r/pi-chat-approval.json +26 -0
  24. package/r/pi-chat-attachments.json +25 -0
  25. package/r/pi-chat-markdown.json +26 -0
  26. package/r/pi-chat-mentions.json +23 -0
  27. package/r/pi-chat-pickers.json +24 -0
  28. package/r/pi-chat-plugins.json +31 -0
  29. package/r/pi-chat-question.json +29 -0
  30. package/r/pi-chat-slash.json +26 -0
  31. package/r/pi-chat-subagent.json +34 -0
  32. package/r/pi-chat-voice.json +39 -0
  33. package/r/pi-chat.json +15 -97
  34. package/r/pi-workspace.json +4 -4
  35. package/r/placed-agent.json +4 -4
  36. package/r/provider-setup.json +2 -2
  37. package/r/record-viewer.json +1 -1
  38. package/r/registry.json +409 -177
  39. package/r/requests-board.json +1 -1
  40. package/r/shared-chat.json +13 -9
  41. package/r/task-list-viewer.json +2 -2
  42. package/r/version-history.json +3 -3
  43. package/r/viewers.json +7 -7
  44. 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.11/r/utils.json",
156
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/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.11",
185
- "@hachej/boring-files@^0.4.11",
184
+ "@hachej/boring-ui-kit@^0.4.12",
185
+ "@hachej/boring-files@^0.4.12",
186
186
  "react@^19.0.0",
187
187
  "react-dom@^19.0.0",
188
188
  "marked@^17.0.6",
@@ -338,7 +338,7 @@
338
338
  },
339
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.",
340
340
  "registryDependencies": [
341
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/button.json",
341
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/button.json",
342
342
  "button",
343
343
  "toggle",
344
344
  "dropdown-menu"
@@ -350,8 +350,8 @@
350
350
  "title": "HTML source and passive preview",
351
351
  "description": "Exact HTML source editing with a reconstructed passive preview and borrowed controller. Browser security qualification remains separate.",
352
352
  "dependencies": [
353
- "@hachej/boring-ui-kit@^0.4.11",
354
- "@hachej/boring-files@^0.4.11",
353
+ "@hachej/boring-ui-kit@^0.4.12",
354
+ "@hachej/boring-files@^0.4.12",
355
355
  "react@^19.0.0",
356
356
  "react-dom@^19.0.0"
357
357
  ],
@@ -399,22 +399,20 @@
399
399
  }
400
400
  },
401
401
  "registryDependencies": [
402
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/button.json"
402
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/button.json"
403
403
  ]
404
404
  },
405
405
  {
406
406
  "name": "pi-chat",
407
407
  "type": "registry:block",
408
408
  "title": "Pi chat",
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.",
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 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.",
410
410
  "dependencies": [
411
- "@hachej/boring-ui-kit@^0.4.11",
412
- "@hachej/boring-files@^0.4.11",
413
- "@hachej/boring-feedback@^0.4.11",
411
+ "@hachej/boring-ui-kit@^0.4.12",
412
+ "@hachej/boring-files@^0.4.12",
413
+ "@hachej/boring-feedback@^0.4.12",
414
414
  "react@^19.0.0",
415
415
  "react-dom@^19.0.0",
416
- "marked@^17.0.6",
417
- "entities@^8.1.0",
418
416
  "@base-ui/react@1.9.0",
419
417
  "@earendil-works/pi-durable@~1.2.0",
420
418
  "@earendil-works/chord@~1.2.0",
@@ -425,8 +423,8 @@
425
423
  "zod@^4.6.5"
426
424
  ],
427
425
  "registryDependencies": [
428
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
429
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/button.json",
426
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
427
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/button.json",
430
428
  "dialog",
431
429
  "tooltip",
432
430
  "trace",
@@ -436,8 +434,6 @@
436
434
  "attachment",
437
435
  "badge",
438
436
  "alert",
439
- "checkbox",
440
- "table",
441
437
  "card",
442
438
  "spinner",
443
439
  "collapsible",
@@ -464,26 +460,6 @@
464
460
  "type": "registry:component",
465
461
  "target": "components/pi-chat/activity.tsx"
466
462
  },
467
- {
468
- "path": "registry/pi-chat/artifact-card.tsx",
469
- "type": "registry:component",
470
- "target": "components/pi-chat/artifact-card.tsx"
471
- },
472
- {
473
- "path": "registry/pi-chat/approval-card.tsx",
474
- "type": "registry:component",
475
- "target": "components/pi-chat/approval-card.tsx"
476
- },
477
- {
478
- "path": "registry/pi-chat/artifact.ts",
479
- "type": "registry:lib",
480
- "target": "components/pi-chat/artifact.ts"
481
- },
482
- {
483
- "path": "registry/pi-chat/camera-sheet.tsx",
484
- "type": "registry:component",
485
- "target": "components/pi-chat/camera-sheet.tsx"
486
- },
487
463
  {
488
464
  "path": "registry/pi-chat/code-block.tsx",
489
465
  "type": "registry:component",
@@ -529,16 +505,6 @@
529
505
  "type": "registry:component",
530
506
  "target": "components/pi-chat/sent-feedback.tsx"
531
507
  },
532
- {
533
- "path": "registry/pi-chat/markdown.tsx",
534
- "type": "registry:component",
535
- "target": "components/pi-chat/markdown.tsx"
536
- },
537
- {
538
- "path": "registry/pi-chat/mention-menu.tsx",
539
- "type": "registry:component",
540
- "target": "components/pi-chat/mention-menu.tsx"
541
- },
542
508
  {
543
509
  "path": "registry/pi-chat/message.tsx",
544
510
  "type": "registry:component",
@@ -559,16 +525,6 @@
559
525
  "type": "registry:lib",
560
526
  "target": "components/pi-chat/picker-keyboard.ts"
561
527
  },
562
- {
563
- "path": "registry/pi-chat/pickers.tsx",
564
- "type": "registry:component",
565
- "target": "components/pi-chat/pickers.tsx"
566
- },
567
- {
568
- "path": "registry/pi-chat/question-card.tsx",
569
- "type": "registry:component",
570
- "target": "components/pi-chat/question-card.tsx"
571
- },
572
528
  {
573
529
  "path": "registry/pi-chat/queue.tsx",
574
530
  "type": "registry:component",
@@ -590,9 +546,9 @@
590
546
  "target": "components/pi-chat/shimmer.tsx"
591
547
  },
592
548
  {
593
- "path": "registry/pi-chat/slash-menu.tsx",
549
+ "path": "registry/pi-chat/suggestions.tsx",
594
550
  "type": "registry:component",
595
- "target": "components/pi-chat/slash-menu.tsx"
551
+ "target": "components/pi-chat/suggestions.tsx"
596
552
  },
597
553
  {
598
554
  "path": "registry/pi-chat/tool.tsx",
@@ -628,31 +584,6 @@
628
584
  "path": "registry/pi-chat/use-conversations.ts",
629
585
  "type": "registry:hook",
630
586
  "target": "components/pi-chat/use-conversations.ts"
631
- },
632
- {
633
- "path": "registry/pi-chat/run-card.tsx",
634
- "type": "registry:component",
635
- "target": "components/pi-chat/run-card.tsx"
636
- },
637
- {
638
- "path": "registry/pi-chat/subagent-card.tsx",
639
- "type": "registry:component",
640
- "target": "components/pi-chat/subagent-card.tsx"
641
- },
642
- {
643
- "path": "registry/pi-chat/use-hold-to-record.ts",
644
- "type": "registry:hook",
645
- "target": "components/pi-chat/use-hold-to-record.ts"
646
- },
647
- {
648
- "path": "registry/pi-chat/use-voice-message.ts",
649
- "type": "registry:hook",
650
- "target": "components/pi-chat/use-voice-message.ts"
651
- },
652
- {
653
- "path": "registry/pi-chat/voice-message.tsx",
654
- "type": "registry:component",
655
- "target": "components/pi-chat/voice-message.tsx"
656
587
  }
657
588
  ],
658
589
  "css": {
@@ -722,13 +653,302 @@
722
653
  }
723
654
  }
724
655
  },
656
+ {
657
+ "name": "pi-chat-markdown",
658
+ "type": "registry:block",
659
+ "title": "Pi chat Markdown",
660
+ "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.",
661
+ "dependencies": [
662
+ "react@^19.0.0",
663
+ "marked@^17.0.6",
664
+ "entities@^8.1.0"
665
+ ],
666
+ "registryDependencies": [
667
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
668
+ "button",
669
+ "checkbox",
670
+ "table"
671
+ ],
672
+ "files": [
673
+ {
674
+ "path": "registry/pi-chat-markdown/markdown.tsx",
675
+ "type": "registry:component",
676
+ "target": "components/pi-chat-markdown/markdown.tsx"
677
+ }
678
+ ]
679
+ },
680
+ {
681
+ "name": "pi-chat-slash",
682
+ "type": "registry:block",
683
+ "title": "Pi chat slash menu",
684
+ "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.",
685
+ "dependencies": [
686
+ "react@^19.0.0",
687
+ "lucide-react@^1.51.0"
688
+ ],
689
+ "registryDependencies": [
690
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
691
+ "badge",
692
+ "button",
693
+ "input-group",
694
+ "item"
695
+ ],
696
+ "files": [
697
+ {
698
+ "path": "registry/pi-chat-slash/slash-menu.tsx",
699
+ "type": "registry:component",
700
+ "target": "components/pi-chat-slash/slash-menu.tsx"
701
+ }
702
+ ]
703
+ },
704
+ {
705
+ "name": "pi-chat-mentions",
706
+ "type": "registry:block",
707
+ "title": "Pi chat mentions",
708
+ "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).",
709
+ "dependencies": [
710
+ "react@^19.0.0",
711
+ "lucide-react@^1.51.0"
712
+ ],
713
+ "registryDependencies": [
714
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
715
+ "item"
716
+ ],
717
+ "files": [
718
+ {
719
+ "path": "registry/pi-chat-mentions/mention-menu.tsx",
720
+ "type": "registry:component",
721
+ "target": "components/pi-chat-mentions/mention-menu.tsx"
722
+ }
723
+ ]
724
+ },
725
+ {
726
+ "name": "pi-chat-pickers",
727
+ "type": "registry:block",
728
+ "title": "Pi chat model and effort picker",
729
+ "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.",
730
+ "dependencies": [
731
+ "react@^19.0.0",
732
+ "lucide-react@^1.51.0"
733
+ ],
734
+ "registryDependencies": [
735
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
736
+ "button",
737
+ "dropdown-menu"
738
+ ],
739
+ "files": [
740
+ {
741
+ "path": "registry/pi-chat-pickers/pickers.tsx",
742
+ "type": "registry:component",
743
+ "target": "components/pi-chat-pickers/pickers.tsx"
744
+ }
745
+ ]
746
+ },
747
+ {
748
+ "name": "pi-chat-voice",
749
+ "type": "registry:block",
750
+ "title": "Pi chat voice messages",
751
+ "description": "Hold-to-record voice messages: the recorder hook over the kit's voice capture, 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.",
752
+ "dependencies": [
753
+ "@hachej/boring-ui-kit@^0.4.12",
754
+ "react@^19.0.0",
755
+ "lucide-react@^1.51.0"
756
+ ],
757
+ "registryDependencies": [
758
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
759
+ "bubble",
760
+ "button",
761
+ "message",
762
+ "spinner"
763
+ ],
764
+ "files": [
765
+ {
766
+ "path": "registry/pi-chat-voice/use-hold-to-record.ts",
767
+ "type": "registry:hook",
768
+ "target": "components/pi-chat-voice/use-hold-to-record.ts"
769
+ },
770
+ {
771
+ "path": "registry/pi-chat-voice/use-voice-message.ts",
772
+ "type": "registry:hook",
773
+ "target": "components/pi-chat-voice/use-voice-message.ts"
774
+ },
775
+ {
776
+ "path": "registry/pi-chat-voice/voice-message.tsx",
777
+ "type": "registry:component",
778
+ "target": "components/pi-chat-voice/voice-message.tsx"
779
+ }
780
+ ]
781
+ },
782
+ {
783
+ "name": "pi-chat-attachments",
784
+ "type": "registry:block",
785
+ "title": "Pi chat camera",
786
+ "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.",
787
+ "dependencies": [
788
+ "react@^19.0.0",
789
+ "react-dom@^19.0.0",
790
+ "lucide-react@^1.51.0"
791
+ ],
792
+ "registryDependencies": [
793
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
794
+ "button",
795
+ "input"
796
+ ],
797
+ "files": [
798
+ {
799
+ "path": "registry/pi-chat-attachments/camera-sheet.tsx",
800
+ "type": "registry:component",
801
+ "target": "components/pi-chat-attachments/camera-sheet.tsx"
802
+ }
803
+ ]
804
+ },
805
+ {
806
+ "name": "pi-chat-question",
807
+ "type": "registry:block",
808
+ "title": "Pi chat question card",
809
+ "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.",
810
+ "dependencies": [
811
+ "react@^19.0.0",
812
+ "lucide-react@^1.51.0",
813
+ "@earendil-works/pi-ai@~1.2.0"
814
+ ],
815
+ "registryDependencies": [
816
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
817
+ "alert",
818
+ "button",
819
+ "card",
820
+ "input",
821
+ "item",
822
+ "spinner"
823
+ ],
824
+ "files": [
825
+ {
826
+ "path": "registry/pi-chat-question/question-card.tsx",
827
+ "type": "registry:component",
828
+ "target": "components/pi-chat-question/question-card.tsx"
829
+ }
830
+ ]
831
+ },
832
+ {
833
+ "name": "pi-chat-approval",
834
+ "type": "registry:block",
835
+ "title": "Pi chat approval card",
836
+ "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.",
837
+ "dependencies": [
838
+ "react@^19.0.0",
839
+ "lucide-react@^1.51.0",
840
+ "@earendil-works/pi-ai@~1.2.0"
841
+ ],
842
+ "registryDependencies": [
843
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
844
+ "badge",
845
+ "button",
846
+ "item"
847
+ ],
848
+ "files": [
849
+ {
850
+ "path": "registry/pi-chat-approval/approval-card.tsx",
851
+ "type": "registry:component",
852
+ "target": "components/pi-chat-approval/approval-card.tsx"
853
+ }
854
+ ]
855
+ },
856
+ {
857
+ "name": "pi-chat-subagent",
858
+ "type": "registry:block",
859
+ "title": "Pi chat sub-agent card",
860
+ "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.",
861
+ "dependencies": [
862
+ "react@^19.0.0",
863
+ "lucide-react@^1.51.0",
864
+ "@earendil-works/pi-ai@~1.2.0"
865
+ ],
866
+ "registryDependencies": [
867
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
868
+ "alert",
869
+ "badge",
870
+ "button",
871
+ "item",
872
+ "spinner"
873
+ ],
874
+ "files": [
875
+ {
876
+ "path": "registry/pi-chat-subagent/run-card.tsx",
877
+ "type": "registry:component",
878
+ "target": "components/pi-chat-subagent/run-card.tsx"
879
+ },
880
+ {
881
+ "path": "registry/pi-chat-subagent/subagent-card.tsx",
882
+ "type": "registry:component",
883
+ "target": "components/pi-chat-subagent/subagent-card.tsx"
884
+ }
885
+ ]
886
+ },
887
+ {
888
+ "name": "pi-artifacts",
889
+ "type": "registry:block",
890
+ "title": "Pi artifacts",
891
+ "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.",
892
+ "dependencies": [
893
+ "react@^19.0.0",
894
+ "lucide-react@^1.51.0",
895
+ "@earendil-works/pi-ai@~1.2.0",
896
+ "@earendil-works/pi-durable@~1.2.0"
897
+ ],
898
+ "registryDependencies": [
899
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
900
+ "button",
901
+ "item"
902
+ ],
903
+ "files": [
904
+ {
905
+ "path": "registry/pi-artifacts/artifact.ts",
906
+ "type": "registry:lib",
907
+ "target": "components/pi-artifacts/artifact.ts"
908
+ },
909
+ {
910
+ "path": "registry/pi-artifacts/artifact-card.tsx",
911
+ "type": "registry:component",
912
+ "target": "components/pi-artifacts/artifact-card.tsx"
913
+ }
914
+ ]
915
+ },
916
+ {
917
+ "name": "pi-chat-plugins",
918
+ "type": "registry:block",
919
+ "title": "Pi chat with every composer feature",
920
+ "description": "withChatPlugins(props): pi-chat with every composer feature item plugged in (Markdown, slash menu, mentions, model and effort picker, voice messages, phone camera). Components the host already passes are kept; features the host does not configure stay off. pi-app, pi-ambient, app-shell and shared-chat use it.",
921
+ "dependencies": [
922
+ "react@^19.0.0"
923
+ ],
924
+ "registryDependencies": [
925
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
926
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-markdown.json",
927
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-slash.json",
928
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-mentions.json",
929
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-pickers.json",
930
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-voice.json",
931
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-attachments.json",
932
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-question.json",
933
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-approval.json",
934
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-subagent.json",
935
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-artifacts.json"
936
+ ],
937
+ "files": [
938
+ {
939
+ "path": "registry/pi-chat-plugins/chat-plugins.ts",
940
+ "type": "registry:lib",
941
+ "target": "components/pi-chat-plugins/chat-plugins.ts"
942
+ }
943
+ ]
944
+ },
725
945
  {
726
946
  "name": "pi-ambient",
727
947
  "type": "registry:block",
728
948
  "title": "Pi ambient agent",
729
949
  "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.",
730
950
  "dependencies": [
731
- "@hachej/boring-ui-kit@^0.4.11",
951
+ "@hachej/boring-ui-kit@^0.4.12",
732
952
  "react@^19.0.0",
733
953
  "react-dom@^19.0.0",
734
954
  "@earendil-works/pi-durable@~1.2.0",
@@ -736,11 +956,14 @@
736
956
  "lucide-react@^1.51.0"
737
957
  ],
738
958
  "registryDependencies": [
739
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
740
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-chat.json",
741
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-workspace.json",
742
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
743
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/button.json",
959
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
960
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
961
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-plugins.json",
962
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-question.json",
963
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-artifacts.json",
964
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-workspace.json",
965
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
966
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/button.json",
744
967
  "message-scroller",
745
968
  "button",
746
969
  "toggle",
@@ -776,7 +999,7 @@
776
999
  "react@^19.0.0"
777
1000
  ],
778
1001
  "registryDependencies": [
779
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json"
1002
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json"
780
1003
  ],
781
1004
  "files": [
782
1005
  {
@@ -796,10 +1019,10 @@
796
1019
  "react-dom@^19.0.0"
797
1020
  ],
798
1021
  "registryDependencies": [
799
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
800
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-chat.json",
801
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
802
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/dock.json",
1022
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
1023
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
1024
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
1025
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/dock.json",
803
1026
  "badge",
804
1027
  "card"
805
1028
  ],
@@ -828,7 +1051,7 @@
828
1051
  "zod@^4.6.5"
829
1052
  ],
830
1053
  "registryDependencies": [
831
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/viewers.json",
1054
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/viewers.json",
832
1055
  "badge",
833
1056
  "toggle",
834
1057
  "tooltip"
@@ -866,7 +1089,7 @@
866
1089
  "lucide-react@^1.51.0"
867
1090
  ],
868
1091
  "registryDependencies": [
869
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/mockup-viewer.json",
1092
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/mockup-viewer.json",
870
1093
  "alert",
871
1094
  "button",
872
1095
  "card",
@@ -895,7 +1118,7 @@
895
1118
  "lucide-react@^1.51.0"
896
1119
  ],
897
1120
  "registryDependencies": [
898
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
1121
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
899
1122
  "table",
900
1123
  "badge",
901
1124
  "item",
@@ -931,7 +1154,7 @@
931
1154
  "lucide-react@^1.51.0"
932
1155
  ],
933
1156
  "registryDependencies": [
934
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
1157
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
935
1158
  "alert",
936
1159
  "badge"
937
1160
  ],
@@ -968,8 +1191,8 @@
968
1191
  "lucide-react@^1.51.0"
969
1192
  ],
970
1193
  "registryDependencies": [
971
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
972
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/diagram-viewer.json",
1194
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
1195
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/diagram-viewer.json",
973
1196
  "alert",
974
1197
  "badge",
975
1198
  "bubble",
@@ -1046,16 +1269,16 @@
1046
1269
  "title": "Board viewer",
1047
1270
  "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.",
1048
1271
  "dependencies": [
1049
- "@hachej/boring-ui-kit@^0.4.11",
1050
- "@hachej/boring-files@^0.4.11",
1272
+ "@hachej/boring-ui-kit@^0.4.12",
1273
+ "@hachej/boring-files@^0.4.12",
1051
1274
  "react@^19.0.0",
1052
1275
  "lucide-react@1.51.0",
1053
1276
  "tldraw@5.5.2"
1054
1277
  ],
1055
1278
  "registryDependencies": [
1056
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/maquette-viewer.json",
1057
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/mockup-viewer.json",
1058
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-chat.json",
1279
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/maquette-viewer.json",
1280
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/mockup-viewer.json",
1281
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-artifacts.json",
1059
1282
  "button",
1060
1283
  "alert",
1061
1284
  "card",
@@ -1090,18 +1313,22 @@
1090
1313
  "title": "Shared chat",
1091
1314
  "description": "Optional multi-party host log presentation over PiChat's generic composition seams. No agent runtime or speaking policy.",
1092
1315
  "dependencies": [
1093
- "@hachej/boring-ui-kit@^0.4.11",
1316
+ "@hachej/boring-ui-kit@^0.4.12",
1094
1317
  "react@^19.0.0",
1095
1318
  "lucide-react@^1.51.0"
1096
1319
  ],
1097
1320
  "registryDependencies": [
1098
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-chat.json",
1099
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
1321
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
1322
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-plugins.json",
1323
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-markdown.json",
1324
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-mentions.json",
1325
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
1100
1326
  "avatar",
1101
1327
  "badge",
1102
1328
  "button",
1103
1329
  "drawer",
1104
1330
  "popover",
1331
+ "separator",
1105
1332
  "tooltip",
1106
1333
  "trace",
1107
1334
  "spinner",
@@ -1159,27 +1386,29 @@
1159
1386
  "title": "Pi agent app",
1160
1387
  "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).",
1161
1388
  "dependencies": [
1162
- "@hachej/boring-ui-kit@^0.4.11",
1163
- "@hachej/boring-files@^0.4.11",
1389
+ "@hachej/boring-ui-kit@^0.4.12",
1390
+ "@hachej/boring-files@^0.4.12",
1164
1391
  "react@^19.0.0",
1165
1392
  "react-dom@^19.0.0",
1166
1393
  "lucide-react@^1.51.0"
1167
1394
  ],
1168
1395
  "registryDependencies": [
1169
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
1170
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-chat.json",
1171
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-workspace.json",
1172
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/viewers.json",
1173
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/maquette-viewer.json",
1174
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/diagram-viewer.json",
1175
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/mockup-viewer.json",
1176
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/record-viewer.json",
1177
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
1178
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/button.json",
1396
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
1397
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
1398
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-plugins.json",
1399
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-artifacts.json",
1400
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-workspace.json",
1401
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/viewers.json",
1402
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/maquette-viewer.json",
1403
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/diagram-viewer.json",
1404
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/mockup-viewer.json",
1405
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/record-viewer.json",
1406
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
1407
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/button.json",
1179
1408
  "drawer",
1180
1409
  "dialog",
1181
1410
  "button",
1182
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/file-tree.json",
1411
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/file-tree.json",
1183
1412
  "dropdown-menu",
1184
1413
  "scroll-area",
1185
1414
  "separator",
@@ -1271,10 +1500,10 @@
1271
1500
  "lucide-react@^1.51.0"
1272
1501
  ],
1273
1502
  "registryDependencies": [
1274
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-app.json",
1275
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-ambient.json",
1276
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/app-shell.json",
1277
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
1503
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-app.json",
1504
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-ambient.json",
1505
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/app-shell.json",
1506
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
1278
1507
  "button"
1279
1508
  ],
1280
1509
  "files": [
@@ -1291,19 +1520,21 @@
1291
1520
  "title": "App shell: layouts, list/detail and agent layer",
1292
1521
  "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.",
1293
1522
  "dependencies": [
1294
- "@hachej/boring-feedback@^0.4.11",
1295
- "@hachej/boring-ui-kit@^0.4.11",
1523
+ "@hachej/boring-feedback@^0.4.12",
1524
+ "@hachej/boring-ui-kit@^0.4.12",
1296
1525
  "@base-ui/react@^1.9.0",
1297
1526
  "react@^19.0.0",
1298
1527
  "react-dom@^19.0.0",
1299
1528
  "lucide-react@^1.51.0"
1300
1529
  ],
1301
1530
  "registryDependencies": [
1302
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-chat.json",
1303
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/dock.json",
1304
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/feedback.json",
1305
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
1306
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/button.json",
1531
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
1532
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-plugins.json",
1533
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-voice.json",
1534
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/dock.json",
1535
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/feedback.json",
1536
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
1537
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/button.json",
1307
1538
  "drawer",
1308
1539
  "sidebar",
1309
1540
  "avatar",
@@ -1441,8 +1672,8 @@
1441
1672
  "title": "Viewers",
1442
1673
  "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.",
1443
1674
  "dependencies": [
1444
- "@hachej/boring-ui-kit@^0.4.11",
1445
- "@hachej/boring-files@^0.4.11",
1675
+ "@hachej/boring-ui-kit@^0.4.12",
1676
+ "@hachej/boring-files@^0.4.12",
1446
1677
  "react@^19.0.0",
1447
1678
  "react-dom@^19.0.0",
1448
1679
  "marked@^17.0.6",
@@ -1462,18 +1693,18 @@
1462
1693
  "pdfjs-dist@6.3.289"
1463
1694
  ],
1464
1695
  "registryDependencies": [
1465
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
1466
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
1467
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/button.json",
1696
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
1697
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
1698
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/button.json",
1468
1699
  "button",
1469
1700
  "toggle",
1470
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/version-history.json",
1701
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/version-history.json",
1471
1702
  "toggle-group",
1472
1703
  "dialog",
1473
1704
  "textarea",
1474
1705
  "badge",
1475
1706
  "dropdown-menu",
1476
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/markdown-editor.json"
1707
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/markdown-editor.json"
1477
1708
  ],
1478
1709
  "files": [
1479
1710
  {
@@ -1930,8 +2161,8 @@
1930
2161
  "lucide-react@^1.51.0"
1931
2162
  ],
1932
2163
  "registryDependencies": [
1933
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
1934
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
2164
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
2165
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
1935
2166
  "button",
1936
2167
  "input",
1937
2168
  "label",
@@ -1952,9 +2183,9 @@
1952
2183
  "title": "Feedback",
1953
2184
  "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.",
1954
2185
  "dependencies": [
1955
- "@hachej/boring-feedback@^0.4.11",
1956
- "@hachej/boring-ui-kit@^0.4.11",
1957
- "@hachej/boring-files@^0.4.11",
2186
+ "@hachej/boring-feedback@^0.4.12",
2187
+ "@hachej/boring-ui-kit@^0.4.12",
2188
+ "@hachej/boring-files@^0.4.12",
1958
2189
  "react@^19.0.0",
1959
2190
  "react-dom@^19.0.0",
1960
2191
  "lucide-react@^1.51.0"
@@ -2422,8 +2653,9 @@
2422
2653
  }
2423
2654
  },
2424
2655
  "registryDependencies": [
2425
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-chat.json",
2426
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
2656
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
2657
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat-voice.json",
2658
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
2427
2659
  "button",
2428
2660
  "toggle",
2429
2661
  "badge",
@@ -2439,7 +2671,7 @@
2439
2671
  "title": "Feedback preview",
2440
2672
  "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).",
2441
2673
  "dependencies": [
2442
- "@hachej/boring-feedback@^0.4.11",
2674
+ "@hachej/boring-feedback@^0.4.12",
2443
2675
  "@earendil-works/pi-ai@~1.2.0",
2444
2676
  "react@^19.0.0"
2445
2677
  ],
@@ -2463,8 +2695,8 @@
2463
2695
  "title": "Consumer task-list viewer",
2464
2696
  "description": "A consumer-defined task-list schema and controller over the shared text buffer, with a restylable borrowed React renderer.",
2465
2697
  "dependencies": [
2466
- "@hachej/boring-ui-kit@^0.4.11",
2467
- "@hachej/boring-files@^0.4.11",
2698
+ "@hachej/boring-ui-kit@^0.4.12",
2699
+ "@hachej/boring-files@^0.4.12",
2468
2700
  "react@^19.0.0",
2469
2701
  "react-dom@^19.0.0",
2470
2702
  "zod@^4.6.5"
@@ -2520,12 +2752,12 @@
2520
2752
  "title": "Version history rows",
2521
2753
  "description": "Shared view-only version rows and menu metadata with relative time, provenance and Current. No file reads, publication or restoration.",
2522
2754
  "dependencies": [
2523
- "@hachej/boring-files@^0.4.11",
2755
+ "@hachej/boring-files@^0.4.12",
2524
2756
  "react@^19.0.0"
2525
2757
  ],
2526
2758
  "registryDependencies": [
2527
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
2528
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/button.json",
2759
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
2760
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/button.json",
2529
2761
  "button"
2530
2762
  ],
2531
2763
  "files": [
@@ -2542,15 +2774,15 @@
2542
2774
  "title": "File tree",
2543
2775
  "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.",
2544
2776
  "dependencies": [
2545
- "@hachej/boring-ui-kit@^0.4.11",
2546
- "@hachej/boring-files@^0.4.11",
2777
+ "@hachej/boring-ui-kit@^0.4.12",
2778
+ "@hachej/boring-files@^0.4.12",
2547
2779
  "react@^19.0.0",
2548
2780
  "lucide-react@^1.51.0"
2549
2781
  ],
2550
2782
  "registryDependencies": [
2551
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
2552
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
2553
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/version-history.json",
2783
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
2784
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
2785
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/version-history.json",
2554
2786
  "button",
2555
2787
  "dropdown-menu",
2556
2788
  "collapsible",
@@ -2575,20 +2807,20 @@
2575
2807
  "title": "Documents: the Library, a file and its revisions",
2576
2808
  "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.",
2577
2809
  "dependencies": [
2578
- "@hachej/boring-ui-kit@^0.4.11",
2579
- "@hachej/boring-files@^0.4.11",
2810
+ "@hachej/boring-ui-kit@^0.4.12",
2811
+ "@hachej/boring-files@^0.4.12",
2580
2812
  "react@^19.0.0",
2581
2813
  "lucide-react@^1.51.0"
2582
2814
  ],
2583
2815
  "registryDependencies": [
2584
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/theme.json",
2585
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
2586
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/button.json",
2587
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-chat.json",
2588
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-app.json",
2589
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/app-shell.json",
2590
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/file-tree.json",
2591
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/viewers.json",
2816
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
2817
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
2818
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/button.json",
2819
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-artifacts.json",
2820
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-app.json",
2821
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/app-shell.json",
2822
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/file-tree.json",
2823
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/viewers.json",
2592
2824
  "drawer",
2593
2825
  "button",
2594
2826
  "scroll-area",
@@ -2628,15 +2860,15 @@
2628
2860
  "title": "Point and dictate on app data",
2629
2861
  "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.",
2630
2862
  "dependencies": [
2631
- "@hachej/boring-ui-kit@^0.4.11",
2632
- "@hachej/boring-feedback@^0.4.11",
2863
+ "@hachej/boring-ui-kit@^0.4.12",
2864
+ "@hachej/boring-feedback@^0.4.12",
2633
2865
  "@earendil-works/pi-durable@~1.2.0",
2634
2866
  "react@^19.0.0",
2635
2867
  "react-dom@^19.0.0"
2636
2868
  ],
2637
2869
  "registryDependencies": [
2638
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/app-shell.json",
2639
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/pi-chat.json",
2870
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/app-shell.json",
2871
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/pi-chat.json",
2640
2872
  "button",
2641
2873
  "card",
2642
2874
  "message",
@@ -2661,7 +2893,7 @@
2661
2893
  "title": "Requests board",
2662
2894
  "description": "Host-fed compact requests and responsive list/detail with questions and decisions.",
2663
2895
  "registryDependencies": [
2664
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
2896
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
2665
2897
  "badge",
2666
2898
  "button",
2667
2899
  "input",
@@ -2698,13 +2930,13 @@
2698
2930
  "title": "Anchored highlights",
2699
2931
  "description": "Exact Markdown highlights and comments in a conditional workspace sidecar.",
2700
2932
  "dependencies": [
2701
- "@hachej/boring-ui-kit@^0.4.11",
2702
- "@hachej/boring-files@^0.4.11",
2933
+ "@hachej/boring-ui-kit@^0.4.12",
2934
+ "@hachej/boring-files@^0.4.12",
2703
2935
  "react@^19.0.0",
2704
2936
  "react-dom@^19.0.0"
2705
2937
  ],
2706
2938
  "registryDependencies": [
2707
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/markdown-editor.json",
2939
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/markdown-editor.json",
2708
2940
  "button",
2709
2941
  "textarea",
2710
2942
  "label",
@@ -2730,7 +2962,7 @@
2730
2962
  "lucide-react@^1.51.0"
2731
2963
  ],
2732
2964
  "registryDependencies": [
2733
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.11/r/utils.json",
2965
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
2734
2966
  "button",
2735
2967
  "card",
2736
2968
  "badge",