Repository navigation
Releases: RaiderWang/pidesk
Release list
PiDesk v0.4.8
PiDesk v0.4.8
🚀 What's Changed / 版本变更说明
Added
- Open same project in multiple tabs & tab bar creation refinement:
- Removed project deduplication check when opening projects from the tab bar
+dropdown menu ("Recent Projects"), allowing users to open multiple independent conversation tabs for the same workspace directory without auto-switching to an existing tab. - Added pure
nextInitialNameandnormalizePathhelpers insrc/app/session-title.js, auto-numbering initial project tabs (<folder>,<folder> (2),<folder> (3)) without bloatingsrc/live.jswhile recycling freed indices upon closing tabs. - Enhanced
SessionTitle.isInitialSessionNameandnextTitleto recognize numbered project initial titles and gracefully preserve sequence numbers if the first prompt equals the folder name. - Note on concurrent agents: multiple active sessions sharing a project directory operate on the same filesystem; workspace-level features (such as Code Review and File Tree) reflect live state across all sessions in that directory.
- Removed project deduplication check when opening projects from the tab bar
- Session tab title truncation, native tooltips, and project-aware title formatting:
- Automatically format session tab titles upon starting a conversation: standalone sessions use the sanitized first prompt, while project-bound sessions use
<folderName>: <prompt>format so multi-session project tabs are distinguishable. - Added pure
SessionTitlemodule (src/app/session-title.js) that strips Plan mode framing (INTENT_FRAMING), removes Markdown header markers, normalizes newlines/whitespace, clamps character length safely across surrogate pairs (emojis/CJK), and provides unifiedfolderNamepath parsing. - Implemented elastic tab layout in CSS (
flex: 0 1 auto; min-width: 100px; max-width: 200px;) with single-line ellipsis (text-overflow: ellipsis), allowing short titles to fit naturally without forcing 200px width while keeping.tabsoverflow: visibleto prevent clipping the+dropdown menu. - Added native
titletooltips to tabs and window chrome, showing full conversation titles and directory paths on hover. - Hardened title formatting and event dispatch: factored out
SessionTitle.nextTitlepure logic, ignored slash commands (/plan,/compact,/review) and file-only mentions so they never lock titles prematurely, verified and matchedsession_info_updatebysavedSessionIdfrom omp RPC, and guarded established titles (titleLocked: true) against subsequent prompt overwrites. - Improved standalone tab numbering to recycle unassigned
PiDeskslots when existing tabs are custom-titled. - Updated File Tree panel header (
displayName) viaSessionTitle.resolveFolderTitleto prioritize folder name over generic project labels (standalone sessions displayworkspace). - Cleaned up duplicate
.tabs-rightCSS rules, consolidatingflex-shrink: 0into the main rule.
- Automatically format session tab titles upon starting a conversation: standalone sessions use the sanitized first prompt, while project-bound sessions use
Documentation
- Redesigned README showcase and screenshot assets: overhaul feature matrix in
README.mdandREADME.zh-CN.mdwith an 8-pillar visual architecture (Activity Bar workspace, context-aware@chips & Undo,/reviewdrawer, Plan Mode & Kanban, Quick Bar overlay, screenshot annotation suite with mosaic blur, Model Manager thinking depth, and command palette / themes). Replaced legacy stacked screenshots with 8 high-DPI feature screenshots and removed deprecated image assets.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.
🔒 SHA-256 Checksums
| Filename | SHA-256 Checksum |
|---|---|
PiDesk_0.4.8_aarch64.dmg |
45c6d87c8c288c95b752294d47072109fd91beff512ce13a24885bd5fc41c243 |
PiDesk_0.4.8_amd64.AppImage |
9148f3ec16b90283405c230a07cdca39570889e3af9f1e66aab901f5aae81148 |
PiDesk_0.4.8_amd64.deb |
d8ced7fe4cb55130299212f8d328e2ee96b3c4b0dad6216f6eb0adf8676ab2ba |
PiDesk_0.4.8_x64_en-US.msi |
61e07270cb602c5adc02f8d8c262f6f19ec3d41a5f50a9f4b95eae45ee9d5b07 |
PiDesk_0.4.8_x64-setup.exe |
f447b4ed1634c83dce00f508b19e8401964fc0d77e930152f5e98ee53f3456b1 |
PiDesk_0.4.8_x64.dmg |
4cffd28e624ab0f06f5951634e359b6de0c10c5a63ab2dce00f1dc005507c00b |
PiDesk_aarch64.app.tar.gz |
a36ae9a9cd58b2c493c01445bdd649e48e0dc8ced6758c876c64de48461bf229 |
PiDesk_x64.app.tar.gz |
f6e75cd97d90727b5a640228de096a89cef8dd041b61502ff0a0347c92767b37 |
PiDesk-0.4.8-1.x86_64.rpm |
4b076e4e3ad81a9025efc49151bef696f6d6f4c83b517b93a3ba843248b48b52 |
PiDesk v0.4.7
PiDesk v0.4.7
🚀 What's Changed / 版本变更说明
Fixed
- "omp not found" after an in-app update, and Retry never recovering (Windows): the real cause was not timing. The MSI updater relaunches the app from a Windows Installer custom action, so the new process can start with an environment that is not the logged-in user's: no user
PATHentries (e.g.~\.bun\binwhere omp lives) and possibly another profile'sUSERPROFILE/LOCALAPPDATA. It could never findomp.exe— retrying or waiting in that process was pointless, while closing and reopening the app from Explorer worked. On startup PiDesk now asks Windows for the user's own environment block (CreateEnvironmentBlock: machine + user + volatile variables, already expanded, no code-page issues) and applies it: missing variables (including user-defined ones such as API keys) are added, the userPATHentries are appended (existing entries keep priority), and if the process carries a different profile, the profile variables (USERPROFILE,APPDATA,LOCALAPPDATA,TEMP, …) are corrected so omp doesn't use the wrong~/.omp. A clean environment is left untouched. The usual install locations (~\.bun\bin,%BUN_INSTALL%\bin,%LOCALAPPDATA%\omp,~\.cargo\bin,~\.local\bin) are also probed as absolute paths when the bareomp.exelookup fails. When a repair happens, the before/after values are logged to stderr.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.
🔒 SHA-256 Checksums
| Filename | SHA-256 Checksum |
|---|---|
PiDesk_0.4.7_aarch64.dmg |
705ad873e3674af90a94ec80d15a81a7a72c1ee6efa639ffdea968d643a70195 |
PiDesk_0.4.7_amd64.AppImage |
54e32d44dd31a70fd8a43dcc9a98727963829fa97b915d60a82618b747915c26 |
PiDesk_0.4.7_amd64.deb |
78a1a004d021b13085efbe7cd353d9b78941a05e65e42bba848da55c1f97a17f |
PiDesk_0.4.7_x64_en-US.msi |
0ba0f0d7b9166dedeaacbe77f66ccd44842a0a64d5ad300ef921191634dc6657 |
PiDesk_0.4.7_x64-setup.exe |
98ffc71bbc0889d486f9c421935b81ce3fc5e0b88271f78fca779a2dbd83898a |
PiDesk_0.4.7_x64.dmg |
03d9d09f159c16d3740fa0196af60940885767b8dcacb6975ec5b331ea52f1e3 |
PiDesk_aarch64.app.tar.gz |
d6a8a362fcaa3ef847aba8590ab8251c87151f1984a884921d39219757c281e9 |
PiDesk_x64.app.tar.gz |
409f2f6bee9bcd857add73a5f1e9f02b8fa12f7e317f246eef539deada532982 |
PiDesk-0.4.7-1.x86_64.rpm |
59ecfd302f222b54e3a433de881ed956077d4d0081001b95a485fcd77938ea64 |
PiDesk v0.4.6
PiDesk v0.4.6
🚀 What's Changed / 版本变更说明
Changed
- "No project" sessions now use a dedicated workspace: instead of the running executable's directory (which could sit inside a repo under
cargo run, be read-only underProgram Files, and moves between versions), project-less sessions (default tab, New Standalone, Quick Bar) start in<app local data>/workspace(e.g.%LOCALAPPDATA%\com.raiderwang.pidesk\workspace), which normally stays empty so no project files influence the agent. The directory is created on demand and falls back to the executable's directory if it can't be created. Sessions saved by older builds are still recognised as project-less and resume into the new workspace. Project-less saved sessions are listed asDefault(not the internal folder name), listing them no longer touches the disk, and exporting such a session to HTML still finds the file omp wrote into the workspace.
Fixed
- "omp not found" error right after an in-app update: omp is often still unavailable for a few seconds after the update restarts the app, so the first start used to fail once and show the error banner until you clicked Retry. The first launch after an update now keeps retrying the default session in the background for up to 30 seconds and shows "Starting agent…" in the status bar instead of an error; only a failure that outlasts that grace period is reported (with the real spawn error, never a generic "not running" caused by a status race). Messages and model changes made while it starts are queued and delivered once omp is up instead of being dropped, and changing models during that time no longer cancels the retry. Closing the tab or quitting during the grace period no longer leaves a retry thread that can still spawn omp. If you click "Later" on the update banner and restart more than 10 minutes later, the grace period still applies. Regular launches are unchanged. The
rpc-uicapability probe (omp --help) is also no longer cached when omp couldn't be run or--helpfailed, so a briefly missing or half-installed omp no longer pins the app to plainrpcmode for the rest of the session. - Empty ghost bubble after omp fails to start: when omp wasn't up yet at launch or after an update restart, a blank assistant bubble (avatar,
–, timestamp, no body) was left in the chat next to the error banner. The banner now owns the error (no duplicate chat bubble that goes stale after Retry), and the "model switch failed" / "restarted after model config" notices render properly through a sharedNoticeBubblehelper. The "model switch failed" text is now localised. Also fixes aReferenceErrorwhen Retry itself failed to spawn omp. Client-side notice bubbles are now tagged (notice: true) so they no longer get dropped by theget_messagesmerge, break "branch from here" for earlier messages, or get picked as the annotatable plan reply, the undo count, the provider-error target or the Quick Bar reply. Restarting a stopped session after saving models now also clears or updates the error banner.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.
🔒 SHA-256 Checksums
| Filename | SHA-256 Checksum |
|---|---|
PiDesk_0.4.6_aarch64.dmg |
bc376f0d135b79137bdb9a761e86755bf1282132762b173fcd92fa23cfed3433 |
PiDesk_0.4.6_amd64.AppImage |
1b0d83304d8b352f433b140368bbb0aeedae570e561c3b67f5e2c685f3f74d6a |
PiDesk_0.4.6_amd64.deb |
fae6eba47b9ffc95fd54a8f03ea67c9002efefcc0ea06e6d926031bdd9944391 |
PiDesk_0.4.6_x64_en-US.msi |
d326cec7787a00bd00970a5b7ccf2e5647fa2f1b4bbbee0552562452efb4ed79 |
PiDesk_0.4.6_x64-setup.exe |
b237daa39c09c84aaadefd8d3806bbbe8b9cee9776a5830563776ef2129eac77 |
PiDesk_0.4.6_x64.dmg |
b19426f05a09a6e98d18462dbe0add081215c08cc8385e39e29fc3a5b171f92a |
PiDesk_aarch64.app.tar.gz |
4868bb3d556a13f71d2ae0d1dbdebb82be9229384bbc0fd0ede5906d817f31ab |
PiDesk_x64.app.tar.gz |
4bb1295e8a799b645882d3c34399d285b941531e030f725b1ba5fbaadc6d3e0d |
PiDesk-0.4.6-1.x86_64.rpm |
80879a9a871563091334966bb3017547bd0ab25d046767751a191b86aef5d654 |
PiDesk v0.4.5
PiDesk v0.4.5
🚀 What's Changed / 版本变更说明
Added
- Reference a file from the Files panel: right-click a file → "Reference File" attaches it to the composer as an
@pathchip (folders don't show the item). The chip row sits above the input; on send the references are prefixed to the prompt as@relative/path, which omp auto-reads, and they render as chips in the sent message bubble. Picking a file in the command palette's@mode now attaches a chip too. @file autocomplete in the composer: typing@(after whitespace or at line start) opens a fuzzy-filtered list of project files; ↑/↓ select, Enter/Tab attach it as a chip, Esc dismisses. Only available when a project is open.- Clarity light theme: a modern light theme with a crisp neutral-cool light gray background (
#F0F2F5), airy off-white canvas (#F8F9FA), pure white surfaces with a faint cool-gray elevated layer, high-contrast slate text hierarchy, and an electric cobalt blue (#2563EB) default accent with refined ambient shadows. Selectable via Settings (Tweaks) → Look → "clarity (modern light)" / "澄澈白 (现代灰)".
Fixed
@file reference polish: Esc now closes the@popup even while it only shows the "indexing" notice, and no longer aborts a streaming reply; the notice no longer reappears during background re-indexing when the cached list simply has no match; Esc followed by more typing re-opens the popup, while undo-restoring a message ending in@pathno longer pops it open. Files without a recognisable extension (Dockerfile,LICENSE) are sent as@"name"so they render as chips, dotfiles such as.editorconfig/.clang-formatand backslash paths render correctly, completing inside brackets ((@src)) keeps the closing), and completing at the start of the text leaves no leading space. While streaming, a chip-only draft now shows the steer button, and/reviewcarries attached chips into the review focus instead of dropping them.- Curated high-contrast accent palette for Clarity light theme: replaced the bright pastel/neon accent options under the Clarity theme with 8 darker, high-contrast tones (
#2563EB,#0E7490,#047857,#7C3AED,#A21CAF,#BE123C,#B45309,#475569) that all exceed WCAG AA contrast requirements (>= 4.5:1) against white surfaces, improving text and icon readability; dynamically computes--accent-deephover states viacolor-mix; auto-normalizes previously saved bright accents in Clarity to matching dark tones. - Tweaks theme dropdown arrow invisible on light themes: with four themes the theme picker falls back to a
<select>, whose arrow was drawn white-on-white underdaylight/clarity; it now uses a neutral gray that is visible on every theme. English theme names now consistently carry a descriptor (aurora (dark),phosphor (dark),daylight (light),clarity (modern light)).
Removed
- Dummy autosave toggle: removed the vestigial "autosave" toggle from Settings (Tweaks) and its unused warning indicator in the status bar. omp sessions are always saved incrementally to disk by the background agent process, so the front-end setting had no real effect.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.
🔒 SHA-256 Checksums
| Filename | SHA-256 Checksum |
|---|---|
PiDesk_0.4.5_aarch64.dmg |
48e4282b28311e519ffad074e1e8e6d6f6213de03549175bd64d252c06d5ac47 |
PiDesk_0.4.5_amd64.AppImage |
ec9fda0fbbab75e4ec303cc90caf44af831957dcabd12a38d3d5bf206ecefa39 |
PiDesk_0.4.5_amd64.deb |
59c2fb1c2f4a9e74c6eb251c92438430a237784efb13ba0593dc5989cb7cf40c |
PiDesk_0.4.5_x64_en-US.msi |
d6db464fcb53dfa3d8457847dcbdfc4989aedb192a2f6cd69b892ecf1fbc7133 |
PiDesk_0.4.5_x64-setup.exe |
130c3e2a0beb4046251bb80b9e5afe630b0a534e520e15a9653e134bbb9c5a38 |
PiDesk_0.4.5_x64.dmg |
1a4eb460a411b1396b0d0b13c01c7db9bac9c454605770041c8243728b96c26e |
PiDesk_aarch64.app.tar.gz |
3884a8a39913e996aff3ac541311ede1a5eac4928a0fa07e11922b20a2dce7f4 |
PiDesk_x64.app.tar.gz |
8ec4fb00c86c4077a5d0332f5791a7002317a2646178804860cac0fabfec8574 |
PiDesk-0.4.5-1.x86_64.rpm |
248d5d43b2f2aacdcb30cc860be95a369cc03c01289c05682a82309efa463b09 |
PiDesk v0.4.4
PiDesk v0.4.4
🚀 What's Changed / 版本变更说明
Added
- In-app updates: PiDesk checks GitHub Releases 5 s after launch and every 24 h (toggle: Settings → "check for updates automatically"), and shows a banner with the release notes. "Update now" downloads, verifies the signature and installs in the app, then offers "Restart to finish"; "Later" and "Skip this version" dismiss it. Settings also has a version row with a manual "Check for updates" button. Built on
tauri-plugin-updater(src-tauri/src/update.rs:check_update/install_update/restart_app); on installs that cannot self-update (e.g..deb) the banner offers "Download manually". Maintainers: releases now require theTAURI_SIGNING_PRIVATE_KEY/TAURI_SIGNING_PRIVATE_KEY_PASSWORDrepo secrets (the matching public key is already inplugins.updater.pubkey); on Windows the omp child processes are stopped just before the installer launches, and the plugin's IPC is not exposed to the webview — seeMANUAL.md→ "In-app updates". Versions before the first updater-enabled release must be upgraded manually once.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.
🔒 SHA-256 Checksums
| Filename | SHA-256 Checksum |
|---|---|
PiDesk_0.4.4_aarch64.dmg |
71a4fcb21624c29c58ee13eafb92ef808c0ed251a5d26b1a4c8e525a09cf7aa7 |
PiDesk_0.4.4_amd64.AppImage |
e799b5fdcde94091f6fcf7a3849754f37f5ab3841f623f09a4c69dcc8090e8c6 |
PiDesk_0.4.4_amd64.deb |
f6a90ec305316568aa535ce4592034bdf86115345993984dd056db68eae1096e |
PiDesk_0.4.4_x64_en-US.msi |
2d5218f0f0c25825e2ad522c24039d346faf8a4fa6da2c14b1ea6fcebe91329a |
PiDesk_0.4.4_x64-setup.exe |
d3200fbd7fe07114c4798b6c5cd1edfda8b0aa4e0039be7e1280fe6679ce60da |
PiDesk_0.4.4_x64.dmg |
9d467976a33da100b51d19ba68e3545d8aad99c9cb335dc0ff0506b5256a3214 |
PiDesk_aarch64.app.tar.gz |
ffe0929dc6d82d23c20136b2fe4b494c1a52fd9e9e48bf8f8c9f19bc61c9bac3 |
PiDesk_x64.app.tar.gz |
7b22601e4abcc6a3b4f935c74edb1e354773be19e407814ab1ce80149144c358 |
PiDesk-0.4.4-1.x86_64.rpm |
c53e09320fcba9303cae4596bdc1949aecef623ec90a5f4d13897eaf1bae82a6 |
PiDesk v0.4.3
PiDesk v0.4.3
🚀 What's Changed / 版本变更说明
Added
-
Welcome card on empty tabs: a tab with no messages now shows a short intro (how to ask,
/and@, project folders, Plan mode) and the full keyboard shortcut list, including the configurable Quick Bar and screenshot shortcuts. It disappears once the first message arrives. Lives indesign/chat/welcome-card.jsxand reuses the shortcut registry, so new shortcuts show up automatically. -
Undo a sent message: every user bubble has an undo button (bottom-right, disabled while the agent runs, compacts, or has background tasks pending —
branchwould cancel them). After a confirmation the conversation is rolled back to just before that message via omp's nativebranchRPC — the message text (and images) return to the composer for editing and resending, and everything after it is cleared. The original conversation stays in History as a backup; file changes the agent already made on disk are not rolled back (the dialog says so). Plan-mode framing is stripped from the restored text; an existing composer draft is kept (the message is appended). Logic lives inapp/undo-message.js(tail-aligned entry lookup with text verification — never guesses),undo-bridge.jsanddesign/composer-restore.jsx. Known limitation: a message that omp rewrote before saving (expanded slash command / prompt template /@modelmention) cannot be matched to the saved session, so it — and anything before it — reports "couldn't match" and is left untouched.
Changed
-
Taller initial main window: the default window height is now 960 (was 900) logical px, set in
src-tauri/tauri.conf.json. -
Quick Bar look: rounder card with a hairline border, roomier input row (larger text, more padding), a tinted hint bar with keycap-style shortcuts, and softer spacing in the result area and screenshot thumbnail strip.
-
Quick Bar reply follows the stream: the reply area now stays pinned to the bottom while text streams in, so new content is always visible. Scrolling up pauses it (to read earlier text) and it resumes when you scroll back to the bottom or send a new message (
quick-bar/use-stick-bottom.jsx). TheEscentry was dropped from the shortcut hint bar (Esc still closes the bar / aborts a running reply) and itsquickbar.hint.closei18n key removed.
Fixed
- Quick Bar edges on macOS: the transparent window no longer shows a grey rectangular edge / broken rounded corners. The native window shadow (which macOS draws from stale window alpha) is off on all platforms; the card now sits in a 24 px transparent gutter and draws its own shadow with CSS. The window height is measured from the card only (
use-auto-height.jsx), and re-measured on every show. - Single-file session deletion:
delete_saved_sessionnow removes only the target.jsonlsession file (and removes the directory only if it becomes empty). Previously, it wiped the entire parent folder, which accidentally deleted all other sessions for the same project in omp 18.x's shared session directory layout (~/.omp/agent/sessions/<project-dir>/). - Session branching accuracy & source resolution: "Branch from here" now forks the session file omp is actually writing (matched by path, then session id) instead of comparing a session id with a file path, which always fell back to the newest session of the project. A branch from a specific message is cut at a stable entry id (
app/branch-session.js, tail-aligned and strictly verified) rather than a message count, so it no longer drifts after the UI list is head-trimmed or when the session holds tool results; the cut keeps the tool results of the chosen turn so the fork has no dangling tool calls. If the message cannot be matched safely the branch is refused with a warning (newbranch.fail.*strings, EN/ZH) instead of silently copying the whole session; an unknown entry id is an error incopy_session_file(now insrc-tauri/src/session_copy.rs). - Message list reconciliation on tab switch/ready:
get_messagesis now merged by exact tail alignment (app/message-merge.js) instead of pairing the Nth local bubble with the Nth persisted turn. This prevents mis-mapped content and re-appended old turns once the UI list is head-trimmed (169 cap), keeps older local bubbles when omp compaction dropped them from the persisted list, ignores the empty bubbles of tool-only turns, and no longer re-hashes every message on each comparison. - Undo no longer loses the message or shows its error in the wrong tab when you switch tabs mid-undo: the switch now waits for the in-flight undo, so the text lands in the composer of the tab it came from and any failure warning stays in that tab. Previously the switch dropped the response listener, the undo hung for 30 s, and the warning appeared in the tab you had switched to.
- The undo button's busy guard is now a single check shared by the button and the bridge. It covers a manual
/compact(pending card) and automatic compaction, and disables undo while background async work is pending, with its own tooltip. Undo also keeps tool logs of earlier turns instead of wiping them all. - A tab now re-binds to omp's current session file whenever it changes (undo,
/new, switch). Previously History's "already open" check and resume de-duplication kept pointing at the old file, so the new one could be opened a second time.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.
PiDesk v0.4.2
PiDesk v0.4.2
🚀 What's Changed / 版本变更说明
Added
- Activity Bar + Dock panel: a 44 px icon strip on the left is now the single entry point for Files, Plan, Code review, Overview, History, Models and Appearance settings (tooltips show shortcuts). The right-hand panel became a resizable dock with
Overview(former ambient rail) andPlantabs. Stage columns are generated byapp/dock-layout.js; below 900 px the file tree and dock auto-hide. Dock/file-tree state persists inpidesk:dock-state(legacypidesk:files-panel-*keys are migrated). - Plan in the dock: compact vertical Plan view (phase, progress, ask, tasks grouped by status, abort) with a "board" button that expands to the full kanban modal. A pulsing dot on the Plan icon replaces the flashing tab/status buttons.
- Command palette (
Ctrl+K): fuzzy search with match highlighting across commands, app actions, open tabs and saved sessions; prefixes/commands,#sessions,@project files (inserts@pathinto the composer),?shortcuts. Rows show their keyboard shortcut. - Keyboard shortcut cheat sheet (
Ctrl+/, or?in the palette) driven by a single shortcut registry that also includes the Quick Bar and screenshot shortcuts. - Tool-call folding: runs of 3+ finished tool calls collapse into one summary row (coloured per-tool counts, failures, total time); minimap clicks expand the group first. Toggle with Tweaks →
groupTools. - Unified
Modalshell (design/ui/modal.jsx+app/modal-stack.js): portal, focus trap/restore, nested layers, Escape only closes the topmost modal.
Changed
- Status bar slimmed: connection is a dot (text only on error), thinking level removed (it lives in the composer), cost and t/s merged into one usage cell (t/s while streaming or on click), autosave moved to Tweaks (status bar only warns when off), Tweaks gear moved to the Activity Bar.
/todo,/kanban,Ctrl+Jand the status-bar todo cell now open the dock's Plan tab instead of the full-screen board. History / Models / Kanban buttons were removed from the tab bar and the Files button from the title bar (use the Activity Bar).- Internal:
chrome.jsxsplit intodesign/chrome/*,panels.jsxintodesign/plan/*,CommandBridgemoved todesign/palette/; global shortcuts no longer use stale closures.
Fixed
- Shortcuts leaking through dialogs: while a modal is open only
Ctrl+K/Ctrl+/stay active (and never stack on top of another dialog), soCtrl+H/M/B/J/O/Tno longer act behind it; History no longer resumes a session whenEnterwas consumed by a dialog above it. - Tweaks panel position: it now opens at the bottom-left next to the Activity Bar gear (instead of the bottom-right corner) and still drags freely. Clicking anywhere outside the panel closes it (clicking the gear again toggles it shut).
- Plan board modal now uses the shared modal layering (it could render below other dialogs); tool-call group headers follow language switches; Tweaks → layout shows
focuswhen the dock is closed sorailcan reopen it; the@file index discards results from a project you already left; removed a duplicateCtrl+Khandler in the composer; plan "ask" label and rail "session"/"minimap" titles are translated.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.
PiDesk v0.4.1
PiDesk v0.4.1
🚀 What's Changed / 版本变更说明
Fixed
- macOS Dock icon after closing the main window: closing the window to the tray now also hides the Dock icon (it was lingering but unresponsive), and the icon is restored when the window is shown again from the tray / single-instance relaunch. Clicking the Dock icon (
RunEvent::Reopen) now brings the main window back. Logic lives insrc-tauri/src/main_window.rs.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.
PiDesk v0.4.0
PiDesk v0.4.0
🚀 What's Changed / 版本变更说明
Added
-
Recent Projects List in New Session Menu:
- Added a divider line and a list of the 10 most recently opened projects below "Open Project Folder..." and "New Session (No Project)" in the TabBar
+dropdown menu. - Displays project folder icon, project directory name, and truncated path with full path on hover tooltip.
- Clicking a recent project switches directly to its existing tab if already opened, or opens a new session tab for that folder if not currently open.
- Real-time project tracking: automatically saves project folders opened via the folder picker dialog or
openSession(cwd). - Asynchronous background synchronization: merges and backfills historical project directories discovered in saved sessions on disk (
~/.omp/agent/sessions/). - Standalone session filtering & auto-purge: filters out "no project" sessions so internal dev build directories (e.g.
target/debug,target/release) and installation roots (e.g.Program Files/PiDesk) are never listed as projects, and automatically purges any stale entries from local storage. - Backend
get_default_cwdcommand andSavedSession.is_standalonetagging in Rust for cross-layer detection. - Modular frontend architecture in
src/app/recent-projects.jswith path normalization across platforms, persistent caching, and unit tests intest/recent-projects.test.mjs. - Full bilingual i18n support in English and Simplified Chinese (
chrome.tabs.recentProjects,chrome.tabs.noRecentProjects).
- Added a divider line and a list of the 10 most recently opened projects below "Open Project Folder..." and "New Session (No Project)" in the TabBar
-
Review Drawer Full-Width Toggle:
- Added an expand/collapse icon button at the top-left corner of the Code Review drawer header.
- Clicking the button smoothly expands the drawer leftwards to full width (
100%) for spacious split-diff viewing. - Clicking again smoothly collapses the drawer back to its initial default position (
580px). - Graceful drag interaction: dragging the resize handle while in expanded state smoothly transitions into standard width resizing.
- Bilingual tooltips and aria-labels in English and Simplified Chinese (
review.expand,review.collapse).
-
Interactive Code Review Drawer (
/review):- Right-side resizable drawer for inspecting code diffs and conducting human-in-the-loop reviews alongside the active session chat.
- Drag-to-resize handle with boundary clamping (400px to 85vw) and automatic width persistence in
localStorage. - Multi-target diff switching:
- Uncommitted Changes: Staged + unstaged modifications combined with untracked files.
- Branch Comparison: PR-style base branch comparison using
git merge-base. - Specific Commit: Review individual commits from recent repository history.
- Full-featured diff inspection with file tree sidebar, additions/deletions badges (
+x -y), unified and split view toggle, and automatic exclusion of lockfiles, vendor bundles, and build outputs. - Inline line-level annotations: click
+on any code line to attach reviewer comments, questions, or modification requirements. - Direct actions:
- Send to Current Session: Formats a structured review prompt incorporating diff snippets, user focus directives, and line-level annotations directly into the active session.
- Insert into Input: Pastes the formatted review markdown into the composer textarea for manual edits before sending.
- Full environment detection with friendly fallback cards when Git CLI is missing or the current project is not a Git repository.
- Dual triggers: input interception for
/reviewwithout external URL parameters, and direct access via the⌘Kcommand bridge. - Dynamic loading state: replaced static text with an animated motion experience featuring an orbital diff radar scanner, shimmering typography with bouncing pulse dots, and an animated code diff skeleton preview during environment detection and diff fetching.
- Complete bilingual i18n support in English and Simplified Chinese.
- Annotation correctness: notes are keyed per side (
old:<n>/new:<n>), so a removed line and an added line with the same number no longer share a note; the review prompt quotes the annotated code line and labels removed lines. The annotation "Edit" button now actually reopens the editor. - Lockfiles / vendor / build output excluded from the sidebar are no longer inlined into the prompt (the prompt is rebuilt from the displayed files only); SVG diffs are reviewable again; diffs containing Markdown code fences no longer break the prompt block.
- Robust diff parsing: file names containing spaces, renames, octal-escaped UTF-8 paths, and removed lines that look like
---headers are handled correctly. - Git hardening: git runs off the UI thread with a hard 8 MiB read cap, never colours output or runs repo-configured external diff/textconv programs, ignores
diff.noprefix/mnemonicPrefix, diffs from the repo root even when the project is a sub-directory, and supports repositories with no commits yet. Truncated diffs (including skipped untracked files) now show a warning and are flagged in the prompt. - Reliability: superseded diff requests are discarded (no stale diff after quickly switching targets), the drawer reloads when you switch tabs, Esc inside an annotation only cancels the edit, and "Insert into Input" now really updates the composer (and keeps the drawer open if the composer is unavailable).
/review <focus text>pre-fills the review focus field; "Send to Current Session" steers the running turn instead of failing while the agent is busy.- Drawer width is clamped to 85% of the viewport on load and resize; collapsing restores your previous width; annotation storage is bounded (LRU of 40 diffs) and hashes the whole diff.
Fixed
- Resuming "no project" history sessions: Saved sessions recorded with the executable directory (e.g.
target/debug) as cwd are now resumed as standalone tabs (no project folder / file tree / git watch) and the backend pins the current default cwd, instead of being reopened as a project pointing at the debug directory.
Changed
- Compact Tool Card Typography:
- Scaled down the font hierarchy of in-session tool invocation cards by one notch for better visual hierarchy and readability.
- Primary tool content (header text, title, bash command output, search preview rows, eval code/output, diff bodies, compact summary bodies, footers) scaled from
--d-text-sm(~13px) to--d-text-xs(~12px). - Secondary metadata & badges (tool type tags, status/duration chips, diff line-number gutters, diff headers, scrub bar trackers, eval language headers, subagent task agent tags, stream lines) scaled from
--d-text-xs(~12px) to a newly defined--d-text-xxs(~11px) scale. - Added
--d-text-xxssupport across all UI density modes (cozy,compact, anddense) insrc/design/styles.css.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.
PiDesk v0.3.3
PiDesk v0.3.3
🚀 What's Changed / 版本变更说明
Added
- Dynamic Thinking Levels & Model Reasoning Configuration:
- Support configuring custom thinking effort level sequences per model in
models.yml(e.g. OpenAI 3 levels, Claude 6 levels, DeepSeek dual levelslow, high, or arbitrary sequences). - Recommended presets in Model Manager modal for rapid configuration (OpenAI, Claude, DeepSeek) alongside default thinking level selection.
- Model card chip indicators in Model Manager showing configured thinking effort counts and details.
- Dynamic runtime thinking level cycling based on the current model's supported levels queried via
get_available_thinking_levelsRPC ormodels.ymlconfiguration. - Automatic isolation and fallback: switching to non-reasoning models automatically resets thinking mode to
offpreventing cross-model pollution; unsupported models render the thinking pill disabled with descriptive tooltip. - Real-time synchronization with upstream
thinking_level_changedbackend RPC events. - Complete bilingual i18n support in English and Chinese across all model configuration controls and tooltips.
- Support configuring custom thinking effort level sequences per model in
Fixed
- Instant Hot-Reload for Custom Model Thinking Levels: Fixed an issue where editing a model's thinking effort sequence in Model Manager (e.g. from default to
low, medium, high) did not take effect immediately and still cycled through stale levels (such asxhigh) until app restart. Thinking level cycling is now determined client-side based on the active model's configured efforts, with automatic sanitization of backend events and instantaneous model parameter synchronization upon saving.
📦 Installation Guide / 安装指南
🍎 macOS
- Homebrew (Recommended / 推荐):
Automatically bypasses Gatekeeper quarantine, no extra command needed.
brew install --cask raiderwang/tap/pidesk
- Manual DMG (.dmg):
Download.dmg(aarch64for Apple Silicon,x64for Intel).
If macOS says "PiDesk is damaged and can't be opened"(提示已损坏), run this command in terminal to clear the quarantine attribute:xattr -cr /Applications/PiDesk.app
🪟 Windows
- Download
.msi(recommended) or.exeinstaller. - If Windows SmartScreen prompts on launch, click More info → Run anyway(点击“更多信息” → “仍要运行”).
🐧 Linux
- Download
.AppImageor.deb.
⚙️ Requirements
- oh-my-pi (
omp) must be installed and available on yourPATH.