Release Notes
What changed across Social Archiver
Track updates across mobile, the desktop app, the CLI, Obsidian, web, the Chrome extension, and the local helper. Product-facing notes live here; GitHub Releases remain the distribution record for the Obsidian plugin and desktop app.
CLI updates
Command-line tool for terminals and coding agents
-
A Transcription Executor That Keeps Going
CLITranscriptions run by the executor no longer start over after 10 minutes, follow cancels from other devices, and use the desktop app's managed yt-dlp first.
- Long transcriptions: when progress stayed still for a while, the server dropped the job after 10 minutes and started it over. A slow CPU Whisper run now goes to the end.
- Progress: a YouTube download that fetches video and audio separately no longer fills the bar twice, and the bar no longer jumps back when downloading hands over to transcribing.
- Cancel: cancelling a transcription from your phone or another device stops the running job.
- yt-dlp: when the desktop app's managed yt-dlp is installed, it is used before an older yt-dlp on PATH.
- Desktop app 0.8.7 bundles the same version.
-
Transcripts in export, and a --help That Lists What Runs
CLIexport now includes the server's Whisper transcript and prints YouTube caption times correctly, and --help lists only the commands this CLI can run.
- export: a transcribed TikTok or podcast no longer exports without its Whisper transcript, and YouTube captions no longer print every line as [00:00]. A transcript already in the body is not added twice.
- --help: commands that only answer SERVICE_NOT_READY in this CLI, such as profile-crawl, sync and jobs, are left out of the list.
- Desktop app 0.8.6 bundles the same version.
-
archive Straight Into Collections
CLIarchive --collection puts the post into collections as you archive it. Name them by id or exact name, comma-separated for several, and the server adds the post once the archive exists.
- archive --url <url> --collection "Taiwan trip,Reading list": up to 50, matched like the collections command (id, else exact name; yours wins a clash).
- A name that matches no collection, or one where you're only a viewer, stops with INVALID_ARGUMENT before anything is sent.
- Sending the same URL with other collections counts as a new request instead of replaying the earlier answer.
- The Obsidian CLI's archive command does the same with collection= (plugin 4.9.0).
-
Collections From the Command Line
CLIThe new collections command works with the same collections as the apps: list them, see every member's posts in one, create one, add or remove posts by exported file or archive id, and print or create a share link. Sharing a private collection needs --yes.
- collections: list (with your role and how many posts you added), show (every member's posts, newest first), create (yours comes back if the name exists), add/remove by exported file or --archive ids, link, and share --yes.
- Name a collection by id or exact name. Your own wins a name clash, and two shared collections with one name need the id.
- Sharing: share --yes (owner only) makes a private collection viewable by anyone with the link, never public. link only prints the link, and members can read it too once it's shared.
-
archive Now Tells You When a Post Was Already Saved
CLISending archive a post that is already in your library archives nothing new and uses no credit, but the result looked exactly like a fresh archive. A script or agent sweeping a profile could not tell it had reached posts saved earlier. The result now says cached: true (cached=true with --format text). The concurrent-archive limit no longer suggests upgrading to Pro either.
- Already-saved posts: archive returns "cached": true, and jobId is the existing archive. As before, nothing new is archived and no credit is used.
- Scripts and agents sweeping a profile newest-first can stop where cached results start, instead of resubmitting posts saved earlier.
- Concurrent-archive limit: with two archives already running, the error says "Too many archives in progress. Try again when one finishes." instead of suggesting Pro. The limit is the same on every plan.
-
Apple Intelligence Summaries Stay Summaries, Every Sentence Kept
CLISummaries social-archiver executor ran with Apple Intelligence sometimes came back as a fact check, with "Fact Check Results", "Claim", "Verdict" and "Source" lines. Every AI request carried those labels as examples, and the on-device model followed them as the format; now only fact-check requests carry them. A summary the model wrote with each sentence in square brackets no longer loses its first three sentences either.
- Apple Intelligence summaries: no more "Fact Check Results / Claim / Verdict / Source" answers. Run on the same posts again, no summary came back as a fact check.
- Bracketed summaries: when the model puts each sentence in [ ], the first three sentences are no longer removed.
- Summaries already saved are not rewritten. Delete one that came out as a fact check, or that looks cut short, and run it again.
- If the Obsidian plugin runs your executor, update the CLI (brew upgrade social-archiver-cli, or npm) and restart Obsidian.
-
The CLI Executor Picks Up Jobs Right Away and Keeps Going Past a Day
CLIsocial-archiver executor --watch now claims a waiting AI job on its next poll: about 10 seconds at the default 15-second interval, where a job could wait up to two minutes before. It also re-sends what it can do every 6 hours. The server stops sending jobs to an executor it has not heard from in over a day, so an executor left running that long, including the one the Obsidian plugin runs in the background, stopped getting work until it was restarted. Time the Mac spends asleep counts, so it catches up on its first poll after waking. And social-archiver <command> --help now prints the usage instead of running the command; executor --help used to start the executor.
- executor --watch claims a waiting AI job on its next poll: about 10 seconds at the default --poll 15, down from up to two minutes.
- An executor left running for more than a day keeps getting jobs: it re-sends its status every 6 hours, and on its first poll after the Mac wakes.
- social-archiver <command> --help (or -h) prints the usage instead of running the command.
- If the Obsidian plugin runs your executor, update the CLI (brew upgrade social-archiver-cli, or npm) and restart Obsidian.
- Transcription jobs are picked up as before, within about two minutes.
-
Apple Intelligence Comes to the CLI Executor
CLIThe macOS CLI archives now carry the Apple Intelligence helper (social-archiver-applefm). Run social-archiver executor on an Apple silicon Mac with macOS 26 or newer and Apple Intelligence on, and apple shows up among the providers: summaries, key points, glossary, reformat, translation, tag suggestions and place extraction run on the model inside the Mac — no account, no credits, nothing leaves the machine. Fact check and transcript translation stay with the cloud providers. The model holds 4,096 tokens, so a post that is too long is refused up front. Homebrew (brew upgrade social-archiver-cli), npm and the install script all place the helper beside the CLI. It is the same helper the desktop app bundles, so it behaves the same.
- social-archiver executor can run on Apple Intelligence (macOS 26+, Apple silicon): on the Mac, no account, no credits.
- social-archiver executor --providers lists apple, with the reason when it is not ready (model downloading, Apple Intelligence off, and so on).
- Fact check and transcript translation are excluded; a post over 4,096 tokens is refused up front.
- The helper must sit beside the CLI. Homebrew, npm and the install script do that; for a manual install keep both files in one folder.
- Nothing changes for the Windows and Linux builds.
-
It Tells You Why Codex Refused
CLIWhen the CLI runs as an executor and Codex (ChatGPT) refuses a request, all you got was "AI action failed." Codex writes its reason to its JSON output rather than the error stream, so the reason was dropped. The CLI now reads that line and reports it as a model problem, so when you ask for a model your account can no longer use, you see what went wrong. The outage itself — since about September 8, Codex on a ChatGPT account no longer offers gpt-5.4-mini, so every summary failed — was fixed on the server by defaulting to gpt-5.5, so summaries work again even before you update.
- A refusal now carries the reason Codex printed.
- Asking for a model you can no longer use is classified as a model problem.
- The failing-summaries outage was already fixed on the server.
-
It Records the Model It Actually Ran
CLIWhen you run the CLI as an executor, AI comments are generated right on your machine. But if you picked a model by alias — "sonnet" — only that alias was kept, so later there was no way to tell which version actually wrote the answer. The CLI now reads the real model name the provider reports while running and stores it alongside the comment. Ask for "sonnet" and the result keeps "Sonnet 4.5", the version that truly ran, and the same name shows up wherever you open it — mobile, desktop, or a shared page. The alias you chose is kept too, so both what you asked for and what ran are on record. Applies to comments generated from this version on.
- Comments keep the real model name even when you requested an alias.
- Both the alias you asked for and the model that ran are recorded.
- The same name appears on mobile, desktop, and shared pages.
-
A Quieter Idle Watch
CLI`social-archiver executor --watch` asked the server three separate questions every 15 seconds to find out whether any work was waiting — even though an executor spends most of its time simply idling. While idle it now asks once and gets all three answers together, and only falls back to the per-kind checks when there is actually work. How jobs are claimed and run is unchanged, so nothing behaves differently — there are just fewer check-in requests. If the server cannot answer the combined check, or the answer looks off, it quietly runs the old checks instead, so no job is missed.
- The idle check-in went from three requests every 15 seconds to one. Nothing about running jobs changed.
- When work is actually waiting, the per-kind checks and the run path proceed exactly as before.
- If the combined check is unavailable or the answer looks off, it falls back to the old checks on its own.
-
Windows Executor Crash Fixed, and the Real Cause of Failing AI Jobs
CLITwo fixes. First, on Windows `executor --watch` crashed with a runtime panic right after CLI detection — resolved by changing how tool version checks spawn subprocesses. Second, we found the real reason AI summary jobs failed with PROVIDER_MISSING while detection looked perfectly healthy: the job details the executor fetched from the server were missing which AI to use (the provider). The server is fixed alongside this release, so already-installed 0.1.9/0.1.10 and the desktop app work again without updating.
- Fixed executor --watch crashing right after detection on Windows — watch mode now runs to completion.
- AI jobs no longer arrive from the server without their provider — fixed server-side too, so existing installs recover immediately.
- The executor now sends its client ID when fetching job details, so it always receives the complete job.
-
Installed AI CLIs Are Now Found However You Installed Them
CLIThe executor could report an installed Claude, Gemini or Codex CLI as "not installed", and AI summary jobs then failed with PROVIDER_MISSING. The cause: it only checked a few well-known install locations — native installers, nvm, volta and scoop put the CLI elsewhere, which is exactly what hit Claude Code and Codex on Windows. Now, if the command runs in your terminal, the executor finds it too. Alongside that, an AI job that fails on one machine is no longer dead: another executor on your account (the Obsidian plugin or the desktop app) can pick it up and finish it.
- AI CLI detection now resolves commands the same way your terminal does — native installers, npm, nvm/volta/fnm and scoop layouts are all recognized.
- Fixes Claude Code and Codex going undetected on Windows, where previously only npm installs were recognized.
- An AI summary or translation job that fails on one executor is no longer terminal — another executor picks it up shortly after and completes it.
- Retries stay bounded by the server, so when no executor can handle a job it still fails clearly.
-
Manage subscriptions from the terminal — pause one, run it now, or find out why it stopped
CLIUntil now the CLI could only create a subscription. Pausing one, listing them, or working out why new posts stopped arriving meant opening the app. All of that now works from the terminal, and the run history shows what each run saved, what it cost, and — when it failed — why. The same commands were added to the Obsidian plugin CLI in 4.6.6, so both behave the same way.
- List your subscriptions, pause or resume one, run it on the spot, or delete it when it has served its purpose.
- Diagnose it yourself from the run history — per-run saved counts and credits, plus the reason when a run failed.
- Pausing keeps its place, so resuming does not skip the posts from while it was off.
- Deleting requires an explicit confirmation flag, and the archives it already saved stay put.
- The Obsidian plugin CLI gained the same commands, plus place-candidate review and bulk Inbox triage (plugin 4.6.6).
-
Social Archiver CLI is out — for your terminal, and for coding agents
CLIA standalone tool for archiving, finding, and organizing from a terminal. It runs on Windows, macOS, and Linux with no desktop app and no Node.js required. With 0.1.5 the Microsoft Store listing completes the set of install routes, and exports now carry each archive's places and product details. The CLI guide documents every command.
- One line to install, anywhere: Microsoft Store or winget on Windows, Homebrew on macOS, a checksum-verified installer on macOS and Linux, and npm wherever Node.js already lives. No desktop app required.
- Archive and find: archive a URL, search your whole archive server-side, move posts between Inbox and Archived, and subscribe to public profiles.
- Organize locally: export archives to Markdown, grep them, add tags and notes, then push the edits back. After one export, searching costs no further server calls.
- New in 0.1.5 — exported Markdown carries places (name, address, coordinates, category) and product details (price, currency, availability, brand, rating), and the new places command reviews extracted candidates with their evidence so you can confirm or detach them.
- AI work stays in the terminal: request AI comments, run them yourself with a local AI tool through the executor, and transcribe video and audio archives.
- Built with coding agents in mind: every command answers in the same JSON shape, and an installable skill bundle teaches Claude Code, Codex, and OpenCode to drive it safely.