DeskPilot
0.4.0-preview0001
Minimum PowerShell version
7.0
See the version list below for details.
Installation Options
Owners
Copyright
(c) Raimund Andree. MIT licensed.
Package Details
Author(s)
- Raimund Andree
Tags
Copilot GitHubCopilot ShellPilot Agent AI GUI AgenticOperatingModel Windows Linux macOS
Functions
PSEditions
Dependencies
This module has no dependencies.
Release Notes
## [0.4.0-preview0001] - 2026-08-06
### Fixed
- **Undoing a file now clears it from the review list.** The diff viewer kept the
file list it opened with, so after you confirmed an undo the file was still
listed, still showed its old diff, and still offered a second **Undo this
file** for a change that was already gone. The viewer now re-reads the change
set after every Keep or Undo: a file that no longer differs drops out, the
selection moves to the next file, and the viewer closes when nothing is left
to review. A file put back through Git also stops being reported as an
unreviewed DeskPilot change.
- **A model with no published rate no longer reads as free.** The engine prices a
turn from a table keyed by exact model id; a model newer than that table (for
example `claude-opus-5`) comes back with *no* price, and DeskPilot was showing
that as a confident `$0.0000 · 0 credits` — over a million tokens could look
free. Such a turn now says **cost unknown — no published rate for this model**,
session and all-time totals show a `≥` prefix and count how many turns could
not be priced, and the per-model list says **no rate** instead of `0 cr`. The
fix for the *number* is a rate for the model in the engine's price table; this
fix is DeskPilot no longer misreporting its absence.
### Added
- **The files panel is resizable.** Drag its left edge to make it as wide as you
need (up to 60 % of the window), double-click the edge to snap back to the
default, or focus it and use `←`/`→` — `Shift` for bigger steps, `Home` to
reset. The width is remembered on this machine.
- **Save all your changes at once, without knowing Git.** The Changes panel gains
a **Save all…** button (also in the Branch Wizard when you have unsaved work,
and in the command palette) that opens one dialog: it lists every uncommitted
file with its added and removed line counts, prefills an editable one-line
description, and records the lot as a single entry in the project's history.
No staging, no `git add`, no terminal — and nothing is sent anywhere until you
choose **Send to server**. Saving a file also stops DeskPilot reporting it as
an unreviewed change, because a file you saved is a file you reviewed.
- **Let DeskPilot write the description.** A ✨ button beside the box reads your
changes and suggests a one-line description, the way GitHub Copilot's commit
box does. It only ever fills the box — you read the words and decide — and it
runs on your click, never on its own.
- **DeskPilot now remembers what it changed until you decide.** Before every turn
it records how your files looked, so the edits the agent makes stay listed as
*not reviewed yet* — across a reload, a restart, and switching conversations —
until you **Keep** them (accept, without committing) or **Undo** them. Undo puts
a file back the way it was *before the agent touched it*, so your own earlier
edits survive, and a file the agent created is removed. This is a layer above
Git: "what did the agent change?" and "what is uncommitted?" are different
questions and now have different answers.
- **A Changes card under every new answer, with Keep and Undo.** When the agent
edits files in a Git project, the answer now carries a
`N files changed +A −D` summary and one row per file with its status and its
own added/deleted line counts, measured against the pre-turn snapshot. The card
disappears once those files are reviewed.
- **Changed files are visible in the file panel, not buried in Activity.** A
**Changes** panel sits directly under the Git bar with two sections — what
DeskPilot changed and you have not reviewed (with **Keep all** / **Undo all**),
and what is merely uncommitted — and the file tree itself is colour-coded the
way an IDE explorer is: a changed file's name takes its status colour (amber
modified, green new, red deleted or conflicting) and carries a one-letter
status, a folder containing changes is tinted and shows how many changed files
are inside, and an unreviewed DeskPilot change carries an accent edge.
- **A diff viewer.** Clicking a changed file opens a unified diff with both old
and new line numbers, colour-coded additions and removals, and a file list to
step through the whole change set (`↑`/`↓`). A pending DeskPilot change is shown
against the pre-turn snapshot, so you see what the agent did rather than
everything since your last commit. A brand-new file is shown as all additions;
a binary file says so instead of showing bytes.
- **A Branch Wizard for people who do not know Git.** One place to see where you
are, create a branch (with the name validated in plain language before Git
sees it), switch, delete (never the default branch; unmerged work needs an
explicit "delete anyway"; the remote delete is a separate opt-in), merge (hands
off to the existing Merge Wizard), and sync with the server — *get*, *send*, or
both, including publishing a branch that has never been sent. Uncommitted work
can be set aside and restored around a sync.
- **A generated prompt for merge conflicts.** When the same lines were changed in
two places outside the Merge Wizard, DeskPilot writes the prompt that asks the
agent to resolve it, shows it for review and editing, and sends it only when
you choose to. Copy and Abort-the-merge are offered alongside.
- **Ask you now opens a Questionnaire wizard for related questions.** The Model
can bundle up to ten questions into one in-thread flow with numbered choices,
radio-style single selection, checkmarked multi-selection, conditional custom
answers, previous/next navigation, progress, collapse, and close-to-Stop.
Text-only questions show only a free-text field; plain Engine questions remain
a one-step fallback. Answers return to the same Turn as one correlated JSON
payload, and the completed Activity shows the Questionnaire title instead of
protocol JSON.
### Changed
- **Git can no longer hang DeskPilot.** Every Git call now reads its output
asynchronously and runs with terminal prompting disabled, and networked calls
(fetch, push, remote delete) carry a timeout. Previously a stalled remote or a
credential prompt could freeze the single-threaded Host Server, and with it the
whole UI.
- The per-turn file diff moved from an inline block in the Activity panel into
the new diff viewer, and the Activity panel's "Undo file changes" button moved
into the Changes card as **Undo**.
### Fixed
- **The Project chip now shows the selected folder's leaf name.** The chip
sizes itself to shorter folder names, caps long names with an ellipsis, and
exposes the full leaf name on hover instead of showing a stale Project name
or the folder's root.
- **Stop now reacts immediately and preserves the interrupted Turn's Usage.**
Clicking Stop freezes further streamed text at once, disables the button as
**Stopping…**, and cancels the Engine pipeline asynchronously so the Host
Server can keep processing requests while it unwinds. The resulting stopped
Message is persisted with its credits and cost. Exact Engine Usage is used
when available; hard-stopped streams that never receive the provider's final
token frame show a clearly labelled input-only estimate instead of zero.
- **Ask you now pauses for an in-thread answer instead of reporting that no
interactive console is available.** DeskPilot captures ShellPilot's structured
`ask_user` Tool event, renders a correlated answer card, feeds the response to
the waiting Engine Runspace, and resumes the same Turn. Repeated questions can
form a multi-round interview, stale answers are rejected, and Stop cancels a
pending question. Adds a `POST /api/conversations/{id}/question` route and
focused Host Server, Engine-contract, and web-asset tests.
- **The GitHub sign-in screen no longer hides the device code behind its own
progress output.** The Engine writes one line per poll while it waits for you
to authorise, and the sign-in panel appended every one of them, so the
verification link and the user code scrolled out of the small box within
seconds and the screen looked stuck. Sign-in progress is now a fixed panel:
the link and the code stay pinned with a **Copy code** button, and the poll
heartbeat only updates a single status line. The code step also spells out
that GitHub's password and two-factor prompts are the normal sign-in and that
the device code belongs only in the **Device activation** box — pasting it
into the two-factor field is rejected by GitHub. A sign-in that ends without a
token now says the code may have expired instead of only "Try again". Adds a
small `auth.js` browser module and one focused unit test.
FileList
- DeskPilot.nuspec
- DeskPilot.psm1
- web\assets\questionnaire.js
- web\assets\logo-full.png
- web\assets\styles.css
- DeskPilot.psd1
- web\assets\logo-mark-dark.png
- web\assets\diff.js
- web\assets\logo-full-dark.png
- web\assets\logo-mark.png
- web\assets\app.js
- web\assets\markdown.js
- web\index.html
- web\assets\attachments.js
- web\assets\auth.js
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 0.5.0-previe... | 3 | 8/10/2026 |
| 0.5.0-previe... | 4 | 8/9/2026 |
| 0.4.1-previe... | 4 | 8/9/2026 |
| 0.4.0 | 7 | 8/9/2026 |
| 0.4.0-previe... | 3 | 8/9/2026 |
| 0.4.0-previe... (current version) | 4 | 8/6/2026 |
| 0.3.1-previe... | 3 | 8/5/2026 |
| 0.3.0 | 23 | 7/23/2026 |
| 0.3.0-previe... | 3 | 7/23/2026 |
| 0.3.0-previe... | 9 | 7/9/2026 |
| 0.2.0 | 15 | 7/9/2026 |
| 0.2.0-previe... | 3 | 7/9/2026 |
| 0.2.0-previe... | 5 | 7/9/2026 |
| 0.2.0-previe... | 5 | 7/9/2026 |
| 0.2.0-previe... | 9 | 7/9/2026 |
| 0.2.0-previe... | 8 | 7/8/2026 |