ReachWeaver 0.7.0 release notes
Released on 2026-10-17.
Four new offline commands (trace, media-cutlist, seo-destinations --suggest-for, multi-account draft), Instagram and Threads token-expiry reminders in health, two dashboard fixes, and PyPI publishing without a manual approval. No change to approval, dry-run, emergency-stop or credential rules.
Upgrade notes. None needed. Update the package with pipx upgrade reachweaver and the plugin through /plugin.
Changed
Section titled “Changed”- PyPI upload no longer waits for a manual approval. The
pypienvironment has no required reviewer (owner decision, 2026-10-17). Av*tag push that passesverifyandpublishnow uploads the already-checked wheel and sdist to PyPI. The other guards are unchanged: tag-only environment, owner-only actor check,PYPI_PUBLISHswitch, checksum verification. docs/PACKAGING.md says how to restore the approval.
- Token-expiry reminders for Instagram and Threads in
health.health,ops-summaryand the dashboard Overview now reportinstagram_authorization_warning/threads_authorization_warning7 days before the recordedauthorization_expires_at, and_expiredafter it, as they already did for LinkedIn. Before, onlydoctorsaid so, and the send preflight refused an expired token. While the capability registry keeps the adapter manual-only (today’s bundled default), an expired token isattention, notblocked, because nothing can be sent with it, and a missing expiry is not reported. Once the owner enables the adapter after a live receipt, an expired token blocks readiness and a missing expiry is flagged, like LinkedIn. The dashboard explains the LinkedIn, Instagram and Threads authorization codes in plain language. The token value is never read; no send, approval or credential rule changed. reachweaver trace POST_ID: one post’s story in one place (issue #26). It prints the post’s audit events from the database and, with--log FILE(or--log -forjournalctl ... -o catoutput), the worker-log lines that name it plus the start and end lines of those runs, oldest first, with a one-line summary such as “Published after 1 send attempt(s)”. Read-only: the database is openedmode=roand never created; nothing is sent, retried or contacted. A worker log is untrusted input: only lines with the worker-log schema version and a known event are used, only allow-listed fields are kept, every value is redacted, oversized lines are skipped and counted, and symbolic links or oversized files are refused. See worker operations.seo-destinations --suggest-for PLATFORM: how to point each platform’s post at the landing page. For every platform asked (repeat the flag), it adds the link to use (UTM-tagged with--campaign) and suggestions on where to put it, length, the page’s keyword, tags and alt text. Each suggestion is labelledofficial(a provider rule, with its source and the date it was checked, e.g. Threads’ 5-link and one-topic-tag limits),unverified(no official statement found, e.g. Instagram and TikTok caption links, so use the profile link),repo_policyorhypothesis(editorial advice). None claims a reach or ranking effect, and a test enforces that wording. Offline: it reads only the briefs file. Output without the flag is unchanged. See SEO integration.media-cutlist PLAN.json: one master video, a cut list per platform. Describe the master (length, frame size, focus point) and mark segments with a priority. For Shorts, TikTok, Instagram, LinkedIn, Bluesky and Mastodon it says which segments fit the platform’s sourced maximum duration, the crop window for the target aspect around the focus point, the subtitle format and size limit, and a suggestedffmpegcommand (shell-quoted, documented filters only) for you to run. Limits carry their official source and checked date; one the source does not establish is flaggedunverified; an ownermax_scan only shorten a cut; crops are scaled down, never up. Nothing is opened, cut, encoded or uploaded, and ReachWeaver does not run the command. See media assets.draftcan create one draft per account in one go. Repeat--account(up to 20) and the same text becomes one separate draft row per account, all or none: the text is checked against each account’s platform limits and opt-out list first, and if any account fails, nothing is created and every problem is listed. Each draft still needs its ownshowandapprove; nothing is approved, scheduled or sent together. Two accounts on the same platform are refused (identical text there reads as duplicate posting), and--reply-tostill takes exactly one account. With one--account, behaviour and output are unchanged.
- Dashboard: the “Files and approvals” card now reports a database, approval ledger or archive that other users of the computer can read, with the
chmodto fix it. The folder check has always found these; the 0.6.0 card dropped them, although its documentation said otherwise (found in an independent review). - Dashboard: a sent post no longer reads as “never approved”. The approval details of a
sending,publishedorneeds_reviewpost showedbinding: not_approved, becauseshowonly re-checks the binding while a post waits to be sent. The page now says “not re-checked after the send started”. Theshowand API output are unchanged.
