github ganeshmshetty/openclip v1.6.0

4 hours ago

First signed & notarized release

  • This is the first OpenClip release that is genuinely signed, hardened, and notarized. The v1.5.0 notes announced this, but that work landed after the tag — every build before this one was ad-hoc signed, which cannot be notarized, so Gatekeeper refused it on every Mac but the one that built it.
  • Upgrading from an ad-hoc build needs the Accessibility permission re-granted one last time. An ad-hoc signature identifies an app by a per-build hash, so macOS treated each update as a brand-new application and dropped the grant. This release signs with a Developer ID certificate keyed to the bundle ID and Team ID instead, so from here on the permission survives updates. The same one-time reset applies to any Input Monitoring or Screen Recording grants.
  • Fresh installs open with no Gatekeeper warning and no quarantine workaround. The app runs under the hardened runtime with a single entitlement (Apple events, for AppleScript actions), and both the app and the disk image are signed, notarized, and stapled.

Highlights

  • A Settings window rebuilt like System Settings: one router, a searchable sidebar, and a real page for every installed extension, built-in action, and custom action. Toolbar switches, inline notices instead of popovers/sheets/alerts, drag-to-group, and a Store you can sort.
  • Ask AI from the palette: a query that matches no action now offers Ask AI: “…” and Save as AI tool. ⏎ (or ⌘1/⌘2) opens the answer in the result card with a diff; ⇧⏎ replaces the selection in place.
  • Refine answers without leaving the card: an inline follow-up field re-runs AI on the current answer, keeps the previous answer visible, carries the session as context, and diffs the net change from your original selection.
  • AI engines: local CLIs and universal local models, with intelligent model resolution, plus standalone Ask AI, Apply to Selection, and improved Office selection retrieval.
  • Duplicate extensions and custom actions, pin result cards, and a Store that sorts by Featured, Name, Downloads, or Recently Added with real publish dates.

Features & Improvements

Settings

  • Rebuilt on stock AppKit controls and one router. The sidebar is a real NSSearchField above a list that filters pages by title and keyword, split into what OpenClip ships and what you installed, with a native back/forward group (⌘[ / ⌘]) and a title that names the current page.
  • A page for everything. Every installed extension gets a page — hero with icon, version, author, and description; a package on/off switch; each command with its own switch and settings; Update when the Store has one; Show in Finder; and an inline-confirmed Remove. AI gets its own page with the engine form and prompt library, and every built-in action opens its own editor page.
  • Customize owns the popup bar only. Drag rows to reorder, or drop one action onto another to group them the way Home-screen icons group. An extension's commands reorder within their own group and cannot be dragged out of their package. A group that loses its last member is removed.
  • One row shape everywhere — switch, icon and name that opens the action's page, alias, hotkey, and chevron — so the Shortcuts table, an extension's commands, and Custom Actions line up and behave identically instead of drifting apart.
  • The sidebar reads by colour: OpenClip's own pages are neutral chrome, everything the app ships is the brand blue, and each third-party extension keeps a colour derived from its identifier that can never collide with the brand.
  • No popovers, sheets, or alerts: action and group editors, the icon chooser, new action/group, AI prompts, and Add Application are pages in the same column, kept mounted so a draft survives drilling in, and failures surface as an inline notice.
  • Store gets a sort menu (Featured / Name / Downloads / Recently Added), a publish date beside each row's download count, offline and update states, a no-cache Refresh, and Install from File….

AI

  • Ask AI from the search palette: a palette query that matches no action now offers Ask AI: “…” and Save as AI tool instead of the "No matches" dead end. ⏎ (or ⌘1/⌘2) shows the answer in the result card with a diff; ⇧⏎ replaces the selection in place the moment the answer lands (copied instead when the app can't paste). Ask AI generates a concise task title (<title>) instead of showing the full prompt. Save as AI tool generates a clean reusable action name (<tool_name>) and saves it as a custom AI action — searchable in the palette, in the AI Tools bar and editable under Preferences › AI › Actions.
  • Refine AI answers in the result card: the card features an inline follow-up field on the left of Copy and Paste. The card dynamically expands its width to fit both the field and the action buttons up to a maximum limit. When typing a follow-up, Copy and Paste smoothly collapse and the input field expands to the right with an up-arrow send button. ⏎ (or clicking the up arrow) runs AI on the current answer. The card stays put while it refines: the previous answer stays visible under a spinner in the field, the new answer streams into the same card and settles with a diff comparing the original selection with the latest answer, and Esc cancels refinement or clears input. Each follow-up carries session history as context so the model keeps intent, tone, and language consistent.
  • CLI tools, universal local models, and intelligent model resolution (#91): run AI through local command-line tools, use a local model on any hardware, and let OpenClip resolve the right model for you. Legacy Ollama settings migrate automatically, and CLI probes time out instead of hanging.
  • Standalone Ask AI and Apply to Selection, plus improved Office selection retrieval.
  • Clearer AI rows and one identity: the palette's AI fallback rows now read Rewrite Selection / Ask a Question / Save as AI Tool and share the app's AI glyph.

Result card, actions & extensions

  • Duplicate extensions and custom actions, with Duplicate moved off the outline into the action's own page.
  • Result card polish: a pin button, Copy and Paste hidden (with ⌘C a no-op) while an answer streams, and a frozen size during refinement so a long answer scrolls instead of jumping the card.
  • Selection engine extracted into the standalone OpenSelection package (0.1.1).

Security & Distribution

  • Inside-out signing, notarization, and artifact verification (#82 by @Meldiron): packaging no longer runs codesign --deep, which re-signs outside-in and strips the hardened runtime and entitlements. The app is signed deepest-first, notarized, and stapled; the DMG is signed, notarized, and stapled on its own; and the pipeline verifies the app as it comes out of both the zip and the mounted image, failing if the artifact is not distributable.

Fixes & Stability

  • A single-command extension page no longer renders an empty card, and the actions hint reads in the singular.
  • The hero scrolls with the page instead of staying pinned under the toolbar.
  • No title-bar hairline on any page, and no sidebar footer buttons sitting on the rows.
  • The sidebar search field has its own strip instead of overlaying the list.
  • The page switch sits bare in the title bar and no longer stretches to the toolbar's height.
  • The Store's sort control lives in the page so the toolbar stops overflowing.
  • A follow-up keeps the field focused so Esc can cancel, and a refinement never re-opens a dismissed card.
  • Store offline states, no-cache refresh, and update detection.

Contributors

  • Matej Bačo (@Meldiron) — Developer ID signing, hardened runtime, and notarization (#82), palette Ask AI (#85), in-place result-card refinement (#89), and the unified Settings window.
  • Ganesh M (@ganeshmshetty) — AI CLI tools, universal local models, and model resolution (#91), and inline extension results (#81).
  • JTOBIN (@binjto-boop) — rebuilding the preferences window on stock AppKit controls (#83).

Don't miss a new openclip release

NewReleases is sending notifications on new releases.