Skip to content

Releases: demo007x/Magpie

拾趣 Magpie v0.1.15

Choose a tag to compare

@github-actions github-actions released this 17 Oct 13:46
  • Windows: the main window no longer stays on "Loading�" forever. App windows are now created only after all shared state is ready, so very early settings requests (WebView2 can serve pages faster than the backend finishes startup) can no longer fail; the settings page also retries a failed load instead of swallowing it.
  • Windows 11: quickly dragging the result window larger no longer flashes a see-through white area while the new region catches up � the uncovered area now shows the card background immediately, following the light/dark theme.

拾趣 Magpie v0.1.14

Choose a tag to compare

@github-actions github-actions released this 16 Oct 11:22

Added

  • Windows release: Magpie now publishes Windows x64 installers (NSIS setup.exe and MSI) � Windows 10+ (x64). Selection capture runs on UI Automation (WH_MOUSE_LL hook): no system-permission prompts, no clipboard use; apps running as administrator are excluded by the UIPI boundary. OCR capture is a snap-overlay flow with on-device Windows.Media.Ocr � the same helper-subprocess isolation as macOS, so a recognition crash never takes the app down.
  • Windows floating bar adopts the one-card-per-window layout: the capsule, the overflow panel and the submenus are each a native top-level card with its own DWM shadow and rounded corners (Win11), with real gaps between cards. Clicks in the gaps fall through to the app underneath instead of being swallowed by an invisible zone.
  • Per-provider thinking-mode toggle (off by default) in model services. The thinking parameter of each vendor (DeepSeek, Zhipu, Doubao, Qwen/DashScope, SiliconFlow, OpenAI, xAI, OpenRouter) is injected based on the service URL; unknown endpoints are left untouched so they keep working unchanged.
  • Update notifications are clickable: the new-version toast now opens the release's download page in your browser when clicked, then dismisses itself. Link toasts stay for 8 seconds (twice the usual) so there's time to reach for them; hover lifts the card and tints it with the accent color as a click affordance.

Changed

  • Removed hover tooltips across the floating bar, its panels and the result window: the native tooltips flashed distractingly during quick actions. Icon-only buttons keep accessible labels (aria-label) instead.
  • Fresh installs no longer preset app-blacklist entries (1Password / Passwords); the blacklist starts empty on every platform.
  • Using a translate service whose credentials are not configured yet now shows a clear hint about what to set up (default model for AI translation, APPID and key for Baidu, key for DeepL) instead of surfacing the upstream API error.

Fixed

  • Clicking links in the result window (e.g. URLs inside a translated text) now opens them in the system browser instead of navigating the result window away to the third-party page.

拾趣 Magpie v0.1.13

Choose a tag to compare

@github-actions github-actions released this 12 Oct 00:25

Changed

  • 「存入 Obsidian」action renamed to「Obsidian」.

Fixed

  • Dragging a tab or any control (toolbar, bookmarks, file tree, list rows) no longer pops the capsule with a leftover selection.
  • Text selection in webview panels (VSCode AI sidebar, markdown preview) is captured reliably again.
  • Dragging the result window's resize handle no longer crashes the app.
  • The ⌘C compatibility fallback no longer destroys clipboard images (e.g. paste-screenshots).
  • Turning every action off no longer pops an empty capsule.

拾趣 Magpie v0.1.12

Choose a tag to compare

@github-actions github-actions released this 09 Oct 05:43

Added

  • Finder image-pick OCR (访达选图取字): a new tray item and a global hotkey (⌥F by default) let you pick an image file — photos received in chats, screenshots saved earlier — and recognize its text through the same on-device pipeline as screen OCR. Results land in the same panel, so copy, translate, explain, summarize and pinning all work; a temp copy is pinned instead of your original file.

  • The tray menu gains a GitHub repository entry.

Fixed

  • A class of gestures no longer misfire as text selection. Each of these ran the full capture pipeline and ended up capturing unrelated content, because the gesture is shape-identical to drag-selection and the ⌘C fallback grabbed whatever the app put on the clipboard:

    • selecting a URL like http://localhost:4173 in a terminal offered "copy verification code" — the port digits — instead of "open link";
    • dragging the scrollbar or the file tree in VSCode popped the capsule with the line under the cursor (an empty-selection ⌘C copies the current line);
    • dragging or double-clicking files in Finder popped the capsule with the file name.

    Each case is now intercepted before the capture chain runs; normal selection everywhere is unaffected.

拾趣 Magpie v0.1.11

Choose a tag to compare

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

Added

  • Launch at login: a new 启动 section in the general settings page toggles automatic launch at login (LaunchAgent-based, applied immediately and persisted). The settings page hosting it was also reorganized: 外观 is now 通用 and holds theme, launch, Dock-icon visibility (moved out of the About page) and the result-window size presets; the About page now focuses on version info and update checks. Nav labels were unified (模型 / 提示词 / 搜索 / 黑名单).

Changed

  • Result window presets redesigned into two orientations × two sizes: 紧凑·横 560×320, 紧凑·竖 400×560, 宽敞·横 560×480, and 宽敞·竖 480×800 (height at the maximum) — replacing v0.1.9's four all-landscape presets so portrait reading (Q&A, chat-style flows, long summaries) and landscape reading each get a compact and a roomy option. Picking one applies to the open result window immediately and persists as the remembered size; dragging still works and simply stops highlighting a preset once the size diverges.

Fixed

  • First OCR after a macOS update could block for ~14 seconds: macOS 26+ ships Chinese recognition models as on-demand assets — the first Chinese recognition after a system update stalls waiting for the model download (measured 13.9s at 16% CPU, i.e. pure network wait), after which recognition is system-cached and fast. The app now runs a tiny built-in Chinese-text OCR in the background at startup, absorbing the model load outside any interactive flow; on older macOS versions where models are built in, the warm-up is a sub-second no-op.

拾趣 Magpie v0.1.10

Choose a tag to compare

@github-actions github-actions released this 03 Oct 11:09

拾趣 Magpie 0.1.10

拾趣 Magpie v0.1.9

Choose a tag to compare

@github-actions github-actions released this 03 Oct 11:07

Added

  • Result window size presets: the appearance page gains a 结果窗口 section with four default sizes for the result window — 紧凑 420×340 (the out-of-box default), 标准 560×420, 宽敞 560×640, and 长文 560×800 (the maximum, suited to long summaries and OCR transcripts). Picking one applies to the open result window immediately and persists as the remembered size; dragging the window's resize handles still works and simply stops highlighting a preset once the size diverges.

  • Save to Obsidian: a new 存入 Obsidian action appends the selection into your vault, with three targets under its ⌄ menu — 笔记 (the daily note, via the excerpt template), 任务 (a checkbox line written to the task file, or the daily note when unset; a date recognized in the selection fills the {due} field, and {dueTag} collapses to nothing when there is none), and 卡片 (one file per card in the cards folder, named after the selection's first line, ≤20 chars). A dedicated Obsidian settings page hosts the integration: pick a vault folder once, optionally a subfolder and filename format for daily notes (compatible with the Obsidian Daily Notes plugin), plus editable excerpt/task/card templates with {time} / {source} / {text} / {date} / {due} / {dueTag} placeholders — the action then appends a markdown blockquote (multi-line selections keep their line structure) to the daily note, creating the file and folder on first use. Appears on the capsule and in the result window once a vault is configured (the result window prefers the AI answer over the raw text when one is present), and can be toggled per-action in settings. Entirely local file writes — no plugin, no network.

Changed

  • Model providers collapse into summary cards: each provider on the 模型服务 page was a permanently expanded form — with several providers the page became a wall of inputs. Providers now render as collapsed cards (name + model + a 默认 badge) in the same accordion style as the Prompt page; the edit fields and the default/delete controls expand on click, one card at a time, and a freshly added provider opens immediately for editing.
  • Settings sidebar renamed for consistency: nav labels mixed styles (模型服务 / Prompt 设置 / 禁用应用 …). They now use the shortest consistent nouns — 模型, 提示词, 搜索, 黑名单 (matching the README's 应用黑名单 wording) — with brand names kept as-is (Obsidian); page headings keep their full descriptive names while "Prompt 设置" also became 提示词 to match its nav entry.
  • Overflow actions open as an anchored menu: the ⌃N overflow panel was a detached card built from the same capsule chrome — side by side, the two read as equal sibling toolbars rather than a tool and what it expanded. It is now a vertical menu: darker background one step below the capsule, hairline border, full-width rows with the channel switch (⌄) pinned to each row's end, capped height with internal scrolling, and the ⌃N trigger stays lit while open. The channel/engine flyout now springs from the row's side (flipping left against the screen edge) instead of cascading below the panel.

Fixed

  • Capsule clipped on the right when an entity action appeared: date/place detection is deliberately deferred a few dozen milliseconds so the capsule pops instantly and context actions (加入日历 / 打开地图 / …) pop in as they resolve — but the window was only sized at first show, so a late-arriving context button widened the bar past the window edge, visually cutting off the last action and the overflow trigger (intermittent, only for selections containing entities). Entity results are now layout dependencies: the window re-measures and grows the moment they land.
  • Capsule could land underneath the Dock: edge clamping used the full display frame, so selecting text near the screen edge (with the Dock on the right) pushed the capsule partly under the Dock — which is always on top and unclickable — leaving trailing actions unreachable. Clamping now uses the screen's visible frame (excluding the menu bar and the Dock), for the capsule, the drag paths, and the OCR window alike.
  • Crash when selecting text inside Magpie's own windows: with the caret in a main-window input, a selection gesture crashed the app. The capture thread's accessibility query walked into the focused WKWebView's accessibility tree, and WebKit intentionally aborts when that main-thread-only API is touched from a background thread (EXC_BREAKPOINT). The existing own-process filter ran only after the query — too late. Detection now bails out before any AX query when the focused application is Magpie itself (this also skips the Safari fallback and the compatibility-mode ⌘C, which made no sense for own windows). Follow-up hardening: focus can flip to Magpie mid-query (e.g. the user clicks the capsule while the compatibility-mode fallback is still polling, ~750ms), so the ownership check now sits on the AX element handle itself — right before any subtree walk or the cursor-position lookup — closing the check-to-query race window entirely.
  • Save to Obsidian failed silently when unconfigured: the capsule showed 存入 Obsidian even without a vault (only the result window filtered it), and its "not configured" feedback was a button-label flash inside the overflow panel — which the click itself closed first, so nothing was ever seen. The action now appears on the capsule only once a vault is configured (matching the settings page), and its outcomes (saved / failed / not configured) surface as global toasts that survive the panel closing.

拾趣 Magpie v0.1.8

Choose a tag to compare

@github-actions github-actions released this 28 Sep 12:18

Changed

  • Floating surfaces visual refresh: the floating bar and result window now carry the native macOS window shadow (replacing in-webview CSS shadows that were capped by the window bleed), a 0.5px hairline border — the system hairline spec, half the previous weight — with tuned contrast for light/dark, and action separators with a dedicated color that render continuously instead of occasionally breaking or fading.
  • Context actions lead the capsule: 提取信息 and single-entity actions (加入日历 / 复制验证码 / …) now appear at the front of the capsule as an additive dynamic layer — they no longer consume the configured capsule slot count, push resident actions into the overflow, or hide 搜索. A full 8-slot capsule shows 9 buttons when the selection matches an entity, and the context button is always the first, most relevant click.
  • Default blocklist slimmed: the out-of-the-box 禁用应用 list is now just 1Password / Passwords — Terminal and iTerm are no longer preset. Existing settings files are unaffected (stored values always win over code defaults).

Fixed

  • Capsule hover needed a first click: the floating bar and result windows are non-activating (never-key) windows — macOS doesn't deliver mouse-moved events to them, and WebKit only renders :hover for active pages, so action hover did nothing until some click woke things up. Fixed by feeding the global mouse position from the existing event tap to the frontends (only while the capsule or result window is visible, ~60 Hz) and synthesizing hover on the action under the cursor, in both the capsule and the result-window footer — feedback the moment the cursor arrives, no click, no focus.
  • Capsule hairline rendered unevenly: window positions are now snapped to the physical pixel grid, so the 0.5px hairline lands crisply on every edge — previously the top and bottom edges could mismatch (one crisp, one blurred) depending on where the capsule popped.

拾趣 Magpie v0.1.7

Choose a tag to compare

@github-actions github-actions released this 25 Sep 12:41

Added

  • Scene exit actions: Add to Calendar & Open in Maps — select a sentence with a date ("周四下午3点开会") and a calendar button appears on the capsule, prefilling a new event in the system Calendar; select a place ("国贸B座" / "北京天安门") and a maps button opens the native Maps app. Dates use Apple's NSDataDetector (offline, deterministic, handles Chinese relative dates); places use Apple's NaturalLanguage named-entity recognition (NLTagger placeName, offline on-device) — precision-first: junk like bare type words ("校区/园区") and sentence fragments are never surfaced, and missed detections simply mean no button. Both live in the existing entity-extraction framework (single entity → direct capsule button; multiple → the extract panel with per-row actions) and can be toggled per-action in settings. Zero AI APIs, zero external services, zero new permissions.
  • Custom action icons: pick a lucide icon (36 presets in 5 groups) when creating or editing a custom action, so your own actions no longer all share the sparkle. The choice shows on the capsule, the overflow panel, and the OCR result window; unset falls back to the default. Stored as the icon name in settings — older configs without the field keep working.

Changed

  • Custom action editing moves into a dialog: the settings list row no longer expands inline — a pencil button opens a dialog containing the name, prompt, icon picker (grouped), the try-run panel, and delete with an inline confirm step. Writing a prompt, testing it, and tweaking it now happens in one place instead of jumping between the row and a separate dialog.
  • Adaptive selection debounce: drag-selection now waits only 30ms before the accessibility query (the selection is already final on mouse-up), while double/triple-click keeps the configurable 200ms wait (the app computes the selection after mouse-up). Perceived capsule latency drops from ~250ms to ~80ms on drag.
  • Capsule placement: the floating bar now always appears centered above the mouse cursor (16px card gap, flipping below near the screen top), replacing both the old bottom-right anchoring and an experimental selection-anchored variant — Chromium/Electron apps don't expose selection geometry, so one consistent anchor won out (ADR-06).
  • OCR source text typography: the recognized-source area now shares the result area's reading metrics (13px / 1.8 line height / letter spacing) in a neutral gray-blue, with a left quote bar marking it as source and a faint hover tint hinting that the text is editable in place; the collapsed three-line fold height was re-derived for the new metrics.

Fixed

  • Range-fallback text capture never worked: the AXValue type constant for CFRange was wrong (3 = CGRect instead of 4), so the "AXSelectedTextRange + AXStringForRange" fallback (needed by WeChat and other Qt-drawn text views) silently failed on every attempt and slid into clipboard compatibility mode. Now functional.
  • Result-window title ignored the running action: a 识图总结 (⌃⇧D) session showed the generic 识图取字 title. The title (and icon) now follows the current action — 识图翻译 / 识图解释 / 识图总结 — while pure text recognition keeps 识图取字.
  • Dev-only double event handling: event listeners registered in the React effect could leak across StrictMode remounts (cleanup ran before listen() resolved), making every selection event be handled twice in dev builds.

拾趣 Magpie v0.1.6

Choose a tag to compare

@github-actions github-actions released this 21 Sep 08:56

Added

  • Custom actions: create your own capsule actions (name + prompt, up to 10). They sit alongside the built-ins in the same reorderable list, and each one has a 试跑 panel that sends your sample text through the default model so you can check the prompt before using it.
  • Prompt 设置 page: edit the instructions behind 翻译 / 解释 / 总结. What the editor shows is exactly what gets sent; the selected text follows as content. Edited actions are marked, and the default can be restored.
  • Capsule action count: choose how many actions the capsule shows at once (2–8, default 4). The rest fold into a ˅ menu instead of squeezing the bar.
  • Update checks: a new GitHub release is checked once a day and on demand from 设置 › 关于, with a menu-bar toast when one is found. The app never updates itself — 下载 opens the release page in your browser. Checks only read public release info and send no local data.
  • Esc closes the capsule while it is visible.
  • Delete confirmations for model services and custom actions, so an API key or a written prompt cannot disappear with one mis-click.

Changed

  • Settings pages restructured: 划词 is now three cards — 胶囊 (action count) / 动作 / 提取信息 — because 打开链接 / 写邮件 / 复制号码 / 复制验证码 only appear when the selection contains a URL, e-mail, phone number or code, so their relative order is meaningless. The custom-action try-run moved into a modal, which frees most of the row height.
  • All settings copy rewritten to say what the page edits and how, in one product register instead of feature introductions; each page now states honestly whether a change reaches the capsule live or needs 保存更改.
  • Delete buttons unified across model services, custom actions, search engines and disabled apps: one borderless icon button that turns red on hover.
  • 保存更改 pinned to the bottom of the window on every page, so long lists don't end at the bottom edge.
  • Pinning is now your preference: a new result no longer re-pins the panel, so Esc and clicking away close it once you un-pin. Pinned or still-generating panels ignore the close.
  • Capsule and result panel surface: dropped the frosted-glass material for a solid card with a hairline border and a CSS shadow; result panels can split into separate cards.
  • 试跑 input: the sample text is now something you paste in, replacing a fixed example sentence that the model sometimes answered as if it were a translation request.

Fixed

  • Buttons that silently did nothing: window.alert / confirm are no-ops in the embedded web view, so validation reminders never appeared and custom actions could not be deleted at all. Reminders now go through the global toast, confirmations through a modal.
  • Icon and label misaligned inside buttons such as 删除.