changelognewest first

Uoink release notes.

3.12.0 ships the Whisper transcription model in every download and makes the needs-attention badge say what is wrong. Earlier releases are listed below, with dates from the product changelog.

Uoink home / Uoink facts

v3.12.0: Whisper in every download and clearer health badges

Every download now ships Whisper's base transcription model, so a fresh install transcribes a video that has no captions from the first capture, with no download step. The Windows installer and the Mac preview carry OpenAI Whisper's base model (MIT) in SYSTRAN's faster-whisper conversion, pinned to one Hugging Face revision and SHA-256 checked when Uoink is built. A model you downloaded yourself still takes precedence, and the other sizes (tiny, small, medium and large) still download only when you ask. Uoink never downloads a model during a capture. Podcast transcription uses the same copy.

The needs-attention badge names the problem, such as No transcript, Comments failed or 2 issues. Click it for a drawer that says why for each item and offers Re-uoink, which refreshes the item in place. When a model really is missing, the drawer's link opens Settings at the transcription-model control.

Health checks count only what a source can have. Web pages, X and Reddit text posts and images are no longer flagged for a missing transcript, screenshots or comments, and comments the uploader turned off no longer count as missing. X and Reddit posts with a video keep their transcript and screenshot checks. Existing items are corrected the next time the Library loads, with no re-capture. A row reads Done only when nothing is outstanding; a row with a badge reads Saved.

Videos with nothing to transcribe are not problems. A video with no audio reads “no audio”, and one where Whisper heard no speech, such as music or silence, reads Done · no speech found. Video posts on X and Reddit say how their transcript came out, such as “transcript by Whisper” or “no captions”.

A page the site allowlist turned away gets Allow <site> on its Library row. One click adds the site and saves the page. In Settings, Enter adds a site to “Sites Uoink works on”, and a pasted link saves its host instead of the whole URL.

Settings > App > Appearance offers Match Windows (Match system on a Mac), Light or Dark. The Uoink window and a browser tab agree, and the page opens in the chosen theme with no flash. While you read an item, the Back row stays at the top as you scroll, Esc closes the reader, and Back returns to the same place in the Library.

Screenshots are taken at the times their labels say. Each one used to be half an interval late, and a clip shorter than half the interval got none, so re-capturing a short X clip failed. Short clips now get a screenshot.

The dashboard and setup splash are fetched fresh on every load, so a tab left open across an upgrade shows the new version. From a source checkout, ./uoink status, ./uoink tools and the other agent subcommands run the agent CLI instead of starting the helper.

The MCP server still exposes 91 tools, or 35 with UOINK_MCP_TOOLSET=core. Because both carry the Whisper base model, the Windows installer is about 519 MB (390 MB in 3.11.2) and the Mac preview DMG about 709 MB (580 MB). The Windows installer is still unsigned, so SmartScreen warns. The Mac build is still a preview for Apple Silicon on macOS 15 or later.

What was tested for 3.12.0

Agent Install 30 tested the installed 3.12.0 build in an isolated profile: 21/21 PASS. The Whisper base model came with the install: with an empty Hugging Face cache and downloads blocked, a caption-less X video was transcribed locally, and nothing went to huggingface.co. A music-only X video read Done · no speech found. Stdio listed 91 full / 35 core / 91 modern tools, and Claude Code 2.1.314 (haiku) connected with 91 tools and called get_schema_version. YouTube captures saved English captions, a short X clip got its screenshot, and an in-place upgrade over 3.11.2 kept the library byte-identical. Codex CLI was not re-tested.

On Windows, reload the browser extension once after updating; Claude Desktop users should reinstall the 3.12.0 bundle and restart Desktop. On a Mac, quit Uoink and close MCP clients before replacing the app.

v3.11.2: Mac preview and steadier saves

Uoink now has a Mac preview for Apple Silicon on macOS 15 or later. Download Uoink-3.12.0-macos-arm64.dmg, drag Uoink to Applications, eject the disk and open it. The app and the DMG are signed with a Developer ID and notarized by Apple, with tickets stapled, so Uoink opens after macOS's standard "downloaded from the internet" prompt with no security override. Intel Macs are not supported. See the Mac install steps.

On a Mac, the dashboard's Get the extension card shows the extension folder, and Open extension folder reveals it in Finder and copies the path. Chrome's Load unpacked picker hides ~/Library, so press ⌘⇧G and paste it. Opening Uoink.app while Uoink is running shows the dashboard, and the dashboard and setup splash open on the display under the pointer. Claude Desktop uses the Mac bundle, uoink-3.12.0-macos.mcpb; other clients use uoink connect <client>.

Not on the Mac yet: Uoink doesn't update itself, and library mirroring is unavailable. A notifier app of Uoink's own is planned for 3.12; until then macOS credits Uoink's alerts to Script Editor.

YouTube captures save their transcript again. In 3.11.0 and 3.11.1 many said “YouTube refused captions”: Uoink also asked for YouTube’s auto-translated caption tracks, which YouTube rate-limits, and one refusal stopped the whole download. Uoink now asks only for the English tracks and prefers uploaded captions. Capture an affected video again and it refreshes in place.

A failed index write no longer wedges the helper. Before, a write that failed, for example on a duplicate folder name during the startup backfill, left its database transaction open, and every later save failed until a restart. Upserts, deletes and the other 22 older write paths now roll back their own failures.

Re-capturing an item saved by an older version refreshes it in place instead of creating a second folder. Duplicate folder names no longer fail the startup backfill; each is skipped with one warning, and uoink doctor lists them. Known items are not re-indexed on each start.

An MCP stdio request over 64 KiB, such as a long uoink_note, is refused with its own request ID, so the client no longer waits forever. Captions longer than the video are cut at the video's end, and YouTube's hard-space and censor markers are cleaned out of transcripts. The supervisor writes the helper's output to helper-output.log as it arrives.

The setup page, dashboard and extension popup know which system they run on and no longer say Windows-only things on a Mac. The extension no longer requests the unused youtu.be, mobile.twitter.com and localhost:5179 host permissions. The setup splash lists Chrome first and detects Comet; when a browser won't open its extensions page from the splash, Uoink copies the address and the steps say to paste it in the address bar.

The MCP server still exposes 91 tools, or 35 with UOINK_MCP_TOOLSET=core. The Windows installer is still unsigned, so SmartScreen warns. The Chrome Web Store listing is not live yet, so the extension still loads unpacked.

On Windows, reload the browser extension once after updating; Claude Desktop users should reinstall the 3.11.2 bundle and restart Desktop.

v3.11.1: Saves that stick and better captures

Caption-less X videos can now get a local Whisper transcript. The fallback previously received a video-only file and always failed. Uoink now checks for audio and downloads the source audio when needed. The fallback needs a Whisper model you have already downloaded in Settings. If the video has no audio, the saved note says No transcript: and explains why.

Built-in Readability-style article extraction keeps headings, lists, quotes, code, simple tables and links. Paywalls, login walls and empty pages are labeled failures. Saved X posts keep quote posts, media descriptors, expanded links and real counts, and disclose whether the text is complete, truncated or unknown.

Fixed 22 helper write paths for tags, claims, style anchors, allowed sites, channels, writing drafts, workspaces and more. These saves could report success, vanish when the helper closed, and leave the library locked for other apps. They now commit when the save succeeds.

A per-user scheduled task restarts the helper after a crash, up to three times in ten minutes. Quit stays quit until the next login or a manual start. Typing 127.0.0.1:5179 in a browser opens the dashboard instead of an error.

Tool and listing descriptions were rewritten. The MCP inventory remains 91 tools over stdio and 91 in the HTTP registry, with 35 in core mode.

What was tested for 3.11.1

Agent Install 27 passed 11/11 checks with the installed 3.11.1 build in an isolated profile: installation; /health at 3.11.1, migration 32; stdio with 91 full, 35 core and 91 modern tools; Claude Code 2.1.310 (haiku) connected with 91 tools and called get_schema_version; usage sharing off with no network sends observed in that check; the bundled ffprobe audio probe; no isolated startup entries; dashboard at 1400 and 1100 pixels wide; clean uninstall; helper writes persisted across a restart; and GET / redirected to /dashboard. Codex CLI was not re-tested in receipt 27. Earlier client results are documented in the 3.11.0 and 3.10.0 release notes.

This release was for Windows 10/11. The Mac preview followed in 3.11.2.

Installing over the previous release keeps your library and saved captures. Reload the browser extension once; Claude Desktop users should reinstall the 3.11.1 bundle and restart Desktop.

v3.11.0: Smarter search and MCP SDK 2.3.0

Search no longer requires every word. It skips common words, matches the words that remain, and ranks sources with every word and exact titles first. In a test of 30 questions over 693 saved sources, keyword search now puts the right source in the top 5 for 24 questions; the old search found it for 10.

Optional semantic search finds passages with similar meaning even when the words differ. Turn it on in Settings under Semantic search. After you accept Google's Gemma terms, Uoink downloads the EmbeddingGemma model once (about 330 MB) and builds its index in the background. It runs on your computer, works offline after setup, and is never bundled with Uoink. In the same test, semantic search found the right source for 27 of 30 questions, and hybrid search, which combines both, found 28. Removing semantic search deletes the model and its index; keyword search keeps working.

Strict matching is still there: choose Exact words in the dashboard, or pass match: "strict" to a search tool. A result includes a quotable passage only when that passage really contains the match. Otherwise passage_verified is false and the result says why.

For agents, search_library, search_uoinks, and search_clips take optional match (forgiving or strict) and mode (auto, keyword, semantic, or hybrid) parameters; find_mentions takes match. Auto uses hybrid when semantic search is ready and keyword search otherwise, and each response says which mode ran. The MCP server still exposes 91 tools, or 35 with UOINK_MCP_TOOLSET=core. Updating rebuilds the local keyword search index once.

The MCP server now runs on the official MCP Python SDK 2.3.0. Claude Desktop, Claude Code, Cursor, and Codex keep connecting as before, and apps that speak the newer 2026-07-28 MCP protocol can connect too. No action is needed. The local HTTP endpoint keeps its existing behavior.

uoink connect recipes and the client tables in Connect your agent now list a Linux location where the client has a Linux setup. Clients without a Linux build say so instead of printing another system's path. Continue is set up by hand; the dashboard now shows it as connected once its config launches this Uoink install. Claude Desktop, Cursor, and Cline also count as connected only when an entry launches this install, so an entry that points at an old or moved install shows Connect, which rewrites it and keeps a backup.

uoink connect --list now has setup recipes for 48 clients and integrations, 10 more than 3.10.0. 45 are checked against each client's official documentation, and each recipe prints its verification status. Most recipes are not yet tested in the client itself.

Anonymous usage counts are off by default. If you turn on Share anonymous usage counts in Settings, Uoink sends at most one report a day: a random install ID and report ID, the app version, your OS family, major version and processor type, the install type, the hours covered, and counts of tool calls (by tool name and by stdio or HTTP), connected AI apps from a fixed list, captures by source type and result, and searches. It never sends content, URLs, titles, file paths, search text, prompts, or API keys. Settings shows the exact report before it is sent. See Privacy for details.

Tested with the installed 3.11.0 build in an isolated profile: Claude Code 2.1.308 listed all 91 tools and called one, and Codex CLI 0.153.4 called two tools.

Installing over the previous release keeps your library and saved captures.

v3.10.0: Use Uoink from any AI agent

The uoink command lets agents search saved sources, read evidence, capture URLs, save notes, and call registry tools from a shell:

uoink search "working memory" --limit 5
uoink recent --limit 10
uoink note "A useful thought" --title "Research note"

Local reads work without the helper running. Capture and paid tools keep their existing gates. The installer leaves Add the uoink command to PATH for AI agents checked by default. Open a new terminal after installing, then run uoink status.

The portable Uoink skill covers Claude Code, Codex, pi, Hermes Agent, and OpenClaw. Find it with uoink skill path or copy it with its references using uoink skill install --to <dir>. The Claude Code plugin marketplace bundles the skill and MCP connection for a default install:

claude plugin marketplace add ryanbiddy/uoink-agent-kit
claude plugin install uoink@uoink

uoink connect --list lists setup recipes for 38 clients and integrations. Run uoink connect <client> for config or instructions and their destination. It does not edit client settings. The dashboard's Add to Cursor and Add to VS Code buttons open the client's review flow.

The MCP server still exposes 91 tools by default. Consent gates are unchanged. There are no data or settings changes besides the optional PATH entry, and no new index or migration. Installing over the previous release keeps your library and saved captures.

Tested on a clean, isolated install: Claude Code 2.1.302 over MCP (all 91 tools listed; a note saved and listed back), Claude Code with the skill and CLI only (skill loaded; uoink note and uoink recent ran), Codex CLI 0.153.4 over MCP (a note saved and listed back), and the CLI's status, note, recent, and connect commands.

The Claude Code plugin loads its skill and starts its MCP server. Its tool calls were not run end to end because the test install is isolated from a normal one. Not yet tested: Gemini CLI and pi (no sign-in on the test machine) and every other recipe in uoink connect.

See agent setup, Connect your agent, and the agent installation steps.

v3.9.3: MCP registry listing and HTTP tool fix

Uoink is now listed in the official MCP registry as io.github.ryanbiddy/uoink. Clients and directories that read the registry can find it.

HTTP MCP now uses the same flattened tool schemas as stdio, so HTTP clients no longer drop Uoink's tools because of their schema shape. The server still checks the exact schema for every call.

Activity reads are faster on large libraries. Median read time fell from 461 to 286 ms at 10,000 items in local runs. This release makes no data or settings changes. Installing over 3.9.2 keeps your library and saved captures.

v3.9.2: Every tool on the standard connection

Every Uoink tool is now available through the standard stdio connection used by Claude Desktop (.mcpb), Claude Code, and Cursor: 91 tools over stdio and 91 in the HTTP registry. Agents can capture pages, X posts, Reddit threads, notes, and images; use writing, script, and workspace tools; and work with sources and the Library queue.

UOINK_MCP_TOOLSET=core keeps the previous 35-tool set for clients that cap tool counts. Full mode is the default and keeps those tools first. Consent gates are unchanged. This release makes no data or settings changes. Installing over 3.9.1 keeps your library and saved captures.

v3.9.1: Writing warnings and reliability

Writing checks now say “canned-phrase warnings”. Voice DNA remains the voice spec’s name. This patch includes reliability and test fixes, with no data or settings changes. Installing over 3.9.0 keeps your library and saved captures.

v3.9.0: Living Library and research

First public release since v3.7.0

The 3.8.x work was not published separately. Clip search and evidence cards join everyday stdio MCP. Standing capture follows YouTube channels, playlists, and podcast RSS feeds; MCP library search, item reads, resource templates, and prompts make the library easier to cite. Cited range export carries speaker labels, chapters, and provenance, with chapter navigation where chapters exist. Captures now show a toast instead of opening Explorer. Entity extraction is opt-in, the Anthropic usage meter reports real usage, and the recall hook is hardened against prompt injection from captured text.

Podcast feeds poll for new episode metadata; audio stays off until you enable Auto-ingest for a feed. Local transcription jobs survive restarts, and completed episodes enter the searchable corpus. Notifications can be silenced and are suppressed during fullscreen use without losing Activity history.

The redesigned dashboard puts search-or-paste in Library and opens saved captures in Reader. Activity shows five steps: details, waiting for YouTube, video, transcript, and screenshots and save. Settings brings preferences into one page and saves individual changes automatically. The extension popup keeps capture at hand, with setup and connection controls available.

Five local research playbooks cover outlier posts, transcript intelligence, comment mining, creator teardowns, and repurposing over your own library. MCP agents can request cited packets without a model or network call. That release had 35 stdio tools and 91 HTTP tools. Optional ScrapeCreators discovery is off by default, uses your own key, and has a default 25-credit daily cap. Paid calls need credit confirmation and a dashboard intent or separately enabled agent discovery.

YouTube caption rate limits no longer fail a capture: Uoink tries local transcription with an already-downloaded model when fallback is enabled, and labels a missing transcript when it cannot produce one. Paced requests and newer yt-dlp improve capture reliability. Waiting, failures, and cancellation remain distinct; a cancellation request is refused once publication has started.

Extension token minting checks the pinned extension ID (or an ID you explicitly configure), and in-page capture buttons reject scripted clicks. Private-network fetch protection now covers feed polls, standard page fetches, thumbnails, and checked redirect chains. Requests inside yt-dlp and the browser renderer are outside that protection. Returned and stored job errors scrub local paths and credentials; the local diagnostic log can retain raw tool output. Corpus imports accept only files inside the active output folder’s _exports directory.

v3.7.0

Library cards and filters became quieter, Sources put available captures first, and saved items gained a clearer action menu. Updated video extraction and stricter URL, schema, and path checks hardened capture and local integrations; MCP initialization began reporting the product version.

v3.6.0

Added local notes, short-video capture for TikTok, Reels, and Shorts, and image capture as library items. Each entered the shared corpus with source filters; image search used captions, filenames, and source metadata, with OCR deferred.

v3.5.0

Made the Library source-first with platform, source-type, and author filters, readable folders, and searchable author information. X Article detection became consistent across capture entry points, with clearer messages when X blocked a fetch.

v3.4.1

Pinned the extension popup’s primary capture action so it stayed reachable while secondary panels scrolled. Enlarged source and screenshot thumbnails in Generate and gave text sources an explicit no-preview tile.

v3.4.0

Added X Article capture from the rendered, logged-in page and clearer failures for blocked link fetches. Activity messages better explained X posts without downloadable video, and saved-item action buttons wrapped to stay reachable on smaller displays.

Living Library and research

Find the moment. Cite the source.

  • Smarter search

    Search no longer needs every word to match, so plain questions find the right source. Choose Exact words when you need every word. Optional semantic search finds similar meaning and runs on your computer after you turn it on in Settings.

  • Clip search + evidence cards

    Search inside videos for timestamped, deep-linked excerpts your AI can quote and cite. Now on everyday stdio MCP.

  • Standing capture

    Follow a YouTube channel, YouTube playlist, or podcast RSS feed. With capture enabled, new uploads and episodes land in your library.

  • Library reach over MCP

    Search the library, read items, and use resource templates and prompts from your MCP client.

  • Cited range export

    Quote a stretch of video or an episode with speaker labels, chapters, and provenance.

  • Chapter navigation

    Jump between chapters on items that have them.

  • Library, Reader, and Activity

    Search or paste a link in Library, open a capture in Reader, and follow Activity’s five-step strip. One Settings page saves individual preferences as you change them; the extension popup and setup keep capture and connection controls close.

  • Five research playbooks

    Use your own library for outlier posts, transcript intelligence, comment mining, creator teardowns, and repurposing. MCP agents can request cited packets without a model call. Optional ScrapeCreators discovery is off by default, with a default 25-credit daily cap and paid calls only with consent.

  • Podcasts and quieter notifications

    Podcast transcripts enter the searchable library; interrupted jobs resume after a restart. Feed audio stays off until you enable Auto-ingest. Captures show a toast instead of opening Explorer, and notifications can be muted or suppressed during fullscreen use.

  • More reliable YouTube capture

    Caption rate limits no longer fail the whole capture. Local transcription can fill in with the Whisper base model that ships with Uoink; missing transcripts stay labeled. Requests are paced, yt-dlp is newer, and Activity distinguishes waiting, failure, and cancellation.

  • Tighter local boundaries

    Extension token minting checks the pinned extension ID, and page scripts cannot trigger capture buttons. Public-network checks protect supported fetch paths; error responses scrub paths and credentials, and corpus imports stay inside the exports folder.