1.7.0 (2026-04-11)
This is a major release with significant internal architecture changes. Adapter code, validation, and error handling have been modernized.
- Node.js >= 21 required —
import.meta.dirnameis used in core modules; Node 20 and below will fail at startup. - YAML adapters deprecated — YAML-based
.yamladapters are no longer loaded. Existing YAML adapters must be converted to JS viacli()API. A deprecation warning is emitted if.yamlfiles are detected. .tsadapters no longer loaded at runtime — The runtime only discovers.jsfiles. If you have.tsadapters in~/.opencli/clis/, compile them to.jsor rewrite using plain JS. A warning is printed when.tsfiles without a matching.jsare found.- Error output format changed — All errors are now emitted as a structured YAML envelope to stderr. Scripts parsing stdout for
[{error, help}]must switch to stderr / exit code. (#923) tabIdreplaced bytargetId— Cross-layer page identity now usestargetId. Extensions and plugins referencingtabIdmust update. (#899)operaterenamed tobrowser— Allopencli operatecommands are nowopencli browser. (#883)
- auto-close adapter windows — Browser tabs opened by adapters are automatically closed after execution; configurable via
OPENCLI_WINDOW_FOCUSED. (#915) - Self-Repair protocol — Automatic adapter fixing when commands fail. (#866)
- EarlyHint callback — Cost gating channel for generate pipeline. (#882)
- verified generate pipeline — Structured contract for AI-driven adapter generation. (#878)
- structured diagnostic output — AI-driven adapter repair gets structured diagnostics. (#802)
- auto-downgrade to YAML in non-TTY — Machine-readable output when piped. (#737)
- Browser Use improvements — Better click/type/state handling for browser automation. (#707)
- CDP session-level network capture — Full network capture support for CDPPage. (#815, #816)
- AutoResearch framework — V2EX/Zhihu test suites (194 tasks). (#731, #717, #741)
- new adapters: Gitee (#845), 闲鱼 (#696), 1688 (#650, #820), LessWrong (#773), 虎扑 (#751), 小鹅通 (#617), 元宝 (#693), 即梦 (#897, #895), Quark Drive (#858), GitHub Trending/Binance/Weather (#214)
- adapter enhancements: Instagram post/reel/story/note (#671), Twitter image posts/replies (#666, #756), 知乎 interactions (#868), Bilibili b23.tv short URL (#740), 雪球 kline/groups (#809), Amazon unified ranking (#724), Gemini deep-research (#778), 新浪财经热搜 (#736), linux-do topic split (#821), JD/淘宝/CNKI revived (#248)
- security: escape codegen strings and redact diagnostic body (#930)
- bilibili: add missing domain for following cli (#947)
- clean up stale
.tsadapter files during upgrade (#948) - clean up legacy shim files and stale tmp files on upgrade (#934)
- address deep review findings (security, correctness, consistency) (#935)
- batch quality improvements — dedupe completion, unify logging, fix docs (#945)
- graceful fallback when extension lacks network-capture support (#865)
- handle missing electron executable gracefully (#747)
- recover drifted tabs instead of abandoning them (#715)
- retry on "No window with id" CDP error (#892)
- launcher: graceful degradation and manual CDP override for Windows (#744)
- xiaohongshu: scope note interaction selectors, replace blind retry with MutationObserver (#839, #730)
- twitter: relax reply composer timeout, use composer for text replies (#862, #860)
- doubao: preserve image URLs, connect to correct CDP target (#708, #674)
- gemini: stabilize ask reply state handling (#735)
- douban: fix marks pagination and improve subject data extraction (#752)
- jianyu: avoid early API bucket cutoff, stabilize search (#916, #912)
- xiaoe: resolve missing episodes for long courses via auto-scroll (#904)
- adapters: convert adapter layer from TypeScript to JavaScript (#928)
- adapters: migrate all CLI adapters from YAML to TypeScript, then to JS (#887, #922)
- validate: switch from YAML-file scanning to registry-based validation (#943)
- strategy: normalize strategy into runtime fields at registration time (#941)
- errors: unify error output as YAML envelope to stderr (#923)
- daemon: make daemon persistent, remove idle timeout (#913)
- browser: unify browser error classification and deduplicate retry logic (#908)
- monorepo: adapter separation —
clis/at root (#782) - rename
operatetobrowser(#883) - eliminate
anytypes in core files (#886) - migrate adapter imports to package exports (#795)
- P0 optimizations — faster startup, reduced overhead (#944)
- fast-path completion/version/shell-scripts to bypass full discovery (#898)
- optimize browser pipeline — tab query dedup, parallel stealth, incremental snapshots (#713)
- reduce round-trips in browser command hot path (#712)
- skip blank page on first browser command (#710)
- restructure README narrative (#885)
- add Android Chrome usage guide (#687)
- add Electron app CLI quickstart guide
- fix stale
.tsreferences across skills and docs (#954) - unify skill command references and merge opencli-generate into opencli-explorer (#891, #894)
- Update Node.js to v21 or later (v22 LTS recommended).
- Run
npm install -g @jackwener/opencli@latest— the preuninstall hook gracefully stops the old daemon; the first browser command after upgrade auto-restarts it. - If you have custom
.tsadapters in~/.opencli/clis/, rename or compile them to.js. A warning will be printed on startup if stale.tsfiles are detected. - If you have custom
.yamladapters, convert them to JS using thecli()API (seeskills/opencli-explorer/references/adapter-templates.md). - If you parse error output from stdout, switch to stderr. Errors are now structured YAML envelopes with typed exit codes.
1.6.1 (2026-04-02)
- sync package-lock.json version with package.json (#698)
1.6.0 (2026-04-02)
- opencli-browser: add browser control commands for Claude Code skill (#614)
- docs: add tab completion to getting started guides (#658)
- twitter: resolve article ID to tweet ID before GraphQL query (#688)
- xiaohongshu: clarify empty note shell hint (#686)
- skills: add YAML frontmatter for discovery and improve descriptions (#694)
- centralize daemon transport client (#692)
1.5.9 (2026-04-02)
- amazon: add browser adapter — bestsellers, search, product, offer, discussion (#659)
- skills: create skills/ directory structure with opencli-usage, opencli-explorer, opencli-oneshot (#670)
- record: add minimal record write candidates (#665)
- src cleanup — deduplicate errors, cache VM, extract BasePage, remove Playwright MCP legacy (#667)
- remove bind-current, restore owned-only browser automation model (#664)
- remove .agents directory (#668)
1.5.8 (2026-04-01)
- extension: avoid mutating healthy tabs before debugger attach and add regression coverage (#662)
1.5.7 (2026-04-01)
- daemon: replace 5min idle timeout with long-lived daemon model (4h default, dual-condition exit) (#641)
- daemon: add
opencli daemon status/stop/restartCLI commands (#641) - youtube: add search filters —
--typeshorts/video/channel,--upload,--sort(#616) - notebooklm: add read commands and compatibility layer (#622)
- instagram: add media download command (#623)
- stealth: harden CDP debugger detection countermeasures (#644)
- v2ex: add id, node, url, content, member fields to topic output (#646, #648)
- electron: auto-launcher — zero-config CDP connection (#653)
- douyin: repair creator draft flow — switch from broken API pipeline to UI-driven approach (#640)
- douyin: support current creator API response shapes for activities, profile, collections, hashtag, videos (#618)
- bilibili: distinguish login-gated subtitles from empty results (#645)
- facebook: avoid in-page redirect in search — use navigate step instead of window.location.href (#642)
- substack: update selectors for DOM redesign (#624)
- weread: recover book details from cached shelf fallback (#628)
- docs: use relative links in adapter index (#629)
1.4.1 (2026-03-25)
- douyin: add Douyin creator center adapter — 14 commands, 8-phase publish pipeline (#416)
- weibo,youtube: add Weibo commands and YouTube channel/comments (#418)
- twitter: add filter option for search (#410)
- extension: add popup UI, privacy policy, and CSP for Chrome Web Store (#415)
- add url field to 9 search adapters (67% -> 97% coverage) (#414)
- extension: improve UX when daemon is not running — show hint in popup, reduce reconnect noise (#424)
- remove incorrect gws and readwise external CLI entries (#419, #420)
1.4.0 (2026-03-25)
- pixiv: add Pixiv adapter — ranking, search, user illusts, detail, download (#403)
- plugin: add lifecycle hooks API — onStartup, onBeforeExecute, onAfterExecute (#376)
- plugin: validate plugin structure on install and update (#364)
- xueqiu: add Danjuan fund account commands — fund-holdings, fund-snapshot (#391)
- tiktok: add video URL to search results (#404)
- linkedin: add timeline feed command (#342)
- jd: add JD.com product details adapter (#344)
- web: add generic
web readcommand for any URL → Markdown (#343) - dictionary: add dictionary search, synonyms, and examples adapters (#241)
- analysis: fix hasLimit using wrong Set (SEARCH_PARAMS → LIMIT_PARAMS) (#412)
- pipeline: remove phantom scroll step — declared but never registered (#412)
- validate: add missing download step to KNOWN_STEP_NAMES (#412)
- extension: security hardening — tab isolation, URL validation, cookie scope (#409)
- sort: use localeCompare with natural numeric sort by default (#306)
- pipeline: evaluate chained || in template engine (#305)
- pipeline: check HTTP status in fetch step (#384)
- plugin: resolve Windows path and symlink issues (#400)
- download: scope cookies to target domain (#385)
- extension: fix same-url navigation timeout (#380)
- fix ChatWise Windows connect (#405)
- resolve 6 critical + 11 important bugs from deep code review (#337, #340)
- harden security-sensitive execution paths (#335)
- stealth: harden anti-detection against advanced fingerprinting (#357)
- replace all
catch (err: any)with typedgetErrorMessage()across 13 files (#412) - adopt CliError subclasses in social and desktop adapters (#367, #372, #375)
- simplify codebase with type dedup, shared analysis module, and consistent naming (#373)
- ci: add cross-platform CI matrix (Linux/macOS/Windows) (#402)
1.3.3 (2026-03-25)
- browser: add stealth anti-detection for CDP and daemon modes (#319)
- stealth: review fixes — guard plugins, rewrite stack trace cleanup (#320)
1.3.2 (2026-03-24)
- error-handling: refine error handling with semantic error types and emoji-coded output (#312) (b4d64ca)
- security: replace execSync with execFileSync to prevent command injection (#309) (41aedf6)
- remove duplicate getErrorMessage import in discovery.ts (#315) (75f4237)
- e2e: broaden xiaoyuzhou skip logic for overseas CI runners (#316) (a170873)
1.3.1 (2026-03-22)
- plugin: add update command, hot reload after install, README section (#307) (966f6e5)
- yollomi: add new commands and update documentation (#235) (ea83242)
- record: add live recording command for API capture (#300) (dff0fe5)
- weibo: add weibo search command (#299) (c7895ea)
- v2ex: add node, user, member, replies, nodes commands (#282) (a83027d)
- hackernews: add new, best, ask, show, jobs, search, user commands (#290) (127a974)
- doubao-app: add Doubao AI desktop app CLI adapter (#289) (66c4b84)
- doubao: add doubao browser adapter (#277) (9cdc127)
- xiaohongshu: add publish command for 图文 note automation (#276) (a6d993f)
- weixin: add weixin article download adapter & abstract download helpers (#280) (b7c6c02)
- tests: use positional arg syntax in browser search tests (#302) (4343ec0)
- xiaohongshu: improve search login-wall handling and detail output (#298) (f8bf663)
- ensure standard PATH is available for external CLIs (#285) (22f5c7a)
- xiaohongshu: scope image selector to avoid downloading avatars (#293) (3a21be6)
- add turndown dependency to package.json (#288) (2a52906)
1.3.0 (2026-03-21)
1.2.3 (2026-03-21)
- replace all about:blank with data: URI to prevent New Tab Override interception (#257) (3e91876)
- harden resolveTabId against New Tab Override extension interception (#255) (112fdef)
1.2.2 (2026-03-21)
1.2.1 (2026-03-21)
- twitter: harden timeline review findings (#236) (4cd0409)
- wikipedia: fix search arg name + add random and trending commands (#231) (1d56dd7)
- resolve inconsistent doctor --live report (fix #121) (#224) (387aa0d)
1.2.0 (2026-03-21)
- douban: add movie adapter with search, top250, subject, marks, reviews commands (#239) (70651d3)
- devto: add devto adapter (#234) (ea113a6)
- twitter: add --type flag to timeline command (#83) (e98cf75)
- google: add search, suggest, news, and trends adapters (#184) (4e32599)
- add douban, sinablog, substack adapters; upgrade medium to TS (#185) (bdf5967)
- xueqiu: add earnings-date command (#211) (fae1dce)
- browser: advanced DOM snapshot engine with 13-layer pruning pipeline (#210) (d831b04)
- instagram,facebook: add write actions and extended commands (#201) (eb0ccaf)
- grok: add opt-in --web flow for grok ask (#193) (fcff2e4)
- tiktok: add TikTok adapter with 15 commands (#202) (4391ccf)
- add Lobste.rs, Instagram, and Facebook adapters (#199) (ce484c2)
- medium: add medium adapter (#190) (06c902a)
- plugin system (Stage 0-2) (1d39295)
- make primary args positional across all CLIs (#242) (9696db9)
- xueqiu: make primary args positional (#213) (fb2a145)
- replace hardcoded skipPreNav with declarative navigateBefore field (#208) (a228758)
- boss: extract common.ts utilities, fix missing login detection (#200) (ae30763)
- type discovery core (#219) (bd274ce)
- type browser core (#218) (28c393e)
- type pipeline core (#217) (8a4ea41)
- reduce core any usage (#216) (45cee57)
- fail fast on invalid pipeline steps (#237) (c76f86c)
1.1.0 (2026-03-20)
- add antigravity serve command — Anthropic API proxy (35a0fed)
- add arxiv and wikipedia adapters (#132) (3cda14a)
- add external CLI hub for discovery, auto-installation, and execution of external tools. (b3e32d8)
- add sinafinance 7x24 news adapter (#131) (02793e9)
- boss: add 8 new recruitment management commands (#133) (7e973ca)
- serve: implement auto new conv, model mapping, and precise completion detection (0e8c96b)
- serve: use CDP mouse click + Input.insertText for reliable message injection (c63af6d)
- xiaohongshu creator flows migration (#124) (8f17259)
- docs: use base '/' for custom domain and add CNAME file (#129) (2876750)
- serve: update model mappings to match actual Antigravity UI (36bc57a)
- type safety for wikiFetch and arxiv abstract truncation (4600b9d)
- use UTC+8 for XHS timestamp formatting (CI timezone fix) (03f067d)
- xiaohongshu: use fixed UTC+8 offset in trend timestamp formatting (CI timezone fix) (593436e)