@tangle-network/brand 1.19.6 → 1.21.0
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.
- package/CHANGELOG.md +12 -0
- package/bin/drift-baseline.json +247 -107
- package/bin/tangle-drift.mjs +83 -6
- package/package.json +1 -1
- package/src/styles/globals.css +10 -0
- package/src/styles/legacy-light.css +6 -1
- package/src/styles/named-themes.css +1 -0
- package/src/styles/theme.css +1 -0
- package/src/styles/tokens.css +11 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.21.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 02b2d30: One shell header height and one transcript type scale. Brand adds `--shell-header-height` (56px, utility `h-shell-header`) and `--shell-inset-gutter` so every shell header row shares one bottom divider, and `--transcript-font-size` / `--transcript-line-height` with the `tangle-transcript-text` rule. UI's `AgentTimeline`, `UserMessage` and `ChatMessage` set the person's and the agent's message text with the same `TRANSCRIPT_TEXT` treatment (exported), so they differ only by alignment and surface; an agent message no longer renders at a different leading from the person's. `tangle-drift` gates two new metrics: `header_height_literal` (a header row given its own height) and `transcript_type_override` (product CSS restyling transcript text).
|
|
8
|
+
|
|
9
|
+
## 1.20.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 4a2346b: `tangle-drift` gates `shell_override`: product code re-drawing the conversation shell that `AgentWorkspaceCompanion` owns (the `md3-surface-dim` backdrop, `PanelLeft`/`PanelRight` toggle icons, the `collapsedControlsPlacement` and `centerHeaderVisibility` seams, or `surface="flat"`). The shipped baseline records it from each default branch.
|
|
14
|
+
|
|
3
15
|
## 1.19.6
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/bin/drift-baseline.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"src"
|
|
6
6
|
],
|
|
7
7
|
"branch": "master",
|
|
8
|
-
"head": "
|
|
8
|
+
"head": "88cf5074ea42",
|
|
9
9
|
"tsx_files": 33,
|
|
10
10
|
"css_files": 5,
|
|
11
11
|
"versions": {
|
|
@@ -88,7 +88,14 @@
|
|
|
88
88
|
"src/pages/sub-processors.astro": 1,
|
|
89
89
|
"src/pages/terms-of-service.astro": 1,
|
|
90
90
|
"src/pages/what-is-tangle.astro": 1
|
|
91
|
-
}
|
|
91
|
+
},
|
|
92
|
+
"shell_override": {},
|
|
93
|
+
"header_height_literal": {
|
|
94
|
+
"src/components/RunStory.astro": 1,
|
|
95
|
+
"src/components/quickstart-code.css": 2,
|
|
96
|
+
"src/pages/index.astro": 1
|
|
97
|
+
},
|
|
98
|
+
"transcript_type_override": {}
|
|
92
99
|
},
|
|
93
100
|
"raw_palette": 0,
|
|
94
101
|
"hex": 29,
|
|
@@ -100,6 +107,9 @@
|
|
|
100
107
|
"native_control": 9,
|
|
101
108
|
"control_override": 0,
|
|
102
109
|
"page_heading": 16,
|
|
110
|
+
"shell_override": 0,
|
|
111
|
+
"header_height_literal": 4,
|
|
112
|
+
"transcript_type_override": 0,
|
|
103
113
|
"palette_top": [],
|
|
104
114
|
"local_primitives": {}
|
|
105
115
|
},
|
|
@@ -109,7 +119,7 @@
|
|
|
109
119
|
"products/sandbox/web"
|
|
110
120
|
],
|
|
111
121
|
"branch": "develop",
|
|
112
|
-
"head": "
|
|
122
|
+
"head": "d34b2d630a92",
|
|
113
123
|
"tsx_files": 132,
|
|
114
124
|
"css_files": 3,
|
|
115
125
|
"versions": {
|
|
@@ -202,7 +212,12 @@
|
|
|
202
212
|
"products/sandbox/web/src/pages/Docs.tsx": 1,
|
|
203
213
|
"products/sandbox/web/src/pages/MfaChallenge.tsx": 1,
|
|
204
214
|
"products/sandbox/web/src/pages/dashboard/SandboxProvisioningWizard.tsx": 1
|
|
205
|
-
}
|
|
215
|
+
},
|
|
216
|
+
"shell_override": {
|
|
217
|
+
"products/sandbox/web/src/pages/dashboard/sandbox-session/AgentWorkspace.tsx": 6
|
|
218
|
+
},
|
|
219
|
+
"header_height_literal": {},
|
|
220
|
+
"transcript_type_override": {}
|
|
206
221
|
},
|
|
207
222
|
"raw_palette": 0,
|
|
208
223
|
"hex": 21,
|
|
@@ -214,8 +229,11 @@
|
|
|
214
229
|
"native_control": 54,
|
|
215
230
|
"control_override": 0,
|
|
216
231
|
"page_heading": 11,
|
|
232
|
+
"shell_override": 6,
|
|
217
233
|
"palette_top": [],
|
|
218
|
-
"local_primitives": {}
|
|
234
|
+
"local_primitives": {},
|
|
235
|
+
"header_height_literal": 0,
|
|
236
|
+
"transcript_type_override": 0
|
|
219
237
|
},
|
|
220
238
|
"platform": {
|
|
221
239
|
"repo": "tangle-network/agent-dev-container",
|
|
@@ -445,7 +463,15 @@
|
|
|
445
463
|
"products/platform/web/src/client/pages/dev/WorkflowInPlaceEditGallery.tsx": 1,
|
|
446
464
|
"products/platform/web/src/client/pages/dev/WorkflowListGallery.tsx": 1,
|
|
447
465
|
"products/platform/web/src/client/pages/dev/WorkflowTriggerRailGallery.tsx": 1
|
|
448
|
-
}
|
|
466
|
+
},
|
|
467
|
+
"shell_override": {
|
|
468
|
+
"products/platform/web/src/client/components/Icons.tsx": 1
|
|
469
|
+
},
|
|
470
|
+
"header_height_literal": {
|
|
471
|
+
"products/platform/web/src/client/components/NavigationFrame.tsx": 1,
|
|
472
|
+
"products/platform/web/src/client/vault.css": 1
|
|
473
|
+
},
|
|
474
|
+
"transcript_type_override": {}
|
|
449
475
|
},
|
|
450
476
|
"raw_palette": 0,
|
|
451
477
|
"hex": 24,
|
|
@@ -465,7 +491,10 @@
|
|
|
465
491
|
"size_literal": 8,
|
|
466
492
|
"native_control": 444,
|
|
467
493
|
"control_override": 0,
|
|
468
|
-
"page_heading": 37
|
|
494
|
+
"page_heading": 37,
|
|
495
|
+
"shell_override": 1,
|
|
496
|
+
"header_height_literal": 2,
|
|
497
|
+
"transcript_type_override": 0
|
|
469
498
|
},
|
|
470
499
|
"intelligence": {
|
|
471
500
|
"repo": "tangle-network/agent-dev-container",
|
|
@@ -473,7 +502,7 @@
|
|
|
473
502
|
"products/intelligence/web"
|
|
474
503
|
],
|
|
475
504
|
"branch": "develop",
|
|
476
|
-
"head": "
|
|
505
|
+
"head": "abe2f910be0c",
|
|
477
506
|
"tsx_files": 83,
|
|
478
507
|
"css_files": 1,
|
|
479
508
|
"versions": {
|
|
@@ -501,7 +530,7 @@
|
|
|
501
530
|
"hex": {},
|
|
502
531
|
"arbitrary_color": {},
|
|
503
532
|
"css_var_defs": {
|
|
504
|
-
"products/intelligence/web/src/globals.css":
|
|
533
|
+
"products/intelligence/web/src/globals.css": 5
|
|
505
534
|
},
|
|
506
535
|
"local_primitive_count": {},
|
|
507
536
|
"font_size_literal": {
|
|
@@ -551,18 +580,24 @@
|
|
|
551
580
|
"products/intelligence/web/src/pages/SessionDetail.tsx": 1,
|
|
552
581
|
"products/intelligence/web/src/pages/TraceDetail.tsx": 1,
|
|
553
582
|
"products/intelligence/web/src/pages/spine/runs.tsx": 1
|
|
554
|
-
}
|
|
583
|
+
},
|
|
584
|
+
"shell_override": {},
|
|
585
|
+
"header_height_literal": {},
|
|
586
|
+
"transcript_type_override": {}
|
|
555
587
|
},
|
|
556
588
|
"raw_palette": 0,
|
|
557
589
|
"hex": 0,
|
|
558
590
|
"arbitrary_color": 0,
|
|
559
|
-
"css_var_defs":
|
|
591
|
+
"css_var_defs": 5,
|
|
560
592
|
"local_primitive_count": 0,
|
|
561
593
|
"font_size_literal": 14,
|
|
562
594
|
"size_literal": 3,
|
|
563
595
|
"native_control": 50,
|
|
564
596
|
"control_override": 0,
|
|
565
597
|
"page_heading": 7,
|
|
598
|
+
"shell_override": 0,
|
|
599
|
+
"header_height_literal": 0,
|
|
600
|
+
"transcript_type_override": 0,
|
|
566
601
|
"palette_top": [],
|
|
567
602
|
"local_primitives": {}
|
|
568
603
|
},
|
|
@@ -572,28 +607,28 @@
|
|
|
572
607
|
""
|
|
573
608
|
],
|
|
574
609
|
"branch": "master",
|
|
575
|
-
"head": "
|
|
576
|
-
"tsx_files":
|
|
610
|
+
"head": "9c6b7a92901d",
|
|
611
|
+
"tsx_files": 134,
|
|
577
612
|
"css_files": 3,
|
|
578
613
|
"versions": {
|
|
579
614
|
"agent-app": [
|
|
580
|
-
"0.
|
|
615
|
+
"0.60.54"
|
|
581
616
|
],
|
|
582
617
|
"brand": [
|
|
583
|
-
"1.
|
|
618
|
+
"1.20.0"
|
|
584
619
|
],
|
|
585
620
|
"sandbox-ui": [
|
|
586
|
-
"0.
|
|
621
|
+
"0.132.1"
|
|
587
622
|
],
|
|
588
623
|
"ui": [
|
|
589
|
-
"11.
|
|
624
|
+
"11.31.2"
|
|
590
625
|
]
|
|
591
626
|
},
|
|
592
627
|
"importing_files": {
|
|
593
628
|
"brand": 3,
|
|
594
|
-
"ui":
|
|
595
|
-
"sandbox-ui":
|
|
596
|
-
"agent-app":
|
|
629
|
+
"ui": 9,
|
|
630
|
+
"sandbox-ui": 113,
|
|
631
|
+
"agent-app": 232
|
|
597
632
|
},
|
|
598
633
|
"by_file": {
|
|
599
634
|
"raw_palette": {},
|
|
@@ -627,7 +662,18 @@
|
|
|
627
662
|
"src/routes/app.workspace.vault.tsx": 1,
|
|
628
663
|
"src/routes/forgot-password.tsx": 2,
|
|
629
664
|
"src/routes/reset-password.tsx": 3
|
|
630
|
-
}
|
|
665
|
+
},
|
|
666
|
+
"shell_override": {
|
|
667
|
+
"src/components/vault-chat-rail.tsx": 2,
|
|
668
|
+
"src/routes/app.workspace.vault.tsx": 2
|
|
669
|
+
},
|
|
670
|
+
"header_height_literal": {
|
|
671
|
+
"src/components/publishing/publish-header.tsx": 1,
|
|
672
|
+
"src/components/vault-chat-rail.tsx": 1,
|
|
673
|
+
"src/routes/app.workspace.designs.$documentId.tsx": 1,
|
|
674
|
+
"src/routes/app.workspace.sequences.$sequenceId.tsx": 1
|
|
675
|
+
},
|
|
676
|
+
"transcript_type_override": {}
|
|
631
677
|
},
|
|
632
678
|
"raw_palette": 0,
|
|
633
679
|
"hex": 0,
|
|
@@ -639,6 +685,9 @@
|
|
|
639
685
|
"native_control": 0,
|
|
640
686
|
"control_override": 4,
|
|
641
687
|
"page_heading": 18,
|
|
688
|
+
"shell_override": 4,
|
|
689
|
+
"header_height_literal": 4,
|
|
690
|
+
"transcript_type_override": 0,
|
|
642
691
|
"palette_top": [],
|
|
643
692
|
"local_primitives": {}
|
|
644
693
|
},
|
|
@@ -648,40 +697,40 @@
|
|
|
648
697
|
"apps/web"
|
|
649
698
|
],
|
|
650
699
|
"branch": "main",
|
|
651
|
-
"head": "
|
|
652
|
-
"tsx_files":
|
|
700
|
+
"head": "54448faf7404",
|
|
701
|
+
"tsx_files": 58,
|
|
653
702
|
"css_files": 1,
|
|
654
703
|
"versions": {
|
|
655
704
|
"agent-app": [
|
|
656
|
-
"0.
|
|
705
|
+
"0.60.19"
|
|
657
706
|
],
|
|
658
707
|
"brand": [
|
|
659
|
-
"1.
|
|
708
|
+
"1.20.0"
|
|
660
709
|
],
|
|
661
710
|
"override:agent-app": [
|
|
662
|
-
"0.
|
|
711
|
+
"0.60.19"
|
|
663
712
|
],
|
|
664
713
|
"override:brand": [
|
|
665
|
-
"1.
|
|
714
|
+
"1.20.0"
|
|
666
715
|
],
|
|
667
716
|
"override:sandbox-ui": [
|
|
668
|
-
"0.
|
|
717
|
+
"0.132.1"
|
|
669
718
|
],
|
|
670
719
|
"override:ui": [
|
|
671
|
-
"11.
|
|
720
|
+
"11.31.2"
|
|
672
721
|
],
|
|
673
722
|
"sandbox-ui": [
|
|
674
|
-
"0.
|
|
723
|
+
"0.132.1"
|
|
675
724
|
],
|
|
676
725
|
"ui": [
|
|
677
|
-
"11.
|
|
726
|
+
"11.31.2"
|
|
678
727
|
]
|
|
679
728
|
},
|
|
680
729
|
"importing_files": {
|
|
681
730
|
"brand": 1,
|
|
682
|
-
"ui":
|
|
731
|
+
"ui": 3,
|
|
683
732
|
"sandbox-ui": 38,
|
|
684
|
-
"agent-app":
|
|
733
|
+
"agent-app": 105
|
|
685
734
|
},
|
|
686
735
|
"by_file": {
|
|
687
736
|
"raw_palette": {},
|
|
@@ -702,7 +751,13 @@
|
|
|
702
751
|
"apps/web/src/routes/_index.tsx": 1,
|
|
703
752
|
"apps/web/src/routes/app.$sessionId.tsx": 1,
|
|
704
753
|
"apps/web/src/routes/app.billing.tsx": 2
|
|
705
|
-
}
|
|
754
|
+
},
|
|
755
|
+
"shell_override": {},
|
|
756
|
+
"header_height_literal": {
|
|
757
|
+
"apps/web/src/components/legal-page.tsx": 1,
|
|
758
|
+
"apps/web/src/routes/app.$sessionId.tsx": 1
|
|
759
|
+
},
|
|
760
|
+
"transcript_type_override": {}
|
|
706
761
|
},
|
|
707
762
|
"raw_palette": 0,
|
|
708
763
|
"hex": 0,
|
|
@@ -714,6 +769,9 @@
|
|
|
714
769
|
"native_control": 0,
|
|
715
770
|
"control_override": 3,
|
|
716
771
|
"page_heading": 6,
|
|
772
|
+
"shell_override": 0,
|
|
773
|
+
"header_height_literal": 2,
|
|
774
|
+
"transcript_type_override": 0,
|
|
717
775
|
"palette_top": [],
|
|
718
776
|
"local_primitives": {}
|
|
719
777
|
},
|
|
@@ -723,28 +781,28 @@
|
|
|
723
781
|
""
|
|
724
782
|
],
|
|
725
783
|
"branch": "main",
|
|
726
|
-
"head": "
|
|
784
|
+
"head": "075784fc5bc6",
|
|
727
785
|
"tsx_files": 63,
|
|
728
786
|
"css_files": 1,
|
|
729
787
|
"versions": {
|
|
730
788
|
"agent-app": [
|
|
731
|
-
"0.
|
|
789
|
+
"0.60.33"
|
|
732
790
|
],
|
|
733
791
|
"brand": [
|
|
734
|
-
"1.
|
|
792
|
+
"1.20.0"
|
|
735
793
|
],
|
|
736
794
|
"sandbox-ui": [
|
|
737
|
-
"0.
|
|
795
|
+
"0.132.1"
|
|
738
796
|
],
|
|
739
797
|
"ui": [
|
|
740
|
-
"11.
|
|
798
|
+
"11.31.2"
|
|
741
799
|
]
|
|
742
800
|
},
|
|
743
801
|
"importing_files": {
|
|
744
802
|
"brand": 2,
|
|
745
803
|
"ui": 33,
|
|
746
804
|
"sandbox-ui": 25,
|
|
747
|
-
"agent-app":
|
|
805
|
+
"agent-app": 125
|
|
748
806
|
},
|
|
749
807
|
"by_file": {
|
|
750
808
|
"raw_palette": {},
|
|
@@ -766,7 +824,10 @@
|
|
|
766
824
|
"src/routes/app.workspace.contracts.$id.tsx": 1,
|
|
767
825
|
"src/routes/app.workspace.contracts.redline.tsx": 1,
|
|
768
826
|
"src/routes/app.workspace.templates.tsx": 1
|
|
769
|
-
}
|
|
827
|
+
},
|
|
828
|
+
"shell_override": {},
|
|
829
|
+
"header_height_literal": {},
|
|
830
|
+
"transcript_type_override": {}
|
|
770
831
|
},
|
|
771
832
|
"raw_palette": 0,
|
|
772
833
|
"hex": 0,
|
|
@@ -778,6 +839,9 @@
|
|
|
778
839
|
"native_control": 0,
|
|
779
840
|
"control_override": 0,
|
|
780
841
|
"page_heading": 6,
|
|
842
|
+
"shell_override": 0,
|
|
843
|
+
"header_height_literal": 0,
|
|
844
|
+
"transcript_type_override": 0,
|
|
781
845
|
"palette_top": [],
|
|
782
846
|
"local_primitives": {}
|
|
783
847
|
},
|
|
@@ -787,18 +851,18 @@
|
|
|
787
851
|
""
|
|
788
852
|
],
|
|
789
853
|
"branch": "main",
|
|
790
|
-
"head": "
|
|
854
|
+
"head": "5ce0764e4f58",
|
|
791
855
|
"tsx_files": 38,
|
|
792
856
|
"css_files": 1,
|
|
793
857
|
"versions": {
|
|
794
858
|
"agent-app": [
|
|
795
|
-
"0.
|
|
859
|
+
"0.60.16"
|
|
796
860
|
],
|
|
797
861
|
"brand": [
|
|
798
|
-
"1.19.
|
|
862
|
+
"1.19.4"
|
|
799
863
|
],
|
|
800
864
|
"sandbox-ui": [
|
|
801
|
-
"0.
|
|
865
|
+
"0.132.1"
|
|
802
866
|
],
|
|
803
867
|
"ui": [
|
|
804
868
|
"11.30.2"
|
|
@@ -808,7 +872,7 @@
|
|
|
808
872
|
"brand": 1,
|
|
809
873
|
"ui": 1,
|
|
810
874
|
"sandbox-ui": 27,
|
|
811
|
-
"agent-app":
|
|
875
|
+
"agent-app": 66
|
|
812
876
|
},
|
|
813
877
|
"by_file": {
|
|
814
878
|
"raw_palette": {
|
|
@@ -854,7 +918,10 @@
|
|
|
854
918
|
"src/root.tsx": 1,
|
|
855
919
|
"src/routes/_index.tsx": 1,
|
|
856
920
|
"src/routes/app.workspace.chat.$threadId.tsx": 1
|
|
857
|
-
}
|
|
921
|
+
},
|
|
922
|
+
"shell_override": {},
|
|
923
|
+
"header_height_literal": {},
|
|
924
|
+
"transcript_type_override": {}
|
|
858
925
|
},
|
|
859
926
|
"raw_palette": 72,
|
|
860
927
|
"hex": 148,
|
|
@@ -866,6 +933,9 @@
|
|
|
866
933
|
"native_control": 0,
|
|
867
934
|
"control_override": 0,
|
|
868
935
|
"page_heading": 3,
|
|
936
|
+
"shell_override": 0,
|
|
937
|
+
"header_height_literal": 0,
|
|
938
|
+
"transcript_type_override": 0,
|
|
869
939
|
"palette_top": [
|
|
870
940
|
[
|
|
871
941
|
"text-amber-600",
|
|
@@ -900,28 +970,28 @@
|
|
|
900
970
|
""
|
|
901
971
|
],
|
|
902
972
|
"branch": "master",
|
|
903
|
-
"head": "
|
|
904
|
-
"tsx_files":
|
|
973
|
+
"head": "f0e2134d4499",
|
|
974
|
+
"tsx_files": 52,
|
|
905
975
|
"css_files": 1,
|
|
906
976
|
"versions": {
|
|
907
977
|
"agent-app": [
|
|
908
|
-
"0.
|
|
978
|
+
"0.60.33"
|
|
909
979
|
],
|
|
910
980
|
"brand": [
|
|
911
|
-
"1.
|
|
981
|
+
"1.20.0"
|
|
912
982
|
],
|
|
913
983
|
"sandbox-ui": [
|
|
914
|
-
"0.
|
|
984
|
+
"0.132.1"
|
|
915
985
|
],
|
|
916
986
|
"ui": [
|
|
917
|
-
"11.
|
|
987
|
+
"11.31.2"
|
|
918
988
|
]
|
|
919
989
|
},
|
|
920
990
|
"importing_files": {
|
|
921
991
|
"brand": 1,
|
|
922
992
|
"ui": 2,
|
|
923
993
|
"sandbox-ui": 36,
|
|
924
|
-
"agent-app":
|
|
994
|
+
"agent-app": 131
|
|
925
995
|
},
|
|
926
996
|
"by_file": {
|
|
927
997
|
"raw_palette": {},
|
|
@@ -944,7 +1014,13 @@
|
|
|
944
1014
|
"src/routes/agents.consent.tsx": 1,
|
|
945
1015
|
"src/routes/app.workspace.tsx": 1,
|
|
946
1016
|
"src/routes/invite.$token.tsx": 1
|
|
947
|
-
}
|
|
1017
|
+
},
|
|
1018
|
+
"shell_override": {},
|
|
1019
|
+
"header_height_literal": {
|
|
1020
|
+
"src/routes/app.workspace.designs.$documentId.tsx": 1,
|
|
1021
|
+
"src/routes/app.workspace.sequences.$sequenceId.tsx": 1
|
|
1022
|
+
},
|
|
1023
|
+
"transcript_type_override": {}
|
|
948
1024
|
},
|
|
949
1025
|
"raw_palette": 0,
|
|
950
1026
|
"hex": 0,
|
|
@@ -956,6 +1032,9 @@
|
|
|
956
1032
|
"native_control": 0,
|
|
957
1033
|
"control_override": 0,
|
|
958
1034
|
"page_heading": 4,
|
|
1035
|
+
"shell_override": 0,
|
|
1036
|
+
"header_height_literal": 2,
|
|
1037
|
+
"transcript_type_override": 0,
|
|
959
1038
|
"palette_top": [],
|
|
960
1039
|
"local_primitives": {}
|
|
961
1040
|
},
|
|
@@ -965,37 +1044,37 @@
|
|
|
965
1044
|
"apps/web"
|
|
966
1045
|
],
|
|
967
1046
|
"branch": "main",
|
|
968
|
-
"head": "
|
|
969
|
-
"tsx_files":
|
|
1047
|
+
"head": "ee37d9941628",
|
|
1048
|
+
"tsx_files": 18,
|
|
970
1049
|
"css_files": 8,
|
|
971
1050
|
"versions": {
|
|
972
1051
|
"agent-app": [
|
|
973
|
-
"0.
|
|
1052
|
+
"0.60.19"
|
|
974
1053
|
],
|
|
975
1054
|
"brand": [
|
|
976
|
-
"1.
|
|
1055
|
+
"1.20.0"
|
|
977
1056
|
],
|
|
978
1057
|
"override:brand": [
|
|
979
|
-
"1.
|
|
1058
|
+
"1.20.0"
|
|
980
1059
|
],
|
|
981
1060
|
"override:sandbox-ui": [
|
|
982
|
-
"0.
|
|
1061
|
+
"0.132.1"
|
|
983
1062
|
],
|
|
984
1063
|
"override:ui": [
|
|
985
|
-
"11.
|
|
1064
|
+
"11.31.2"
|
|
986
1065
|
],
|
|
987
1066
|
"sandbox-ui": [
|
|
988
|
-
"0.
|
|
1067
|
+
"0.132.1"
|
|
989
1068
|
],
|
|
990
1069
|
"ui": [
|
|
991
|
-
"11.
|
|
1070
|
+
"11.31.2"
|
|
992
1071
|
]
|
|
993
1072
|
},
|
|
994
1073
|
"importing_files": {
|
|
995
1074
|
"brand": 1,
|
|
996
1075
|
"ui": 8,
|
|
997
1076
|
"sandbox-ui": 6,
|
|
998
|
-
"agent-app":
|
|
1077
|
+
"agent-app": 7
|
|
999
1078
|
},
|
|
1000
1079
|
"by_file": {
|
|
1001
1080
|
"raw_palette": {},
|
|
@@ -1035,8 +1114,16 @@
|
|
|
1035
1114
|
},
|
|
1036
1115
|
"control_override": {},
|
|
1037
1116
|
"page_heading": {
|
|
1038
|
-
"apps/web/src/ApiKeysPanel.tsx": 1,
|
|
1039
1117
|
"apps/web/src/assembly/AssemblyBooklet.tsx": 1
|
|
1118
|
+
},
|
|
1119
|
+
"shell_override": {},
|
|
1120
|
+
"header_height_literal": {
|
|
1121
|
+
"apps/web/src/styles.css": 1,
|
|
1122
|
+
"apps/web/src/styles/canvas-nodes.css": 1,
|
|
1123
|
+
"apps/web/src/styles/provenance.css": 1
|
|
1124
|
+
},
|
|
1125
|
+
"transcript_type_override": {
|
|
1126
|
+
"apps/web/src/styles.css": 1
|
|
1040
1127
|
}
|
|
1041
1128
|
},
|
|
1042
1129
|
"raw_palette": 0,
|
|
@@ -1048,7 +1135,10 @@
|
|
|
1048
1135
|
"size_literal": 0,
|
|
1049
1136
|
"native_control": 52,
|
|
1050
1137
|
"control_override": 0,
|
|
1051
|
-
"page_heading":
|
|
1138
|
+
"page_heading": 1,
|
|
1139
|
+
"shell_override": 0,
|
|
1140
|
+
"header_height_literal": 3,
|
|
1141
|
+
"transcript_type_override": 1,
|
|
1052
1142
|
"palette_top": [],
|
|
1053
1143
|
"local_primitives": {}
|
|
1054
1144
|
},
|
|
@@ -1058,28 +1148,28 @@
|
|
|
1058
1148
|
""
|
|
1059
1149
|
],
|
|
1060
1150
|
"branch": "main",
|
|
1061
|
-
"head": "
|
|
1151
|
+
"head": "d9f4270af41c",
|
|
1062
1152
|
"tsx_files": 29,
|
|
1063
1153
|
"css_files": 14,
|
|
1064
1154
|
"versions": {
|
|
1065
1155
|
"agent-app": [
|
|
1066
|
-
"0.
|
|
1156
|
+
"0.60.23"
|
|
1067
1157
|
],
|
|
1068
1158
|
"brand": [
|
|
1069
|
-
"1.
|
|
1159
|
+
"1.20.0"
|
|
1070
1160
|
],
|
|
1071
1161
|
"sandbox-ui": [
|
|
1072
|
-
"0.
|
|
1162
|
+
"0.132.1"
|
|
1073
1163
|
],
|
|
1074
1164
|
"ui": [
|
|
1075
|
-
"11.
|
|
1165
|
+
"11.31.2"
|
|
1076
1166
|
]
|
|
1077
1167
|
},
|
|
1078
1168
|
"importing_files": {
|
|
1079
1169
|
"brand": 0,
|
|
1080
1170
|
"ui": 3,
|
|
1081
1171
|
"sandbox-ui": 26,
|
|
1082
|
-
"agent-app":
|
|
1172
|
+
"agent-app": 54
|
|
1083
1173
|
},
|
|
1084
1174
|
"by_file": {
|
|
1085
1175
|
"raw_palette": {},
|
|
@@ -1104,6 +1194,15 @@
|
|
|
1104
1194
|
"src/web/CustomerWorkspace.tsx": 5,
|
|
1105
1195
|
"src/web/WorkspaceAppsView.tsx": 3,
|
|
1106
1196
|
"src/web/WorkspaceFilesView.tsx": 1
|
|
1197
|
+
},
|
|
1198
|
+
"shell_override": {},
|
|
1199
|
+
"header_height_literal": {
|
|
1200
|
+
"src/ui/operator-dashboard.css": 2,
|
|
1201
|
+
"src/web/workspace-files-view.css": 1,
|
|
1202
|
+
"src/web/workspace.css": 5
|
|
1203
|
+
},
|
|
1204
|
+
"transcript_type_override": {
|
|
1205
|
+
"src/web/workspace.css": 1
|
|
1107
1206
|
}
|
|
1108
1207
|
},
|
|
1109
1208
|
"raw_palette": 0,
|
|
@@ -1116,6 +1215,9 @@
|
|
|
1116
1215
|
"native_control": 0,
|
|
1117
1216
|
"control_override": 0,
|
|
1118
1217
|
"page_heading": 12,
|
|
1218
|
+
"shell_override": 0,
|
|
1219
|
+
"header_height_literal": 8,
|
|
1220
|
+
"transcript_type_override": 1,
|
|
1119
1221
|
"palette_top": [],
|
|
1120
1222
|
"local_primitives": {}
|
|
1121
1223
|
},
|
|
@@ -1198,7 +1300,12 @@
|
|
|
1198
1300
|
"packages/website/src/pages/SampleAuditReport.tsx": 1,
|
|
1199
1301
|
"packages/website/src/pages/SignIn.tsx": 1,
|
|
1200
1302
|
"packages/website/src/pages/_Preview.tsx": 1
|
|
1201
|
-
}
|
|
1303
|
+
},
|
|
1304
|
+
"shell_override": {
|
|
1305
|
+
"packages/website/src/components/RedteamDashboardLayout.tsx": 4
|
|
1306
|
+
},
|
|
1307
|
+
"header_height_literal": {},
|
|
1308
|
+
"transcript_type_override": {}
|
|
1202
1309
|
},
|
|
1203
1310
|
"raw_palette": 0,
|
|
1204
1311
|
"hex": 0,
|
|
@@ -1210,6 +1317,9 @@
|
|
|
1210
1317
|
"native_control": 16,
|
|
1211
1318
|
"control_override": 12,
|
|
1212
1319
|
"page_heading": 10,
|
|
1320
|
+
"shell_override": 4,
|
|
1321
|
+
"header_height_literal": 0,
|
|
1322
|
+
"transcript_type_override": 0,
|
|
1213
1323
|
"palette_top": [],
|
|
1214
1324
|
"local_primitives": {}
|
|
1215
1325
|
},
|
|
@@ -1287,7 +1397,12 @@
|
|
|
1287
1397
|
},
|
|
1288
1398
|
"page_heading": {
|
|
1289
1399
|
"src/error-boundary.tsx": 1
|
|
1290
|
-
}
|
|
1400
|
+
},
|
|
1401
|
+
"shell_override": {
|
|
1402
|
+
"src/components/layout/app-layout.tsx": 4
|
|
1403
|
+
},
|
|
1404
|
+
"header_height_literal": {},
|
|
1405
|
+
"transcript_type_override": {}
|
|
1291
1406
|
},
|
|
1292
1407
|
"raw_palette": 0,
|
|
1293
1408
|
"hex": 0,
|
|
@@ -1299,6 +1414,9 @@
|
|
|
1299
1414
|
"native_control": 16,
|
|
1300
1415
|
"control_override": 10,
|
|
1301
1416
|
"page_heading": 1,
|
|
1417
|
+
"shell_override": 4,
|
|
1418
|
+
"header_height_literal": 0,
|
|
1419
|
+
"transcript_type_override": 0,
|
|
1302
1420
|
"palette_top": [],
|
|
1303
1421
|
"local_primitives": {}
|
|
1304
1422
|
},
|
|
@@ -1308,40 +1426,40 @@
|
|
|
1308
1426
|
""
|
|
1309
1427
|
],
|
|
1310
1428
|
"branch": "main",
|
|
1311
|
-
"head": "
|
|
1429
|
+
"head": "97f77723ac9f",
|
|
1312
1430
|
"tsx_files": 110,
|
|
1313
1431
|
"css_files": 2,
|
|
1314
1432
|
"versions": {
|
|
1315
1433
|
"agent-app": [
|
|
1316
|
-
"0.
|
|
1434
|
+
"0.60.23"
|
|
1317
1435
|
],
|
|
1318
1436
|
"brand": [
|
|
1319
|
-
"1.
|
|
1437
|
+
"1.20.0"
|
|
1320
1438
|
],
|
|
1321
1439
|
"override:agent-app": [
|
|
1322
|
-
"0.
|
|
1440
|
+
"0.60.23"
|
|
1323
1441
|
],
|
|
1324
1442
|
"override:brand": [
|
|
1325
|
-
"1.
|
|
1443
|
+
"1.20.0"
|
|
1326
1444
|
],
|
|
1327
1445
|
"override:sandbox-ui": [
|
|
1328
|
-
"0.
|
|
1446
|
+
"0.132.1"
|
|
1329
1447
|
],
|
|
1330
1448
|
"override:ui": [
|
|
1331
|
-
"11.
|
|
1449
|
+
"11.31.2"
|
|
1332
1450
|
],
|
|
1333
1451
|
"sandbox-ui": [
|
|
1334
|
-
"0.
|
|
1452
|
+
"0.132.1"
|
|
1335
1453
|
],
|
|
1336
1454
|
"ui": [
|
|
1337
|
-
"11.
|
|
1455
|
+
"11.31.2"
|
|
1338
1456
|
]
|
|
1339
1457
|
},
|
|
1340
1458
|
"importing_files": {
|
|
1341
1459
|
"brand": 2,
|
|
1342
1460
|
"ui": 3,
|
|
1343
|
-
"sandbox-ui":
|
|
1344
|
-
"agent-app":
|
|
1461
|
+
"sandbox-ui": 77,
|
|
1462
|
+
"agent-app": 67
|
|
1345
1463
|
},
|
|
1346
1464
|
"by_file": {
|
|
1347
1465
|
"raw_palette": {},
|
|
@@ -1376,7 +1494,12 @@
|
|
|
1376
1494
|
"src/routes/creators.$handle.tsx": 1,
|
|
1377
1495
|
"src/routes/login.tsx": 1,
|
|
1378
1496
|
"src/routes/pay.$token.tsx": 1
|
|
1379
|
-
}
|
|
1497
|
+
},
|
|
1498
|
+
"shell_override": {},
|
|
1499
|
+
"header_height_literal": {
|
|
1500
|
+
"src/styles/listing.css": 1
|
|
1501
|
+
},
|
|
1502
|
+
"transcript_type_override": {}
|
|
1380
1503
|
},
|
|
1381
1504
|
"raw_palette": 0,
|
|
1382
1505
|
"hex": 0,
|
|
@@ -1388,6 +1511,9 @@
|
|
|
1388
1511
|
"native_control": 2,
|
|
1389
1512
|
"control_override": 1,
|
|
1390
1513
|
"page_heading": 12,
|
|
1514
|
+
"shell_override": 0,
|
|
1515
|
+
"header_height_literal": 1,
|
|
1516
|
+
"transcript_type_override": 0,
|
|
1391
1517
|
"palette_top": [],
|
|
1392
1518
|
"local_primitives": {}
|
|
1393
1519
|
},
|
|
@@ -1397,7 +1523,7 @@
|
|
|
1397
1523
|
"apps/web"
|
|
1398
1524
|
],
|
|
1399
1525
|
"branch": "develop",
|
|
1400
|
-
"head": "
|
|
1526
|
+
"head": "978ff883f4f5",
|
|
1401
1527
|
"tsx_files": 356,
|
|
1402
1528
|
"css_files": 9,
|
|
1403
1529
|
"versions": {
|
|
@@ -1659,7 +1785,14 @@
|
|
|
1659
1785
|
"apps/web/src/routes/quests.tsx": 1,
|
|
1660
1786
|
"apps/web/src/routes/settings.partner._index.tsx": 1,
|
|
1661
1787
|
"apps/web/src/routes/terms-of-service.tsx": 1
|
|
1662
|
-
}
|
|
1788
|
+
},
|
|
1789
|
+
"shell_override": {
|
|
1790
|
+
"apps/web/src/components/header/Header.tsx": 2
|
|
1791
|
+
},
|
|
1792
|
+
"header_height_literal": {
|
|
1793
|
+
"apps/web/src/components/@settings/tabs/connections/NetlifyConnection.tsx": 1
|
|
1794
|
+
},
|
|
1795
|
+
"transcript_type_override": {}
|
|
1663
1796
|
},
|
|
1664
1797
|
"raw_palette": 0,
|
|
1665
1798
|
"hex": 0,
|
|
@@ -1671,6 +1804,9 @@
|
|
|
1671
1804
|
"native_control": 401,
|
|
1672
1805
|
"control_override": 18,
|
|
1673
1806
|
"page_heading": 30,
|
|
1807
|
+
"shell_override": 2,
|
|
1808
|
+
"header_height_literal": 1,
|
|
1809
|
+
"transcript_type_override": 0,
|
|
1674
1810
|
"palette_top": [],
|
|
1675
1811
|
"local_primitives": {}
|
|
1676
1812
|
},
|
|
@@ -1680,15 +1816,21 @@
|
|
|
1680
1816
|
"public"
|
|
1681
1817
|
],
|
|
1682
1818
|
"branch": "main",
|
|
1683
|
-
"head": "
|
|
1684
|
-
"tsx_files":
|
|
1685
|
-
"css_files":
|
|
1819
|
+
"head": "34483f7ae430",
|
|
1820
|
+
"tsx_files": 1,
|
|
1821
|
+
"css_files": 0,
|
|
1686
1822
|
"versions": {
|
|
1687
1823
|
"agent-app": [
|
|
1688
|
-
"0.
|
|
1824
|
+
"0.60.30"
|
|
1689
1825
|
],
|
|
1690
1826
|
"brand": [
|
|
1691
|
-
"1.
|
|
1827
|
+
"1.20.0"
|
|
1828
|
+
],
|
|
1829
|
+
"sandbox-ui": [
|
|
1830
|
+
"0.132.2"
|
|
1831
|
+
],
|
|
1832
|
+
"ui": [
|
|
1833
|
+
"11.31.3"
|
|
1692
1834
|
]
|
|
1693
1835
|
},
|
|
1694
1836
|
"importing_files": {
|
|
@@ -1701,32 +1843,30 @@
|
|
|
1701
1843
|
"raw_palette": {},
|
|
1702
1844
|
"hex": {},
|
|
1703
1845
|
"arbitrary_color": {},
|
|
1704
|
-
"css_var_defs": {
|
|
1705
|
-
"public/design-components.css": 8,
|
|
1706
|
-
"public/style.css": 1
|
|
1707
|
-
},
|
|
1846
|
+
"css_var_defs": {},
|
|
1708
1847
|
"local_primitive_count": {},
|
|
1709
|
-
"font_size_literal": {
|
|
1710
|
-
"public/design-components.css": 4,
|
|
1711
|
-
"public/invite.css": 4,
|
|
1712
|
-
"public/style.css": 386,
|
|
1713
|
-
"public/timeline.css": 33
|
|
1714
|
-
},
|
|
1848
|
+
"font_size_literal": {},
|
|
1715
1849
|
"size_literal": {},
|
|
1716
1850
|
"native_control": {},
|
|
1717
1851
|
"control_override": {},
|
|
1718
|
-
"page_heading": {}
|
|
1852
|
+
"page_heading": {},
|
|
1853
|
+
"shell_override": {},
|
|
1854
|
+
"header_height_literal": {},
|
|
1855
|
+
"transcript_type_override": {}
|
|
1719
1856
|
},
|
|
1720
1857
|
"raw_palette": 0,
|
|
1721
1858
|
"hex": 0,
|
|
1722
1859
|
"arbitrary_color": 0,
|
|
1723
|
-
"css_var_defs":
|
|
1860
|
+
"css_var_defs": 0,
|
|
1724
1861
|
"local_primitive_count": 0,
|
|
1725
|
-
"font_size_literal":
|
|
1862
|
+
"font_size_literal": 0,
|
|
1726
1863
|
"size_literal": 0,
|
|
1727
1864
|
"native_control": 0,
|
|
1728
1865
|
"control_override": 0,
|
|
1729
1866
|
"page_heading": 0,
|
|
1867
|
+
"shell_override": 0,
|
|
1868
|
+
"header_height_literal": 0,
|
|
1869
|
+
"transcript_type_override": 0,
|
|
1730
1870
|
"palette_top": [],
|
|
1731
1871
|
"local_primitives": {}
|
|
1732
1872
|
}
|
package/bin/tangle-drift.mjs
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* It counts raw Tailwind palette classes, hex literals, arbitrary color values,
|
|
6
6
|
* CSS custom-property definitions, locally defined primitives, and the sizing and
|
|
7
7
|
* type deviations that bypass the shared control scale (literal font sizes and
|
|
8
|
-
* heights, native controls, restyled shared controls, hand-written page titles)
|
|
9
|
-
* in a surface's source,
|
|
8
|
+
* heights, native controls, restyled shared controls, hand-written page titles),
|
|
9
|
+
* and local re-drawings of the shared conversation shell in a surface's source,
|
|
10
10
|
* reading a git tree with `git grep` (no checkout of the tree needed).
|
|
11
11
|
* The counts committed in drift-baseline.json beside this file may only fall.
|
|
12
12
|
*
|
|
@@ -73,12 +73,57 @@ export const PATTERNS = {
|
|
|
73
73
|
control_override: String.raw`<(?:Button|Input|Textarea|SelectTrigger)\b[^>]*?\bclassName=[^>]*?(?<![\w-])(?:h-|min-h-|size-|px-|py-|text-(?:xs|sm|base|lg|\[)|rounded-|font-(?:normal|medium|semibold|bold)\b)`,
|
|
74
74
|
// A hand-written page title; PageHeader owns the title, description and actions row.
|
|
75
75
|
page_heading: String.raw`<h1\b`,
|
|
76
|
+
// A product re-drawing the conversation shell that AgentWorkspaceCompanion owns: its own
|
|
77
|
+
// recessed backdrop for a gutter, its own pane expander icons, or a WorkspaceLayout seam
|
|
78
|
+
// that moves the shell's controls or flattens its surface.
|
|
79
|
+
shell_override: String.raw`md3-surface-dim|\bPanel(?:Right|Left)(?:Open|Close)?\b|\b(?:collapsedControlsPlacement|centerHeaderVisibility)\b|\bsurface=["'{]+flat\b`,
|
|
76
80
|
};
|
|
81
|
+
|
|
82
|
+
// Header-like: an element named `header`, or a class/id ending in one of the words below. It must be
|
|
83
|
+
// the selector's last compound (pseudo-classes and attributes aside), so `.top-header .avatar`
|
|
84
|
+
// and `.top-header-avatar` size something inside a header, not the header row.
|
|
85
|
+
// A `-bar` row counts too (`.files-bar`), but not a progress, scroll, side or meter bar.
|
|
86
|
+
const HEADER_WORD = String.raw`(?:header|head|topbar|toolbar|titlebar|appbar|navbar|(?<![\w-]*(?:progress|scroll|side|meter|loading|track|fill|status)-?)bar)`;
|
|
87
|
+
const HEADER_COMPOUND = String.raw`(?:[\w#.:-]*[.#-]${HEADER_WORD}|(?<![\w.#-])header)(?![\w-])(?::{1,2}[\w-]+(?:\([^)]*\))?|\[[^\]]*\])*`;
|
|
88
|
+
const LITERAL_HEIGHT_UTILITY = String.raw`(?<![\w-])(?:h|min-h|max-h)-(?:[0-9]|\[(?!var\())`;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Metrics that span lines, so they read whole files rather than `git grep` lines. Each is a set
|
|
92
|
+
* of JavaScript patterns run over a file's text; `prefilter` selects candidate files with
|
|
93
|
+
* `git grep -l` and the same pathspecs, so the excluded paths match the line metrics.
|
|
94
|
+
*/
|
|
95
|
+
export const RULE_PATTERNS = {
|
|
96
|
+
// A header row given its own height. The shell owns one header height
|
|
97
|
+
// (`--shell-header-height`, `ShellHeader`); content fills the row and never sets it, so the
|
|
98
|
+
// main pane's divider lands on the sidebar's. Token references (`var(--shell-header-height)`)
|
|
99
|
+
// and non-length values (`auto`, `100%`) are not counted.
|
|
100
|
+
header_height_literal: {
|
|
101
|
+
prefilter: String.raw`height|\bh-`,
|
|
102
|
+
patterns: [
|
|
103
|
+
// CSS: `.x-header { min-height: 66px }`, `.page header { height: 4rem }`, across lines.
|
|
104
|
+
String.raw`(?<=^|[\s{},;>+~])${HEADER_COMPOUND}\s*(?:,[^{};]*)?\{[^{}]*?(?<![\w-])(?:min-|max-)?height\s*:\s*[0-9.]+(?:px|rem|em)\b`,
|
|
105
|
+
// JSX: `<header className="h-16">`, or any element whose class names a header row and a height.
|
|
106
|
+
String.raw`<header\b[^>]*?\bclassName=\{?["'\x60][^"'\x60]*?${LITERAL_HEIGHT_UTILITY}`,
|
|
107
|
+
String.raw`(?<!<header\b[^>]*)\bclassName=\{?["'\x60](?=[^"'\x60]*(?<![\w-])[\w-]*${HEADER_WORD}(?![\w-]))[^"'\x60]*?${LITERAL_HEIGHT_UTILITY}`,
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
// Product CSS restyling transcript text. Brand's `tangle-transcript-text` gives the person's and
|
|
111
|
+
// the agent's messages one family, size and leading; an app rule on `.tangle-prose` or a
|
|
112
|
+
// timeline step re-splits them (an agent message at 16px beside a 15px user message).
|
|
113
|
+
transcript_type_override: {
|
|
114
|
+
prefilter: String.raw`tangle-prose|tangle-transcript-text|data-timeline-step|transcript`,
|
|
115
|
+
patterns: [
|
|
116
|
+
String.raw`(?:tangle-prose|tangle-transcript-text|data-timeline-step|transcript)[^{};]*\{[^{}]*?(?<![\w-])(?:font-size|line-height|font-family|font)\s*:`,
|
|
117
|
+
String.raw`\bclassName=\{?["'\x60](?=[^"'\x60]*\btangle-(?:prose|transcript-text)\b)[^"'\x60]*?(?<![\w-])(?:text-(?:xs|sm|base|lg|xl|\[)|leading-|font-(?:sans|serif|mono))`,
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
|
|
77
122
|
const LOCAL_PRIM_NAME = new RegExp(String.raw`(?:function|const)\s+(${PRIMS})\b`);
|
|
78
123
|
const SHARED = ["@tangle-network/brand", "@tangle-network/ui", "@tangle-network/sandbox-ui", "@tangle-network/agent-app"];
|
|
79
124
|
|
|
80
125
|
/** The counts the gate ratchets. Everything else in a row is informational. */
|
|
81
|
-
export const GATED = Object.keys(PATTERNS);
|
|
126
|
+
export const GATED = [...Object.keys(PATTERNS), ...Object.keys(RULE_PATTERNS)];
|
|
82
127
|
|
|
83
128
|
function extensions(surface, metric) {
|
|
84
129
|
const extra = SURFACES[surface]?.extraExt ?? [];
|
|
@@ -93,6 +138,9 @@ function extensions(surface, metric) {
|
|
|
93
138
|
case "native_control": return ["*.tsx", "*.jsx", "*.astro"];
|
|
94
139
|
case "control_override": return ["*.tsx", "*.jsx"];
|
|
95
140
|
case "page_heading": return ["*.tsx", "*.jsx", "*.astro"];
|
|
141
|
+
case "shell_override": return ["*.tsx", "*.jsx", "*.css", ...extra];
|
|
142
|
+
case "header_height_literal": return ["*.tsx", "*.jsx", "*.astro", "*.css", "*.vue", "*.svelte"];
|
|
143
|
+
case "transcript_type_override": return ["*.tsx", "*.jsx", "*.css"];
|
|
96
144
|
case "imports": return ["*.tsx", "*.ts", "*.astro", "*.jsx"];
|
|
97
145
|
default: return SRC_EXT;
|
|
98
146
|
}
|
|
@@ -139,6 +187,30 @@ export function grepMatches(source, roots, pattern, exts) {
|
|
|
139
187
|
return rows;
|
|
140
188
|
}
|
|
141
189
|
|
|
190
|
+
/** Every match of a multi-line metric: [{ path, line, match }], `line` being where the match starts. */
|
|
191
|
+
export function ruleMatches(source, roots, metric, exts) {
|
|
192
|
+
const { prefilter, patterns } = RULE_PATTERNS[metric];
|
|
193
|
+
const args = ["grep", "-I", "-P", "-l", "--null", "-e", prefilter];
|
|
194
|
+
if (source.rev) args.push(source.rev);
|
|
195
|
+
else args.push("--untracked");
|
|
196
|
+
args.push("--", ...pathspecs(roots, exts), ...EXCLUDE);
|
|
197
|
+
const prefix = source.rev ? `${source.rev}:` : "";
|
|
198
|
+
const files = git(source.dir, args, { allowExit1: true }).split("\0").filter(Boolean)
|
|
199
|
+
.map((f) => (f.startsWith(prefix) ? f.slice(prefix.length) : f).trim()).filter(Boolean);
|
|
200
|
+
const rows = [];
|
|
201
|
+
for (const path of files) {
|
|
202
|
+
const text = readFile(source, path);
|
|
203
|
+
const found = new Map();
|
|
204
|
+
for (const pattern of patterns) {
|
|
205
|
+
for (const m of text.matchAll(new RegExp(pattern, "g"))) found.set(m.index, m[0]);
|
|
206
|
+
}
|
|
207
|
+
for (const [index, match] of [...found].sort(([a], [b]) => a - b)) {
|
|
208
|
+
rows.push({ path, line: text.slice(0, index).split("\n").length, match });
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return rows.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : a.line - b.line));
|
|
212
|
+
}
|
|
213
|
+
|
|
142
214
|
/** Full text of matching lines in the named files, for failure reports. */
|
|
143
215
|
function grepLines(source, pattern, files) {
|
|
144
216
|
const args = ["grep", "-I", "-P", "-n", "--null", "-e", pattern];
|
|
@@ -219,7 +291,9 @@ export function measure(surface, source) {
|
|
|
219
291
|
}
|
|
220
292
|
row.by_file = {};
|
|
221
293
|
for (const metric of GATED) {
|
|
222
|
-
const hits =
|
|
294
|
+
const hits = RULE_PATTERNS[metric]
|
|
295
|
+
? ruleMatches(source, roots, metric, extensions(surface, metric))
|
|
296
|
+
: grepMatches(source, roots, PATTERNS[metric], extensions(surface, metric));
|
|
223
297
|
matches[metric] = hits;
|
|
224
298
|
row[metric] = hits.length;
|
|
225
299
|
row.by_file[metric] = sortedObject(countBy(hits.map((h) => h.path)));
|
|
@@ -437,7 +511,7 @@ export function main(argv = process.argv.slice(2), log = (s) => process.stdout.w
|
|
|
437
511
|
}
|
|
438
512
|
|
|
439
513
|
let failed = false;
|
|
440
|
-
for (const [surface, { row, source }] of Object.entries(measured)) {
|
|
514
|
+
for (const [surface, { row, source, matches }] of Object.entries(measured)) {
|
|
441
515
|
const base = baseline[surface];
|
|
442
516
|
log(describe(surface, row));
|
|
443
517
|
if (!base) {
|
|
@@ -457,7 +531,10 @@ export function main(argv = process.argv.slice(2), log = (s) => process.stdout.w
|
|
|
457
531
|
.sort((x, y) => y.now - x.now).slice(0, 10);
|
|
458
532
|
log(files.length ? " files above their baseline count:" : " no single file rose (moved or renamed?); largest files:");
|
|
459
533
|
for (const f of shown.slice(0, 10)) log(` ${f.path}: ${f.base} -> ${f.now}`);
|
|
460
|
-
const
|
|
534
|
+
const shownPaths = shown.slice(0, 10).map((f) => f.path);
|
|
535
|
+
const lines = RULE_PATTERNS[metric]
|
|
536
|
+
? matches[metric].filter((m) => shownPaths.includes(m.path)).map((m) => ({ path: m.path, line: m.line, text: m.match.replace(/\s+/g, " ") }))
|
|
537
|
+
: grepLines(source, PATTERNS[metric], shownPaths);
|
|
461
538
|
for (const l of lines.slice(0, opts.top)) log(` ${l.path}:${l.line}: ${l.text.slice(0, 160)}`);
|
|
462
539
|
if (lines.length > opts.top) log(` ... ${lines.length - opts.top} more lines`);
|
|
463
540
|
}
|
package/package.json
CHANGED
package/src/styles/globals.css
CHANGED
|
@@ -176,6 +176,16 @@
|
|
|
176
176
|
/* Long URLs, emails and identifiers wrap inside the column. */
|
|
177
177
|
overflow-wrap: break-word;
|
|
178
178
|
}
|
|
179
|
+
/* Transcript text: the one size and leading for every chat message body, the
|
|
180
|
+
* person's and the agent's alike, so the two differ only by alignment and
|
|
181
|
+
* surface. The doubled selector outranks .tangle-prose on an agent message;
|
|
182
|
+
* product CSS does not restyle either (tangle-drift transcript_type_override). */
|
|
183
|
+
.tangle-transcript-text,
|
|
184
|
+
.tangle-prose.tangle-transcript-text {
|
|
185
|
+
font-family: inherit;
|
|
186
|
+
font-size: var(--transcript-font-size);
|
|
187
|
+
line-height: var(--transcript-line-height);
|
|
188
|
+
}
|
|
179
189
|
.tangle-prose > * + * { margin-top: 0.85em; }
|
|
180
190
|
.tangle-prose h1, .tangle-prose h2, .tangle-prose h3, .tangle-prose h4 {
|
|
181
191
|
font-weight: 600;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* GENERATED by scripts/gen-compat.mjs. Do not edit.
|
|
2
2
|
* Source: tokens.css + named-themes.css
|
|
3
|
-
* SHA-256:
|
|
3
|
+
* SHA-256: e280d0675dc36f1bd1c79e163d7b50c18a5dd2cb3a58f3138cddc85b02514b6b
|
|
4
4
|
* Light-default compatibility; all explicit modes remain canonical.
|
|
5
5
|
*/
|
|
6
6
|
:where(:root),
|
|
@@ -297,6 +297,10 @@
|
|
|
297
297
|
--font-size-help: 0.75rem;
|
|
298
298
|
--panel-padding: 1rem;
|
|
299
299
|
--content-max-width: 80rem;
|
|
300
|
+
--shell-header-height: 3.5rem;
|
|
301
|
+
--shell-inset-gutter: 0.5rem;
|
|
302
|
+
--transcript-font-size: var(--font-size-base);
|
|
303
|
+
--transcript-line-height: var(--line-height-base);
|
|
300
304
|
--font-size-xs: 0.6875rem;
|
|
301
305
|
--font-size-sm: 0.75rem;
|
|
302
306
|
--font-size-base: 0.9375rem;
|
|
@@ -787,6 +791,7 @@
|
|
|
787
791
|
--spacing-control-sm: var(--control-height-sm);
|
|
788
792
|
--spacing-control-md: var(--control-height);
|
|
789
793
|
--spacing-control-lg: var(--control-height-lg);
|
|
794
|
+
--spacing-shell-header: var(--shell-header-height);
|
|
790
795
|
--color-scrim: var(--scrim);
|
|
791
796
|
--color-scrim-strong: var(--scrim-strong);
|
|
792
797
|
--color-on-media: var(--on-media);
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
--spacing-control-sm: var(--control-height-sm);
|
|
28
28
|
--spacing-control-md: var(--control-height);
|
|
29
29
|
--spacing-control-lg: var(--control-height-lg);
|
|
30
|
+
--spacing-shell-header: var(--shell-header-height);
|
|
30
31
|
--color-scrim: var(--scrim);
|
|
31
32
|
--color-scrim-strong: var(--scrim-strong);
|
|
32
33
|
--color-on-media: var(--on-media);
|
package/src/styles/theme.css
CHANGED
|
@@ -77,6 +77,7 @@
|
|
|
77
77
|
--spacing-control-sm: var(--control-height-sm);
|
|
78
78
|
--spacing-control-md: var(--control-height);
|
|
79
79
|
--spacing-control-lg: var(--control-height-lg);
|
|
80
|
+
--spacing-shell-header: var(--shell-header-height);
|
|
80
81
|
|
|
81
82
|
--color-scrim: var(--scrim);
|
|
82
83
|
--color-scrim-strong: var(--scrim-strong);
|
package/src/styles/tokens.css
CHANGED
|
@@ -455,6 +455,17 @@
|
|
|
455
455
|
--font-size-help: 0.75rem; /* 12px */
|
|
456
456
|
--panel-padding: 1rem;
|
|
457
457
|
--content-max-width: 80rem;
|
|
458
|
+
/* Shell: every header row in the app shell (sidebar rail, main pane, side
|
|
459
|
+
panels, drawers, the assistant) is this tall, so their bottom dividers
|
|
460
|
+
share one y. Header content fills the row; it never sets the height.
|
|
461
|
+
An inset pane sits one gutter plus its 1px border below the shell top, so
|
|
462
|
+
its header is shorter by exactly that amount (see ShellHeader). */
|
|
463
|
+
--shell-header-height: 3.5rem; /* 56px */
|
|
464
|
+
--shell-inset-gutter: 0.5rem; /* 8px */
|
|
465
|
+
/* Transcript: the person's and the agent's messages share one family, size
|
|
466
|
+
and leading; they differ only by alignment and surface. */
|
|
467
|
+
--transcript-font-size: var(--font-size-base);
|
|
468
|
+
--transcript-line-height: var(--line-height-base);
|
|
458
469
|
|
|
459
470
|
/* Typography scale — override per-app for custom type hierarchy.
|
|
460
471
|
Components reference these instead of hardcoded pixel values. */
|