Repository navigation
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.