Skip to content

v0.0.10

Choose a tag to compare

@kwanpham2195 kwanpham2195 released this 22 Sep 15:37
· 619 commits to main since this release
  • Preserved inline pending-review drafts after GitHub safely rejects them. The failed card now shows the complete message and offers Edit draft, which restores the body and valid anchor into the canonical composer; if Refresh invalidated the anchor, Patchdesk keeps the text until another diff line is selected. Outcome-unknown writes remain locked for reconciliation and cannot be retried from the card. #339

  • Fixed Insight runs reporting a missing or mismatched Review worktree as a provider-runtime failure. The failed Insight now explains that the Review's local files are unavailable and offers Re-prepare Review, which rebuilds the same represented revision through the durable refresh lifecycle before another run. Failed command traces also keep long commands on one truncated row while preserving their duration and full text on hover. #245 #261

  • Fixed Refresh GitHub state losing ownership when GitHub preparation exceeded the desktop request timeout. Refresh now persists its operation and prepared Review before adoption, keeps visible progress while it runs, resumes the same operation after a renderer reload, and reports an interrupted or failed operation without replacing the readable Review. #264

  • Fixed closing the Insight run dialog while Codex models were loading reporting the Codex runtime as unavailable. A cancelled load is now discarded by the dialog that owned it, and reopening can load models again while genuine runtime failures remain visible. #256

  • Fixed an Insight status poll scheduling another browser timer after its Review or renderer had already been disposed. Late poll responses now stop before touching the renderer timer, preventing intermittent window is not defined failures in the full test gate. #252

  • Fixed numeric-looking assignee and maintainer search text being inferred as GraphQL numbers. Free-text searches such as 2026 now remain strings while numeric pagination variables retain their existing types. #279

  • Clarified that a Context-unavailable GitHub read affects unchanged-context expansion, while the saved patch remains visible. #275

  • Prevented new watches for merged or closed pull requests. Their inspector no longer offers Watch, and a palette attempt reports the terminal state without saving it. #269

  • Kept readable watched pull requests updating when another watch is inaccessible, while retaining the inaccessible watch for a later poll. #268

  • Improved how long every exchange with GitHub takes. Patchdesk now talks to GitHub directly for every read and every write — checks, permissions, branch rules, conversation comments, the pull request itself, its diff, its reviews and review comments, its inline review threads, its merge readiness, its commits, its labels and reviewers, the people it can be assigned to, the branches you can move it onto, the Pull requests search, and every comment, thread, review, label, assignee, reviewer, draft change, base branch change, and merge you make — rather than through the GitHub CLI, which saves a process launch and a fresh connection on each one. The GitHub CLI is still what signs you in and what gives Git your credentials, and the account each call runs as is unchanged. #276

  • Changed the macOS bundle identifier to io.github.kwanpham2195.patchdesk. macOS treats the next version as a different app, so it asks for notification permission again and forgets the saved window position. Reviews, workspaces, settings, and GitHub sign-in are kept, because they live in Patchdesk's own data folder.

  • Added marks for what changed since you last looked at a pull request. Leaving a Review records where you were; when you open it again, comments and reviews that arrived since carry a marker in Conversation, a Jump to first new button moves to the earliest one, and each thread in the Diff's Threads list shows how many of its comments are new. A row in Pull requests shows New when new commits arrived since you left its Review. Refresh keeps the marks; leaving the Review again clears them. #231

  • Added a Needs your reply marker for an unresolved review thread whose last comment is someone else's. In a Review's Threads list those threads come first and the tab shows how many there are, the { and } thread jump visits them first, and an Analysis Finding whose published thread is waiting on you carries the same marker. Replying to or resolving the thread clears it without pressing Refresh. #228

  • Added Watch for a pull request, from the Pull requests inspector, the Review header, or the ⌘K palette with a pull request reference typed in. While Patchdesk runs it checks each watched pull request every 3 minutes, or every 1, 5, or 10 from Settings → General → Notifications, and posts one notification per change: a new comment or review, a changed review decision, changed checks, new commits, or the pull request merging or closing, which also ends the watch. Nothing else refreshes: rows and Reviews still change only when you refresh, and a dot on the GitHub: badge says a watched pull request changed since. No notification is posted while the pull request is open in a Review, and clicking one opens the pull request. A workspace watches at most 20 pull requests; watched ones carry an eye mark in the Pull requests table and in the column of pull requests you have opened. #226

  • Added desktop notifications for work that finishes while Patchdesk is in the background or showing another Review. A Brief, Walkthrough, or Analysis that finishes or fails posts one, and so does a GitHub write that Patchdesk could not confirm and that now blocks further writes until you check GitHub again. Clicking a notification brings Patchdesk forward and opens that Review, on the Insight's reader for an Insight run; an unsaved draft or a write still in progress keeps you where you are, as it does for any navigation. Settings → General → Notifications turns them off, and a second switch, off by default, adds notifications when a Review finishes preparing and when a merge completes. #227

  • Added Change base branch to PR overview under Merge readiness on an open Review. It searches the branches of the pull request's base repository, marks the current base, explains that a new base can change commits, files, checks, and merge conflicts, and asks you to confirm before updating GitHub. Patchdesk then refreshes the Review against the new base: existing Insights stay and are marked outdated, and comments and Findings keep their place where their anchor still exists. An account without write access sees the confirm disabled with the reason. #117

  • Added a live command trace to a running Brief, Walkthrough, or Analysis on the Codex CLI account provider, so a working run no longer looks the same as a stuck one. The running panel says when the run is still preparing, then shows the last line of the model's reasoning summary when the model sends one, and each command Codex has run with its exit status and duration, or a spinner while it runs. A run that fails, times out, or is stopped keeps its last command list under the failure notice. Command output is not shown, and API key runs keep the spinner as before. #243

  • Added a way to ask a reviewer to look again. Every reviewer in a Review's Reviewers rail who has already approved, requested changes, commented, or been dismissed now carries a re-request control beside their verdict; one press asks that person for another review and leaves everyone else's request alone. A Review whose pull request is still a draft also says so with a Draft badge in the header, the same badge the Pull requests table shows, and its author can change that state from PR overview under Merge readiness: Ready for review publishes a draft, and Convert to draft takes a published pull request back. Only the person who opened the pull request is offered that control. #230

  • Added Your pull requests to the Pull requests filter bar, beside Awaiting review from you. It asks GitHub for the pull requests you opened, composes with the state, label, and More filters choices the way the other preset does, and carries across a repository change. Only one of the two applies at a time: choosing one turns the other off, and pressing the active one clears it. Both are also in the Navigate palette under Pull requests, where choosing one sets it rather than toggling it. If you had Awaiting review from you switched on before this release, it comes back off once; switch it on again and it stays. #229

  • Fixed an empty Brief, Walkthrough, or Analysis reader centering its message far down the available space. Empty readers now begin near the top, omit the blank document header on a merged or closed Review, and no longer draw a stray scrollbar in the Insight tab strip.

  • Fixed replying to, editing, or deleting a published comment that has since been deleted on GitHub saying Patchdesk could not reach GitHub. It now says the comment or thread is no longer there. A lookup GitHub refused, rate-limited, or never answered still says Patchdesk could not check, because none of those is evidence the comment is gone. #276

  • Changed Brief, Walkthrough, and Analysis runs on the Codex CLI account provider to accept any command requested with a working directory inside the pull request's isolated worktree. Network, stdin-write, file-change, and outside-worktree requests remain declined. This removes false refusals from Patchdesk's command allowlist while Codex's read-only sandbox still applies. #240

  • Fixed a Review staying locked after a GitHub write that had gone through, when Patchdesk could not record the write in its local journal of recent writes. Check GitHub again failed at once every time and further writes stayed blocked with no way out from inside the app. The write now finishes and the lock clears whatever happens to the journal, and a journal file that can no longer be read is moved aside to recent-writes.quarantine.json and started again empty, costing at most one extra refresh. #242

  • Fixed review actions reporting a generic failure when Patchdesk refused the action or could not trust GitHub's response. Replying to, editing, or deleting a comment without a readable diff now says to refresh; Add to review on a Finding that no longer matches the diff or pending review says to check GitHub again or refresh; and a malformed response to adding or dismissing a Finding, a comment write, a review summary, a draft change, a review re-request, or assigning yourself now says GitHub could not confirm it, so you check GitHub before repeating a write that may already have gone through. A malformed reload after Check GitHub again on a pending review says Patchdesk could not check GitHub and to try again. #236

  • Fixed Add to review on an Analysis finding failing with "The Finding action could not be saved. Try again." when the Review was already open while the Analysis ran. The button showed as available, but every press failed until the Review was reopened, with or without a pending review already started. #235

  • Fixed an Analysis Finding keeping its red Add to review failure after Check GitHub again proved the comment was pending, the Finding was dismissed, or no comment was added. The settled status now clears only that Finding's obsolete error. #249

  • Fixed every Analysis finding's View evidence card standing at half the window's height whatever it held, so a six-line hunk showed its lines and then some 300 pixels of empty card, and a list of short findings read as mostly whitespace. A card now ends just below its last line, still stops at three quarters of the window and scrolls when the hunk is longer than that, and still drags to a height of your own. #224

  • Fixed the Brief prompt telling the model to reply with a JSON object when the result has to arrive through a tool, which could end a Brief run on an API key provider with an invalid-result failure. The Brief, Walkthrough, and Analysis prompts also drop instructions the output schema already enforces, and the Analysis inspectors now describe what they really accept and return, so a finding is no longer raised against a tool description that did not match the code. #222

  • Fixed a write GitHub answered with a server error being reported as rejected. A comment, reply, thread change, label, assignee, reviewer, base branch, draft change, review summary, or merge that GitHub failed on its own side now says Patchdesk could not confirm it and keeps Check GitHub again available, instead of saying GitHub refused it: a server error can arrive after the change has already landed, so repeating it posted the comment or the review twice. #288

  • Fixed Patchdesk keeping every past copy of a pull request's GitHub state on disk. A Review stored a fresh copy of its comments, commits, checks, and conversation every time it reconciled and removed none, so one long-running pull request held 26 of them; it now keeps the copy the Review currently shows and the one before it, and drops the rest as each reconciliation completes. #297

  • Fixed Patchdesk spending several seconds on startup doing nothing you asked for. The window no longer waits for your login shell to finish loading your shell profile — that now runs alongside it, and only what needs the keys and PATH it brings in waits for it — and the GitHub CLI account check, which ran four times at about 1.6 seconds each, now runs once per launch. Re-check in Settings → Workspace still asks gh again, and so does any check made after one that found no authenticated account. #295

  • Fixed discarding a review you had started leaving its draft comment on screen and stopping that Review from picking up anything new. The discarded thread kept a live card offering Edit, Delete, Resolve, and Reply on a comment that no longer existed on GitHub, and every later check of that Review was withheld for up to 24 hours, so comments, reviews, and checks that arrived after the discard never appeared. #322

  • Fixed starting a review saying GitHub rejected your comment when GitHub was in fact already holding an unfinished review of yours on that pull request — sometimes the very review your comment had just landed in, so the comment was on GitHub while Patchdesk said it had been refused and showed no review at all. Patchdesk now reads that review before deciding: your comment is confirmed if it is there, otherwise the composer names the unfinished review and the Review adopts it so your next comment is added to it, and a check Patchdesk could not complete keeps your comment pending with Check GitHub again available. #319

  • Fixed Check GitHub again treating any newer pending-review comment as proof that an uncertain inline comment had landed. Patchdesk now unlocks the write only when exactly one remote comment matches the saved body and location, so unrelated activity cannot authorize a duplicate submission.

  • Fixed review writes blaming GitHub for refusals Patchdesk makes itself. Finishing a review, submitting a review summary, publishing an inline comment, changing a pull request's draft state or base branch, and re-requesting a review all said GitHub rejected them, when what refused was a Review Patchdesk no longer holds, a confirmation you had not given, or a pending review that changed under the request. Each now names the refusal and tells you to refresh. #310

  • Fixed an inline comment you published and then deleted coming back in the Diff with its original body and Edit, Delete, Resolve, and Reply on it, which Refresh GitHub state could not clear — only reopening the window did. Editing one of your published comments now shows the new body in its Diff card, an edit or a delete reaches that card without waiting for the next check of the Review, and publishing a comment and deleting it before that check no longer withholds every later check for up to 24 hours. #329