@hachej/boring-workspace 0.1.34 → 0.1.36
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/dist/{FileTree-DWbh0xNI.js → FileTree-GkaIEJ9n.js} +1 -1
- package/dist/MarkdownEditor-DjZZnHcU.js +549 -0
- package/dist/{WorkspaceLoadingState-RVGURLJy.js → WorkspaceLoadingState-C664sU-y.js} +286 -252
- package/dist/WorkspaceProvider-CpK401MG.js +7394 -0
- package/dist/agent-tool-CB0RQyx9.d.ts +32 -0
- package/dist/app-front.d.ts +31 -3
- package/dist/app-front.js +886 -741
- package/dist/app-server.d.ts +4 -3
- package/dist/app-server.js +32 -0
- package/dist/boring-workspace.css +1 -1
- package/dist/{createInMemoryBridge-zb8MpO60.d.ts → createInMemoryBridge-e7QdNLSA.d.ts} +2 -1
- package/dist/plugin.d.ts +73 -1
- package/dist/plugin.js +47 -1
- package/dist/server.d.ts +14 -5
- package/dist/server.js +16 -0
- package/dist/shared.d.ts +2 -1
- package/dist/testing.js +1 -1
- package/dist/{ui-bridge-DFNem0df.d.ts → ui-bridge-LeBuZqfA.d.ts} +1 -32
- package/dist/workspace.css +299 -34
- package/dist/workspace.d.ts +49 -2
- package/dist/workspace.js +31 -30
- package/package.json +5 -5
- package/dist/MarkdownEditor-BhLjIyPQ.js +0 -540
- package/dist/WorkspaceProvider-hCE2wXKZ.js +0 -6567
package/dist/workspace.css
CHANGED
|
@@ -1589,15 +1589,15 @@
|
|
|
1589
1589
|
.mt-3 {
|
|
1590
1590
|
margin-top: calc(var(--spacing) * 3);
|
|
1591
1591
|
}
|
|
1592
|
-
.mt-4 {
|
|
1593
|
-
margin-top: calc(var(--spacing) * 4);
|
|
1594
|
-
}
|
|
1595
1592
|
.mt-px {
|
|
1596
1593
|
margin-top: 1px;
|
|
1597
1594
|
}
|
|
1598
1595
|
.mr-auto {
|
|
1599
1596
|
margin-right: auto;
|
|
1600
1597
|
}
|
|
1598
|
+
.mb-1 {
|
|
1599
|
+
margin-bottom: calc(var(--spacing) * 1);
|
|
1600
|
+
}
|
|
1601
1601
|
.mb-1\.5 {
|
|
1602
1602
|
margin-bottom: calc(var(--spacing) * 1.5);
|
|
1603
1603
|
}
|
|
@@ -1763,6 +1763,9 @@
|
|
|
1763
1763
|
.w-7 {
|
|
1764
1764
|
width: calc(var(--spacing) * 7);
|
|
1765
1765
|
}
|
|
1766
|
+
.w-8 {
|
|
1767
|
+
width: calc(var(--spacing) * 8);
|
|
1768
|
+
}
|
|
1766
1769
|
.w-9 {
|
|
1767
1770
|
width: calc(var(--spacing) * 9);
|
|
1768
1771
|
}
|
|
@@ -1820,9 +1823,6 @@
|
|
|
1820
1823
|
.flex-\[0_0_0px\] {
|
|
1821
1824
|
flex: 0 0 0px;
|
|
1822
1825
|
}
|
|
1823
|
-
.flex-none {
|
|
1824
|
-
flex: none;
|
|
1825
|
-
}
|
|
1826
1826
|
.shrink-0 {
|
|
1827
1827
|
flex-shrink: 0;
|
|
1828
1828
|
}
|
|
@@ -1852,6 +1852,9 @@
|
|
|
1852
1852
|
.cursor-col-resize {
|
|
1853
1853
|
cursor: col-resize;
|
|
1854
1854
|
}
|
|
1855
|
+
.cursor-grab {
|
|
1856
|
+
cursor: grab;
|
|
1857
|
+
}
|
|
1855
1858
|
.cursor-nwse-resize {
|
|
1856
1859
|
cursor: nwse-resize;
|
|
1857
1860
|
}
|
|
@@ -1962,9 +1965,6 @@
|
|
|
1962
1965
|
.overflow-hidden {
|
|
1963
1966
|
overflow: hidden;
|
|
1964
1967
|
}
|
|
1965
|
-
.overflow-x-auto {
|
|
1966
|
-
overflow-x: auto;
|
|
1967
|
-
}
|
|
1968
1968
|
.overflow-y-auto {
|
|
1969
1969
|
overflow-y: auto;
|
|
1970
1970
|
}
|
|
@@ -1974,6 +1974,9 @@
|
|
|
1974
1974
|
.rounded-2xl {
|
|
1975
1975
|
border-radius: var(--radius-2xl);
|
|
1976
1976
|
}
|
|
1977
|
+
.rounded-\[5px\] {
|
|
1978
|
+
border-radius: 5px;
|
|
1979
|
+
}
|
|
1977
1980
|
.rounded-full {
|
|
1978
1981
|
border-radius: calc(infinity * 1px);
|
|
1979
1982
|
}
|
|
@@ -1992,6 +1995,10 @@
|
|
|
1992
1995
|
.rounded-xl {
|
|
1993
1996
|
border-radius: var(--boring-radius-xl);
|
|
1994
1997
|
}
|
|
1998
|
+
.rounded-r-none {
|
|
1999
|
+
border-top-right-radius: 0;
|
|
2000
|
+
border-bottom-right-radius: 0;
|
|
2001
|
+
}
|
|
1995
2002
|
.border {
|
|
1996
2003
|
border-style: var(--tw-border-style);
|
|
1997
2004
|
border-width: 1px;
|
|
@@ -2076,6 +2083,9 @@
|
|
|
2076
2083
|
.bg-\[color\:oklch\(from_var\(--background\)_calc\(l-0\.01\)_c_h\)\] {
|
|
2077
2084
|
background-color: oklch(from var(--background) calc(l - 0.01) c h);
|
|
2078
2085
|
}
|
|
2086
|
+
.bg-\[color\:oklch\(from_var\(--foreground\)_l_c_h\/0\.035\)\] {
|
|
2087
|
+
background-color: oklch(from var(--foreground) l c h/0.035);
|
|
2088
|
+
}
|
|
2079
2089
|
.bg-\[color\:var\(--accent\)\] {
|
|
2080
2090
|
background-color: var(--accent);
|
|
2081
2091
|
}
|
|
@@ -2112,6 +2122,15 @@
|
|
|
2112
2122
|
background-color: color-mix(in oklab, var(--boring-card) 60%, transparent);
|
|
2113
2123
|
}
|
|
2114
2124
|
}
|
|
2125
|
+
.bg-destructive {
|
|
2126
|
+
background-color: var(--boring-destructive);
|
|
2127
|
+
}
|
|
2128
|
+
.bg-destructive\/12 {
|
|
2129
|
+
background-color: var(--boring-destructive);
|
|
2130
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2131
|
+
background-color: color-mix(in oklab, var(--boring-destructive) 12%, transparent);
|
|
2132
|
+
}
|
|
2133
|
+
}
|
|
2115
2134
|
.bg-foreground {
|
|
2116
2135
|
background-color: var(--boring-foreground);
|
|
2117
2136
|
}
|
|
@@ -2121,18 +2140,42 @@
|
|
|
2121
2140
|
background-color: color-mix(in oklab, var(--boring-foreground) 5%, transparent);
|
|
2122
2141
|
}
|
|
2123
2142
|
}
|
|
2143
|
+
.bg-foreground\/10 {
|
|
2144
|
+
background-color: var(--boring-foreground);
|
|
2145
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2146
|
+
background-color: color-mix(in oklab, var(--boring-foreground) 10%, transparent);
|
|
2147
|
+
}
|
|
2148
|
+
}
|
|
2149
|
+
.bg-foreground\/30 {
|
|
2150
|
+
background-color: var(--boring-foreground);
|
|
2151
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2152
|
+
background-color: color-mix(in oklab, var(--boring-foreground) 30%, transparent);
|
|
2153
|
+
}
|
|
2154
|
+
}
|
|
2124
2155
|
.bg-foreground\/35 {
|
|
2125
2156
|
background-color: var(--boring-foreground);
|
|
2126
2157
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2127
2158
|
background-color: color-mix(in oklab, var(--boring-foreground) 35%, transparent);
|
|
2128
2159
|
}
|
|
2129
2160
|
}
|
|
2161
|
+
.bg-foreground\/70 {
|
|
2162
|
+
background-color: var(--boring-foreground);
|
|
2163
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2164
|
+
background-color: color-mix(in oklab, var(--boring-foreground) 70%, transparent);
|
|
2165
|
+
}
|
|
2166
|
+
}
|
|
2130
2167
|
.bg-foreground\/\[0\.06\] {
|
|
2131
2168
|
background-color: var(--boring-foreground);
|
|
2132
2169
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2133
2170
|
background-color: color-mix(in oklab, var(--boring-foreground) 6%, transparent);
|
|
2134
2171
|
}
|
|
2135
2172
|
}
|
|
2173
|
+
.bg-foreground\/\[0\.07\] {
|
|
2174
|
+
background-color: var(--boring-foreground);
|
|
2175
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2176
|
+
background-color: color-mix(in oklab, var(--boring-foreground) 7.000000000000001%, transparent);
|
|
2177
|
+
}
|
|
2178
|
+
}
|
|
2136
2179
|
.bg-muted {
|
|
2137
2180
|
background-color: var(--boring-muted);
|
|
2138
2181
|
}
|
|
@@ -2142,6 +2185,12 @@
|
|
|
2142
2185
|
background-color: color-mix(in oklab, var(--boring-muted) 30%, transparent);
|
|
2143
2186
|
}
|
|
2144
2187
|
}
|
|
2188
|
+
.bg-muted\/35 {
|
|
2189
|
+
background-color: var(--boring-muted);
|
|
2190
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2191
|
+
background-color: color-mix(in oklab, var(--boring-muted) 35%, transparent);
|
|
2192
|
+
}
|
|
2193
|
+
}
|
|
2145
2194
|
.bg-muted\/40 {
|
|
2146
2195
|
background-color: var(--boring-muted);
|
|
2147
2196
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -2166,6 +2215,9 @@
|
|
|
2166
2215
|
.bg-white {
|
|
2167
2216
|
background-color: var(--color-white);
|
|
2168
2217
|
}
|
|
2218
|
+
.fill-current {
|
|
2219
|
+
fill: currentcolor;
|
|
2220
|
+
}
|
|
2169
2221
|
.object-contain {
|
|
2170
2222
|
object-fit: contain;
|
|
2171
2223
|
}
|
|
@@ -2220,6 +2272,9 @@
|
|
|
2220
2272
|
.px-4 {
|
|
2221
2273
|
padding-inline: calc(var(--spacing) * 4);
|
|
2222
2274
|
}
|
|
2275
|
+
.px-5 {
|
|
2276
|
+
padding-inline: calc(var(--spacing) * 5);
|
|
2277
|
+
}
|
|
2223
2278
|
.px-6 {
|
|
2224
2279
|
padding-inline: calc(var(--spacing) * 6);
|
|
2225
2280
|
}
|
|
@@ -2289,6 +2344,9 @@
|
|
|
2289
2344
|
.text-left {
|
|
2290
2345
|
text-align: left;
|
|
2291
2346
|
}
|
|
2347
|
+
.text-right {
|
|
2348
|
+
text-align: right;
|
|
2349
|
+
}
|
|
2292
2350
|
.align-baseline {
|
|
2293
2351
|
vertical-align: baseline;
|
|
2294
2352
|
}
|
|
@@ -2325,6 +2383,9 @@
|
|
|
2325
2383
|
.text-\[13px\] {
|
|
2326
2384
|
font-size: 13px;
|
|
2327
2385
|
}
|
|
2386
|
+
.text-\[14px\] {
|
|
2387
|
+
font-size: 14px;
|
|
2388
|
+
}
|
|
2328
2389
|
.text-\[15px\] {
|
|
2329
2390
|
font-size: 15px;
|
|
2330
2391
|
}
|
|
@@ -2429,6 +2490,12 @@
|
|
|
2429
2490
|
color: color-mix(in oklab, var(--boring-foreground) 70%, transparent);
|
|
2430
2491
|
}
|
|
2431
2492
|
}
|
|
2493
|
+
.text-foreground\/80 {
|
|
2494
|
+
color: var(--boring-foreground);
|
|
2495
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2496
|
+
color: color-mix(in oklab, var(--boring-foreground) 80%, transparent);
|
|
2497
|
+
}
|
|
2498
|
+
}
|
|
2432
2499
|
.text-foreground\/90 {
|
|
2433
2500
|
color: var(--boring-foreground);
|
|
2434
2501
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -2502,6 +2569,9 @@
|
|
|
2502
2569
|
.opacity-0 {
|
|
2503
2570
|
opacity: 0%;
|
|
2504
2571
|
}
|
|
2572
|
+
.opacity-60 {
|
|
2573
|
+
opacity: 60%;
|
|
2574
|
+
}
|
|
2505
2575
|
.opacity-70 {
|
|
2506
2576
|
opacity: 70%;
|
|
2507
2577
|
}
|
|
@@ -2527,6 +2597,10 @@
|
|
|
2527
2597
|
--tw-shadow: 0 1px 2px -1px var(--tw-shadow-color, oklch(0 0 0/0.08)), 0 12px 32px -22px var(--tw-shadow-color, oklch(0 0 0/0.28));
|
|
2528
2598
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2529
2599
|
}
|
|
2600
|
+
.shadow-\[inset_0_0_0_2px_oklch\(from_var\(--foreground\)_l_c_h\/0\.55\)\] {
|
|
2601
|
+
--tw-shadow: inset 0 0 0 2px var(--tw-shadow-color, oklch(from var(--foreground) l c h/0.55));
|
|
2602
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2603
|
+
}
|
|
2530
2604
|
.shadow-md {
|
|
2531
2605
|
--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
2532
2606
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -2590,6 +2664,11 @@
|
|
|
2590
2664
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
2591
2665
|
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
2592
2666
|
}
|
|
2667
|
+
.transition-\[background-color\,box-shadow\] {
|
|
2668
|
+
transition-property: background-color,box-shadow;
|
|
2669
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
2670
|
+
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
2671
|
+
}
|
|
2593
2672
|
.transition-\[flex-grow\,flex-basis\,width\,min-width\,max-width\] {
|
|
2594
2673
|
transition-property: flex-grow,flex-basis,width,min-width,max-width;
|
|
2595
2674
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
@@ -2652,8 +2731,12 @@
|
|
|
2652
2731
|
-webkit-user-select: none;
|
|
2653
2732
|
user-select: none;
|
|
2654
2733
|
}
|
|
2655
|
-
|
|
2656
|
-
|
|
2734
|
+
.group-hover\:text-muted-foreground {
|
|
2735
|
+
&:is(:where(.group):hover *) {
|
|
2736
|
+
@media (hover: hover) {
|
|
2737
|
+
color: var(--boring-muted-foreground);
|
|
2738
|
+
}
|
|
2739
|
+
}
|
|
2657
2740
|
}
|
|
2658
2741
|
.group-hover\:opacity-100 {
|
|
2659
2742
|
&:is(:where(.group):hover *) {
|
|
@@ -2680,6 +2763,45 @@
|
|
|
2680
2763
|
}
|
|
2681
2764
|
}
|
|
2682
2765
|
}
|
|
2766
|
+
.before\:absolute {
|
|
2767
|
+
&::before {
|
|
2768
|
+
content: var(--tw-content);
|
|
2769
|
+
position: absolute;
|
|
2770
|
+
}
|
|
2771
|
+
}
|
|
2772
|
+
.before\:top-0 {
|
|
2773
|
+
&::before {
|
|
2774
|
+
content: var(--tw-content);
|
|
2775
|
+
top: calc(var(--spacing) * 0);
|
|
2776
|
+
}
|
|
2777
|
+
}
|
|
2778
|
+
.before\:-right-1\.5 {
|
|
2779
|
+
&::before {
|
|
2780
|
+
content: var(--tw-content);
|
|
2781
|
+
right: calc(var(--spacing) * -1.5);
|
|
2782
|
+
}
|
|
2783
|
+
}
|
|
2784
|
+
.before\:h-full {
|
|
2785
|
+
&::before {
|
|
2786
|
+
content: var(--tw-content);
|
|
2787
|
+
height: 100%;
|
|
2788
|
+
}
|
|
2789
|
+
}
|
|
2790
|
+
.before\:w-1\.5 {
|
|
2791
|
+
&::before {
|
|
2792
|
+
content: var(--tw-content);
|
|
2793
|
+
width: calc(var(--spacing) * 1.5);
|
|
2794
|
+
}
|
|
2795
|
+
}
|
|
2796
|
+
.before\:bg-muted\/35 {
|
|
2797
|
+
&::before {
|
|
2798
|
+
content: var(--tw-content);
|
|
2799
|
+
background-color: var(--boring-muted);
|
|
2800
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2801
|
+
background-color: color-mix(in oklab, var(--boring-muted) 35%, transparent);
|
|
2802
|
+
}
|
|
2803
|
+
}
|
|
2804
|
+
}
|
|
2683
2805
|
.hover\:-translate-y-0\.5 {
|
|
2684
2806
|
&:hover {
|
|
2685
2807
|
@media (hover: hover) {
|
|
@@ -2723,6 +2845,16 @@
|
|
|
2723
2845
|
}
|
|
2724
2846
|
}
|
|
2725
2847
|
}
|
|
2848
|
+
.hover\:bg-background\/70 {
|
|
2849
|
+
&:hover {
|
|
2850
|
+
@media (hover: hover) {
|
|
2851
|
+
background-color: var(--boring-background);
|
|
2852
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2853
|
+
background-color: color-mix(in oklab, var(--boring-background) 70%, transparent);
|
|
2854
|
+
}
|
|
2855
|
+
}
|
|
2856
|
+
}
|
|
2857
|
+
}
|
|
2726
2858
|
.hover\:bg-border\/70 {
|
|
2727
2859
|
&:hover {
|
|
2728
2860
|
@media (hover: hover) {
|
|
@@ -2760,6 +2892,16 @@
|
|
|
2760
2892
|
}
|
|
2761
2893
|
}
|
|
2762
2894
|
}
|
|
2895
|
+
.hover\:bg-muted\/35 {
|
|
2896
|
+
&:hover {
|
|
2897
|
+
@media (hover: hover) {
|
|
2898
|
+
background-color: var(--boring-muted);
|
|
2899
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2900
|
+
background-color: color-mix(in oklab, var(--boring-muted) 35%, transparent);
|
|
2901
|
+
}
|
|
2902
|
+
}
|
|
2903
|
+
}
|
|
2904
|
+
}
|
|
2763
2905
|
.hover\:bg-muted\/60 {
|
|
2764
2906
|
&:hover {
|
|
2765
2907
|
@media (hover: hover) {
|
|
@@ -2818,6 +2960,16 @@
|
|
|
2818
2960
|
}
|
|
2819
2961
|
}
|
|
2820
2962
|
}
|
|
2963
|
+
.hover\:text-foreground\/80 {
|
|
2964
|
+
&:hover {
|
|
2965
|
+
@media (hover: hover) {
|
|
2966
|
+
color: var(--boring-foreground);
|
|
2967
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2968
|
+
color: color-mix(in oklab, var(--boring-foreground) 80%, transparent);
|
|
2969
|
+
}
|
|
2970
|
+
}
|
|
2971
|
+
}
|
|
2972
|
+
}
|
|
2821
2973
|
.hover\:shadow-\[0_2px_4px_-1px_oklch\(0_0_0\/0\.08\)\,0_4px_12px_-4px_oklch\(0_0_0\/0\.10\)\,inset_0_0_0_1px_oklch\(from_var\(--border\)_l_c_h\/0\.9\)\] {
|
|
2822
2974
|
&:hover {
|
|
2823
2975
|
@media (hover: hover) {
|
|
@@ -2899,6 +3051,11 @@
|
|
|
2899
3051
|
outline-style: none;
|
|
2900
3052
|
}
|
|
2901
3053
|
}
|
|
3054
|
+
.active\:cursor-grabbing {
|
|
3055
|
+
&:active {
|
|
3056
|
+
cursor: grabbing;
|
|
3057
|
+
}
|
|
3058
|
+
}
|
|
2902
3059
|
.active\:bg-muted-foreground\/30 {
|
|
2903
3060
|
&:active {
|
|
2904
3061
|
background-color: var(--boring-muted-foreground);
|
|
@@ -2932,24 +3089,6 @@
|
|
|
2932
3089
|
color: var(--boring-foreground);
|
|
2933
3090
|
}
|
|
2934
3091
|
}
|
|
2935
|
-
.data-\[state\=active\]\:text-\[color\:var\(--accent\)\] {
|
|
2936
|
-
&[data-state="active"] {
|
|
2937
|
-
color: var(--accent);
|
|
2938
|
-
}
|
|
2939
|
-
}
|
|
2940
|
-
.data-\[state\=active\]\:text-foreground {
|
|
2941
|
-
&[data-state="active"] {
|
|
2942
|
-
color: var(--boring-foreground);
|
|
2943
|
-
}
|
|
2944
|
-
}
|
|
2945
|
-
.data-\[state\=active\]\:after\:bg-\[color\:var\(--accent\)\] {
|
|
2946
|
-
&[data-state="active"] {
|
|
2947
|
-
&::after {
|
|
2948
|
-
content: var(--tw-content);
|
|
2949
|
-
background-color: var(--accent);
|
|
2950
|
-
}
|
|
2951
|
-
}
|
|
2952
|
-
}
|
|
2953
3092
|
.dark\:bg-transparent {
|
|
2954
3093
|
&:is(.dark *) {
|
|
2955
3094
|
background-color: transparent;
|
|
@@ -2960,11 +3099,6 @@
|
|
|
2960
3099
|
text-indent: calc(var(--spacing) * 0) !important;
|
|
2961
3100
|
}
|
|
2962
3101
|
}
|
|
2963
|
-
.\[\&\:\:-webkit-scrollbar\]\:hidden {
|
|
2964
|
-
&::-webkit-scrollbar {
|
|
2965
|
-
display: none;
|
|
2966
|
-
}
|
|
2967
|
-
}
|
|
2968
3102
|
.\[\&\>\[data-slot\=command-input-wrapper\]\]\:h-auto {
|
|
2969
3103
|
&>[data-slot=command-input-wrapper] {
|
|
2970
3104
|
height: auto;
|
|
@@ -6110,6 +6244,49 @@
|
|
|
6110
6244
|
padding: 0 2px;
|
|
6111
6245
|
border-radius: 2px;
|
|
6112
6246
|
}
|
|
6247
|
+
.boring-scrollbar-discreet {
|
|
6248
|
+
scrollbar-width: thin;
|
|
6249
|
+
scrollbar-color: oklch(from var(--foreground) l c h / 0.14) transparent;
|
|
6250
|
+
}
|
|
6251
|
+
.boring-scrollbar-discreet::-webkit-scrollbar {
|
|
6252
|
+
width: 8px;
|
|
6253
|
+
height: 8px;
|
|
6254
|
+
}
|
|
6255
|
+
.boring-scrollbar-discreet::-webkit-scrollbar-track {
|
|
6256
|
+
background: transparent;
|
|
6257
|
+
}
|
|
6258
|
+
.boring-scrollbar-discreet::-webkit-scrollbar-thumb {
|
|
6259
|
+
background-color: oklch(from var(--foreground) l c h / 0.12);
|
|
6260
|
+
border-radius: 9999px;
|
|
6261
|
+
border: 2px solid transparent;
|
|
6262
|
+
background-clip: padding-box;
|
|
6263
|
+
}
|
|
6264
|
+
.boring-scrollbar-discreet:hover::-webkit-scrollbar-thumb {
|
|
6265
|
+
background-color: oklch(from var(--foreground) l c h / 0.22);
|
|
6266
|
+
}
|
|
6267
|
+
.boring-scrollbar-discreet::-webkit-scrollbar-thumb:hover {
|
|
6268
|
+
background-color: oklch(from var(--foreground) l c h / 0.34);
|
|
6269
|
+
}
|
|
6270
|
+
[data-boring-workspace] {
|
|
6271
|
+
scrollbar-width: thin;
|
|
6272
|
+
scrollbar-color: oklch(from var(--foreground) l c h / 0.14) transparent;
|
|
6273
|
+
}
|
|
6274
|
+
[data-boring-workspace] ::-webkit-scrollbar {
|
|
6275
|
+
width: 8px;
|
|
6276
|
+
height: 8px;
|
|
6277
|
+
}
|
|
6278
|
+
[data-boring-workspace] ::-webkit-scrollbar-track {
|
|
6279
|
+
background: transparent;
|
|
6280
|
+
}
|
|
6281
|
+
[data-boring-workspace] ::-webkit-scrollbar-thumb {
|
|
6282
|
+
background-color: oklch(from var(--foreground) l c h / 0.12);
|
|
6283
|
+
border-radius: 9999px;
|
|
6284
|
+
border: 2px solid transparent;
|
|
6285
|
+
background-clip: padding-box;
|
|
6286
|
+
}
|
|
6287
|
+
[data-boring-workspace] ::-webkit-scrollbar-thumb:hover {
|
|
6288
|
+
background-color: oklch(from var(--foreground) l c h / 0.3);
|
|
6289
|
+
}
|
|
6113
6290
|
@property --tw-translate-x {
|
|
6114
6291
|
syntax: "*";
|
|
6115
6292
|
inherits: false;
|
|
@@ -6654,3 +6831,91 @@
|
|
|
6654
6831
|
border-radius: calc(var(--radius) - 2px);
|
|
6655
6832
|
box-shadow: 0 4px 12px oklch(0 0 0 / 0.15);
|
|
6656
6833
|
}
|
|
6834
|
+
|
|
6835
|
+
|
|
6836
|
+
/* @hachej/boring-workspace chat pane stage */
|
|
6837
|
+
|
|
6838
|
+
/* Chat pane stage — compact dockview chrome scoped under .dv-chat-stage.
|
|
6839
|
+
Inherits the token mapping from dockview-overrides.css (.dv-shell). */
|
|
6840
|
+
|
|
6841
|
+
.dv-chat-stage {
|
|
6842
|
+
--dv-tabs-and-actions-container-height: 32px;
|
|
6843
|
+
--dv-tabs-and-actions-container-font-size: 0.75rem;
|
|
6844
|
+
|
|
6845
|
+
/* Panes, not tabs: no pill — the header shares the pane background and
|
|
6846
|
+
blends seamlessly into the content (no separating border). */
|
|
6847
|
+
--dv-activegroup-visiblepanel-tab-background-color: transparent;
|
|
6848
|
+
--dv-activegroup-hiddenpanel-tab-background-color: transparent;
|
|
6849
|
+
--dv-inactivegroup-visiblepanel-tab-background-color: transparent;
|
|
6850
|
+
--dv-inactivegroup-hiddenpanel-tab-background-color: transparent;
|
|
6851
|
+
}
|
|
6852
|
+
|
|
6853
|
+
/* Neutralize the workbench pill-tab chrome (.dv-shell .dv-tab in
|
|
6854
|
+
dockview-overrides.css): no rounded corners, no active-tab border or
|
|
6855
|
+
accent, no header underline, no tab sizing caps. The double class on
|
|
6856
|
+
the stage root (.dv-shell.dv-chat-stage) out-specifies the workbench
|
|
6857
|
+
rules; the header must read as part of the pane, not a tab strip. */
|
|
6858
|
+
.dv-shell.dv-chat-stage .dv-tabs-and-actions-container {
|
|
6859
|
+
border-bottom: none;
|
|
6860
|
+
padding: 0;
|
|
6861
|
+
gap: 0;
|
|
6862
|
+
align-items: stretch;
|
|
6863
|
+
}
|
|
6864
|
+
|
|
6865
|
+
/* dockview's fullwidth single-tab rules stop at the scroll wrapper; carry
|
|
6866
|
+
the full width down to the tab itself. */
|
|
6867
|
+
.dv-shell.dv-chat-stage .dv-tabs-and-actions-container.dv-single-tab .dv-tabs-container {
|
|
6868
|
+
width: 100%;
|
|
6869
|
+
}
|
|
6870
|
+
|
|
6871
|
+
.dv-shell.dv-chat-stage .dv-tab,
|
|
6872
|
+
.dv-shell.dv-chat-stage .dv-tab.dv-active-tab {
|
|
6873
|
+
width: 100%;
|
|
6874
|
+
height: 100%;
|
|
6875
|
+
min-width: 0;
|
|
6876
|
+
max-width: none;
|
|
6877
|
+
flex: 1 1 auto;
|
|
6878
|
+
align-self: stretch;
|
|
6879
|
+
margin-bottom: 0;
|
|
6880
|
+
padding: 0;
|
|
6881
|
+
border: none;
|
|
6882
|
+
border-radius: 0;
|
|
6883
|
+
background-color: transparent !important;
|
|
6884
|
+
}
|
|
6885
|
+
|
|
6886
|
+
.dv-shell.dv-chat-stage .dv-tab.dv-active-tab::before {
|
|
6887
|
+
content: none;
|
|
6888
|
+
}
|
|
6889
|
+
|
|
6890
|
+
/* The chat stage hides dockview's built-in tab close icon entirely — the
|
|
6891
|
+
custom header renders its own close control with pane semantics. */
|
|
6892
|
+
.dv-chat-stage .dv-default-tab-action {
|
|
6893
|
+
display: none;
|
|
6894
|
+
}
|
|
6895
|
+
|
|
6896
|
+
/* Active-pane focus ring drawn at the GROUP level so it wraps the whole
|
|
6897
|
+
pane — header included. Always present but transparent, so activation
|
|
6898
|
+
fades instead of popping. Only meaningful with 2+ panes; the stage
|
|
6899
|
+
wrapper gates it via data-multi-pane. */
|
|
6900
|
+
.dv-chat-stage .dv-groupview {
|
|
6901
|
+
position: relative;
|
|
6902
|
+
}
|
|
6903
|
+
|
|
6904
|
+
.dv-chat-stage .dv-groupview::after {
|
|
6905
|
+
content: "";
|
|
6906
|
+
position: absolute;
|
|
6907
|
+
inset: 0;
|
|
6908
|
+
z-index: 40;
|
|
6909
|
+
pointer-events: none;
|
|
6910
|
+
background: transparent;
|
|
6911
|
+
transition: background-color 220ms cubic-bezier(0.22, 1, 0.36, 1),
|
|
6912
|
+
box-shadow 220ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
6913
|
+
}
|
|
6914
|
+
|
|
6915
|
+
/* The selected chat stays white; the others recede behind a faint grey
|
|
6916
|
+
wash. No border on the active pane — the background contrast alone marks
|
|
6917
|
+
the selection. */
|
|
6918
|
+
[data-boring-workspace-part="chat-pane-stage"][data-multi-pane="true"]
|
|
6919
|
+
.dv-groupview:not(.dv-active-group)::after {
|
|
6920
|
+
background: oklch(from var(--foreground) l c h / 0.035);
|
|
6921
|
+
}
|
package/dist/workspace.d.ts
CHANGED
|
@@ -100,6 +100,7 @@ declare interface BoringFrontAPI {
|
|
|
100
100
|
registerPanelCommand(registration: BoringFrontPanelCommandRegistration): void;
|
|
101
101
|
registerLeftTab<T = LeftTabParams>(registration: BoringFrontLeftTabRegistration<T>): void;
|
|
102
102
|
registerSurfaceResolver(registration: BoringFrontSurfaceResolverRegistration): void;
|
|
103
|
+
registerToolRenderer(registration: BoringFrontToolRendererRegistration): void;
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
declare interface BoringFrontBindingRegistration {
|
|
@@ -173,6 +174,13 @@ declare interface BoringFrontSurfaceResolverRegistration {
|
|
|
173
174
|
resolve: (request: SurfaceOpenRequest) => SurfacePanelResolution | null | undefined;
|
|
174
175
|
}
|
|
175
176
|
|
|
177
|
+
declare type BoringFrontToolRenderer = (part: unknown) => ReactNode;
|
|
178
|
+
|
|
179
|
+
declare interface BoringFrontToolRendererRegistration {
|
|
180
|
+
id: string;
|
|
181
|
+
render: BoringFrontToolRenderer;
|
|
182
|
+
}
|
|
183
|
+
|
|
176
184
|
export declare interface BridgeClient {
|
|
177
185
|
connect(): void;
|
|
178
186
|
disconnect(): void;
|
|
@@ -251,6 +259,7 @@ declare interface CapturedBoringFrontRegistrations {
|
|
|
251
259
|
panelCommands: BoringFrontPanelCommandRegistration[];
|
|
252
260
|
leftTabs: BoringFrontLeftTabRegistration<any>[];
|
|
253
261
|
surfaceResolvers: BoringFrontSurfaceResolverRegistration[];
|
|
262
|
+
toolRenderers: BoringFrontToolRendererRegistration[];
|
|
254
263
|
}
|
|
255
264
|
|
|
256
265
|
declare interface CapturedFrontPlugin {
|
|
@@ -367,6 +376,13 @@ export declare interface ChatLayoutProps {
|
|
|
367
376
|
navParams?: Record<string, unknown>;
|
|
368
377
|
center?: string;
|
|
369
378
|
centerParams?: Record<string, unknown>;
|
|
379
|
+
chatPanes?: ChatPaneDescriptor[];
|
|
380
|
+
activeChatPaneId?: string | null;
|
|
381
|
+
onActiveChatPaneChange?: (id: string) => void;
|
|
382
|
+
onCloseChatPane?: (id: string) => void;
|
|
383
|
+
onCreateChatPaneAfter?: (id: string) => void;
|
|
384
|
+
onDropChatSession?: (sessionId: string) => void;
|
|
385
|
+
flashChatPaneId?: string | null;
|
|
370
386
|
surface?: string | null;
|
|
371
387
|
surfaceParams?: Record<string, unknown>;
|
|
372
388
|
surfaceOverlay?: ReactNode;
|
|
@@ -380,6 +396,13 @@ export declare interface ChatLayoutProps {
|
|
|
380
396
|
className?: string;
|
|
381
397
|
}
|
|
382
398
|
|
|
399
|
+
declare interface ChatPaneDescriptor {
|
|
400
|
+
id: string;
|
|
401
|
+
title?: string | null;
|
|
402
|
+
panel?: string;
|
|
403
|
+
params?: Record<string, unknown>;
|
|
404
|
+
}
|
|
405
|
+
|
|
383
406
|
export declare const closePanelSchema: z.ZodObject<{
|
|
384
407
|
id: z.ZodString;
|
|
385
408
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -674,6 +697,7 @@ declare class FetchClient {
|
|
|
674
697
|
}>;
|
|
675
698
|
deleteFile(path: string): Promise<void>;
|
|
676
699
|
stat(path: string, signal?: AbortSignal): Promise<FileStat>;
|
|
700
|
+
getGitUrlMetadata(path: string, signal?: AbortSignal): Promise<GitUrlMetadata>;
|
|
677
701
|
search(query: string, limit?: number, signal?: AbortSignal): Promise<string[]>;
|
|
678
702
|
createDir(path: string): Promise<void>;
|
|
679
703
|
moveFile(from: string, to: string): Promise<void>;
|
|
@@ -920,6 +944,12 @@ export declare type FrontPluginHotReloadMode = "vite" | false;
|
|
|
920
944
|
|
|
921
945
|
export declare function getFileIcon(filename: string): LucideIcon;
|
|
922
946
|
|
|
947
|
+
declare interface GitUrlMetadata {
|
|
948
|
+
enabled: boolean;
|
|
949
|
+
reason?: string;
|
|
950
|
+
url?: string;
|
|
951
|
+
}
|
|
952
|
+
|
|
923
953
|
export declare interface GroupConfig {
|
|
924
954
|
id: string;
|
|
925
955
|
position: "left" | "center" | "right" | "bottom";
|
|
@@ -1337,12 +1367,18 @@ export declare interface ResponsiveDockviewShellProps {
|
|
|
1337
1367
|
|
|
1338
1368
|
export declare type SerializedLayout = Parameters<DockviewApi["fromJSON"]>[0];
|
|
1339
1369
|
|
|
1340
|
-
export declare function SessionBrowser({ sessions, activeId, onSwitch, onCreate, onDelete, onLoadMore, hasMore, loadingMore, onClose, className, }: SessionBrowserProps): JSX.Element;
|
|
1370
|
+
export declare function SessionBrowser({ sessions, activeId, openIds, pinnedIds, onTogglePin, onSwitch, onOpenAsTab, onCreate, onDelete, onLoadMore, hasMore, loadingMore, onClose, className, }: SessionBrowserProps): JSX.Element;
|
|
1341
1371
|
|
|
1342
1372
|
export declare interface SessionBrowserProps {
|
|
1343
1373
|
sessions: SessionItem[];
|
|
1344
1374
|
activeId?: string | null;
|
|
1375
|
+
/** Session ids currently open as chat panes, in pane order. */
|
|
1376
|
+
openIds?: string[];
|
|
1377
|
+
/** Session ids the user pinned; surfaced in a Pinned section on top. */
|
|
1378
|
+
pinnedIds?: string[];
|
|
1379
|
+
onTogglePin?: (id: string) => void;
|
|
1345
1380
|
onSwitch?: (id: string) => void;
|
|
1381
|
+
onOpenAsTab?: (id: string) => void;
|
|
1346
1382
|
onCreate?: () => void;
|
|
1347
1383
|
onDelete?: (id: string) => void;
|
|
1348
1384
|
onLoadMore?: () => void;
|
|
@@ -1955,6 +1991,15 @@ export declare interface WorkspaceEventMap extends WorkspaceHostEventMap, Worksp
|
|
|
1955
1991
|
/** Names that share a prefix can be filtered with `startsWith`. */
|
|
1956
1992
|
export declare type WorkspaceEventName = keyof WorkspaceEventMap;
|
|
1957
1993
|
|
|
1994
|
+
export declare const workspaceEvents: {
|
|
1995
|
+
readonly uiCommand: "workspace:ui.command";
|
|
1996
|
+
readonly editorSaveStart: "workspace:editor.save.start";
|
|
1997
|
+
readonly editorSaveEnd: "workspace:editor.save.end";
|
|
1998
|
+
readonly panelUpdate: "workspace:panel.update";
|
|
1999
|
+
readonly panelClose: "workspace:panel.close";
|
|
2000
|
+
readonly agentData: "workspace:agent.data";
|
|
2001
|
+
};
|
|
2002
|
+
|
|
1958
2003
|
export declare function WorkspaceFilesProvider({ apiBaseUrl, authHeaders, onAuthError, timeout, client: providedClient, children, }: DataProviderProps): JSX.Element;
|
|
1959
2004
|
|
|
1960
2005
|
declare interface WorkspaceHostEventMap {
|
|
@@ -2071,7 +2116,7 @@ export declare interface WorkspacePluginEventMap {
|
|
|
2071
2116
|
};
|
|
2072
2117
|
}
|
|
2073
2118
|
|
|
2074
|
-
export declare function WorkspaceProvider({ children, chatPanel, plugins, excludeDefaults, panels, commands, catalogs, capabilities, apiBaseUrl, authHeaders, apiTimeout, defaultTheme, onThemeChange, workspaceId, storageKey, persistenceEnabled, bridgeEndpoint, onAuthError, onOpenFile, debug, frontPluginHotReload, fullPageBasePath, }: WorkspaceProviderProps): JSX.Element;
|
|
2119
|
+
export declare function WorkspaceProvider({ children, chatPanel, plugins, excludeDefaults, panels, commands, catalogs, capabilities, apiBaseUrl, authHeaders, apiTimeout, defaultTheme, onThemeChange, workspaceId, workspaceLabel, storageKey, persistenceEnabled, manageDocumentTitle, bridgeEndpoint, onAuthError, onOpenFile, debug, frontPluginHotReload, fullPageBasePath, }: WorkspaceProviderProps): JSX.Element;
|
|
2075
2120
|
|
|
2076
2121
|
export declare interface WorkspaceProviderProps {
|
|
2077
2122
|
children: ReactNode;
|
|
@@ -2093,8 +2138,10 @@ export declare interface WorkspaceProviderProps {
|
|
|
2093
2138
|
defaultTheme?: "light" | "dark" | undefined;
|
|
2094
2139
|
onThemeChange?: (theme: "light" | "dark") => void;
|
|
2095
2140
|
workspaceId?: string;
|
|
2141
|
+
workspaceLabel?: string;
|
|
2096
2142
|
storageKey?: string;
|
|
2097
2143
|
persistenceEnabled?: boolean;
|
|
2144
|
+
manageDocumentTitle?: boolean;
|
|
2098
2145
|
bridgeEndpoint?: string | null;
|
|
2099
2146
|
onAuthError?: (statusCode: number) => void;
|
|
2100
2147
|
onOpenFile?: (path: string) => void;
|