The biggest last30days release yet: ten new capabilities in one drop.
Your research now audits itself. --verify-freshness attaches a typed verdict to every re-checkable fact (current, stale, contradicted, unsupported) by re-fetching Polymarket lines, GitHub stars, and StockTwits sentiment at act time, so an agent can gate on "only act on current". Every run also records exactly what happened to every source, and the new versioned agent JSON contract exposes all of it to machines.
Your research library becomes a product. library feed renders every saved brief into a browsable site with a subscribable Atom feed; library search gives you full-text search across everything you have ever researched, and new runs automatically cite your own past work.
New ways in and out: --discover finds what is trending in a domain before you know what to research; --drill goes deep on one story from your last run; --register exec|dev|creator reshapes the same research for the reader; --corpus ranks your own private notes alongside social evidence, offline, and never lets them leave the machine.
Plus a research-quality eval harness now guarding every PR in CI, a native Grok plugin lane, and a fix for a session-start hang under Homebrew bash 5.3.
Full details in the CHANGELOG. What's Changed below.
What's Changed
- docs(hermes): use explicit skills/last30days install path by @mvanhorn in #773
- docs: add animated README demo GIF by @mvanhorn in #760
- docs(readme): replace What v3 Changed with What's new (v3.3 to v3.11) by @mvanhorn in #779
- fix: wrap open() calls in 'with' to close file descriptors promptly (#774) by @23241a6749 in #775
- test(cli): guard against bare open().read() regressions in last30days.py by @SeanGearin in #781
- fix: open .env with explicit utf-8 encoding for Windows compat by @23241a6749 in #715
- fix: register FUN_LEVEL in env.py so .env config is not silently ignored by @23241a6749 in #708
- env: register LAST30DAYS_REPORT_CACHE_TTL_SECONDS so .env value is picked up by @23241a6749 in #732
- fix(doctor): detect GITHUB_TOKEN from process env by @SeanGearin in #782
- fix: prevent save_output from silently overwriting date-stamped files (#755) by @23241a6749 in #757
- fix(env): locale-decoder fallback for non-UTF-8 .env files by @SeanGearin in #780
- test(env): documented env keys must be registered in get_config by @SeanGearin in #783
- fix(hosted): don't overwrite same-day saved reports by @SeanGearin in #784
- feat(grok): add native Grok plugin and marketplace support by @tmchow in #789
- fix(pipeline): pass missing trustpilot params in retry call by @bastitva0-blip in #794
- fix(hooks): avoid bash 5.3 heredoc deadlock in the session-start hook by @mvanhorn in #809
- feat(pipeline): typed per-run source outcomes with doctor-aligned failure states by @mvanhorn in #797
- feat(schema): versioned agent JSON export profile (--emit=json v1.0, raw fallback) by @mvanhorn in #810
- feat(eval): research-quality regression harness with scored fixtures in CI by @mvanhorn in #799
- feat(pipeline): --drill follow-up mode over the cached report by @mvanhorn in #800
- feat(pipeline): --discover mode for topic-less trending discovery by @mvanhorn in #801
- feat(library): index + Atom feed over the research library, publishable by @mvanhorn in #802
- feat(library): FTS search over saved briefs + self-citing library context by @mvanhorn in #803
- feat(render): --register audience templates (exec/dev/creator), eli5 unified by @mvanhorn in #804
- feat(grounding): per-claim freshness verdicts (--verify-freshness) by @mvanhorn in #805
- feat(sources): local corpus source - your own files as a ranked signal by @mvanhorn in #808
New Contributors
- @SeanGearin made their first contribution in #781
- @bastitva0-blip made their first contribution in #794
Full Changelog: v3.11.1...v3.12.0