reviewstage 1.0.0 → 1.0.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reviewstage",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Stage your PR review. Post it as yourself. The desktop app — `npx reviewstage`.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://reviewstage.dev/",
@@ -1659,6 +1659,12 @@ EFFORT_ORDER = ["quick", "standard", "deep"]
1659
1659
  # Model the reviewer can pick at trigger time. "" = the account's default (no --model passed).
1660
1660
  # Keys are the aliases Claude Code's --model accepts; validated server-side so nothing arbitrary
1661
1661
  # ever reaches the CLI.
1662
+ def files_label(n):
1663
+ """"1 file", "12 files", "1,204 files"."""
1664
+ n = int(n)
1665
+ return f"{n:,} file" if n == 1 else f"{n:,} files"
1666
+
1667
+
1662
1668
  MODELS = [("", "Default", "your Claude plan's default"),
1663
1669
  ("opus", "Opus", "most capable \u00b7 deepest review"),
1664
1670
  ("sonnet", "Sonnet", "balanced \u00b7 faster"),
@@ -4493,7 +4499,7 @@ class Handler(BaseHTTPRequestHandler):
4493
4499
  "ghUrl": meta.get("url", f"https://github.com/{repo}/pull/{pr}"),
4494
4500
  "author": meta.get("author", ""),
4495
4501
  "size": (f"+{meta.get('additions', 0):,} −{meta.get('deletions', 0):,} · "
4496
- f"{meta['changedFiles']} files") if meta.get("changedFiles") else "",
4502
+ f"{files_label(meta['changedFiles'])}") if meta.get("changedFiles") else "",
4497
4503
  "dryRun": DRY_RUN,
4498
4504
  # The PR's own state on GitHub, from the metadata already fetched above. Without it
4499
4505
  # the detail page offered a live Approve button on a merged or closed PR and only
@@ -5249,7 +5255,7 @@ class Handler(BaseHTTPRequestHandler):
5249
5255
  if not e["active"]:
5250
5256
  when.append("no longer requested")
5251
5257
  size = (f"+{item.get('additions', 0):,} −{item.get('deletions', 0):,} · "
5252
- f"{item['changedFiles']} files") if item.get("changedFiles") else ""
5258
+ f"{files_label(item['changedFiles'])}") if item.get("changedFiles") else ""
5253
5259
  sev = [{"kind": k, "n": n, "label": SEV_LABEL.get(k, k)}
5254
5260
  for k, n in sorted(e["cs"].items(), key=lambda kv: SEV_ORDER.get(kv[0], 9))]
5255
5261
  archived = e["st"] == "archived"