prreviewbuddy 0.19.1 → 0.25.6
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 +287 -0
- package/dist/main.js +492 -160
- package/dist/{relative_time-BdTOYOad.js → relative_time-DJ9iHDDG.js} +2161 -488
- package/dist/server.js +1926 -385
- package/package.json +1 -1
- package/static/reviews.js +1 -1
- package/static/settings.js +1 -0
- package/static/shell.css +936 -17
- package/static/sidebar.css +65 -7
- package/static/workspace.js +33 -25
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,292 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.25.6
|
|
4
|
+
|
|
5
|
+
**A review you open while it is still running now looks like one that is running.** Following the
|
|
6
|
+
link the moment it is printed used to show the finished layout with most of it missing: a two line
|
|
7
|
+
status strip, the KISS card, a screen of white below it, and an empty column down the right where
|
|
8
|
+
the assistant would go. It read as a page that had failed to draw rather than as a review being
|
|
9
|
+
made.
|
|
10
|
+
|
|
11
|
+
There is now a **Review in progress** page, and it is what a running review opens on. It lists the
|
|
12
|
+
steps of the run, ticks them off as they finish, and marks the one going with the note the agent is
|
|
13
|
+
writing as it works:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
✓ Prepared isolated checkout
|
|
17
|
+
✓ Read what changed
|
|
18
|
+
✓ Read pull request conversation
|
|
19
|
+
● Analysing the change
|
|
20
|
+
Reading packages/alerts/src/ede/adapter.ts
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Those are the same step names the terminal prints while you wait, so switching between the two
|
|
24
|
+
shows one operation rather than two descriptions of it. The elapsed time counts in seconds while it
|
|
25
|
+
is under a minute, because a number that does not move is no evidence that anything is happening.
|
|
26
|
+
|
|
27
|
+
**The changed files open before the review is finished.** They are known minutes before anything
|
|
28
|
+
has been concluded about them, so once the change has been read the page offers them, and the Files
|
|
29
|
+
tab works exactly as it does on a finished review. You can start reading the code while the model
|
|
30
|
+
is still thinking about it. The findings, questions and assistant stay behind until they exist,
|
|
31
|
+
since an empty Issues tab cannot be told apart from a review that found nothing.
|
|
32
|
+
|
|
33
|
+
Going into Files while it runs keeps you there. The page refreshes itself only when it has
|
|
34
|
+
something new to show you, not on every step.
|
|
35
|
+
|
|
36
|
+
**A run that stopped says which step it stopped on.** The message and **Retry** used to sit in the
|
|
37
|
+
strip, which had room to say a review had paused but not where. The failure now sits under the same
|
|
38
|
+
checklist, with the step that broke marked and the ones after it left unclaimed, so what failed is
|
|
39
|
+
a thing you read rather than a thing you infer.
|
|
40
|
+
|
|
41
|
+
**KISS is no longer where you land by accident.** A change whose standard review had not finished
|
|
42
|
+
opened on the KISS run form, because it was the only page with anything on it. It is a peer review
|
|
43
|
+
type, not the fallback for whichever review is busy, and it is still one click away in the sidebar.
|
|
44
|
+
|
|
45
|
+
**Locations under a KISS recommendation fit the page.** A repository path is one long unbreakable
|
|
46
|
+
word, and the buttons holding them grew wider than the document, cutting off the end of the path,
|
|
47
|
+
which is the half naming the file. They now wrap the way the standard review's file rows always
|
|
48
|
+
have: a quiet directory line above a filename that wraps.
|
|
49
|
+
|
|
50
|
+
The **Main** badge on those rows is gone. It was our word for a flag in the data, worn as a label,
|
|
51
|
+
so it read as a fact about the file and left you to work out what it was for. The rows now sit
|
|
52
|
+
under **Start here** and **Also relevant**, which say what to do instead of what we call it. Both
|
|
53
|
+
headings are dropped where a recommendation cites a single file.
|
|
54
|
+
|
|
55
|
+
**"Show more of this file" shows more of the file.** Under a finding at line 804 it used to jump to
|
|
56
|
+
the top of the file and then do nothing at all when pressed again, because it meant "the first 600
|
|
57
|
+
lines" rather than "more". Each press now widens the window around the line you arrived at, and the
|
|
58
|
+
button is only there while there is more to show.
|
|
59
|
+
|
|
60
|
+
**Your own saved prompts no longer look unavailable.** In the selection menu they appeared greyed
|
|
61
|
+
out, under a dividing rule, from the first one you saved. A rule written when "Ask a question" was
|
|
62
|
+
the last item in the menu was landing on the last saved prompt instead. They now sit under a **Your
|
|
63
|
+
prompts** heading, in the same words the assistant panel uses for the same set, and read as the
|
|
64
|
+
most available thing in the menu rather than the least.
|
|
65
|
+
|
|
66
|
+
## 0.25.0
|
|
67
|
+
|
|
68
|
+
**PR Review Buddy no longer guesses which `main` you meant.** A repository usually holds two
|
|
69
|
+
branches by that name, your own and `origin/main`, and they are the same commit until somebody
|
|
70
|
+
commits without pushing or pushes from somewhere else. Whichever of the two is stale is still an
|
|
71
|
+
ancestor of your branch, so the comparison succeeds and the review is quietly of the wrong thing:
|
|
72
|
+
one report was a 107 file review of a 23 file change.
|
|
73
|
+
|
|
74
|
+
When the two are different commits, the review now stops before it starts and says so, showing both
|
|
75
|
+
commits, how far apart they are, and the two commands that pick one:
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
prreviewbuddy review --base refs/heads/main
|
|
79
|
+
prreviewbuddy review --base origin/main
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
It stops for `--base main` and for a plain `prreviewbuddy review` alike, since the default base is
|
|
83
|
+
worked out the same way. A base you have already been specific about is never questioned:
|
|
84
|
+
`origin/main`, `refs/heads/main` and `refs/remotes/origin/main` each mean exactly what they say, and
|
|
85
|
+
a commit, a tag or `HEAD~3` is passed to git as it always was.
|
|
86
|
+
|
|
87
|
+
There is deliberately no rule picking the newer one, or the local one, or the one with fewer files.
|
|
88
|
+
Any of those is still a guess, and a review of the wrong base is worse than being asked which base
|
|
89
|
+
you meant.
|
|
90
|
+
|
|
91
|
+
**A file the review read is no longer reported as one it invented.** The review runs inside a real
|
|
92
|
+
checkout, so it reads beyond the diff: the caller of a changed function, the interface a changed
|
|
93
|
+
class implements. Naming one of those used to produce an amber correction box saying the path could
|
|
94
|
+
not be found and had been removed, and the finding that rested on it lost its location.
|
|
95
|
+
|
|
96
|
+
Those files are now kept. They appear under **Referenced files** at the foot of the Files tab, with
|
|
97
|
+
the sections that brought them in, and they open in the code viewer like anything else. They are
|
|
98
|
+
deliberately not mixed into the changed-file groups and are not counted as files in this change,
|
|
99
|
+
because the pull request did not touch them.
|
|
100
|
+
|
|
101
|
+
A finding that rests on one now reads **Related file: path · not changed** rather than showing no
|
|
102
|
+
location at all.
|
|
103
|
+
|
|
104
|
+
The correction box now only reports a path that is in neither the change nor the reviewed version
|
|
105
|
+
of the repository, and says the removal and the finding it cost in one sentence rather than two
|
|
106
|
+
bullets that read as two problems.
|
|
107
|
+
|
|
108
|
+
**A KISS review keeps the files it read, too.** The same fix as above, for the other review type.
|
|
109
|
+
A recommendation about complexity that lives partly outside the diff, in the interface a new class
|
|
110
|
+
implements or the caller that already did this, used to lose every location it had and be shown as
|
|
111
|
+
having nowhere to look. Those locations are kept now, marked **not changed** on the row so they
|
|
112
|
+
cannot be read as part of the pull request, and they open like any other.
|
|
113
|
+
|
|
114
|
+
The KISS correction box now reports only a path that is in neither the change nor the reviewed
|
|
115
|
+
version of the repository.
|
|
116
|
+
|
|
117
|
+
**A review id no longer has to be typed in full.** `--review a8a9a058` finds the review that id
|
|
118
|
+
starts, in `open`, in `--update` and in `--delete`. A shorthand that matches two reviews is refused
|
|
119
|
+
with both ids and what each is of, rather than one of them being picked for you.
|
|
120
|
+
|
|
121
|
+
**Analysis details moved to the top of the review.** It now sits opposite the pane's title, on
|
|
122
|
+
**Review overview** and on **KISS review**, as a small **Analysis details** button that opens a
|
|
123
|
+
panel under itself rather than a strip across the page. Nothing moves when you open it, and it
|
|
124
|
+
shuts on Escape or a click elsewhere.
|
|
125
|
+
|
|
126
|
+
It describes the whole analysis: which commit, which model, how much of the change it saw. Those
|
|
127
|
+
are the things you want before deciding how much to trust the verdict, and they were at the bottom
|
|
128
|
+
of the page, after it.
|
|
129
|
+
|
|
130
|
+
A KISS review now names its audience the way you chose it. **Reviewing my code** and **Reviewing
|
|
131
|
+
someone else's code**, in the words on the buttons that start a run, rather than "Written for the
|
|
132
|
+
author of this change", which asked you to work out whether you were that author.
|
|
133
|
+
|
|
134
|
+
## 0.24.0
|
|
135
|
+
|
|
136
|
+
**A failed review now shows what the agent actually said.** When a run fails because the reply
|
|
137
|
+
could not be used, the reply is kept with the run and folded away under **What the agent replied**
|
|
138
|
+
on the failure panel, for both standard and KISS reviews.
|
|
139
|
+
|
|
140
|
+
"Could not be parsed as JSON" is the same sentence whether the model ignored the schema or wrote a
|
|
141
|
+
paragraph in front of a perfectly good answer, and until now the reply that would settle it was
|
|
142
|
+
discarded. It is kept whole, deleted with the review like everything else, and never sent anywhere.
|
|
143
|
+
|
|
144
|
+
## 0.23.1
|
|
145
|
+
|
|
146
|
+
**A review is no longer lost to a sentence in front of it.** If the agent answered with a paragraph
|
|
147
|
+
before its JSON and no code fence around it, the whole review was discarded as unparseable. This
|
|
148
|
+
happens when your own Claude Code configuration asks for a particular style of reply, which the
|
|
149
|
+
review has no way to switch off. The answer is now cut out of whatever surrounds it, for both
|
|
150
|
+
standard and KISS reviews.
|
|
151
|
+
|
|
152
|
+
## 0.23.0
|
|
153
|
+
|
|
154
|
+
**Act on several reviews at once.** The reviews list has a **Select** button beside its count.
|
|
155
|
+
Pressing it puts a checkbox on every row, and ticking rows brings up a bar with three things to do
|
|
156
|
+
with them: **Mark reviewed**, **Mark in progress**, and **Delete**.
|
|
157
|
+
|
|
158
|
+
A selection survives searching, filtering and turning the page, so you can gather rows from
|
|
159
|
+
anywhere in the list. When some of what you have ticked is not on screen, the bar says so
|
|
160
|
+
("5 selected · 2 not shown") before you act on it.
|
|
161
|
+
|
|
162
|
+
Deleting takes the whole branch: a row is a branch and holds every review of it, so the question
|
|
163
|
+
names both counts before anything goes. A branch that is being analysed right now is refused by
|
|
164
|
+
name, and everything else in the selection is still deleted.
|
|
165
|
+
|
|
166
|
+
The button inside a review now reads **Mark reviewed** rather than "Mark review complete", so the
|
|
167
|
+
list and the review say the same thing about the same act.
|
|
168
|
+
|
|
169
|
+
## 0.22.1
|
|
170
|
+
|
|
171
|
+
**A way out of Settings.** The settings page had one link back to the reviews list, sitting in the
|
|
172
|
+
top right among the version number and the feedback link, where it read as page furniture rather
|
|
173
|
+
than as navigation. It is now a proper control at the top left of the page, above the first setting.
|
|
174
|
+
|
|
175
|
+
When you reached Settings from the rail of a review, it takes you back to that review rather than to
|
|
176
|
+
the list.
|
|
177
|
+
|
|
178
|
+
## 0.22.0
|
|
179
|
+
|
|
180
|
+
*The reviews page is a list you can work through, not a wall of tiles.*
|
|
181
|
+
|
|
182
|
+
**One column.** Every review was a card in a two-up grid, which meant each one had about 420px to
|
|
183
|
+
hold a title, a summary, a repository, a branch, an author, a risk, a size, what was outstanding and
|
|
184
|
+
how long ago you were last there. The title ellipsed, the branch ellipsed, and the measurements
|
|
185
|
+
stacked four rows deep, while the page kept empty space down both sides. The same content is now one
|
|
186
|
+
row per branch: the summary has room to be read, everything measured sits on a single line, and the
|
|
187
|
+
ages line up down the right edge so a screenful can be scanned rather than read.
|
|
188
|
+
|
|
189
|
+
**Pages.** Fifteen reviews at a time, with ordinary numbered pagination. These are saved pieces of
|
|
190
|
+
work rather than a feed, and a page you can return to is worth more here than a scroll position you
|
|
191
|
+
cannot. Searching and filtering still cover everything stored, not just the page in front of you.
|
|
192
|
+
|
|
193
|
+
**Where you were is in the address.** Search text, the filter and the page are all in the URL, so
|
|
194
|
+
refreshing keeps them, Back out of a review returns to the page you opened it from, and a link to a
|
|
195
|
+
search is a link to that search.
|
|
196
|
+
|
|
197
|
+
**Pull request numbers.** A review of a pull request shows its number, and you can find it by typing
|
|
198
|
+
either `#412` or `412`.
|
|
199
|
+
|
|
200
|
+
## 0.21.0
|
|
201
|
+
|
|
202
|
+
*Your workspace has an address now, and a place to change it.*
|
|
203
|
+
|
|
204
|
+
**PR Review Buddy lives at http://localhost:7726.** It used to take whatever port the machine had
|
|
205
|
+
spare, which was free by construction and useless by consequence: every link into a review died the
|
|
206
|
+
next time the server started. So a review was something you had to go and find again rather than
|
|
207
|
+
something you could keep a link to. The port is fixed, review addresses do not move, and a link to a
|
|
208
|
+
review is worth bookmarking.
|
|
209
|
+
|
|
210
|
+
7726 is P-R-B on a telephone keypad. It is not 4173, which is what `vite preview` takes, and
|
|
211
|
+
choosing a port a developer's own tools already want would have made the collision the common case
|
|
212
|
+
rather than the rare one.
|
|
213
|
+
|
|
214
|
+
**Nothing moves quietly.** If something else is already on that port, PR Review Buddy says so and
|
|
215
|
+
names both ways out. It does not try 7727. An address that shifts whenever it is inconvenienced is
|
|
216
|
+
not an address, and finding an available port would have cost the one property this is for.
|
|
217
|
+
|
|
218
|
+
**Settings, in the workspace.** A page at the level of the product rather than a tab inside a
|
|
219
|
+
review, holding the workspace port, the coding agent used when a review does not name one, and
|
|
220
|
+
whether anonymous usage counts are sent. All three already existed and were already settable from
|
|
221
|
+
the command line; what was missing was anywhere to see them.
|
|
222
|
+
|
|
223
|
+
They are three interfaces over one file, not three stores. `prreviewbuddy config set port 7726`, the
|
|
224
|
+
field on the settings page, and editing `~/.prreviewbuddy/config.json` by hand all write the same
|
|
225
|
+
key, and `prreviewbuddy config path` prints where that file is.
|
|
226
|
+
|
|
227
|
+
**A change of port says when it takes effect.** A workspace that is already running keeps the port
|
|
228
|
+
it started on, so the page tells you both: the one you are reading this on, and the one the next
|
|
229
|
+
start will use. Claiming the change had already happened would be sending you to an address nothing
|
|
230
|
+
is answering at.
|
|
231
|
+
|
|
232
|
+
**A port it cannot use is an error, not a shrug.** A hand-edited `70000` used to be the kind of
|
|
233
|
+
thing a program quietly ignores in favour of its default, which makes a configuration file look like
|
|
234
|
+
it is not being read. It now names the file, the value and the range. A missing setting still means
|
|
235
|
+
the default, because not saying anything is different from saying something impossible.
|
|
236
|
+
|
|
237
|
+
**Saved links survive a restart.** The credential that opens your list of reviews used to be minted
|
|
238
|
+
fresh on every start, so a browser that had been authorised yesterday was not authorised today. It
|
|
239
|
+
is generated once and kept, which means the browser you already use keeps working across restarts.
|
|
240
|
+
A review link was always the stronger case and still is: it carries its own credential, so it opens
|
|
241
|
+
anywhere.
|
|
242
|
+
|
|
243
|
+
That retires `~/.prreviewbuddy/reviews.html`, the page that existed only to be an address that did
|
|
244
|
+
not move, rewritten on every start and stop because nothing else stayed still. There is a real one
|
|
245
|
+
now.
|
|
246
|
+
|
|
247
|
+
## 0.20.0
|
|
248
|
+
|
|
249
|
+
*A second question you can ask of the same change: is all this machinery necessary?*
|
|
250
|
+
|
|
251
|
+
**A review lens.** `prreviewbuddy review --lens kiss` runs a review that asks something the standard
|
|
252
|
+
one only ever answers by accident: not whether the change is correct, but whether the complexity it
|
|
253
|
+
introduces is justified, or whether the same requirements could be met with materially less
|
|
254
|
+
machinery. It runs against everything the ordinary command reviews, a branch, another branch, or a
|
|
255
|
+
pull request, and it needs no standard review to have been made first.
|
|
256
|
+
|
|
257
|
+
It is a review of its own rather than a mode of the standard one. Its own prompt, its own run, its
|
|
258
|
+
own result, its own staleness, and its own section in the left rail sitting beside `Review` rather
|
|
259
|
+
than under it. Run both and you get two readings of one change in one workspace, at one link, on
|
|
260
|
+
one card in your list of reviews.
|
|
261
|
+
|
|
262
|
+
**Every run says who it is for, and is never guessed.** `--audience author` writes to the person
|
|
263
|
+
who wrote the code, before they ask anyone to look: direct, specific, what to collapse or remove or
|
|
264
|
+
defer, with enough of the trade-off that nothing load-bearing gets flattened. `--audience reviewer`
|
|
265
|
+
writes for somebody reading another person's work, and adds the question a reviewer actually has,
|
|
266
|
+
which is not whether an observation is true but whether it is worth spending a comment on. Where
|
|
267
|
+
one is, it drafts the comment, and the draft can be copied as the Markdown it was written as.
|
|
268
|
+
|
|
269
|
+
Nothing infers this from what you are reviewing, because there is nothing to infer it from: a
|
|
270
|
+
reviewer checks out somebody else's branch and an author reviews their own pull request. In a
|
|
271
|
+
terminal it asks. Anywhere else, leaving it out is a refusal that names both values rather than a
|
|
272
|
+
default that writes comments about somebody else's work to its author.
|
|
273
|
+
|
|
274
|
+
**A run that finds nothing is an answer.** "No material simplifications were identified" is a
|
|
275
|
+
result the page states plainly, not an empty list. The rubric asks just as hard for complexity that
|
|
276
|
+
is doing a job, and says so: transaction boundaries, permission checks, an adapter at a real
|
|
277
|
+
external seam. A review that could only ever come back with something to change would be worth
|
|
278
|
+
nothing when it came back with something to change.
|
|
279
|
+
|
|
280
|
+
**Every recommendation points at the code it is about.** The files and lines are on the
|
|
281
|
+
recommendation itself, and open the diff where you are reading, so there is no separate index to
|
|
282
|
+
consult for a list that fits on one screen. A path the analysis named that is not in the change is
|
|
283
|
+
withdrawn and disclosed rather than quietly rendered as a link to nothing.
|
|
284
|
+
|
|
285
|
+
**Running it again keeps the answer it gave before.** Each run is kept whole, with the commit it was
|
|
286
|
+
made from, the audience it was written for and the version of the prompt that produced it. New
|
|
287
|
+
commits mark a run stale on its own terms, so bringing one up to date says nothing about the other,
|
|
288
|
+
and dismissing that notice on one leaves the other's alone.
|
|
289
|
+
|
|
3
290
|
## 0.19.1
|
|
4
291
|
|
|
5
292
|
*An answer worth keeping can now be taken out whole.*
|