prreviewbuddy 0.83.3 → 0.85.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 +36 -0
- package/dist/server.js +141 -12
- package/package.json +1 -1
- package/static/help.js +1 -1
- package/static/shell.css +185 -37
- package/static/sidebar.css +21 -23
- package/static/workspace.js +80 -80
package/static/shell.css
CHANGED
|
@@ -173,6 +173,8 @@
|
|
|
173
173
|
:root[data-theme='dark'] { color-scheme: dark; }
|
|
174
174
|
|
|
175
175
|
* { box-sizing: border-box; }
|
|
176
|
+
/* No link in the workspace is underlined, at rest or on hover: colour says it is a link. */
|
|
177
|
+
a { text-decoration: none; }
|
|
176
178
|
|
|
177
179
|
html, body {
|
|
178
180
|
height: 100%;
|
|
@@ -758,7 +760,7 @@ body[data-server-stopped] .prb-shell { opacity: 0.55; pointer-events: none; }
|
|
|
758
760
|
.prb-author::before { content: 'by'; color: var(--text-muted); }
|
|
759
761
|
.prb-author-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
760
762
|
.prb-author-handle { color: var(--text-muted); }
|
|
761
|
-
a.prb-author:hover .prb-author-name { color: var(--text-primary);
|
|
763
|
+
a.prb-author:hover .prb-author-name { color: var(--text-primary); }
|
|
762
764
|
|
|
763
765
|
.prb-pr-empty, .prb-pr-provenance, .prb-pr-truncated {
|
|
764
766
|
font-size: var(--t-body);
|
|
@@ -775,7 +777,7 @@ a.prb-author:hover .prb-author-name { color: var(--text-primary); text-decoratio
|
|
|
775
777
|
margin-bottom: 26px;
|
|
776
778
|
}
|
|
777
779
|
.prb-pr-provenance a { color: var(--brand); font-weight: 400; text-decoration: none; }
|
|
778
|
-
.prb-pr-provenance a:hover {
|
|
780
|
+
.prb-pr-provenance a:hover { opacity: 0.8; }
|
|
779
781
|
.prb-pr-title { color: var(--pane-ink); }
|
|
780
782
|
.prb-pr-counts, .prb-pr-provenance time { color: var(--pane-ink-faint); font-size: var(--t-meta); }
|
|
781
783
|
|
|
@@ -846,7 +848,7 @@ a.prb-author:hover .prb-author-name { color: var(--text-primary); text-decoratio
|
|
|
846
848
|
}
|
|
847
849
|
.prb-pr-comment-meta { display: flex; gap: 8px; align-items: baseline; font-size: var(--t-meta); }
|
|
848
850
|
.prb-pr-comment-meta a { color: var(--brand); font-weight: 400; text-decoration: none; }
|
|
849
|
-
.prb-pr-comment-meta a:hover {
|
|
851
|
+
.prb-pr-comment-meta a:hover { opacity: 0.8; }
|
|
850
852
|
.prb-pr-comment-meta time { color: var(--pane-ink-faint); }
|
|
851
853
|
/* Someone else's words, rendered as the Markdown they wrote rather than as one flat block. Light
|
|
852
854
|
pane, so literals throughout: see pane_palette.test.ts. */
|
|
@@ -2244,12 +2246,10 @@ a.prb-rail-item { text-decoration: none; }
|
|
|
2244
2246
|
color: inherit;
|
|
2245
2247
|
font: inherit;
|
|
2246
2248
|
font-weight: 400;
|
|
2247
|
-
|
|
2248
|
-
text-decoration-color: var(--brand);
|
|
2249
|
-
text-underline-offset: 3px;
|
|
2249
|
+
color: var(--pane-accent);
|
|
2250
2250
|
cursor: pointer;
|
|
2251
2251
|
}
|
|
2252
|
-
.prb-doc-note-link:hover { color: var(--pane-ink);
|
|
2252
|
+
.prb-doc-note-link:hover { color: var(--pane-ink); }
|
|
2253
2253
|
|
|
2254
2254
|
.prb-doc-note {
|
|
2255
2255
|
margin: 0 0 14px;
|
|
@@ -2396,25 +2396,21 @@ a.prb-rail-item { text-decoration: none; }
|
|
|
2396
2396
|
/* Everything that is not the primary action. Text, not a box: as bordered buttons these competed
|
|
2397
2397
|
with Update review and the panel read as four equal choices.
|
|
2398
2398
|
|
|
2399
|
-
Resting
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
not restraint. Hover thickens the rule instead, so pointing at one still answers. */
|
|
2399
|
+
Resting in the link colour, not muted grey. Grey was quiet to the point of being scenery: half of
|
|
2400
|
+
these are the only way to do the thing the sentence beside them is describing, and a control
|
|
2401
|
+
nobody can see is not restraint. Hover takes them to the primary ink, so pointing at one answers. */
|
|
2403
2402
|
.prb-fresh-quiet {
|
|
2404
2403
|
padding: 2px 0;
|
|
2405
2404
|
border: 0;
|
|
2406
2405
|
background: none;
|
|
2407
|
-
color: var(--
|
|
2406
|
+
color: var(--link);
|
|
2408
2407
|
font: inherit;
|
|
2409
2408
|
font-size: var(--t-micro);
|
|
2410
|
-
text-decoration: underline;
|
|
2411
|
-
text-decoration-color: var(--brand);
|
|
2412
|
-
text-underline-offset: 3px;
|
|
2413
2409
|
/* It sits inside a sentence now, so it sits on that sentence's baseline. */
|
|
2414
2410
|
vertical-align: baseline;
|
|
2415
2411
|
cursor: pointer;
|
|
2416
2412
|
}
|
|
2417
|
-
.prb-fresh-quiet:hover:not(:disabled) { text-
|
|
2413
|
+
.prb-fresh-quiet:hover:not(:disabled) { color: var(--text-primary); }
|
|
2418
2414
|
.prb-fresh-quiet:disabled { opacity: 0.55; cursor: default; }
|
|
2419
2415
|
|
|
2420
2416
|
/* Dismissal, at the end of the row it dismisses. An icon rather than the word `Close`, because it
|
|
@@ -2601,17 +2597,14 @@ a.prb-rail-item { text-decoration: none; }
|
|
|
2601
2597
|
.prb-update-alt > summary,
|
|
2602
2598
|
.prb-fresh-more > summary {
|
|
2603
2599
|
display: inline-block;
|
|
2604
|
-
color: var(--
|
|
2605
|
-
text-decoration: underline;
|
|
2606
|
-
text-decoration-color: var(--brand);
|
|
2607
|
-
text-underline-offset: 3px;
|
|
2600
|
+
color: var(--link);
|
|
2608
2601
|
cursor: pointer;
|
|
2609
2602
|
list-style: none;
|
|
2610
2603
|
}
|
|
2611
2604
|
.prb-update-alt > summary::-webkit-details-marker,
|
|
2612
2605
|
.prb-fresh-more > summary::-webkit-details-marker { display: none; }
|
|
2613
2606
|
.prb-update-alt > summary:hover,
|
|
2614
|
-
.prb-fresh-more > summary:hover { text-
|
|
2607
|
+
.prb-fresh-more > summary:hover { color: var(--text-primary); }
|
|
2615
2608
|
/* Only this one announces itself as expandable. `Start a new review` reads as an action beside
|
|
2616
2609
|
`Check review status` and a caret would advertise the disclosure rather than the choice; `More
|
|
2617
2610
|
details` has nothing to offer except opening, so it says so. */
|
|
@@ -3092,7 +3085,7 @@ a.prb-guide-pick { text-decoration: none; }
|
|
|
3092
3085
|
opacity: 0.8;
|
|
3093
3086
|
cursor: pointer;
|
|
3094
3087
|
}
|
|
3095
|
-
.prb-code-deletion-toggle:hover { opacity: 1;
|
|
3088
|
+
.prb-code-deletion-toggle:hover { opacity: 1; }
|
|
3096
3089
|
.prb-code-deleted { background: rgba(248, 81, 73, 0.1); }
|
|
3097
3090
|
.prb-code-deleted .prb-code-num { box-shadow: inset 2px 0 0 #cf222e; color: #a40e26; }
|
|
3098
3091
|
.prb-code-deleted .prb-code-line { color: #6e7781; }
|
|
@@ -3105,7 +3098,6 @@ a.prb-guide-pick { text-decoration: none; }
|
|
|
3105
3098
|
background: none;
|
|
3106
3099
|
font: inherit;
|
|
3107
3100
|
color: #57606a;
|
|
3108
|
-
text-decoration: underline;
|
|
3109
3101
|
cursor: pointer;
|
|
3110
3102
|
}
|
|
3111
3103
|
.prb-code-long-toggle:hover { color: #1f2328; }
|
|
@@ -4380,7 +4372,7 @@ a.prb-guide-pick { text-decoration: none; }
|
|
|
4380
4372
|
.prb-arch-trail { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 26px; font-size: var(--t-meta); color: #57606a; }
|
|
4381
4373
|
.prb-arch-crumb { padding: 3px 0; border: 0; background: none; font: inherit; color: inherit; }
|
|
4382
4374
|
button.prb-arch-crumb { color: #7e22ce; cursor: pointer; }
|
|
4383
|
-
button.prb-arch-crumb:hover {
|
|
4375
|
+
button.prb-arch-crumb:hover { opacity: 0.8; }
|
|
4384
4376
|
button.prb-arch-crumb:focus-visible { outline: 2px solid #9333ea; outline-offset: 1px; }
|
|
4385
4377
|
.prb-arch-crumb[aria-current] { font-weight: 600; color: #1f2328; }
|
|
4386
4378
|
.prb-arch-crumb-sep { color: #8c959f; }
|
|
@@ -4419,7 +4411,7 @@ button.prb-arch-crumb:focus-visible { outline: 2px solid #9333ea; outline-offset
|
|
|
4419
4411
|
cursor: pointer;
|
|
4420
4412
|
overflow-wrap: anywhere;
|
|
4421
4413
|
}
|
|
4422
|
-
.prb-arch-location:hover {
|
|
4414
|
+
.prb-arch-location:hover { opacity: 0.8; }
|
|
4423
4415
|
.prb-arch-location:focus-visible { outline: 2px solid #9333ea; outline-offset: 1px; }
|
|
4424
4416
|
span.prb-arch-location { color: #57606a; cursor: default; }
|
|
4425
4417
|
span.prb-arch-location:hover { text-decoration: none; }
|
|
@@ -4658,7 +4650,7 @@ span.prb-arch-location:hover { text-decoration: none; }
|
|
|
4658
4650
|
text-align: left;
|
|
4659
4651
|
cursor: pointer;
|
|
4660
4652
|
}
|
|
4661
|
-
.prb-map-goto:hover {
|
|
4653
|
+
.prb-map-goto:hover { opacity: 0.8; }
|
|
4662
4654
|
|
|
4663
4655
|
.prb-map-edges {
|
|
4664
4656
|
position: absolute;
|
|
@@ -5418,7 +5410,7 @@ span.prb-arch-location:hover { text-decoration: none; }
|
|
|
5418
5410
|
cursor: pointer;
|
|
5419
5411
|
}
|
|
5420
5412
|
.prb-kiss-location:hover { background: rgba(147, 51, 234, 0.14); }
|
|
5421
|
-
.prb-kiss-location:hover .pr-helper-path-name {
|
|
5413
|
+
.prb-kiss-location:hover .pr-helper-path-name { opacity: 0.8; }
|
|
5422
5414
|
/* The filename is a block, so the two markers that qualify it need a line of their own to share
|
|
5423
5415
|
with it rather than one each above and below it. Baseline-aligned: they are small caps beside
|
|
5424
5416
|
ordinary text and should sit on its line, not be centred against its box. */
|
|
@@ -5638,7 +5630,6 @@ select.prb-addreview-control {
|
|
|
5638
5630
|
/* Clear of the sticky bars when arrived at by its anchor. */
|
|
5639
5631
|
scroll-margin-top: 96px;
|
|
5640
5632
|
}
|
|
5641
|
-
.prb-help-topic:first-of-type { padding-top: 4px; }
|
|
5642
5633
|
.prb-help-topic:last-of-type { border-bottom: 0; }
|
|
5643
5634
|
.prb-help-topic h2 { margin: 0 0 12px; font-size: var(--t-section); font-weight: 600; color: var(--text-primary); }
|
|
5644
5635
|
.prb-help-topic h3 { margin: 20px 0 8px; font-size: var(--t-body); font-weight: 600; color: var(--text-primary); }
|
|
@@ -5646,13 +5637,89 @@ select.prb-addreview-control {
|
|
|
5646
5637
|
.prb-help-topic ul { margin: 0 0 10px; padding-left: 20px; }
|
|
5647
5638
|
.prb-help-topic li { margin-bottom: 4px; }
|
|
5648
5639
|
.prb-help-topic code { font-size: var(--t-code); color: var(--text-primary); }
|
|
5640
|
+
/* Welcome: a small capitalised label over the line the product stands on, and the principles as
|
|
5641
|
+
three short statements, each named in the primary ink and explained in the secondary. */
|
|
5642
|
+
.prb-help-topic .prb-help-eyebrow {
|
|
5643
|
+
margin: 0 0 6px;
|
|
5644
|
+
font-size: var(--t-micro);
|
|
5645
|
+
font-weight: 600;
|
|
5646
|
+
letter-spacing: 0.06em;
|
|
5647
|
+
text-transform: uppercase;
|
|
5648
|
+
color: var(--text-tertiary, var(--text-secondary));
|
|
5649
|
+
}
|
|
5650
|
+
.prb-help-topic h3.prb-help-eyebrow { margin-top: 24px; margin-bottom: 10px; }
|
|
5651
|
+
.prb-help-topic .prb-help-headline { margin: 0 0 14px; font-size: var(--t-title); line-height: 1.3; }
|
|
5652
|
+
.prb-help-principles { display: grid; gap: 12px; margin: 0; }
|
|
5653
|
+
.prb-help-principles dt { font-weight: 600; color: var(--text-primary); }
|
|
5654
|
+
.prb-help-principles dd { margin: 2px 0 0; }
|
|
5655
|
+
.prb-help-tour { margin-top: 20px; }
|
|
5656
|
+
/* An action, not a reference: it starts something, so it looks like the tour's own Next. */
|
|
5657
|
+
/* Through `.prb-help-topic a`, whose link colour would otherwise be drawn on the button's own purple. */
|
|
5658
|
+
.prb-help-topic a.prb-help-tour-action {
|
|
5659
|
+
display: inline-block;
|
|
5660
|
+
padding: 5px 12px;
|
|
5661
|
+
border-radius: 8px;
|
|
5662
|
+
background: var(--brand);
|
|
5663
|
+
color: var(--on-brand);
|
|
5664
|
+
font-weight: 600;
|
|
5665
|
+
}
|
|
5666
|
+
.prb-help-topic a.prb-help-tour-action:hover { background: var(--brand-hover); }
|
|
5649
5667
|
.prb-help-topic a { color: var(--link); }
|
|
5650
|
-
/*
|
|
5651
|
-
|
|
5652
|
-
.prb-
|
|
5653
|
-
|
|
5654
|
-
|
|
5655
|
-
|
|
5668
|
+
/* Wider than the 960px every other page keeps, by the index's column, so the topics keep the
|
|
5669
|
+
measure they had when the index sat above them. */
|
|
5670
|
+
.prb-shell > .prb-help {
|
|
5671
|
+
padding-inline: max(24px, calc((100% - 1200px) / 2 + 24px));
|
|
5672
|
+
container-type: inline-size;
|
|
5673
|
+
}
|
|
5674
|
+
/* The topics, and their index in a column beside them that stays in view while they scroll. The
|
|
5675
|
+
index comes first in the document and is placed second here. */
|
|
5676
|
+
.prb-help-layout {
|
|
5677
|
+
display: grid;
|
|
5678
|
+
grid-template-columns: minmax(0, 1fr) 208px;
|
|
5679
|
+
column-gap: 32px;
|
|
5680
|
+
align-items: start;
|
|
5681
|
+
}
|
|
5682
|
+
.prb-help-layout > .prb-page-panel { grid-column: 1; grid-row: 1; }
|
|
5683
|
+
.prb-help-contents {
|
|
5684
|
+
grid-column: 2;
|
|
5685
|
+
grid-row: 1;
|
|
5686
|
+
position: sticky;
|
|
5687
|
+
/* The pane's own top padding is the gap, at rest and stuck alike, so the index never jumps. */
|
|
5688
|
+
top: 0;
|
|
5689
|
+
max-height: calc(100dvh - 160px);
|
|
5690
|
+
overflow-y: auto;
|
|
5691
|
+
padding: 4px 0;
|
|
5692
|
+
}
|
|
5693
|
+
.prb-help-contents ul { margin: 0; padding: 0; list-style: none; border-left: 1px solid var(--border); }
|
|
5694
|
+
/* The rail's mark for where you are: a brand rule on the left and the tinted ground, here over the
|
|
5695
|
+
list's own rule so the mark sits on the track it moves along. */
|
|
5696
|
+
.prb-help-contents a {
|
|
5697
|
+
display: block;
|
|
5698
|
+
margin-left: -1px;
|
|
5699
|
+
padding: 5px 10px 5px 14px;
|
|
5700
|
+
border-left: 2px solid transparent;
|
|
5701
|
+
border-radius: 0 6px 6px 0;
|
|
5702
|
+
font-size: var(--t-meta);
|
|
5703
|
+
line-height: 1.4;
|
|
5704
|
+
color: var(--text-secondary);
|
|
5705
|
+
text-decoration: none;
|
|
5706
|
+
}
|
|
5707
|
+
.prb-help-contents a:hover { color: var(--text-primary); background: var(--surface-hover); }
|
|
5708
|
+
.prb-help-contents a[aria-current] {
|
|
5709
|
+
border-left-color: var(--brand);
|
|
5710
|
+
background: var(--brand-muted);
|
|
5711
|
+
color: var(--text-primary);
|
|
5712
|
+
font-weight: 500;
|
|
5713
|
+
}
|
|
5714
|
+
.prb-help-contents a:focus-visible { outline: 2px solid var(--brand-hover); outline-offset: -2px; }
|
|
5715
|
+
/* Too narrow for a column beside the prose: the index goes back above the topics, as a wrapping
|
|
5716
|
+
row, and stops following the scroll. After the rules above, which it overrides. */
|
|
5717
|
+
@container (max-width: 760px) {
|
|
5718
|
+
.prb-help-layout { display: block; }
|
|
5719
|
+
.prb-help-contents { position: static; max-height: none; margin: 0 0 16px; padding: 0; }
|
|
5720
|
+
.prb-help-contents ul { display: flex; flex-wrap: wrap; gap: 4px; border-left: 0; }
|
|
5721
|
+
.prb-help-contents a { margin-left: 0; padding: 4px 10px; border-left: 0; border-radius: 6px; }
|
|
5722
|
+
}
|
|
5656
5723
|
/* A diagram's spacing is its meaning, so it never wraps: a narrow window scrolls it instead. */
|
|
5657
5724
|
.prb-help-diagram {
|
|
5658
5725
|
margin: 0 0 12px;
|
|
@@ -5815,7 +5882,7 @@ a.prb-notification-open:focus-visible { outline: 2px solid var(--brand-hover); o
|
|
|
5815
5882
|
.prb-toast[data-kind='updated'] { border-left-color: var(--brand); }
|
|
5816
5883
|
.prb-toast-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
5817
5884
|
.prb-toast-open { flex: none; color: var(--wordmark-accent); font-weight: 600; text-decoration: none; }
|
|
5818
|
-
.prb-toast-open:hover {
|
|
5885
|
+
.prb-toast-open:hover { opacity: 0.8; }
|
|
5819
5886
|
.prb-toast-close {
|
|
5820
5887
|
flex: none;
|
|
5821
5888
|
width: 24px;
|
|
@@ -6474,7 +6541,6 @@ select.prb-addreview-control { padding-right: 32px; }
|
|
|
6474
6541
|
color: var(--link);
|
|
6475
6542
|
font: inherit;
|
|
6476
6543
|
font-size: var(--t-micro);
|
|
6477
|
-
text-decoration: underline;
|
|
6478
6544
|
cursor: pointer;
|
|
6479
6545
|
}
|
|
6480
6546
|
.prb-addreview-retry { margin-left: calc(1em + 8px); }
|
|
@@ -6562,7 +6628,7 @@ select.prb-addreview-control { padding-right: 32px; }
|
|
|
6562
6628
|
}
|
|
6563
6629
|
.prb-selection-goto[hidden] { display: none; }
|
|
6564
6630
|
.prb-selection-sep { color: var(--pane-ink-faint); white-space: pre; }
|
|
6565
|
-
.prb-selection-goto:hover [data-feedback-goto-label] {
|
|
6631
|
+
.prb-selection-goto:hover [data-feedback-goto-label] { opacity: 0.8; }
|
|
6566
6632
|
.prb-selection-spacer { flex: 1; }
|
|
6567
6633
|
.prb-selection-button {
|
|
6568
6634
|
padding: 6px 12px;
|
|
@@ -6739,3 +6805,85 @@ select.prb-addreview-control { padding-right: 32px; }
|
|
|
6739
6805
|
.prb-runs-count { padding: 8px 10px; }
|
|
6740
6806
|
.prb-runs-count dd { font-size: var(--t-section); }
|
|
6741
6807
|
}
|
|
6808
|
+
|
|
6809
|
+
|
|
6810
|
+
/* ── Guided tour ──
|
|
6811
|
+
A modal dialog as big as the window, so everything under it is inert; the spotlight's shadow is
|
|
6812
|
+
the dim, and the card sits beside whatever the spotlight is on. Positions are set by tour.ts. */
|
|
6813
|
+
.prb-tour {
|
|
6814
|
+
position: fixed;
|
|
6815
|
+
inset: 0;
|
|
6816
|
+
width: 100%;
|
|
6817
|
+
height: 100%;
|
|
6818
|
+
max-width: none;
|
|
6819
|
+
max-height: none;
|
|
6820
|
+
margin: 0;
|
|
6821
|
+
padding: 0;
|
|
6822
|
+
border: 0;
|
|
6823
|
+
background: transparent;
|
|
6824
|
+
overflow: hidden;
|
|
6825
|
+
color: var(--text-primary);
|
|
6826
|
+
font: inherit;
|
|
6827
|
+
}
|
|
6828
|
+
.prb-tour::backdrop { background: transparent; }
|
|
6829
|
+
/* No target to light: the welcome, or a stop this layout does not draw. The whole page dims. */
|
|
6830
|
+
.prb-tour[data-spotless] { background: var(--backdrop); }
|
|
6831
|
+
.prb-tour-spot {
|
|
6832
|
+
position: fixed;
|
|
6833
|
+
border-radius: 10px;
|
|
6834
|
+
outline: 2px solid var(--brand);
|
|
6835
|
+
outline-offset: 0;
|
|
6836
|
+
box-shadow: 0 0 0 200vmax var(--backdrop);
|
|
6837
|
+
pointer-events: none;
|
|
6838
|
+
}
|
|
6839
|
+
.prb-tour-card {
|
|
6840
|
+
position: fixed;
|
|
6841
|
+
box-sizing: border-box;
|
|
6842
|
+
padding: 20px 22px 18px;
|
|
6843
|
+
border: 1px solid var(--border);
|
|
6844
|
+
border-radius: 12px;
|
|
6845
|
+
background: var(--surface-raised);
|
|
6846
|
+
box-shadow: 0 12px 32px var(--shadow-float);
|
|
6847
|
+
}
|
|
6848
|
+
.prb-tour[data-welcome] .prb-tour-card { padding: 26px 28px 22px; }
|
|
6849
|
+
.prb-tour-count {
|
|
6850
|
+
margin: 0 0 8px;
|
|
6851
|
+
font-size: var(--t-meta);
|
|
6852
|
+
font-weight: 600;
|
|
6853
|
+
letter-spacing: 0.04em;
|
|
6854
|
+
text-transform: uppercase;
|
|
6855
|
+
color: var(--brand-hover);
|
|
6856
|
+
}
|
|
6857
|
+
.prb-tour-title { margin: 0 0 8px; font-size: var(--t-section); font-weight: 650; line-height: 1.3; }
|
|
6858
|
+
.prb-tour[data-welcome] .prb-tour-title { font-size: 20px; }
|
|
6859
|
+
.prb-tour-text p { margin: 0 0 8px; font-size: var(--t-body); line-height: var(--lh-body); color: var(--text-secondary); }
|
|
6860
|
+
.prb-tour-actions { display: flex; align-items: center; gap: 8px; margin-top: 16px; }
|
|
6861
|
+
.prb-tour-actions button {
|
|
6862
|
+
padding: 7px 14px;
|
|
6863
|
+
border-radius: 8px;
|
|
6864
|
+
border: 1px solid var(--border);
|
|
6865
|
+
background: var(--surface-2);
|
|
6866
|
+
color: var(--text-primary);
|
|
6867
|
+
font: inherit;
|
|
6868
|
+
font-size: var(--t-body);
|
|
6869
|
+
cursor: pointer;
|
|
6870
|
+
}
|
|
6871
|
+
.prb-tour-actions button:hover { border-color: var(--border-strong); }
|
|
6872
|
+
.prb-tour-actions button:focus-visible { outline: 2px solid var(--brand-hover); outline-offset: 2px; }
|
|
6873
|
+
.prb-tour-actions .prb-tour-skip {
|
|
6874
|
+
margin-right: auto;
|
|
6875
|
+
padding-left: 0;
|
|
6876
|
+
padding-right: 0;
|
|
6877
|
+
border-color: transparent;
|
|
6878
|
+
background: transparent;
|
|
6879
|
+
color: var(--text-secondary);
|
|
6880
|
+
}
|
|
6881
|
+
.prb-tour-actions .prb-tour-skip:hover { border-color: transparent; color: var(--text-primary); }
|
|
6882
|
+
.prb-tour-actions .prb-tour-next {
|
|
6883
|
+
border-color: var(--brand);
|
|
6884
|
+
background: var(--brand);
|
|
6885
|
+
color: var(--on-brand);
|
|
6886
|
+
font-weight: 600;
|
|
6887
|
+
}
|
|
6888
|
+
.prb-tour-actions .prb-tour-next:hover { border-color: var(--brand-hover); background: var(--brand-hover); }
|
|
6889
|
+
.prb-tour-actions button[hidden] { display: none; }
|
package/static/sidebar.css
CHANGED
|
@@ -218,7 +218,7 @@
|
|
|
218
218
|
cursor: pointer;
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
.pr-helper-cancel-button:hover { color: #cf222e;
|
|
221
|
+
.pr-helper-cancel-button:hover { color: #cf222e; }
|
|
222
222
|
|
|
223
223
|
/* ── Brand mark + thinking dots (waiting/finalizing phase) ── */
|
|
224
224
|
.pr-helper-brand-mark {
|
|
@@ -809,7 +809,7 @@
|
|
|
809
809
|
cursor: pointer;
|
|
810
810
|
}
|
|
811
811
|
|
|
812
|
-
.pr-helper-author-context-toggle:hover {
|
|
812
|
+
.pr-helper-author-context-toggle:hover { opacity: 0.8; }
|
|
813
813
|
|
|
814
814
|
/* The heading and, once the description is open, its Show less. While open the row sticks to the
|
|
815
815
|
top of whatever the review scrolls in, so a long description never has to be read to its end to
|
|
@@ -838,7 +838,7 @@
|
|
|
838
838
|
color: #9333ea;
|
|
839
839
|
text-decoration: none;
|
|
840
840
|
}
|
|
841
|
-
.pr-helper-author-context-github:hover {
|
|
841
|
+
.pr-helper-author-context-github:hover { opacity: 0.8; }
|
|
842
842
|
.pr-helper-author-context[data-expanded] .pr-helper-author-context-head {
|
|
843
843
|
position: sticky;
|
|
844
844
|
/* A sticky element stops at its scroller's padding edge, leaving that padding as a strip the
|
|
@@ -936,7 +936,7 @@
|
|
|
936
936
|
cursor: pointer;
|
|
937
937
|
}
|
|
938
938
|
|
|
939
|
-
.pr-helper-why-link:hover {
|
|
939
|
+
.pr-helper-why-link:hover { opacity: 0.8; }
|
|
940
940
|
|
|
941
941
|
/* The author's words behind a stated motive, closed: the summary above usually says the same. */
|
|
942
942
|
.pr-helper-why-source { margin: 4px 0 0; }
|
|
@@ -949,7 +949,7 @@
|
|
|
949
949
|
width: fit-content;
|
|
950
950
|
}
|
|
951
951
|
|
|
952
|
-
.pr-helper-why-source > summary:hover {
|
|
952
|
+
.pr-helper-why-source > summary:hover { opacity: 0.8; }
|
|
953
953
|
|
|
954
954
|
/* The three narrative sections end here; the verdict and the path are a different kind of block,
|
|
955
955
|
so the gap before each is wider than the gaps between the sections. */
|
|
@@ -1404,7 +1404,7 @@
|
|
|
1404
1404
|
text-decoration: none;
|
|
1405
1405
|
}
|
|
1406
1406
|
|
|
1407
|
-
.pr-helper-issue-discussion-link:hover {
|
|
1407
|
+
.pr-helper-issue-discussion-link:hover { opacity: 0.8; }
|
|
1408
1408
|
|
|
1409
1409
|
.pr-helper-issue-loc {
|
|
1410
1410
|
display: block;
|
|
@@ -1412,7 +1412,7 @@
|
|
|
1412
1412
|
margin-top: 6px;
|
|
1413
1413
|
}
|
|
1414
1414
|
|
|
1415
|
-
.pr-helper-issue-loc:hover .pr-helper-path-name {
|
|
1415
|
+
.pr-helper-issue-loc:hover .pr-helper-path-name { opacity: 0.8; }
|
|
1416
1416
|
|
|
1417
1417
|
/* A file the finding rests on that this change does not touch. Sits under the anchored location
|
|
1418
1418
|
and must not be mistaken for one: no line number, and the words are on the row.
|
|
@@ -1426,7 +1426,7 @@
|
|
|
1426
1426
|
font-size: 11.5px;
|
|
1427
1427
|
opacity: 0.75;
|
|
1428
1428
|
}
|
|
1429
|
-
.prb-file-related:hover .pr-helper-path-name {
|
|
1429
|
+
.prb-file-related:hover .pr-helper-path-name { opacity: 0.8; }
|
|
1430
1430
|
|
|
1431
1431
|
/* ── Questions tab ── */
|
|
1432
1432
|
/* Deliberately reuses .pr-helper-issue-header/-title/-badges/-desc/-loc from the Issues tab
|
|
@@ -1501,7 +1501,7 @@
|
|
|
1501
1501
|
cursor: pointer;
|
|
1502
1502
|
white-space: nowrap;
|
|
1503
1503
|
}
|
|
1504
|
-
.pr-helper-simple-explanation-more:hover {
|
|
1504
|
+
.pr-helper-simple-explanation-more:hover { opacity: 0.8; }
|
|
1505
1505
|
.pr-helper-simple-explanation-more:focus-visible { outline: 2px solid #9333ea; outline-offset: 2px; border-radius: 2px; }
|
|
1506
1506
|
|
|
1507
1507
|
.pr-helper-question-importance-badge {
|
|
@@ -1613,7 +1613,7 @@
|
|
|
1613
1613
|
}
|
|
1614
1614
|
|
|
1615
1615
|
.pr-helper-question-jump { text-decoration: none; }
|
|
1616
|
-
.pr-helper-question-jump:hover { color: #7c3aed;
|
|
1616
|
+
.pr-helper-question-jump:hover { color: #7c3aed; }
|
|
1617
1617
|
|
|
1618
1618
|
/* Same button geometry as .pr-helper-explain-simply-button (the sidebar's existing outlined
|
|
1619
1619
|
secondary), but neutral rather than purple: purple is spoken for by the primary action
|
|
@@ -1978,7 +1978,7 @@
|
|
|
1978
1978
|
text-align: left;
|
|
1979
1979
|
}
|
|
1980
1980
|
|
|
1981
|
-
.pr-helper-guide-start-cta:hover { color: #7c3aed;
|
|
1981
|
+
.pr-helper-guide-start-cta:hover { color: #7c3aed; }
|
|
1982
1982
|
|
|
1983
1983
|
.pr-helper-guide-section-actions {
|
|
1984
1984
|
display: flex;
|
|
@@ -2000,7 +2000,7 @@
|
|
|
2000
2000
|
cursor: pointer;
|
|
2001
2001
|
}
|
|
2002
2002
|
|
|
2003
|
-
.pr-helper-guide-uncomplete:hover { color: var(--color-fg-default, #24292f);
|
|
2003
|
+
.pr-helper-guide-uncomplete:hover { color: var(--color-fg-default, #24292f); }
|
|
2004
2004
|
|
|
2005
2005
|
.pr-helper-guide-summary {
|
|
2006
2006
|
font-size: 14px;
|
|
@@ -2048,9 +2048,9 @@
|
|
|
2048
2048
|
margin: 0 -8px;
|
|
2049
2049
|
}
|
|
2050
2050
|
|
|
2051
|
-
/*
|
|
2052
|
-
|
|
2053
|
-
.pr-helper-guide-file:hover .pr-helper-path-name {
|
|
2051
|
+
/* Dim only the filename on hover: dimming the directory and focus prose too would make the whole
|
|
2052
|
+
three-line row look like one long link. */
|
|
2053
|
+
.pr-helper-guide-file:hover .pr-helper-path-name { opacity: 0.8; }
|
|
2054
2054
|
|
|
2055
2055
|
.pr-helper-guide-file-focus {
|
|
2056
2056
|
font-size: 12px;
|
|
@@ -2497,7 +2497,7 @@
|
|
|
2497
2497
|
text-decoration: none;
|
|
2498
2498
|
}
|
|
2499
2499
|
|
|
2500
|
-
.pr-helper-markdown a:hover {
|
|
2500
|
+
.pr-helper-markdown a:hover { opacity: 0.8; }
|
|
2501
2501
|
|
|
2502
2502
|
/* GitHub's HTML in a description (github_html.ts). A table scrolls on its own, as on GitHub, so a
|
|
2503
2503
|
bot's wide walkthrough never pushes the sidebar sideways. */
|
|
@@ -2541,7 +2541,7 @@
|
|
|
2541
2541
|
padding: 2px 0 6px;
|
|
2542
2542
|
cursor: pointer;
|
|
2543
2543
|
}
|
|
2544
|
-
.prb-md-mermaid-toggle:hover {
|
|
2544
|
+
.prb-md-mermaid-toggle:hover { opacity: 0.8; }
|
|
2545
2545
|
.prb-md-mermaid-error {
|
|
2546
2546
|
margin: 0 0 6px;
|
|
2547
2547
|
font-size: 12px;
|
|
@@ -3782,7 +3782,7 @@
|
|
|
3782
3782
|
white-space: nowrap;
|
|
3783
3783
|
}
|
|
3784
3784
|
|
|
3785
|
-
.pr-helper-nav-overlay-close:hover { color: #1f2328;
|
|
3785
|
+
.pr-helper-nav-overlay-close:hover { color: #1f2328; }
|
|
3786
3786
|
|
|
3787
3787
|
.pr-helper-nav-overlay-progress {
|
|
3788
3788
|
margin-top: 2px;
|
|
@@ -4374,7 +4374,7 @@
|
|
|
4374
4374
|
cursor: pointer;
|
|
4375
4375
|
}
|
|
4376
4376
|
|
|
4377
|
-
.pr-helper-save-bar-label-done:hover {
|
|
4377
|
+
.pr-helper-save-bar-label-done:hover { opacity: 0.8; }
|
|
4378
4378
|
|
|
4379
4379
|
/* ── Selected-text → Assistant ──
|
|
4380
4380
|
Mounted on document.body, not inside the sidebar: the sidebar is a scrolling, clipped
|
|
@@ -5521,7 +5521,7 @@
|
|
|
5521
5521
|
color: #6b21a8;
|
|
5522
5522
|
cursor: pointer;
|
|
5523
5523
|
}
|
|
5524
|
-
.pr-helper-reassessment-more:hover {
|
|
5524
|
+
.pr-helper-reassessment-more:hover { opacity: 0.8; }
|
|
5525
5525
|
.pr-helper-reassessment-accept:focus-visible,
|
|
5526
5526
|
.pr-helper-reassessment-keep:focus-visible,
|
|
5527
5527
|
.pr-helper-reassessment-more:focus-visible { outline: 2px solid #9333ea; outline-offset: 2px; }
|
|
@@ -5574,7 +5574,6 @@
|
|
|
5574
5574
|
font-size: 10px;
|
|
5575
5575
|
color: var(--color-accent-fg, #0969da);
|
|
5576
5576
|
cursor: pointer;
|
|
5577
|
-
text-decoration: underline;
|
|
5578
5577
|
}
|
|
5579
5578
|
|
|
5580
5579
|
/* History row. Same geometry as .pr-helper-history-delta, and for the same reason it carries no
|
|
@@ -5671,7 +5670,6 @@
|
|
|
5671
5670
|
font-size: 11px;
|
|
5672
5671
|
color: var(--color-accent-fg, #0969da);
|
|
5673
5672
|
cursor: pointer;
|
|
5674
|
-
text-decoration: underline;
|
|
5675
5673
|
}
|
|
5676
5674
|
|
|
5677
5675
|
/*
|
|
@@ -5929,7 +5927,7 @@
|
|
|
5929
5927
|
.pr-helper-extension .prb-selection-count { margin: 0; font-size: 12px; font-weight: 600; color: #1f2328; }
|
|
5930
5928
|
.pr-helper-extension .prb-selection-goto { padding: 0; border: 0; background: none; color: #7e22ce; font: inherit; font-weight: 400; cursor: pointer; }
|
|
5931
5929
|
.pr-helper-extension .prb-selection-goto[hidden] { display: none; }
|
|
5932
|
-
.pr-helper-extension .prb-selection-goto:hover [data-feedback-goto-label] {
|
|
5930
|
+
.pr-helper-extension .prb-selection-goto:hover [data-feedback-goto-label] { opacity: 0.8; }
|
|
5933
5931
|
.pr-helper-extension .prb-selection-sep { color: #8c959f; white-space: pre; }
|
|
5934
5932
|
.pr-helper-extension .prb-selection-spacer { flex: 1; }
|
|
5935
5933
|
.pr-helper-extension .prb-selection-button {
|