Skip to content

Releases: RaiderWang/pidesk

PiDesk v0.4.8

Choose a tag to compare

@github-actions github-actions released this 21 Oct 02:52

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 nextInitialName and normalizePath helpers in src/app/session-title.js, auto-numbering initial project tabs (<folder>, <folder> (2), <folder> (3)) without bloating src/live.js while recycling freed indices upon closing tabs.
    • Enhanced SessionTitle.isInitialSessionName and nextTitle to 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.
  • 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 SessionTitle module (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 unified folderName path 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 .tabs overflow: visible to prevent clipping the + dropdown menu.
    • Added native title tooltips to tabs and window chrome, showing full conversation titles and directory paths on hover.
    • Hardened title formatting and event dispatch: factored out SessionTitle.nextTitle pure logic, ignored slash commands (/plan, /compact, /review) and file-only mentions so they never lock titles prematurely, verified and matched session_info_update by savedSessionId from omp RPC, and guarded established titles (titleLocked: true) against subsequent prompt overwrites.
    • Improved standalone tab numbering to recycle unassigned PiDesk slots when existing tabs are custom-titled.
    • Updated File Tree panel header (displayName) via SessionTitle.resolveFolderTitle to prioritize folder name over generic project labels (standalone sessions display workspace).
    • Cleaned up duplicate .tabs-right CSS rules, consolidating flex-shrink: 0 into the main rule.

Documentation

  • Redesigned README showcase and screenshot assets: overhaul feature matrix in README.md and README.zh-CN.md with an 8-pillar visual architecture (Activity Bar workspace, context-aware @ chips & Undo, /review drawer, 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 / 推荐):
    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.

🔒 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 09:16

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 PATH entries (e.g. ~\.bun\bin where omp lives) and possibly another profile's USERPROFILE / LOCALAPPDATA. It could never find omp.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 user PATH entries 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 bare omp.exe lookup fails. When a repair happens, the before/after values are logged to stderr.

📦 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.

🔒 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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 07:13

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 under Program 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 as Default (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-ui capability probe (omp --help) is also no longer cached when omp couldn't be run or --help failed, so a briefly missing or half-installed omp no longer pins the app to plain rpc mode 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 shared NoticeBubble helper. The "model switch failed" text is now localised. Also fixes a ReferenceError when Retry itself failed to spawn omp. Client-side notice bubbles are now tagged (notice: true) so they no longer get dropped by the get_messages merge, 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 / 推荐):
    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.

🔒 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

Choose a tag to compare

@github-actions github-actions released this 17 Oct 12:54

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 @path chip (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 @path no 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-format and 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 /review carries 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-deep hover states via color-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 under daylight / 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 / 推荐):
    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.

🔒 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

Choose a tag to compare

@github-actions github-actions released this 16 Oct 02:13

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 the TAURI_SIGNING_PRIVATE_KEY / TAURI_SIGNING_PRIVATE_KEY_PASSWORD repo secrets (the matching public key is already in plugins.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 — see MANUAL.md → "In-app updates". Versions before the first updater-enabled release must be upgraded manually once.

📦 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.

🔒 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

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.

PiDesk v0.4.2

Choose a tag to compare

@github-actions github-actions released this 15 Oct 01:59

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) and Plan tabs. Stage columns are generated by app/dock-layout.js; below 900 px the file tree and dock auto-hide. Dock/file-tree state persists in pidesk:dock-state (legacy pidesk: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 @path into 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 Modal shell (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+J and 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.jsx split into design/chrome/*, panels.jsx into design/plan/*, CommandBridge moved to design/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), so Ctrl+H/M/B/J/O/T no longer act behind it; History no longer resumes a session when Enter was 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 focus when the dock is closed so rail can reopen it; the @ file index discards results from a project you already left; removed a duplicate Ctrl+K handler in the composer; plan "ask" label and rail "session"/"minimap" titles are translated.

📦 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.

PiDesk v0.4.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 07:39

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 in src-tauri/src/main_window.rs.

📦 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.

PiDesk v0.4.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 07:26

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_cwd command and SavedSession.is_standalone tagging in Rust for cross-layer detection.
    • Modular frontend architecture in src/app/recent-projects.js with path normalization across platforms, persistent caching, and unit tests in test/recent-projects.test.mjs.
    • Full bilingual i18n support in English and Simplified Chinese (chrome.tabs.recentProjects, chrome.tabs.noRecentProjects).
  • 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 /review without external URL parameters, and direct access via the ⌘K command 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-xxs support across all UI density modes (cozy, compact, and dense) in src/design/styles.css.

📦 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.

PiDesk v0.3.3

Choose a tag to compare

@github-actions github-actions released this 09 Oct 01:38

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 levels low, 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_levels RPC or models.yml configuration.
    • Automatic isolation and fallback: switching to non-reasoning models automatically resets thinking mode to off preventing cross-model pollution; unsupported models render the thinking pill disabled with descriptive tooltip.
    • Real-time synchronization with upstream thinking_level_changed backend RPC events.
    • Complete bilingual i18n support in English and Chinese across all model configuration controls and tooltips.

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 as xhigh) 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 / 推荐):
    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.