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/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
- /* Header controls that only exist where there is a server behind them. */
3613
- .prb-complete {
3614
- padding: 4px 10px;
3615
- border: 1px solid var(--border);
3616
- border-radius: 7px;
3617
- background: transparent;
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
- cursor: pointer;
3622
- }
3623
- .prb-complete:hover { border-color: var(--border-strong); color: var(--text-primary); }
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 { color: var(--text-primary); background: var(--surface-2); }
5016
- .prb-focus-toggle:focus-visible { outline: 2px solid var(--brand-hover); outline-offset: -2px; }
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; }