prreviewbuddy 0.48.0 → 0.49.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 +37 -0
- package/dist/{delete_review-D52wkt66.js → delete_review-BBjXPfMV.js} +51 -24
- package/dist/main.js +1 -3
- package/dist/server.js +198 -65
- package/package.json +1 -1
- package/static/chunk-BeqgAIrQ.js +1 -1
- package/static/{chunk-DaUgQrSg.js → chunk-vvGSmhmc.js} +1 -1
- package/static/reviews.js +1 -1
- package/static/shell.css +61 -45
- package/static/workspace.js +62 -62
package/static/shell.css
CHANGED
|
@@ -806,6 +806,8 @@ a.prb-author:hover .prb-author-name { color: var(--text-primary); text-decoratio
|
|
|
806
806
|
|
|
807
807
|
/* ── Three-pane body ── */
|
|
808
808
|
.prb-body {
|
|
809
|
+
/* Positioned, for Buddy AI's edge tab, which hangs off this box's right edge at its top. */
|
|
810
|
+
position: relative;
|
|
809
811
|
display: grid;
|
|
810
812
|
grid-template-columns: var(--rail-width) minmax(0, 1fr) var(--ask-width);
|
|
811
813
|
/* Whatever the banners above did not take, and `0` rather than `auto` as the basis: the height
|
|
@@ -1887,17 +1889,6 @@ a.prb-rail-item { text-decoration: none; }
|
|
|
1887
1889
|
font-size: var(--t-meta);
|
|
1888
1890
|
}
|
|
1889
1891
|
|
|
1890
|
-
.prb-ask-toggle {
|
|
1891
|
-
padding: 6px 11px;
|
|
1892
|
-
border-radius: 7px;
|
|
1893
|
-
border: 1px solid var(--border);
|
|
1894
|
-
background: var(--surface-2);
|
|
1895
|
-
color: var(--text-secondary);
|
|
1896
|
-
font: inherit;
|
|
1897
|
-
font-size: var(--t-meta);
|
|
1898
|
-
cursor: pointer;
|
|
1899
|
-
}
|
|
1900
|
-
.prb-ask-toggle:hover { color: var(--text-primary); border-color: var(--border-strong); }
|
|
1901
1892
|
|
|
1902
1893
|
|
|
1903
1894
|
/* Re-reading the conversation, offered on the PR context view. Light pane: literals, not tokens. */
|
|
@@ -2034,21 +2025,6 @@ a.prb-rail-item { text-decoration: none; }
|
|
|
2034
2025
|
.prb-fresh-status[data-state='changed'] { color: var(--warning); }
|
|
2035
2026
|
.prb-fresh-status[data-state='changed']::before { background: var(--warning); }
|
|
2036
2027
|
.prb-fresh-status[data-state='current']::before { background: var(--success); }
|
|
2037
|
-
/* The action beside it is a button like Mark reviewed beside it: the same secondary treatment, so
|
|
2038
|
-
the header reads as one status followed by the things you can do. */
|
|
2039
|
-
.prb-fresh-check {
|
|
2040
|
-
padding: 4px 10px;
|
|
2041
|
-
border: 1px solid var(--border);
|
|
2042
|
-
border-radius: 7px;
|
|
2043
|
-
background: transparent;
|
|
2044
|
-
color: var(--text-secondary);
|
|
2045
|
-
font: inherit;
|
|
2046
|
-
font-size: var(--t-meta);
|
|
2047
|
-
white-space: nowrap;
|
|
2048
|
-
cursor: pointer;
|
|
2049
|
-
}
|
|
2050
|
-
.prb-fresh-check:hover { border-color: var(--border-strong); color: var(--text-primary); }
|
|
2051
|
-
.prb-fresh-check:disabled { cursor: default; color: var(--text-muted); border-color: var(--border); }
|
|
2052
2028
|
|
|
2053
2029
|
/* ── Review freshness ──
|
|
2054
2030
|
*
|
|
@@ -3609,23 +3585,18 @@ a.prb-rail-item { text-decoration: none; }
|
|
|
3609
3585
|
line-height: var(--lh-body);
|
|
3610
3586
|
}
|
|
3611
3587
|
|
|
3612
|
-
/*
|
|
3613
|
-
.
|
|
3614
|
-
|
|
3615
|
-
border:
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
color: var(--text-secondary);
|
|
3619
|
-
font: inherit;
|
|
3588
|
+
/* The review page's lifecycle pill is the status pill's shape. Changed since it was parked, it
|
|
3589
|
+
reads as the card's chip does: a sentence, tinted like news. */
|
|
3590
|
+
.prb-page-lifecycle[data-changed] {
|
|
3591
|
+
border-color: transparent;
|
|
3592
|
+
background: var(--brand-muted);
|
|
3593
|
+
color: var(--brand-ink);
|
|
3620
3594
|
font-size: var(--t-meta);
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
.prb-complete[aria-pressed="true"] {
|
|
3625
|
-
border-color: var(--success-border);
|
|
3626
|
-
background: var(--success-subtle);
|
|
3627
|
-
color: var(--success-ink);
|
|
3595
|
+
font-weight: 600;
|
|
3596
|
+
letter-spacing: 0;
|
|
3597
|
+
text-transform: none;
|
|
3628
3598
|
}
|
|
3599
|
+
.prb-page-lifecycle[hidden] { display: none; }
|
|
3629
3600
|
|
|
3630
3601
|
/* ── Diagrams ──
|
|
3631
3602
|
*
|
|
@@ -4998,7 +4969,8 @@ body .prb-body[data-focus='buddy'] .prb-msg-user { max-width: min(90%, 78ch); }
|
|
|
4998
4969
|
|
|
4999
4970
|
/* The expand control. Icon-only, like Copy on a card, so it does not compete with a title. Both
|
|
5000
4971
|
icons are in the markup and `aria-pressed` picks one, which is the state the client sets. */
|
|
5001
|
-
.prb-focus-toggle
|
|
4972
|
+
.prb-focus-toggle,
|
|
4973
|
+
.prb-ask-hide {
|
|
5002
4974
|
display: inline-flex;
|
|
5003
4975
|
align-items: center;
|
|
5004
4976
|
justify-content: center;
|
|
@@ -5012,14 +4984,16 @@ body .prb-body[data-focus='buddy'] .prb-msg-user { max-width: min(90%, 78ch); }
|
|
|
5012
4984
|
color: var(--text-muted);
|
|
5013
4985
|
cursor: pointer;
|
|
5014
4986
|
}
|
|
5015
|
-
.prb-focus-toggle:hover
|
|
5016
|
-
.prb-
|
|
4987
|
+
.prb-focus-toggle:hover,
|
|
4988
|
+
.prb-ask-hide:hover { color: var(--text-primary); background: var(--surface-2); }
|
|
4989
|
+
.prb-focus-toggle:focus-visible,
|
|
4990
|
+
.prb-ask-hide:focus-visible { outline: 2px solid var(--brand-hover); outline-offset: -2px; }
|
|
5017
4991
|
.prb-focus-toggle .prb-focus-collapse,
|
|
5018
4992
|
.prb-focus-toggle[aria-pressed='true'] .prb-focus-expand { display: none; }
|
|
5019
4993
|
.prb-focus-toggle[aria-pressed='true'] .prb-focus-collapse { display: block; }
|
|
5020
4994
|
/* In the assistant's header it follows the scope label, which takes the free space with
|
|
5021
4995
|
`margin-left: auto`, so the control stays at the right edge beside it. */
|
|
5022
|
-
.prb-ask-header .prb-focus-toggle { align-self: center; }
|
|
4996
|
+
.prb-ask-header :is(.prb-focus-toggle, .prb-ask-hide) { align-self: center; }
|
|
5023
4997
|
|
|
5024
4998
|
/* The same control in the light document pane, in the pane's palette. */
|
|
5025
4999
|
.prb-doc .prb-focus-toggle { color: var(--pane-ink-faint); }
|
|
@@ -5151,3 +5125,45 @@ body .prb-body[data-focus='buddy'] .prb-msg-user { max-width: min(90%, 78ch); }
|
|
|
5151
5125
|
letter-spacing: 0.04em;
|
|
5152
5126
|
text-transform: uppercase;
|
|
5153
5127
|
}
|
|
5128
|
+
|
|
5129
|
+
/* ── Buddy AI's edge tab ──
|
|
5130
|
+
* On the body's right edge, at its top, where the pane opens. Against the body rather than the
|
|
5131
|
+
* window, so a banner above the body moves it down with everything else. Only while the pane is not
|
|
5132
|
+
* showing: the pane's own header has the chevron that closes it.
|
|
5133
|
+
*
|
|
5134
|
+
* Here at the end of the file on purpose. The hiding rules have to come after every breakpoint
|
|
5135
|
+
* block that decides whether the pane shows, or a base rule below one of them silently wins. */
|
|
5136
|
+
.prb-ask-tab {
|
|
5137
|
+
position: absolute;
|
|
5138
|
+
top: 16px;
|
|
5139
|
+
right: 0;
|
|
5140
|
+
z-index: 4;
|
|
5141
|
+
display: inline-flex;
|
|
5142
|
+
align-items: center;
|
|
5143
|
+
gap: 6px;
|
|
5144
|
+
padding: 7px 10px 7px 11px;
|
|
5145
|
+
border: 1px solid var(--border);
|
|
5146
|
+
border-right: 0;
|
|
5147
|
+
border-radius: 8px 0 0 8px;
|
|
5148
|
+
background: var(--surface);
|
|
5149
|
+
box-shadow: -2px 2px 8px var(--shadow-soft);
|
|
5150
|
+
color: var(--text-secondary);
|
|
5151
|
+
font: inherit;
|
|
5152
|
+
font-size: var(--t-meta);
|
|
5153
|
+
font-weight: 600;
|
|
5154
|
+
white-space: nowrap;
|
|
5155
|
+
cursor: pointer;
|
|
5156
|
+
}
|
|
5157
|
+
.prb-ask-tab:hover { color: var(--text-primary); border-color: var(--border-strong); }
|
|
5158
|
+
.prb-ask-tab:focus-visible { outline: 2px solid var(--brand-hover); outline-offset: -2px; }
|
|
5159
|
+
.prb-ask-tab-icon { flex: none; color: var(--brand); }
|
|
5160
|
+
|
|
5161
|
+
/* The pane is showing: chosen open, or wide enough to show by default with no choice made. */
|
|
5162
|
+
.prb-body[data-ask='open'] .prb-ask-tab { display: none; }
|
|
5163
|
+
@media (min-width: 1181px) {
|
|
5164
|
+
.prb-body:not([data-ask]) .prb-ask-tab { display: none; }
|
|
5165
|
+
}
|
|
5166
|
+
/* Buddy expanded fills the body; another surface expanded hides the pane, so the tab is the way
|
|
5167
|
+
back to it, whatever `data-ask` says underneath. */
|
|
5168
|
+
body .prb-body[data-focus='buddy'] .prb-ask-tab { display: none; }
|
|
5169
|
+
body .prb-body[data-focus]:not([data-focus='buddy']) .prb-ask-tab { display: inline-flex; }
|