@hachej/boring-ui-kit 0.4.10 → 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 +32 -0
  17. package/r/maquette-viewer.json +3 -3
  18. package/r/markdown-editor.json +3 -3
  19. package/r/mockup-viewer.json +3 -3
  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 +438 -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.10/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.10",
185
- "@hachej/boring-files@^0.4.10",
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.10/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.10",
354
- "@hachej/boring-files@^0.4.10",
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.10/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.10",
412
- "@hachej/boring-files@^0.4.10",
413
- "@hachej/boring-feedback@^0.4.10",
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.10/r/utils.json",
429
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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.10",
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.10/r/theme.json",
740
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-chat.json",
741
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-workspace.json",
742
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/utils.json",
743
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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.10/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.10/r/theme.json",
800
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-chat.json",
801
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/utils.json",
802
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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
  ],
@@ -820,7 +1043,7 @@
820
1043
  "name": "mockup-viewer",
821
1044
  "type": "registry:block",
822
1045
  "title": "HTML mock-up viewer",
823
- "description": "Sandboxed *.mockup.html artifacts with host theme variables, lazy Tailwind compilation and feedback point comments. Host presentation only; artifact scripts run in an opaque-origin InteractiveFrame, never in the host.",
1046
+ "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.",
824
1047
  "dependencies": [
825
1048
  "react@^19.0.0",
826
1049
  "lucide-react@^1.51.0",
@@ -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.10/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"
@@ -856,6 +1079,35 @@
856
1079
  }
857
1080
  ]
858
1081
  },
1082
+ {
1083
+ "name": "looks-viewer",
1084
+ "type": "registry:block",
1085
+ "title": "Looks viewer",
1086
+ "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.",
1087
+ "dependencies": [
1088
+ "react@^19.0.0",
1089
+ "lucide-react@^1.51.0"
1090
+ ],
1091
+ "registryDependencies": [
1092
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/mockup-viewer.json",
1093
+ "alert",
1094
+ "button",
1095
+ "card",
1096
+ "toggle-group"
1097
+ ],
1098
+ "files": [
1099
+ {
1100
+ "path": "registry/looks-viewer/looks-viewer.tsx",
1101
+ "type": "registry:component",
1102
+ "target": "components/looks-viewer/looks-viewer.tsx"
1103
+ },
1104
+ {
1105
+ "path": "registry/looks-viewer/looks.ts",
1106
+ "type": "registry:lib",
1107
+ "target": "components/looks-viewer/looks.ts"
1108
+ }
1109
+ ]
1110
+ },
859
1111
  {
860
1112
  "name": "record-viewer",
861
1113
  "type": "registry:component",
@@ -866,7 +1118,7 @@
866
1118
  "lucide-react@^1.51.0"
867
1119
  ],
868
1120
  "registryDependencies": [
869
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/theme.json",
1121
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
870
1122
  "table",
871
1123
  "badge",
872
1124
  "item",
@@ -902,7 +1154,7 @@
902
1154
  "lucide-react@^1.51.0"
903
1155
  ],
904
1156
  "registryDependencies": [
905
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/theme.json",
1157
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/theme.json",
906
1158
  "alert",
907
1159
  "badge"
908
1160
  ],
@@ -939,8 +1191,8 @@
939
1191
  "lucide-react@^1.51.0"
940
1192
  ],
941
1193
  "registryDependencies": [
942
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/theme.json",
943
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
944
1196
  "alert",
945
1197
  "badge",
946
1198
  "bubble",
@@ -1017,16 +1269,16 @@
1017
1269
  "title": "Board viewer",
1018
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.",
1019
1271
  "dependencies": [
1020
- "@hachej/boring-ui-kit@^0.4.10",
1021
- "@hachej/boring-files@^0.4.10",
1272
+ "@hachej/boring-ui-kit@^0.4.12",
1273
+ "@hachej/boring-files@^0.4.12",
1022
1274
  "react@^19.0.0",
1023
1275
  "lucide-react@1.51.0",
1024
1276
  "tldraw@5.5.2"
1025
1277
  ],
1026
1278
  "registryDependencies": [
1027
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/maquette-viewer.json",
1028
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/mockup-viewer.json",
1029
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
1030
1282
  "button",
1031
1283
  "alert",
1032
1284
  "card",
@@ -1061,18 +1313,22 @@
1061
1313
  "title": "Shared chat",
1062
1314
  "description": "Optional multi-party host log presentation over PiChat's generic composition seams. No agent runtime or speaking policy.",
1063
1315
  "dependencies": [
1064
- "@hachej/boring-ui-kit@^0.4.10",
1316
+ "@hachej/boring-ui-kit@^0.4.12",
1065
1317
  "react@^19.0.0",
1066
1318
  "lucide-react@^1.51.0"
1067
1319
  ],
1068
1320
  "registryDependencies": [
1069
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-chat.json",
1070
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
1071
1326
  "avatar",
1072
1327
  "badge",
1073
1328
  "button",
1074
1329
  "drawer",
1075
1330
  "popover",
1331
+ "separator",
1076
1332
  "tooltip",
1077
1333
  "trace",
1078
1334
  "spinner",
@@ -1130,27 +1386,29 @@
1130
1386
  "title": "Pi agent app",
1131
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).",
1132
1388
  "dependencies": [
1133
- "@hachej/boring-ui-kit@^0.4.10",
1134
- "@hachej/boring-files@^0.4.10",
1389
+ "@hachej/boring-ui-kit@^0.4.12",
1390
+ "@hachej/boring-files@^0.4.12",
1135
1391
  "react@^19.0.0",
1136
1392
  "react-dom@^19.0.0",
1137
1393
  "lucide-react@^1.51.0"
1138
1394
  ],
1139
1395
  "registryDependencies": [
1140
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/theme.json",
1141
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-chat.json",
1142
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-workspace.json",
1143
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/viewers.json",
1144
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/maquette-viewer.json",
1145
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/diagram-viewer.json",
1146
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/mockup-viewer.json",
1147
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/record-viewer.json",
1148
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/utils.json",
1149
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
1150
1408
  "drawer",
1151
1409
  "dialog",
1152
1410
  "button",
1153
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/file-tree.json",
1411
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/file-tree.json",
1154
1412
  "dropdown-menu",
1155
1413
  "scroll-area",
1156
1414
  "separator",
@@ -1242,10 +1500,10 @@
1242
1500
  "lucide-react@^1.51.0"
1243
1501
  ],
1244
1502
  "registryDependencies": [
1245
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-app.json",
1246
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-ambient.json",
1247
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/app-shell.json",
1248
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
1249
1507
  "button"
1250
1508
  ],
1251
1509
  "files": [
@@ -1262,19 +1520,21 @@
1262
1520
  "title": "App shell: layouts, list/detail and agent layer",
1263
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.",
1264
1522
  "dependencies": [
1265
- "@hachej/boring-feedback@^0.4.10",
1266
- "@hachej/boring-ui-kit@^0.4.10",
1523
+ "@hachej/boring-feedback@^0.4.12",
1524
+ "@hachej/boring-ui-kit@^0.4.12",
1267
1525
  "@base-ui/react@^1.9.0",
1268
1526
  "react@^19.0.0",
1269
1527
  "react-dom@^19.0.0",
1270
1528
  "lucide-react@^1.51.0"
1271
1529
  ],
1272
1530
  "registryDependencies": [
1273
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-chat.json",
1274
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/dock.json",
1275
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/feedback.json",
1276
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/utils.json",
1277
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
1278
1538
  "drawer",
1279
1539
  "sidebar",
1280
1540
  "avatar",
@@ -1412,8 +1672,8 @@
1412
1672
  "title": "Viewers",
1413
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.",
1414
1674
  "dependencies": [
1415
- "@hachej/boring-ui-kit@^0.4.10",
1416
- "@hachej/boring-files@^0.4.10",
1675
+ "@hachej/boring-ui-kit@^0.4.12",
1676
+ "@hachej/boring-files@^0.4.12",
1417
1677
  "react@^19.0.0",
1418
1678
  "react-dom@^19.0.0",
1419
1679
  "marked@^17.0.6",
@@ -1433,18 +1693,18 @@
1433
1693
  "pdfjs-dist@6.3.289"
1434
1694
  ],
1435
1695
  "registryDependencies": [
1436
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/theme.json",
1437
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/utils.json",
1438
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
1439
1699
  "button",
1440
1700
  "toggle",
1441
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/version-history.json",
1701
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/version-history.json",
1442
1702
  "toggle-group",
1443
1703
  "dialog",
1444
1704
  "textarea",
1445
1705
  "badge",
1446
1706
  "dropdown-menu",
1447
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/markdown-editor.json"
1707
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/markdown-editor.json"
1448
1708
  ],
1449
1709
  "files": [
1450
1710
  {
@@ -1901,8 +2161,8 @@
1901
2161
  "lucide-react@^1.51.0"
1902
2162
  ],
1903
2163
  "registryDependencies": [
1904
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/theme.json",
1905
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
1906
2166
  "button",
1907
2167
  "input",
1908
2168
  "label",
@@ -1923,9 +2183,9 @@
1923
2183
  "title": "Feedback",
1924
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.",
1925
2185
  "dependencies": [
1926
- "@hachej/boring-feedback@^0.4.10",
1927
- "@hachej/boring-ui-kit@^0.4.10",
1928
- "@hachej/boring-files@^0.4.10",
2186
+ "@hachej/boring-feedback@^0.4.12",
2187
+ "@hachej/boring-ui-kit@^0.4.12",
2188
+ "@hachej/boring-files@^0.4.12",
1929
2189
  "react@^19.0.0",
1930
2190
  "react-dom@^19.0.0",
1931
2191
  "lucide-react@^1.51.0"
@@ -2393,8 +2653,9 @@
2393
2653
  }
2394
2654
  },
2395
2655
  "registryDependencies": [
2396
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-chat.json",
2397
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
2398
2659
  "button",
2399
2660
  "toggle",
2400
2661
  "badge",
@@ -2410,7 +2671,7 @@
2410
2671
  "title": "Feedback preview",
2411
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).",
2412
2673
  "dependencies": [
2413
- "@hachej/boring-feedback@^0.4.10",
2674
+ "@hachej/boring-feedback@^0.4.12",
2414
2675
  "@earendil-works/pi-ai@~1.2.0",
2415
2676
  "react@^19.0.0"
2416
2677
  ],
@@ -2434,8 +2695,8 @@
2434
2695
  "title": "Consumer task-list viewer",
2435
2696
  "description": "A consumer-defined task-list schema and controller over the shared text buffer, with a restylable borrowed React renderer.",
2436
2697
  "dependencies": [
2437
- "@hachej/boring-ui-kit@^0.4.10",
2438
- "@hachej/boring-files@^0.4.10",
2698
+ "@hachej/boring-ui-kit@^0.4.12",
2699
+ "@hachej/boring-files@^0.4.12",
2439
2700
  "react@^19.0.0",
2440
2701
  "react-dom@^19.0.0",
2441
2702
  "zod@^4.6.5"
@@ -2491,12 +2752,12 @@
2491
2752
  "title": "Version history rows",
2492
2753
  "description": "Shared view-only version rows and menu metadata with relative time, provenance and Current. No file reads, publication or restoration.",
2493
2754
  "dependencies": [
2494
- "@hachej/boring-files@^0.4.10",
2755
+ "@hachej/boring-files@^0.4.12",
2495
2756
  "react@^19.0.0"
2496
2757
  ],
2497
2758
  "registryDependencies": [
2498
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/theme.json",
2499
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
2500
2761
  "button"
2501
2762
  ],
2502
2763
  "files": [
@@ -2513,15 +2774,15 @@
2513
2774
  "title": "File tree",
2514
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.",
2515
2776
  "dependencies": [
2516
- "@hachej/boring-ui-kit@^0.4.10",
2517
- "@hachej/boring-files@^0.4.10",
2777
+ "@hachej/boring-ui-kit@^0.4.12",
2778
+ "@hachej/boring-files@^0.4.12",
2518
2779
  "react@^19.0.0",
2519
2780
  "lucide-react@^1.51.0"
2520
2781
  ],
2521
2782
  "registryDependencies": [
2522
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/theme.json",
2523
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/utils.json",
2524
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
2525
2786
  "button",
2526
2787
  "dropdown-menu",
2527
2788
  "collapsible",
@@ -2546,20 +2807,20 @@
2546
2807
  "title": "Documents: the Library, a file and its revisions",
2547
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.",
2548
2809
  "dependencies": [
2549
- "@hachej/boring-ui-kit@^0.4.10",
2550
- "@hachej/boring-files@^0.4.10",
2810
+ "@hachej/boring-ui-kit@^0.4.12",
2811
+ "@hachej/boring-files@^0.4.12",
2551
2812
  "react@^19.0.0",
2552
2813
  "lucide-react@^1.51.0"
2553
2814
  ],
2554
2815
  "registryDependencies": [
2555
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/theme.json",
2556
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/utils.json",
2557
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/button.json",
2558
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-chat.json",
2559
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/pi-app.json",
2560
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/app-shell.json",
2561
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/file-tree.json",
2562
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
2563
2824
  "drawer",
2564
2825
  "button",
2565
2826
  "scroll-area",
@@ -2599,15 +2860,15 @@
2599
2860
  "title": "Point and dictate on app data",
2600
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.",
2601
2862
  "dependencies": [
2602
- "@hachej/boring-ui-kit@^0.4.10",
2603
- "@hachej/boring-feedback@^0.4.10",
2863
+ "@hachej/boring-ui-kit@^0.4.12",
2864
+ "@hachej/boring-feedback@^0.4.12",
2604
2865
  "@earendil-works/pi-durable@~1.2.0",
2605
2866
  "react@^19.0.0",
2606
2867
  "react-dom@^19.0.0"
2607
2868
  ],
2608
2869
  "registryDependencies": [
2609
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/app-shell.json",
2610
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/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",
2611
2872
  "button",
2612
2873
  "card",
2613
2874
  "message",
@@ -2632,7 +2893,7 @@
2632
2893
  "title": "Requests board",
2633
2894
  "description": "Host-fed compact requests and responsive list/detail with questions and decisions.",
2634
2895
  "registryDependencies": [
2635
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/utils.json",
2896
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
2636
2897
  "badge",
2637
2898
  "button",
2638
2899
  "input",
@@ -2669,13 +2930,13 @@
2669
2930
  "title": "Anchored highlights",
2670
2931
  "description": "Exact Markdown highlights and comments in a conditional workspace sidecar.",
2671
2932
  "dependencies": [
2672
- "@hachej/boring-ui-kit@^0.4.10",
2673
- "@hachej/boring-files@^0.4.10",
2933
+ "@hachej/boring-ui-kit@^0.4.12",
2934
+ "@hachej/boring-files@^0.4.12",
2674
2935
  "react@^19.0.0",
2675
2936
  "react-dom@^19.0.0"
2676
2937
  ],
2677
2938
  "registryDependencies": [
2678
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/markdown-editor.json",
2939
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/markdown-editor.json",
2679
2940
  "button",
2680
2941
  "textarea",
2681
2942
  "label",
@@ -2701,7 +2962,7 @@
2701
2962
  "lucide-react@^1.51.0"
2702
2963
  ],
2703
2964
  "registryDependencies": [
2704
- "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.10/r/utils.json",
2965
+ "https://cdn.jsdelivr.net/npm/@hachej/boring-ui-kit@0.4.12/r/utils.json",
2705
2966
  "button",
2706
2967
  "card",
2707
2968
  "badge",