@d3lm/pr-stats 0.2.22 → 0.2.23
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/README.md
CHANGED
|
@@ -25,8 +25,8 @@ pr-stats
|
|
|
25
25
|
|
|
26
26
|
Without flags, it covers PRs from the last 90 days across all repositories you can access.
|
|
27
27
|
|
|
28
|
-
- **Awaiting you** splits into three sub-tabs, which the `t` key cycles. Awaiting review lists the open PRs awaiting your review with their wait time, Reviewed lists the open PRs you already reviewed, and Mentions is an inbox of the PRs that @-mention you. A fresh review request moves a PR back into the awaiting list. The `s` key snoozes a PR or a mention you are not ready for yet, which parks it in a snoozed list until a time you pick, and `d` marks a mention read. See [Mentions](#mentions) and [Snoozing](#snoozing).
|
|
29
|
-
- **Your PRs** splits into your open PRs and a merged-and-closed report with merge-time, first-review, backlog, and outcome charts plus a reviewer leaderboard. The `t`
|
|
28
|
+
- **Awaiting you** splits into three sub-tabs, which the `t` key cycles forward and `T` (shift+t) cycles backward. Awaiting review lists the open PRs awaiting your review with their wait time, Reviewed lists the open PRs you already reviewed, and Mentions is an inbox of the PRs that @-mention you. A fresh review request moves a PR back into the awaiting list. The `s` key snoozes a PR or a mention you are not ready for yet, which parks it in a snoozed list until a time you pick, and `d` marks a mention read. See [Mentions](#mentions) and [Snoozing](#snoozing).
|
|
29
|
+
- **Your PRs** splits into your open PRs and a merged-and-closed report with merge-time, first-review, backlog, and outcome charts plus a reviewer leaderboard. The `t` and `T` keys switch the sub-tabs.
|
|
30
30
|
- **Reviews** counts the PRs you reviewed on request next to the review rounds they took, and charts your review times as a histogram, trend, heatmap, and weekly volume, plus review cycles, verdicts, an off-hours gauge, and the requests still waiting on you.
|
|
31
31
|
- **PR size** carries the same charts for PR sizes and adds a weekly net-lines trend.
|
|
32
32
|
- **Comments** holds a histogram of comments per PR, a scatter against PR size, and the most commented PRs.
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
<key>CFBundlePackageType</key>
|
|
20
20
|
<string>APPL</string>
|
|
21
21
|
<key>CFBundleShortVersionString</key>
|
|
22
|
-
<string>0.2.
|
|
22
|
+
<string>0.2.23</string>
|
|
23
23
|
<key>CFBundleVersion</key>
|
|
24
|
-
<string>0.2.
|
|
24
|
+
<string>0.2.23</string>
|
|
25
25
|
<key>LSMinimumSystemVersion</key>
|
|
26
26
|
<string>13.0</string>
|
|
27
27
|
<key>LSUIElement</key>
|
|
Binary file
|
package/dist/tui-app.mjs
CHANGED
|
@@ -757,9 +757,9 @@ var AUTHORED_SUB_TABS = [
|
|
|
757
757
|
{ key: "open", label: "Open" },
|
|
758
758
|
{ key: "merged", label: "Merged & closed" }
|
|
759
759
|
];
|
|
760
|
-
function
|
|
760
|
+
function cycledPendingSubTab(current2, delta) {
|
|
761
761
|
const index = PENDING_SUB_TABS.findIndex((entry) => entry.key === current2);
|
|
762
|
-
return PENDING_SUB_TABS[(index +
|
|
762
|
+
return PENDING_SUB_TABS[(index + PENDING_SUB_TABS.length + delta) % PENDING_SUB_TABS.length];
|
|
763
763
|
}
|
|
764
764
|
var initialBrowseState = {
|
|
765
765
|
tab: 0,
|
|
@@ -806,9 +806,9 @@ function browseReducer(state, action) {
|
|
|
806
806
|
case "tabCycled": {
|
|
807
807
|
return { ...state, tab: (state.tab + TABS.length + action.delta) % TABS.length };
|
|
808
808
|
}
|
|
809
|
-
case "
|
|
809
|
+
case "subTabCycled": {
|
|
810
810
|
if (state.tab === 0) {
|
|
811
|
-
return { ...state, pendingTab:
|
|
811
|
+
return { ...state, pendingTab: cycledPendingSubTab(state.pendingTab, action.delta).key };
|
|
812
812
|
}
|
|
813
813
|
if (state.tab === 1) {
|
|
814
814
|
return { ...state, authoredTab: state.authoredTab === "open" ? "merged" : "open" };
|
|
@@ -1677,7 +1677,7 @@ function queueViewsOf(key, views) {
|
|
|
1677
1677
|
}
|
|
1678
1678
|
function subTabHint(browse) {
|
|
1679
1679
|
if (browse.tab === 0) {
|
|
1680
|
-
return `t ${
|
|
1680
|
+
return `t ${cycledPendingSubTab(browse.pendingTab, 1).label.toLowerCase()} \xB7 `;
|
|
1681
1681
|
}
|
|
1682
1682
|
if (browse.tab === 1) {
|
|
1683
1683
|
return browse.authoredTab === "open" ? "t merged stats \xB7 " : "t open PRs \xB7 ";
|
|
@@ -3117,7 +3117,7 @@ function SubTabBar({
|
|
|
3117
3117
|
/* @__PURE__ */ jsx8("span", { fg: isActive ? theme.accent : theme.muted, bg, children: `${label} ` })
|
|
3118
3118
|
] }, key);
|
|
3119
3119
|
}),
|
|
3120
|
-
/* @__PURE__ */ jsx8("text", { wrapMode: "none", fg: theme.dim, children: "t switches" })
|
|
3120
|
+
/* @__PURE__ */ jsx8("text", { wrapMode: "none", fg: theme.dim, children: "t/T switches" })
|
|
3121
3121
|
] });
|
|
3122
3122
|
}
|
|
3123
3123
|
|
|
@@ -8109,7 +8109,7 @@ function handleAppKey(key, context) {
|
|
|
8109
8109
|
} else if (key.name === "right" || key.name === "tab") {
|
|
8110
8110
|
context.dispatchBrowse({ type: "tabCycled", delta: 1 });
|
|
8111
8111
|
} else if ((context.browse.tab === 0 || context.browse.tab === 1) && key.name === "t") {
|
|
8112
|
-
context.dispatchBrowse({ type: "
|
|
8112
|
+
context.dispatchBrowse({ type: "subTabCycled", delta: key.shift ? -1 : 1 });
|
|
8113
8113
|
} else {
|
|
8114
8114
|
const queue = activeQueueTab(context.browse);
|
|
8115
8115
|
if (queue === null) {
|