Skip to content

PiDesk v0.4.3

Choose a tag to compare

@github-actions github-actions released this 15 Oct 09:49

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 in design/chat/welcome-card.jsx and 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 โ€” branch would cancel them). After a confirmation the conversation is rolled back to just before that message via omp's native branch RPC โ€” 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 in app/undo-message.js (tail-aligned entry lookup with text verification โ€” never guesses), undo-bridge.js and design/composer-restore.jsx. Known limitation: a message that omp rewrote before saving (expanded slash command / prompt template / @model mention) 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). The Esc entry was dropped from the shortcut hint bar (Esc still closes the bar / aborts a running reply) and its quickbar.hint.close i18n 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_session now removes only the target .jsonl session 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 (new branch.fail.* strings, EN/ZH) instead of silently copying the whole session; an unknown entry id is an error in copy_session_file (now in src-tauri/src/session_copy.rs).
  • Message list reconciliation on tab switch/ready: get_messages is 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 / ๆŽจ่):
    brew install --cask raiderwang/tap/pidesk
    Automatically bypasses Gatekeeper quarantine, no extra command needed.
  • Manual DMG (.dmg):
    Download .dmg (aarch64 for Apple Silicon, x64 for 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 .exe installer.
  • If Windows SmartScreen prompts on launch, click More info โ†’ Run anyway๏ผˆ็‚นๅ‡ปโ€œๆ›ดๅคšไฟกๆฏโ€ โ†’ โ€œไป่ฆ่ฟ่กŒโ€๏ผ‰.

๐Ÿง Linux

  • Download .AppImage or .deb.

โš™๏ธ Requirements

  • oh-my-pi (omp) must be installed and available on your PATH.