@d3lm/pr-stats 0.2.19 → 0.2.21

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,13 +25,13 @@ 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
- - **Queue** lists the open PRs awaiting your review with their wait time, and below them the open PRs you already reviewed. A fresh review request moves a PR back into the awaiting list.
28
+ - **Queue** lists the open PRs awaiting your review with their wait time, and below them the open PRs you already reviewed. A fresh review request moves a PR back into the awaiting list. The `s` key snoozes a PR you are not ready to review yet, which parks it in a snoozed list until a time you pick. See [Snoozing](#snoozing).
29
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` key switches 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.
33
33
 
34
- When the data spans multiple repos, every tab opens on a repo picker that drills into one repo or the aggregate. On the queue lists, `g` groups the aggregate by repo, and on stats tabs, `x` lifts the row cap on comparison cards.
34
+ When the data spans multiple repos, every tab opens on a repo picker that drills into one repo or the aggregate. On the queue lists, `g` groups the aggregate by repo, and on stats tabs, `x` lifts the row cap on comparison cards. The `o` key opens the options modal and `S` the settings dialog.
35
35
 
36
36
  ## Options
37
37
 
@@ -133,6 +133,20 @@ Two terminals accept the notification sequence without showing anything, and the
133
133
 
134
134
  On macOS the command path runs a small app bundle that ships inside the package, `dist/pr-stats.app`, so the banner carries the pr-stats name and icon and the app gets its own entry under System Settings › Notifications. The first send asks for permission the way any app does, and the helper waits for your answer, because macOS treats a prompt that goes unanswered until the requesting app quits as a refusal. Should notifications end up turned off, the footer says so, and the switch to turn them back on sits under System Settings › Notifications › pr-stats. The helper runs on macOS 13 and later on both Apple silicon and Intel Macs. A source checkout without the bundle falls back to `osascript`, whose notifications post under Script Editor and stay invisible since macOS 15 until Script Editor holds notification permission, which the Script Editor app grants after running the one-line script `display notification "test"` once.
135
135
 
136
+ ## Snoozing
137
+
138
+ A PR you commented on without leaving a review stays in the awaiting list, because GitHub still counts the review as requested. When you are waiting on the author, the `s` key snoozes the highlighted PR. A small dialog asks how long, starting from the default snooze duration, and takes a value in minutes, hours, days, or weeks like `30m`, `2h`, `1d`, or `1w`, up to four weeks. The PR then moves into a Snoozed list below the awaiting one, where its row shows the wake-up time instead of the wait, and the repo picker counts the snoozed PRs apart from the awaiting ones. Pressing `s` on a snoozed PR ends the snooze right away.
139
+
140
+ When the snooze ends and the PR still awaits your review, it moves back into the awaiting list, and a desktop notification says so while notifications are on. A PR that got reviewed, merged, or closed in the meantime ends its snooze quietly, and a review re-requested from you after the snooze voids it, so a re-request never hides behind a snooze. Snoozes persist in `snoozes.json` in the cache directory and survive a restart and a cache clear. A snooze that ended while the TUI was closed wakes up as soon as the TUI starts, so the restart reports it like the review requests that came in while it was closed.
141
+
142
+ The Default snooze row in the settings dialog sets the duration the dialog starts with, and the setting persists in `settings.json` in the cache directory.
143
+
144
+ ```json
145
+ {
146
+ "snoozeDuration": "30m"
147
+ }
148
+ ```
149
+
136
150
  ## Theming
137
151
 
138
152
  The TUI ships five built-in themes, the warm amber default plus green, blue, purple, and yellow variants. The Theme row in the settings dialog cycles through them, and the Edit colors row below it edits individual colors, which creates a custom theme that joins the cycle as a sixth entry. Everything persists in a `theme` object in `settings.json` in the cache directory, which you can also edit by hand.
@@ -19,9 +19,9 @@
19
19
  <key>CFBundlePackageType</key>
20
20
  <string>APPL</string>
21
21
  <key>CFBundleShortVersionString</key>
22
- <string>0.2.19</string>
22
+ <string>0.2.21</string>
23
23
  <key>CFBundleVersion</key>
24
- <string>0.2.19</string>
24
+ <string>0.2.21</string>
25
25
  <key>LSMinimumSystemVersion</key>
26
26
  <string>13.0</string>
27
27
  <key>LSUIElement</key>