DeskPilot.psd1

@{
    RootModule        = 'DeskPilot.psm1'
    ModuleVersion     = '0.5.0'
    GUID              = 'b8f3a2d1-7c4e-4a9b-9f1d-2e6c5a0b3d77'
    Author            = 'Raimund Andree'
    CompanyName       = 'Raimund Andree'
    Copyright         = '(c) Raimund Andree. MIT licensed.'
    Description       = 'DeskPilot is a local, desktop-style web UI that fronts the ShellPilot engine to give non-technical users the full GitHub Copilot agent toolset (browse, read/write files, run commands, skills, instructions) with visible permissions and honest cost - no terminal or IDE required. The web UI is bundled in the module and served on loopback; ShellPilot and a Copilot-enabled GitHub account are required.'
    PowerShellVersion = '7.0'
    FunctionsToExport = 'Start-DeskPilot'
    CmdletsToExport   = @()
    VariablesToExport = @()
    AliasesToExport   = @()
    PrivateData       = @{
        PSData = @{
            Tags         = @('Copilot', 'GitHubCopilot', 'ShellPilot', 'Agent', 'AI', 'GUI', 'AgenticOperatingModel', 'PSEdition_Core', 'Windows', 'Linux', 'macOS')
            LicenseUri   = 'https://github.com/raandree/DeskPilot/blob/main/LICENSE'
            ProjectUri   = 'https://github.com/raandree/DeskPilot'
            IconUri      = 'https://raw.githubusercontent.com/raandree/DeskPilot/main/source/web/assets/logo-mark.png'
            ReleaseNotes = '## [0.5.0-preview0009] - 2026-08-11

### Added

- **A job that runs out of steps now tells you, and keeps its work.** The step
  budget rose from 25 to 50 — 25 cut off real work such as auditing a repository
  or running a build and diagnosing it — and is now capped at 200 so a typo
  cannot start an expensive runaway. The agent is also told how many steps it
  has, so it can spend them deliberately instead of being cut off mid-thought.
  When a job does hit the limit it no longer disappears into an error: it ends
  like a stopped job, explains that it ran out of budget, points at the setting,
  and keeps everything it had already said and planned.
- **Workspace-wide instructions now actually apply.** An instruction file that
  applies to everything was only ever *offered* to the agent, which had to decide
  to go and fetch it — and often did not, so rules you had written were quietly
  not in force. Instruction files whose `applyTo` is `**` are now put straight
  into the agent''s brief at the start of every job. Instructions scoped to
  particular files are unchanged: the agent still fetches those when they become
  relevant. A new **Always apply workspace-wide instructions** setting turns this
  off if you would rather save the context on a small model.
- **See what the agent said while it worked.** A job that used several tools
  narrated its way through them — "let me check the branch first", "the counts
  differ, so I will find out why" — and every word of it was thrown away the
  moment the job finished, leaving only the final answer. Those notes are now
  kept in a **Steps** section above the answer, one entry per tool the agent
  reached for. It is collapsed by default, it survives a reload, and a job you
  stop keeps whatever it had already said — which is often the only record of
  what it was doing.
- **Watch the files being edited, while they are edited.** Until a job finished,
  the only place that named the file the agent was writing was the thinking
  trace — so with **Show the model''s thinking** switched off, nothing named it at
  all. A card now appears under the answer as the job runs and lists each file
  the moment the agent starts writing it. When the job ends, the reviewed card
  you already know — with the `+`/`−` counts, **Keep** and **Undo** — takes its
  place. A job you stop, or one in a folder that is not a repository, keeps the
  list instead of clearing it, so you can still see what was written.
- **Pick the model from your phone.** Intercom could switch the conversation, the
  agent and the project, but not the model, so choosing one still meant walking
  back to the machine. `/models` lists the models your account is offered, marks
  the one your next instruction would run on and gives you a button per model;
  `/model 2` picks one and `/model default` goes back to the standard one.
  `/status` now names the model too. A switch applies to your next instruction —
  it never disturbs a job already running — and it changes both the default and
  the conversation you are in, so the model you were told about is the model that
  actually runs. While a job is running and the list has never been loaded,
  `/models` says so and asks you to try again afterwards rather than freezing
  DeskPilot to go and fetch it.
- **Switch agent and project from your phone.** Intercom could switch
  conversations but not the two things that decide *how* and *where* the agent
  works. `/agents` lists the agents you have, marks the one in use and gives you
  a button per agent; `/agent 2` picks one and `/agent none` goes back to the
  default. `/projects` does the same for your projects and says on every line
  which ones you are allowed to work in from your phone, so you learn that before
  you send an instruction rather than from a refusal. `/project new C:\Git\Notes`
  registers a folder as a project — creating that last folder if it does not
  exist yet — and `/status` now names the agent in use. A project added from your
  phone is deliberately **not** remote-controllable until you switch that on at
  the machine.
- **Dictate and read aloud in German.** Voice used to follow whatever language
  your browser was set to, so speaking German into an English Windows produced
  transcription nonsense and had your answers read back in an English accent.
  **Settings → General → Voice language** now lets you choose: German (Germany,
  Austria, Switzerland), English (US, UK), or Auto to keep following the browser.
  A **Voice** setting sits underneath it, listing every voice installed for that
  language so you can pick the one you like — or leave it on Automatic, which
  picks the best one for you.
- **Asking for choices now gets you choices.** "Give me a list to choose from"
  or "what are my options" used to be answered with a written list you could only
  read. The agent now offers those as a real question you can answer — a
  questionnaire in the window, tappable buttons on your phone — so picking one
  actually carries on the conversation. It still will not turn a simple request
  into a wizard: it never asks to confirm something it can just do.
- **Tap to answer, instead of typing.** When the agent asks a question with a
  list of choices, Telegram now shows a button for each one — tap it and that is
  your answer. `/chats` gives you a button per conversation too, so switching no
  longer means reading a list and typing a number. You can still reply in writing
  whenever you prefer, and questions that let you pick several answers at once
  still ask for a written reply, because one tap cannot say "these two".
- **Rewind a conversation to before a prompt.** Every message you send now
  carries a **Restore Checkpoint** marker above it. Clicking it takes you back to
  the moment just before you hit send: the message and everything after it leave
  the conversation, your prompt goes back into the box so you can reword it, and
  any file DeskPilot changed since is put back the way it was. Files you edited
  yourself are left alone, and DeskPilot asks before it discards anything. The
  marker appears as soon as the turn finishes — you do not have to reopen the
  conversation to see it.
- **Undo from your phone.** Send `/undo` to Intercom and DeskPilot tells you
  exactly what it would throw away — how many messages, how many files — then
  waits. `/undo confirm` takes you back to just before your last instruction,
  puts back the files it changed, and sends your prompt back so you can reword it
  and try again. It refuses while a job is running, so send `/stop` first.

### Changed

- **The Thinking panel now tells you the time.** When a job takes minutes, the
  panel gave you no way to tell whether the wait was the model thinking, a tool
  running, or DeskPilot stuck. Every divider and every tool call now starts with
  the clock, so the pause between two steps is there to read: `14:07:09` on one
  divider and `14:07:31` on the next is twenty-two seconds you can now account
  for. The time is the moment the agent actually did it, not the moment your
  browser drew it, so a busy screen cannot flatter the numbers.

- **The model''s thinking is now readable.** Every time the agent used a tool, the
  Thinking panel showed the raw instruction it sent — one endless line in which
  each line break of a file it was writing appeared as a literal `\n` and every
  Windows path came out doubled, like `C:\\Users\\you`. It now reads as what it
  is: the tool''s name, then each of its inputs on its own line, with the text laid
  out the way it will actually be written. The `=== iteration 4 (chat) ===`
  markers became plain dividers, and the panel keeps its own height and scrolls
  by itself, so a long think no longer pushes the answer off the screen.

- **You can watch the agent think while it writes.** The Thinking panel sits
  above the answer, so as soon as the answer filled a screen the panel scrolled
  out of sight and all that was left was the spinner — which looks exactly the
  same whether the agent is busy or stuck. The newest line of the thinking now
  runs beside that spinner just above the box you type in, where a long answer
  cannot push it away, and clicking it takes you back to the full panel. The
  conversation also follows new output only while you are already at the bottom,
  so scrolling up to read along is no longer undone by the next word.

- **New conversations start on Claude Opus 5.** DeskPilot used to inherit
  whatever model the engine happened to name as its default, which trails the
  newest one by months. It now asks for Opus 5 whenever your account is offered
  it, and falls back to the engine''s own choice when it is not — so nothing
  breaks if it is unavailable to you. Picking a model yourself, in Settings or on
  a single conversation, still wins.

### Fixed

- **Stopping a job no longer throws away its thinking.** With **Show the model''s
  thinking** on, the pane filled up while the job ran — and pressing **Stop**
  blanked it on the next reload, because the trace was only ever held in the
  browser and the stopped message was saved with nothing in it. The thinking you
  watched is now saved with the message, so a stopped job still explains itself
  afterwards.
- **Intercom now tells you where the phone-control switch actually is.** When a
  project was not cleared for phone control, Intercom said "Remote control is
  switched off … turn it on under Settings > Intercom" — a tab that holds no such
  switch, and which the message was printed on while it plainly read
  "On — connected". It now names the checkbox you are looking for and the tab
  that carries it: tick **allow phone control** on the project under
  **Settings → Projects**. The same correction applies when you switch to a
  project from your phone, when you add one with `/project new`, and in the
  getting-started guide.
- **Read aloud no longer sounds like a robot from ten years ago.** It used the
  first voice the system happene'

            Prerelease   = 'preview0009'
        }
    }
}