Skip to content

ReachWeaver 0.12.0 release notes

Released on 2026-10-21.

Work with Claude Code from the dashboard, and find conversations worth joining. The read-only dashboard gets a “Work with Claude” page (type what you want, copy an exact prompt for Claude Code, copy-ready owner-only commands, a live activity feed, an Ideas page); engage-scout ranks conversations where you can help and gives angles for replies you write yourself, and engage-log records what you did. HTTPS connections no longer stall on a broken IPv6 route. 118 commands (2 more than 0.11.0, none removed). No live adapter is added and no approval, dry-run, emergency-stop, credential or reconciliation rule changes.

Upgrade notes. Nothing changes for existing users. To use the scout, copy examples/engage-scout.example.json to config/engage-scout.json and set your topics and handles. Update with pipx upgrade reachweaver and the plugin through /plugin.

  • Engagement scout (engage-scout, engage-log). A short, ranked daily list of other people’s conversations where you can add something useful, so more people see your work through replies you write and post yourself. Each item shows its link, why it was picked, all five score factors (relevance × freshness × audience_fit × contribution × (1 − risk), every weight a labelled heuristic, no reach prediction), a suggested angle in one or two bullets (never a finished reply) and the venue’s rule. Hard filters drop your own posts, opt-out-listed and quiet accounts, bots, authors who opted out of discovery (Bluesky !no-unauthenticated, Mastodon discoverable: false/noindex), items already shown or marked, locked or reply-restricted threads, old posts (24 h; GitHub issues 7 days), spam, harassment and “do not contact me” posts. Caps (configurable): 7 a day, the same account once in 7 days, and a project link only when a post asks for a tool the project provides, at most 1 in 10 recorded replies, always with the line “Disclosure: I built this (it is my project).”. Reddit, Hacker News, DEV, Stack Overflow, Lobsters and every registry human_only platform are listed as “read it yourself” with no angle and no link. Post text is untrusted: cleaned, redacted, and instruction-like lines withheld. Sources: files you collect (reachweaver.engage-candidates, for X, LinkedIn, Threads, Reddit, YouTube and Stack Overflow; no scraping or login reuse) and, only with --online, GET-only unauthenticated searches on Bluesky (searchPosts on api.bsky.app; the cached public.api.bsky.app host answered search with 403 on 2026-10-21), a Mastodon server’s hashtag timelines and GitHub issue search, each verified against the official docs and a real request on 2026-10-21, bounded, no redirects, stop on a rate limit. --record STATE keeps a private 0600 state file of ids only so items are not repeated; engage-log --mark ID --replied [--with-link] | --skipped records what you did, and engage-log --readout [--outcomes FILE] lines replies up with your follower, star and visit snapshots per week, labelled correlational. Never posts, replies, likes, follows or opens the database. New modules reachweaver/engage_scout.py and reachweaver/engage_sources.py; examples examples/engage-scout.example.json (ReachWeaver topics, https://github.com/MSKazemi/reachweaver), engage-candidates.example.json and engage-outcomes.example.json; docs ENGAGE-SCOUT.md; skill reference references/engagement.md; a plugin eval case find-conversations-to-join. Tests: tests/test_engage_scout.py (every filter and factor, caps, link ratio, human-only venues, opt-out, dedupe, untrusted text, config errors exit 2, JSON shape, no send module imported, GET-only adapters on recorded synthetic fixtures under NetworkGuard, no database created). No change to approval, dry-run, emergency-stop, credential or reconciliation rules.

  • Dashboard: “Work with Claude” companion (reachweaver ui). The dashboard stays read-only and calls no model; Claude Code stays in its own app on your subscription. A new Work with Claude page (and an Ask Claude card on the Overview) turns what you type, plus what it is about (a post, account, campaign or idea), into a precise prompt to copy into Claude Code: it starts with /reachweaver, carries the ids from your database, lists the commands to start with (context --json first; never an owner-only command), says what to do step by step, quotes stored post or idea text as untrusted data between hash-derived markers (control characters removed, likely secrets replaced) and restates that Claude never runs approve, publish --live, resume, reconcile or reconnect. Ready-made prompts copy with one click: “Voice-check and tighten this draft”, “Draft a follow-up for this post” and “Check claims in this post” on each post page, “What needs me today?” and “Plan next week’s posts” on the Overview, “Which channel should I add next?” on Accounts and Channels, and “Promote this idea into a campaign” per open idea. Owner-only cards show, per post that needs you (a send to reconcile, a send that did not finish, an expired approval, a draft to approve, an approved post to send) and for owner steps of the start guide, the exact commands with Copy buttons, who runs each and why it is yours; the commands come from the existing next-step helpers and are tagged with the command catalog. An Activity feed (the last 30 events of the audit log and the ideas inbox, newest first, no event detail) follows a Claude Code session with auto-refresh. A new Ideas page lists the ideas inbox (text, tags, state and the source’s host only). New read-only endpoints api/prompt, api/prompts, api/owner-actions, api/activity and api/ideas; new pure module reachweaver/ui_prompts.py; ui prompts repeat --db, --accounts and --home when the dashboard was started with them. Copy uses the clipboard with a select-all fallback and an aria-live status; the unsent composer text is kept in the browser’s local storage only. Keyboard: g i (Ideas), g w (Work with Claude), Ctrl Enter copies the composer’s prompt. Docs: dashboard, Claude Code side by side. Tests: tests/test_ui_companion.py (every suggested command parses with the real parser and no start command is owner-only, untrusted quoting, no secret or environment value in a prompt, database and ideas file byte-identical with total_changes 0, token required, GET only). No change to approval, dry-run, emergency-stop, credential or reconciliation rules, and no database schema change.

  • HTTPS connections try IPv4 first. On a network with a broken IPv6 route, Python tried every IPv6 address with the full timeout before IPv4: one Mastodon request took 40 s (curl: 0.3 s). Live sends, connect-check --online, metrics-fetch, engagement-fetch, sources-scan, update and engage-scout --online now connect over IPv4 first with a 4 s connect timeout per address and fall back to IPv6. What is sent, headers, timeouts, redirect handling, certificate checks and send reconciliation are unchanged; HTTPS proxies keep the standard path. New reachweaver/netconnect.py.