prreviewbuddy 0.90.0 → 0.92.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 +58 -0
- package/dist/main.js +14 -2
- package/dist/{mcp_tools-CSj5vcSE.js → mcp_tools-BKPpd9dN.js} +264 -25
- package/dist/server.js +298 -70
- package/package.json +1 -1
- package/static/shell.css +31 -10
- package/static/sidebar.css +198 -6
- package/static/workspace.js +58 -45
package/static/sidebar.css
CHANGED
|
@@ -1068,7 +1068,7 @@
|
|
|
1068
1068
|
.pr-helper-issue-card {
|
|
1069
1069
|
border: 1px solid var(--color-border-default, #d0d7de);
|
|
1070
1070
|
border-radius: 8px;
|
|
1071
|
-
padding:
|
|
1071
|
+
padding: 12px 14px;
|
|
1072
1072
|
margin-bottom: 12px;
|
|
1073
1073
|
/* Stated rather than inherited: the surface behind this is now the grey canvas. */
|
|
1074
1074
|
background: #ffffff;
|
|
@@ -1437,7 +1437,7 @@
|
|
|
1437
1437
|
.pr-helper-question-card {
|
|
1438
1438
|
border: 1px solid var(--color-border-default, #d0d7de);
|
|
1439
1439
|
border-radius: 8px;
|
|
1440
|
-
padding:
|
|
1440
|
+
padding: 12px 14px;
|
|
1441
1441
|
margin-bottom: 12px;
|
|
1442
1442
|
/* Stated rather than inherited: the surface behind this is now the grey canvas. */
|
|
1443
1443
|
background: #ffffff;
|
|
@@ -1447,6 +1447,9 @@
|
|
|
1447
1447
|
card would throw away the reviewer's own record that they resolved it. The check mark is the
|
|
1448
1448
|
whole "done" signal; nothing else about the card recedes. */
|
|
1449
1449
|
.pr-helper-question-card-answered { box-shadow: inset 3px 0 0 #1a7f37; }
|
|
1450
|
+
/* What an answer still needs is moot once the question is settled, and a tick moves the card here
|
|
1451
|
+
without a redraw, so the drawer is what decides it. */
|
|
1452
|
+
.pr-helper-closed-findings .pr-helper-question-needed { display: none; }
|
|
1450
1453
|
|
|
1451
1454
|
.pr-helper-question-card h5 {
|
|
1452
1455
|
font-size: 10px;
|
|
@@ -1521,8 +1524,7 @@
|
|
|
1521
1524
|
Deliberately lighter than the Guide's progress box (no bar, no "next up" line): the Guide is
|
|
1522
1525
|
a workflow you walk in order, so it earns a full dashboard, whereas this is a flat list where
|
|
1523
1526
|
the only useful fact is how many are still open. */
|
|
1524
|
-
.pr-helper-questions-progress
|
|
1525
|
-
.pr-helper-findings-progress {
|
|
1527
|
+
.pr-helper-questions-progress {
|
|
1526
1528
|
display: flex;
|
|
1527
1529
|
align-items: center;
|
|
1528
1530
|
gap: 8px;
|
|
@@ -1590,13 +1592,203 @@
|
|
|
1590
1592
|
.pr-helper-closed-findings-list .pr-helper-issue-card:hover,
|
|
1591
1593
|
.pr-helper-closed-findings-list .pr-helper-question-card:hover { opacity: 1; }
|
|
1592
1594
|
|
|
1595
|
+
/* ── Issues by kind ──
|
|
1596
|
+
The pane opens on what the change touches and how much needs attention, then one section per
|
|
1597
|
+
kind of decision. A section is a disclosure so a reader can fold away what they have dealt
|
|
1598
|
+
with; its heading keeps the Questions tab's group style so the two tabs read as one product. */
|
|
1599
|
+
.pr-helper-issues-orientation {
|
|
1600
|
+
margin-bottom: 16px;
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
.pr-helper-issues-orientation-text {
|
|
1604
|
+
font-size: 14px;
|
|
1605
|
+
color: var(--color-fg-default, #1f2328);
|
|
1606
|
+
line-height: 1.5;
|
|
1607
|
+
margin: 0 0 4px;
|
|
1608
|
+
overflow-wrap: anywhere;
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1611
|
+
.pr-helper-issues-attention {
|
|
1612
|
+
font-size: 13px;
|
|
1613
|
+
font-weight: 600;
|
|
1614
|
+
color: var(--color-fg-muted, #57606a);
|
|
1615
|
+
margin: 0;
|
|
1616
|
+
}
|
|
1617
|
+
|
|
1618
|
+
.pr-helper-issue-nav {
|
|
1619
|
+
display: flex;
|
|
1620
|
+
flex-wrap: wrap;
|
|
1621
|
+
gap: 6px;
|
|
1622
|
+
margin-top: 10px;
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1625
|
+
.pr-helper-issue-nav[hidden] { display: none; }
|
|
1626
|
+
|
|
1627
|
+
.pr-helper-issue-nav-item {
|
|
1628
|
+
display: inline-flex;
|
|
1629
|
+
align-items: center;
|
|
1630
|
+
gap: 6px;
|
|
1631
|
+
font: inherit;
|
|
1632
|
+
font-size: 12px;
|
|
1633
|
+
font-weight: 600;
|
|
1634
|
+
padding: 3px 10px;
|
|
1635
|
+
border: 1px solid var(--color-border-default, #d0d7de);
|
|
1636
|
+
border-radius: 100px;
|
|
1637
|
+
background: transparent;
|
|
1638
|
+
color: var(--color-fg-default, #1f2328);
|
|
1639
|
+
cursor: pointer;
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
.pr-helper-issue-nav-item:hover { border-color: #9333ea; }
|
|
1643
|
+
.pr-helper-issue-nav-item:focus-visible { outline: 2px solid #9333ea; outline-offset: 2px; }
|
|
1644
|
+
|
|
1645
|
+
.pr-helper-issue-nav-count {
|
|
1646
|
+
color: var(--color-fg-muted, #57606a);
|
|
1647
|
+
font-variant-numeric: tabular-nums;
|
|
1648
|
+
}
|
|
1649
|
+
|
|
1650
|
+
.pr-helper-issue-group { margin-bottom: 8px; }
|
|
1651
|
+
.pr-helper-issue-group[hidden] { display: none; }
|
|
1652
|
+
|
|
1653
|
+
.pr-helper-issue-group-summary {
|
|
1654
|
+
display: flex;
|
|
1655
|
+
align-items: center;
|
|
1656
|
+
gap: 6px;
|
|
1657
|
+
cursor: pointer;
|
|
1658
|
+
list-style: none;
|
|
1659
|
+
padding: 4px 0;
|
|
1660
|
+
margin-bottom: 6px;
|
|
1661
|
+
color: #9333ea;
|
|
1662
|
+
scroll-margin-top: 12px;
|
|
1663
|
+
}
|
|
1664
|
+
|
|
1665
|
+
.pr-helper-issue-group-summary::-webkit-details-marker { display: none; }
|
|
1666
|
+
|
|
1667
|
+
.pr-helper-issue-group-summary::before {
|
|
1668
|
+
content: '';
|
|
1669
|
+
width: 0;
|
|
1670
|
+
height: 0;
|
|
1671
|
+
border-left: 5px solid currentColor;
|
|
1672
|
+
border-top: 4px solid transparent;
|
|
1673
|
+
border-bottom: 4px solid transparent;
|
|
1674
|
+
transition: transform 0.15s ease;
|
|
1675
|
+
}
|
|
1676
|
+
|
|
1677
|
+
.pr-helper-issue-group[open] > .pr-helper-issue-group-summary::before { transform: rotate(90deg); }
|
|
1678
|
+
.pr-helper-issue-group-summary:focus-visible { outline: 2px solid #9333ea; outline-offset: 2px; border-radius: 2px; }
|
|
1679
|
+
|
|
1680
|
+
.pr-helper-issue-group-title {
|
|
1681
|
+
font-size: 11px;
|
|
1682
|
+
font-weight: 700;
|
|
1683
|
+
text-transform: uppercase;
|
|
1684
|
+
letter-spacing: 0.04em;
|
|
1685
|
+
margin: 0;
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1688
|
+
.pr-helper-issue-group-count {
|
|
1689
|
+
font-size: 11px;
|
|
1690
|
+
font-weight: 600;
|
|
1691
|
+
color: var(--color-fg-muted, #57606a);
|
|
1692
|
+
}
|
|
1693
|
+
|
|
1694
|
+
/* The consequence, read first. The title row is shared with every card; these sit under it. */
|
|
1695
|
+
.pr-helper-issue-card .pr-helper-issue-title { overflow-wrap: anywhere; }
|
|
1696
|
+
|
|
1697
|
+
.pr-helper-issue-impact { margin: 0 0 8px; }
|
|
1698
|
+
|
|
1699
|
+
.pr-helper-issue-scenario {
|
|
1700
|
+
font-size: 13px;
|
|
1701
|
+
line-height: 1.5;
|
|
1702
|
+
margin: 0 0 6px;
|
|
1703
|
+
text-align: left;
|
|
1704
|
+
overflow-wrap: anywhere;
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
.pr-helper-issue-next {
|
|
1708
|
+
font-size: 13px;
|
|
1709
|
+
line-height: 1.5;
|
|
1710
|
+
margin: 0;
|
|
1711
|
+
overflow-wrap: anywhere;
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
.pr-helper-issue-next-label { font-weight: 600; }
|
|
1715
|
+
|
|
1716
|
+
/* The technical account, one click away and never open on arrival. Same chevron as the closed
|
|
1717
|
+
drawer, smaller and muted, because it belongs to one card rather than to the pane. */
|
|
1718
|
+
.pr-helper-issue-technical { margin-top: 8px; }
|
|
1719
|
+
|
|
1720
|
+
/* A framed card's disclosure and actions share a row: closed, the summary sits left and the actions
|
|
1721
|
+
right; opened, the disclosure takes the row and the actions wrap below its body. */
|
|
1722
|
+
.pr-helper-card-footer {
|
|
1723
|
+
display: flex;
|
|
1724
|
+
flex-wrap: wrap;
|
|
1725
|
+
align-items: center;
|
|
1726
|
+
column-gap: 12px;
|
|
1727
|
+
row-gap: 8px;
|
|
1728
|
+
margin-top: 8px;
|
|
1729
|
+
}
|
|
1730
|
+
.pr-helper-card-footer > .pr-helper-issue-technical { flex: 1 1 auto; min-width: 0; margin-top: 0; }
|
|
1731
|
+
.pr-helper-card-footer > .pr-helper-issue-technical[open] { flex-basis: 100%; }
|
|
1732
|
+
.pr-helper-card-footer > .pr-helper-issue-actions,
|
|
1733
|
+
.pr-helper-card-footer > .pr-helper-question-actions { margin-top: 0; margin-left: auto; }
|
|
1734
|
+
|
|
1735
|
+
.pr-helper-issue-technical-summary {
|
|
1736
|
+
display: inline-flex;
|
|
1737
|
+
align-items: center;
|
|
1738
|
+
gap: 6px;
|
|
1739
|
+
cursor: pointer;
|
|
1740
|
+
list-style: none;
|
|
1741
|
+
font-size: 12px;
|
|
1742
|
+
font-weight: 600;
|
|
1743
|
+
color: var(--color-fg-muted, #57606a);
|
|
1744
|
+
padding: 2px 0;
|
|
1745
|
+
}
|
|
1746
|
+
|
|
1747
|
+
.pr-helper-issue-technical-summary::-webkit-details-marker { display: none; }
|
|
1748
|
+
|
|
1749
|
+
.pr-helper-issue-technical-summary::before {
|
|
1750
|
+
content: '';
|
|
1751
|
+
width: 0;
|
|
1752
|
+
height: 0;
|
|
1753
|
+
border-left: 5px solid currentColor;
|
|
1754
|
+
border-top: 4px solid transparent;
|
|
1755
|
+
border-bottom: 4px solid transparent;
|
|
1756
|
+
transition: transform 0.15s ease;
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
.pr-helper-issue-technical[open] > .pr-helper-issue-technical-summary::before { transform: rotate(90deg); }
|
|
1760
|
+
.pr-helper-issue-technical-summary:hover { color: var(--color-fg-default, #1f2328); }
|
|
1761
|
+
.pr-helper-issue-technical-summary:focus-visible { outline: 2px solid #9333ea; outline-offset: 2px; border-radius: 2px; }
|
|
1762
|
+
|
|
1763
|
+
.pr-helper-issue-technical-body {
|
|
1764
|
+
margin-top: 8px;
|
|
1765
|
+
padding-left: 11px;
|
|
1766
|
+
border-left: 2px solid var(--color-border-muted, #d8dee4);
|
|
1767
|
+
overflow-wrap: anywhere;
|
|
1768
|
+
}
|
|
1769
|
+
|
|
1770
|
+
.pr-helper-issue-technical-title {
|
|
1771
|
+
font-size: 13px;
|
|
1772
|
+
font-weight: 600;
|
|
1773
|
+
margin: 0 0 4px;
|
|
1774
|
+
}
|
|
1775
|
+
|
|
1776
|
+
.pr-helper-issue-original { margin-bottom: 10px; }
|
|
1777
|
+
.pr-helper-issue-original h5 { margin: 0 0 4px; }
|
|
1778
|
+
|
|
1779
|
+
.pr-helper-issue-original-title {
|
|
1780
|
+
font-size: 13px;
|
|
1781
|
+
font-weight: 600;
|
|
1782
|
+
margin: 0 0 4px;
|
|
1783
|
+
}
|
|
1784
|
+
|
|
1593
1785
|
.pr-helper-question-actions {
|
|
1594
1786
|
display: flex;
|
|
1595
1787
|
align-items: center;
|
|
1596
1788
|
justify-content: space-between;
|
|
1597
1789
|
flex-wrap: wrap;
|
|
1598
1790
|
gap: 12px;
|
|
1599
|
-
margin-top:
|
|
1791
|
+
margin-top: 8px;
|
|
1600
1792
|
}
|
|
1601
1793
|
|
|
1602
1794
|
/* Deliberately not a filled button, matching .pr-helper-guide-start-cta: this is "here's the
|
|
@@ -4827,7 +5019,7 @@
|
|
|
4827
5019
|
align-items: center;
|
|
4828
5020
|
justify-content: flex-end;
|
|
4829
5021
|
gap: 12px;
|
|
4830
|
-
margin-top:
|
|
5022
|
+
margin-top: 8px;
|
|
4831
5023
|
}
|
|
4832
5024
|
|
|
4833
5025
|
/* margin-left:auto rather than relying on the row's space-between: the jump link beside it is
|