prreviewbuddy 0.86.7 → 0.88.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/CHANGELOG.md +80 -0
- package/dist/{delete_review-CwKZQlMg.js → delete_review-CeiSTV7u.js} +22 -15
- package/dist/main.js +1 -1
- package/dist/server.js +438 -160
- package/package.json +1 -1
- package/static/{chunk-Di41wu5k.js → chunk-Ahis0VaG.js} +1 -1
- package/static/chunk-CIJm20ER.js +1 -0
- package/static/{chunk-BUD1RoN4.js → chunk-DMxtqzNj.js} +1 -1
- package/static/chunk-DRtin0n-.js +1 -0
- package/static/help.js +1 -1
- package/static/notifications.js +1 -1
- package/static/reviews.js +1 -1
- package/static/runs.js +1 -1
- package/static/settings.js +1 -1
- package/static/shell.css +294 -132
- package/static/workspace.js +85 -85
- package/static/chunk-D9x9bcKf.js +0 -1
- package/static/chunk-huqt-B16.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,85 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.88.1
|
|
4
|
+
|
|
5
|
+
**One change to a review at a time, from anywhere on the Reviews list.** While a change made from a
|
|
6
|
+
card's pills, its `…` menu or the selection bar is still being saved, that review's pills and its
|
|
7
|
+
menu's Mark, lifecycle and queue items are dimmed and do nothing. Before, a pill and the menu could
|
|
8
|
+
both send a change, and the card could end up showing the one that was not kept. A selection that
|
|
9
|
+
includes such a review says so and waits to be tried again.
|
|
10
|
+
|
|
11
|
+
**Pressing a pill no longer pulls focus back.** If you move to the search box or another card while
|
|
12
|
+
a pill's change is being saved, focus stays where you put it.
|
|
13
|
+
|
|
14
|
+
## 0.88.0
|
|
15
|
+
|
|
16
|
+
**Status and lifecycle are pills you can press.** On every Reviews card and in a review's header,
|
|
17
|
+
the status pill (Not reviewed or Reviewed) and the lifecycle pill (Active, Waiting or Done) now
|
|
18
|
+
change what they show. Press Not reviewed to mark the review reviewed, and Reviewed to take that
|
|
19
|
+
back. Press Active to mark it done, and Done to move it back to active. Waiting has more than one
|
|
20
|
+
way out, so its pill opens a short list: Move to active or Mark done. The pill keeps its words and
|
|
21
|
+
dims until the change is saved, and if it could not be saved, a notice says why. Every item in the
|
|
22
|
+
`…` menu is still there.
|
|
23
|
+
|
|
24
|
+
**Every review shows its lifecycle.** Active now has a pill of its own, so a card always says where
|
|
25
|
+
it stands next: blue for Active, amber for Waiting and slate for Done. "Changed while waiting" and
|
|
26
|
+
"Changed since done" stay beside the pills as their own badge, a little stronger than before, so a
|
|
27
|
+
parked review that moved is easy to find in a long list.
|
|
28
|
+
|
|
29
|
+
**What is left on a card is easier to scan.** All issues resolved and all questions answered show
|
|
30
|
+
as green badges, and open issues or unanswered questions as amber ones. "Nothing flagged" stays
|
|
31
|
+
plain text, because a review that raised nothing has nothing to resolve. "Branch updated" is now a
|
|
32
|
+
small purple badge.
|
|
33
|
+
|
|
34
|
+
## 0.87.2
|
|
35
|
+
|
|
36
|
+
**The compact sidebar shows what is left on Issues and Questions.** With the sidebar folded to its
|
|
37
|
+
icons, Issues and Questions now carry the same mark the expanded rows do, on the corner of the icon:
|
|
38
|
+
how many are still open, a green tick once every one has been dealt with, or 0 where the analysis
|
|
39
|
+
found none. Nothing is shown while the first analysis is still running.
|
|
40
|
+
|
|
41
|
+
**The compact sidebar has one way to see more: sliding out.** Resting the pointer on it, or tabbing
|
|
42
|
+
into it, slides it out to its full width as before, and it stays out while the pointer or the focus
|
|
43
|
+
is anywhere inside it. The small name labels that were meant to appear beside its icons could never
|
|
44
|
+
be seen, because the sidebar slid out first, and have been removed. Screen readers still hear every
|
|
45
|
+
row's name, New review's included.
|
|
46
|
+
|
|
47
|
+
## 0.87.1
|
|
48
|
+
|
|
49
|
+
**Every page's title sits in the same place.** Reviews, Runs, Activity, Settings and Help now share
|
|
50
|
+
one title row of the same height, with the page's name at the left edge and its actions, like Mark
|
|
51
|
+
all read, at the right. Search and filters on Reviews and Runs sit on a row of their own beneath it,
|
|
52
|
+
lined up with the list, so moving between pages changes only whether that row is there. In a very
|
|
53
|
+
narrow window Activity keeps Mark all read and lets the unread line go first.
|
|
54
|
+
|
|
55
|
+
**Settings no longer has an All reviews button.** Settings is reached from the sidebar like every
|
|
56
|
+
other page, so it no longer offers a way back as if it sat under Reviews.
|
|
57
|
+
|
|
58
|
+
## 0.87.0
|
|
59
|
+
|
|
60
|
+
**The sidebar keeps its places where they are.** New review, Reviews, Runs, Activity, Settings and
|
|
61
|
+
Help now sit at the top of the sidebar on every page, a review's included, so opening a review no
|
|
62
|
+
longer pushes them down. What belongs to the open review follows under a Current review heading:
|
|
63
|
+
Overview (Progress while the first analysis runs), the review path, Diagrams, Issues, Questions,
|
|
64
|
+
Files, PR context and KISS. In a short window that section scrolls by itself, and Send feedback
|
|
65
|
+
and Collapse sidebar stay at the bottom.
|
|
66
|
+
|
|
67
|
+
**The sidebar starts right under the top bar on every page.** A review's bar and its banners, and
|
|
68
|
+
the bar at the top of Reviews, Runs and the other pages, now sit beside the sidebar instead of above
|
|
69
|
+
it, so the sidebar's links are at exactly the same place on screen whichever page is open.
|
|
70
|
+
|
|
71
|
+
**Runs says how much is running.** A purple count beside Runs shows how many runs are in
|
|
72
|
+
progress, and the Runs icon at the top of the window shows it too, so it can still be seen with
|
|
73
|
+
the sidebar collapsed or hidden, or in a narrow window. It updates by itself as runs start and
|
|
74
|
+
finish, and queued work is not counted. Questions to Buddy AI, diagrams being drawn and
|
|
75
|
+
architecture maps being made now appear under In progress on the Runs page while they run. A map
|
|
76
|
+
being made says which part of the repository it covers and the step it is on, and opens the review
|
|
77
|
+
it was started from with that part selected.
|
|
78
|
+
|
|
79
|
+
**The collapsed sidebar keeps its bottom links in a short window.** Send feedback and Expand
|
|
80
|
+
sidebar stay on screen; review rows that do not fit are reached by sliding the sidebar out, where
|
|
81
|
+
they scroll.
|
|
82
|
+
|
|
3
83
|
## 0.86.7
|
|
4
84
|
|
|
5
85
|
**Nothing jumps as the compact sidebar slides out.** The compact sidebar keeps room for the Review
|
|
@@ -6097,22 +6097,25 @@ function parseLifecycle(raw) {
|
|
|
6097
6097
|
function lifecycleAction(lifecycle) {
|
|
6098
6098
|
return LIFECYCLES.find((entry) => entry.id === lifecycle).action;
|
|
6099
6099
|
}
|
|
6100
|
+
/** A lifecycle's name, which is what its pill says on the card and on the review page. */
|
|
6101
|
+
function lifecycleName(lifecycle) {
|
|
6102
|
+
return LIFECYCLES.find((entry) => entry.id === (lifecycle?.state ?? "active")).name;
|
|
6103
|
+
}
|
|
6100
6104
|
/**
|
|
6101
|
-
*
|
|
6102
|
-
*
|
|
6103
|
-
*
|
|
6105
|
+
* What pressing the lifecycle pill does. Active and Done each have one way out that the pill can
|
|
6106
|
+
* name, so the pill is that action. Waiting has two (back to Active, or Done) and a third once the
|
|
6107
|
+
* branch moved (settle it), so it opens a menu of the items `offersLifecycle` allows rather than
|
|
6108
|
+
* guessing one. Waiting is never collapsed into Active here: the menu is the same transitions the
|
|
6109
|
+
* `…` menu offers.
|
|
6104
6110
|
*/
|
|
6105
|
-
function
|
|
6106
|
-
if (
|
|
6107
|
-
|
|
6108
|
-
|
|
6109
|
-
|
|
6110
|
-
|
|
6111
|
-
|
|
6112
|
-
return {
|
|
6113
|
-
text: LIFECYCLES.find((entry) => entry.id === lifecycle.state).name,
|
|
6114
|
-
changed: false
|
|
6115
|
-
};
|
|
6111
|
+
function lifecyclePillAction(lifecycle) {
|
|
6112
|
+
if (lifecycle?.state === "waiting") return "menu";
|
|
6113
|
+
return lifecycle?.state === "done" ? "active" : "done";
|
|
6114
|
+
}
|
|
6115
|
+
/** The pill's accessible name: the state it shows, then what pressing it does. */
|
|
6116
|
+
function lifecyclePillLabel(lifecycle) {
|
|
6117
|
+
const action = lifecyclePillAction(lifecycle);
|
|
6118
|
+
return `${lifecycleName(lifecycle)}. ${action === "menu" ? "Choose what happens next" : lifecycleAction(action)}`;
|
|
6116
6119
|
}
|
|
6117
6120
|
var ACTIVITY_LABELS = {
|
|
6118
6121
|
created: "Created",
|
|
@@ -18396,6 +18399,10 @@ function endRun(run) {
|
|
|
18396
18399
|
const key = keyOf(run.workspaceId, run.kind);
|
|
18397
18400
|
if (runs.get(key) === run) runs.delete(key);
|
|
18398
18401
|
}
|
|
18402
|
+
/** Every run held now, whatever its state. The Runs page decides which of them are executing. */
|
|
18403
|
+
function heldRuns() {
|
|
18404
|
+
return [...runs.values()];
|
|
18405
|
+
}
|
|
18399
18406
|
/**
|
|
18400
18407
|
* Whether any question or drawing is still going here, or has answered and is being saved.
|
|
18401
18408
|
*
|
|
@@ -20453,4 +20460,4 @@ function lineageIds(id) {
|
|
|
20453
20460
|
return [.../* @__PURE__ */ new Set([id, ...lineage.map((review) => review.id)])];
|
|
20454
20461
|
}
|
|
20455
20462
|
//#endregion
|
|
20456
|
-
export {
|
|
20463
|
+
export { MAX_WORKSPACE_PORT as $, DetachedHeadError as $i, fillFileUrlTemplate as $n, collectionsStamp as $r, markAllRead as $t, relativeTime as A, assessmentLookup as Ai, CODE_COPY_CLASS as An, mutateWorkspace as Ar, checkArchitecture as At, readIndexToken as B, reassessIn as Bi, isWorktreeHeld as Bn, workspaceStamps as Br, REPOSITORY_SCOPE as Bt, RUN_KINDS as C, AgentCancelledError as Ca, explanationActionOf as Ci, chatConversationSection as Cn, kissDecisionRefusal as Cr, waitingHistory as Ct, heldRuns as D, ANALYSIS_ONLY as Di, GITHUB_MARKDOWN as Dn, lineagePosition as Dr, describeRuntimes as Dt, endRun as E, withExplanation as Ei, hasAuthorContent as En, lineageKey as Er, RUNTIME_WORDS as Et, runBatch as F, findingStatus as Fi, isBusy as Fn, reviewedCommit as Fr, storeArchitecture as Ft, reviewsUrl as G, asString$1 as Gi, describeSubject as Gn, lifecycleChip as Gr, branchOf as Gt, clearServerRecordOwnedBy as H, statusLookup as Hi, removeWorktree as Hn, activityAttributes as Hr, isArchitectureId as Ht, activateQueued as I, gradeScale as Ii, withReviewLock as In, reviewedRepositories as Ir, storedScopes as It, stopChild as J, describeAuthorship as Ji, checkReview as Jn, lifecyclePillAction as Jr, createArchitectureNotification as Jt, serverEntryExists as K, extractJsonText as Ki, findExistingReview as Kn, lifecycleItemLabel as Kr, subjectOf as Kt, compactQueue as L, isGradeFor as Li, MANAGED_ROOT as Ln, summarise as Lr, trackedFiles as Lt, extractPullRequestLinks as M, currentGradeIn as Mi, renderInlineText as Mn, presentedKissRunOf as Mr, partFiles as Mt, parsePullRequestLink as N, findingAssessment as Ni, modelHelpLines as Nn, previousKissResult as Nr, readArchitecture as Nt, reportRun as O, NO_STATUS as Oi, renderMarkdown as On, loadWorkspace as Or, formatDuration as Ot, unsupportedReason as P, findingIn as Pi, ReviewBeingDeletedError as Pn, recentWorkspaces as Pr, repositoryKey as Pt, DEFAULT_WORKSPACE_PORT as Q, originRemote as Qi, forgeResolver as Qn, sectionOf as Qr, listNotifications as Qt, queueForReview as R, isOffered as Ri, createWorktree as Rn, touchWorkspace as Rr, ownersOf as Rt, track as S, runnableAgents as Sa, recommendationsOf as Si, EXPLAIN_SIMPLY_PROMPT as Sn, indexReviewGroups as Sr, feedbackUrl as St, completeRun as T, isExplanationAction as Ti, authorPreview as Tn, latestKissRun as Tr, recordRuntimeBestEffort as Tt, ensureServer as U, wasReassessed as Ui, requestJobStop as Un, activityLabel as Ur, writeJsonAtomically as Ut, bootstrapUrl as V, sourcePhrase as Vi, readMarker as Vn, LIFECYCLES as Vr, ancestorsOf as Vt, readServerRecord as W, followUpFindingId as Wi, describeMovement as Wn, isLifecycle as Wr, announceJob as Wt, workspaceUrl as X, kissOutcome as Xi, reviewedShaOf as Xn, offersLifecycle as Xr, createPrUpdate as Xt, stopServer as Y, WITHHELD_REASON as Yi, followedBranch as Yn, lifecyclePillLabel as Yr, createPrState as Yt, writeServerRecord as Z, resolveTarget as Zi, fetchHead as Zn, parseLifecycle as Zr, eventName as Zt, runningJobs as _, agentFor as _a, questionsOutstanding as _i, storedConversation as _n, CLAIM_LEASE_MS as _r, recordTelemetryUploadConsent as _t, wasBlocked as a, git as aa, renameCollection as ai, readStateOf as an, isTerminal as ar, failureOf as at, startKissJob as b, isAgentId as ba, verdictClosure as bi, isUnchanged as bn, groupByLineage as br, BUILD_VERSION as bt, RefreshUnavailableError as c, resolveModel as ca, queueAdd as ci, toneOf as cn, saveJob as cr, settleReview as ct, mergeUpdateInto as d, readAgentPreference as da, queueStamp as di, withUsageRecorded as dn, isTerminalJobPhase as dr, startJob as dt, isCommitReview as ea, createCollection as ei, markRead as en, RUN_RECORD_RETENTION_MS as er, MIN_WORKSPACE_PORT as et, parkedUpdateRefusal as f, writeAgentPreference as fa, readQueue as fi, existingPaths as fn, phasesFor as fr, append as ft, liveUpdateFor as g, agentById as ga, issuesOutstanding as gi, saveRefresh as gn, isClaimed as gr, deliver as gt, UpdateAlreadyRunningError as h, AGENT_IDS as ha, isQuestionOutstanding as hi, prepareConversationWithin as hn, clearClaim as hr, stamp as ht, liveJobsFor as i, shorthandOf as ia, readCollections as ii, readNotification as in, fail as ir, writePortPreference as it, batchIdentity as j, closesFinding as ji, escapeHtml as jn, positionInLineage as jr, loadArchitecture as jt, stopRun as k, analysisRefOf as ki, CODE_BLOCK_CLASS as kn, matchingWorkspaceIds as kr, ARCHITECTURE_DIR as kt, cancelUpdate as l, agentIdOf as la, queueAddMany as li, unreadAround as ln, PHASES as lr, reanalyseReview as lt, askCheckout as m, STORE_ROOT as ma, isIssueOutstanding as mi, adoptLegacyBaseline as mn, purposeOf as mr, record as mt, deleteReview as n, AmbiguousRefError as na, deleteCollection as ni, moveIds as nn, attemptIdOf as nr, resolveWorkspacePort as nt, discardJob as o, refExists as oa, setMembership as oi, removeNotification as on, loadJob as or, observeReview as ot, updateReview as p, CONFIG_PATH as pa, doneVerb as pi, ASK_REREAD_CEILING_MS as pn, progressSteps as pr, readEvents as pt, spawnServer as q, objectWithAnyOf as qi, checkCodeFreshness as qn, lifecycleName as qr, categoryOf as qt, lineageIds as r, shortNameOf as ra, nameProblemText as ri, pruneNotifications as rn, endedAt as rr, statedWorkspacePort as rt, FETCH_TIMEOUT_MS as s, resolveAgent as sa, updateCollections as si, retireNotification as sn, pruneJobResidue as sr, prepareReview as st, deleteLineage as t, resolveBase as ta, createWithMembers as ti, markReadForReview as tn, allJobs as tr, parseWorkspacePort as tt, cancellableHere as u, clearAgentPreference as ua, queueRemove as ui, unreadCount as un, isLiveJob as ur, runJob as ut, kissAgentId as v, agentIdentityOf as va, resolvedByConversation as vi, unforeseenFailure as vn, decideKissRecommendation as vr, telemetryUploadConsent as vt, beginRun as w, AgentUnavailableError as wa, explanationOf as wi, UNESTABLISHED_MOTIVATION as wn, kissDecisionsOf as wr, mapRuntimes as wt, isDriving as x, parkedReason as xa, processDiscussion as xi, agentEnvOf as xn, indexKeptIds as xr, PACKAGE_NAME as xt, recordKissRun as y, detectAgents as ya, reviewerDispositions as yi, refreshPrContext as yn, followedRefName as yr, telemetryUploadEnabled as yt, settleQueue as z, promptGrade as zi, holdWorktree as zn, workspaceRevision as zr, QUOTE_LIMITS as zt };
|
package/dist/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as MAX_WORKSPACE_PORT, A as relativeTime, Ar as mutateWorkspace, B as readIndexToken, F as runBatch, G as reviewsUrl, Gn as describeSubject, Hn as removeWorktree, Ir as reviewedRepositories, Kn as findExistingReview, Ln as MANAGED_ROOT, Lr as summarise, Nn as modelHelpLines, Or as loadWorkspace, Pr as recentWorkspaces, Q as DEFAULT_WORKSPACE_PORT, Qn as forgeResolver, R as queueForReview, Sa as runnableAgents, U as ensureServer, V as bootstrapUrl, Vn as readMarker, Wn as describeMovement, X as workspaceUrl, Xi as kissOutcome, Y as stopServer, Yi as WITHHELD_REASON, Zi as resolveTarget, _ as runningJobs, _t as recordTelemetryUploadConsent, a as wasBlocked, aa as git, bt as BUILD_VERSION, ca as resolveModel, ct as settleReview, d as mergeUpdateInto, da as readAgentPreference, dt as startJob, et as MIN_WORKSPACE_PORT, f as parkedUpdateRefusal, fa as writeAgentPreference, ft as append, g as liveUpdateFor, ga as agentById, gt as deliver, h as UpdateAlreadyRunningError, ha as AGENT_IDS, hr as clearClaim, ht as stamp, i as liveJobsFor, it as writePortPreference, j as batchIdentity, jr as positionInLineage, kr as matchingWorkspaceIds, lr as PHASES, lt as reanalyseReview, ma as STORE_ROOT, mr as purposeOf, mt as record$1, n as deleteReview$1, or as loadJob, p as updateReview, pa as CONFIG_PATH, pr as progressSteps, rt as statedWorkspacePort, sa as resolveAgent, st as prepareReview, tr as allJobs, tt as parseWorkspacePort, vt as telemetryUploadConsent, xa as parkedReason, xt as PACKAGE_NAME, y as recordKissRun, ya as detectAgents, yr as followedRefName, yt as telemetryUploadEnabled } from "./delete_review-CeiSTV7u.js";
|
|
3
3
|
import { basename, dirname, join, resolve } from "node:path";
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
5
5
|
import { existsSync, mkdirSync, readdirSync, realpathSync, rmSync, statSync, writeFileSync } from "node:fs";
|