Skip to content

Releases: jackwener/OpenCLI

v1.8.3

05 Jun 16:47
be14222

Choose a tag to compare

What's Changed

  • feat(manus): adapter for manus.im — 6 read-only commands by @LeoLin990405 in #1837
  • feat(gemini): add status / history / detail / read commands by @LeoLin990405 in #1838
  • fix(xiaohongshu): prioritize visible title input over hidden scaffolding by @Benjamin-eecs in #1845
  • fix(test): bump runCli maxBuffer to fit growing manifest by @Benjamin-eecs in #1842
  • fix(instagram): paginate following endpoint to handle limit > ~200 (#1831) by @LeoLin990405 in #1835
  • docs(sitemap): seed xiaohongshu phase 2 with login schema dogfood by @jackwener in #1853
  • fix(daemon): SIGKILL fallback when stale daemon refuses graceful shutdown by @jackwener in #1861
  • feat(auth): add site login and whoami commands by @jackwener in #1852
  • fix(extension): close SW-restart race that spawns duplicate OpenCLI Adapter groups by @jackwener in #1862
  • chore(release): 1.8.3 by @jackwener in #1864

Full Changelog: v1.8.2...v1.8.3

v1.8.2

02 Jun 17:32
ec3edde

Choose a tag to compare

What's Changed

  • docs(readme): prefix Let AI Agents bullet with "Browser User &" by @jackwener in #1796
  • feat(twitter): add batch follow and list lifecycle commands by @gauravsaxena1997 in #1761
  • fix(xiaohongshu): attach real topics via inline "#" dropdown by @E2ern1ty in #1779
  • fix(xiaohongshu,rednote): feed returns signed note URLs for drill-down by @RavenLiao in #1805
  • feat(kimi): new adapter for kimi.com (21 commands) by @LeoLin990405 in #1804
  • feat(qoder): new adapter for Qoder IDE (19 commands) by @LeoLin990405 in #1803
  • feat(chatgpt-app): add temporary chat and multi-modal image attachment support by @pg-adm1n in #1783
  • feat(grok): conversation mgmt (delete/pin/unpin) + locale-independent selectors by @LeoLin990405 in #1798
  • feat(antigravity): history/delete/mark-read + model read/switch by @LeoLin990405 in #1800
  • feat(xiaohongshu): add draft management commands and fix publish reliability by @yapxue in #1784
  • feat(codex): pin/unpin/archive/rename + model selector fix by @LeoLin990405 in #1799
  • fix(chatgpt): ignore image placeholders and upload previews by @ken-zy in #1802
  • feat(wechat-channels): add WeChat Video Channels (视频号) publish adapter by @RavenLiao in #1806
  • feat(douyin): add search command for keyword video search by @Daily-AC in #1759
  • fix(12306): accept lowercase letters in train_no regex by @dusty-cjh in #1734
  • fix(youtube): Videos tab fallback misses lockupViewModel format by @FSpark in #1733
  • feat(chatgpt): add web model switch command by @nightwhite in #1739
  • fix: douyin publish - fix illegal title error by @chang-ph in #1740
  • fix(daemon): differentiate multi-profile state in status output (#1575) by @Chen17-sq in #1593
  • fix(grok): fall back to Enter-key dispatch when submit button never appears (#1782) by @LeoLin990405 in #1808
  • feat(trae-solo): adapter — 19 commands (status/history/open/new-task/model + Skills/Automation/Mode/Message actions) by @LeoLin990405 in #1801
  • feat(trae-cn): add desktop adapter by @JasonYang0104 in #1743
  • fix(launcher): add --remote-allow-origins=* for Chromium 142+ ws origin check by @LeoLin990405 in #1789
  • fix(weixin): normalizeWechatUrl strips CJK typographic / smart quotes (#1788) by @LeoLin990405 in #1807
  • feat(pubmed): add workflow presets and richer article metadata by @pi-dal in #1778
  • feat(author): require network-first strategy evidence by @jackwener in #1809
  • docs(author): add strategy-selection reference with empirical contract ladder by @jackwener in #1810
  • feat(browser): surface sitemap context by @jackwener in #1820
  • docs(sitemap-author): add detailed schema reference by @jackwener in #1821
  • docs(sitemap-author): schema v1.1 — 12 patches from twitter+hackernews PoC by @jackwener in #1822
  • docs(sitemap-promote): seed twitter + hackernews PoC at global path by @jackwener in #1823
  • docs(sitemap-author): SKILL.md guidelines from PoC by @jackwener in #1824
  • fix(twitter): drop global tweetPhoto from hasMedia in post submit poll by @Benjamin-eecs in #1812
  • refactor(sitemaps): promote global seed to top-level sitemaps/ by @jackwener in #1826
  • fix(extension): scope reusable-tab selection to owned group members by @Benjamin-eecs in #1816
  • revert: restore smart-search skill by @jackwener in #1829
  • chore(release): 1.8.2 by @jackwener in #1830

New Contributors

Full Changelog: v1.8.1...v1.8.2

v1.8.1

30 May 20:42
06daf6f

Choose a tag to compare

What's Changed

  • docs(readme): drop For Developers section by @jackwener in #1684
  • docs(readme): CLI Hub brand aliases + Exit Codes split to docs by @jackwener in #1685
  • fix(bilibili): subtitle 支持 bangumi/PGC bvid(番剧/纪录片/电影/综艺) by @huanghe in #1669
  • fix(xiaohongshu/download): preserve carousel order via INITIAL_STATE.imageList by @Benjamin-eecs in #1687
  • add jira confluence support by @BruceLoveDecimal in #1690
  • feat(chess): add Chess.com adapter (stats / games / game / analyze) by @Benjamin-eecs in #1659
  • fix(extension): serialize tab group creation to prevent duplicates (fixes #1692) by @kagura-agent in #1693
  • feat(bilibili): add comment command and --parent reply-thread reading by @asimovVong in #1588
  • docs(readme): correct Node floor (>=20) + drop redundant Prerequisites section by @jackwener in #1705
  • fix: stabilize byte formatting by @hiSandog in #1699
  • fix(twitter): detect private likes / following empty-timeline shape by @Benjamin-eecs in #1702
  • fix(douyin/hashtag): validate per-action required args before the API call by @Benjamin-eecs in #1697
  • feat(notebooklm): add create / add-source / write-note / generate-audio / generate-slides write commands by @Benjamin-eecs in #1691
  • feat(upwork): add search, feed, and detail commands by @NSOiO in #1609
  • feat(geogebra): add GeoGebra browser adapter suite by @gallexy-liu in #1591
  • Feat(weread): Add 'weread book search' to search inside a WeRead book by @galaxypluto in #1577
  • fix(doctor): poll briefly for extension reconnect before reporting "not connected" by @truffle-dev in #1718
  • fix(twitter): handle CDP Not-allowed error, fix files property redefinition, add reply button wait by @lvsao in #1717
  • Revert "fix(doctor): poll briefly for extension reconnect" (#1718) by @jackwener in #1721
  • fix(suno): derive current plan from subscription_type + plans[] instead of legacy data.plan by @Benjamin-eecs in #1706
  • feat(linkedin): consolidate profile, jobs, posts, and projects readers by @jackwener in #1731
  • test(download): retry media-download Windows tests to absorb runner cold-start variance by @Benjamin-eecs in #1708
  • fix(xiaohongshu): hook dashboard fetch to capture signed datacenter/note/* responses by @Benjamin-eecs in #1732
  • fix(zhihu): decode numeric entities in text output by @lenovobenben in #1695
  • chore(ci): disable Dependabot updates by @jackwener in #1755
  • fix(download): write yt-dlp cookie file with 0o600 owner-only permissions (fixes #1741) by @Benjamin-eecs in #1742
  • feat(linkedin): read profile experience by @gauravsaxena1997 in #1738
  • feat(xiaohongshu): paginate creator-notes past the 10-row /analyze/list cap by @Benjamin-eecs in #1736
  • fix: decode WeRead search HTML entities by @hiSandog in #1752
  • fix(twitter): read profile name/created_at from result.core (fixes #1745) by @Astro-Han in #1746
  • docs(readme): add Trendshift trending-repo badge to top of README by @jackwener in #1773
  • Revert "docs(readme): add Trendshift badge" (#1773) by @jackwener in #1774
  • chore(extension): bump to 1.0.16 by @jackwener in #1792
  • fix(twitter): drop 'unknown' silent sentinel in search/notifications/following row fields by @Benjamin-eecs in #1776
  • fix(pixiv): migrate user/detail to pixivFetch helper for typed errors by @Benjamin-eecs in #1768
  • fix(browser): write network cache file with 0o600 owner-only permissions by @Benjamin-eecs in #1766
  • fix(extension): converge owned tab groups by @jackwener in #1794
  • chore(release): 1.8.1 by @jackwener in #1795

New Contributors

Full Changelog: v1.8.0...v1.8.1

What's Changed

  • docs(readme): drop For Developers section by @jackwener in #1684
  • docs(readme): CLI Hub brand aliases + Exit Codes split to docs by @jackwener in #1685
  • fix(bilibili): subtitle 支持 bangumi/PGC bvid(番剧/纪录片/电影/综艺) by @huanghe in #1669
  • fix(xiaohongshu/download): preserve carousel order via INITIAL_STATE.imageList by @Benjamin-eecs in #1687
  • add jira confluence support by @BruceLoveDecimal in #1690
  • feat(chess): add Chess.com adapter (stats / games / game / analyze) by @Benjamin-eecs in #1659
  • fix(extension): serialize tab group creation to prevent duplicates (fixes #1692) by @kagura-agent in #1693
  • feat(bilibili): add comment command and --parent reply-thread reading by @asimovVong in #1588
  • docs(readme): correct Node floor (>=20) + drop redundant Prerequisites section by @jackwener in #1705
  • fix: stabilize byte formatting by @hiSandog in #1699
  • fix(twitter): detect private likes / following empty-timeline shape by @Benjamin-eecs in #1702
  • fix(douyin/hashtag): validate per-action required args before the API call by @Benjamin-eecs in #1697
  • feat(notebooklm): add create / add-source / write-note / generate-audio / generate-slides write commands by @Benjamin-eecs in #1691
  • feat(upwork): add search, feed, and detail commands by @NSOiO in #1609
  • feat(geogebra): add GeoGebra browser adapter suite by @gallexy-liu in #1591
  • Feat(weread): Add 'weread book search' to search inside a WeRead book by @galaxypluto in #1577
  • fix(doctor): poll briefly for extension reconnect before reporting "not connected" by @truffle-dev in #1718
  • fix(twitter): handle CDP Not-allowed error, fix files property redefinition, add reply button wait by @lvsao in #1717
  • Revert "fix(doctor): poll briefly for extension reconnect" (#1718) by @jackwener in #1721
  • fix(suno): derive current plan from subscription_type + plans[] instead of legacy data.plan by @Benjamin-eecs in #1706
  • feat(linkedin): consolidate profile, jobs, posts, and projects readers by @jackwener in #1731
  • test(download): retry media-download Windows tests to absorb runner cold-start variance by @Benjamin-eecs in #1708
  • fix(xiaohongshu): hook dashboard fetch to capture signed datacenter/note/* responses by @Benjamin-eecs in #1732
  • fix(zhihu): decode numeric entities in text output by @lenovobenben in #1695
  • chore(ci): disable Dependabot updates by @jackwener in #1755
  • fix(download): write yt-dlp cookie file with 0o600 owner-only permissions (fixes #1741) by @Benjamin-eecs in #1742
  • feat(linkedin): read profile experience by @gauravsaxena1997 in #1738
  • feat(xiaohongshu): paginate creator-notes past the 10-row /analyze/list cap by @Benjamin-eecs in #1736
  • fix: decode WeRead search HTML entities by @hiSandog in #1752
  • fix(twitter): read profile name/created_at from result.core (fixes #1745) by @Astro-Han in #1746
  • docs(readme): add Trendshift trending-repo badge to top of README by @jackwener in #1773
  • Revert "docs(readme): add Trendshift badge" (#1773) by @jackwener in #1774
  • chore(extension): bump to 1.0.16 by @jackwener in ht...
Read more

v1.8.0

19 May 19:33
ce432c2

Choose a tag to compare

What's Changed

  • 微博新增用户搜索导出博文命令opencli weibo search_by_user 1670458304 --start 2025-06-01 --end 2025-06-02 by @chonglinghuc in #1379
  • Fix YouTube transcript caption fetching by @sczhengyabin in #1499
  • fix(chatgpt): unwrap page.evaluate envelope across browser commands by @ele-yufo in #1580
  • feat: add Flomo memos reader adapter by @Pandas886 in #1549
  • feat(douyin): restore publish and delete flow by @jackwener in #1587
  • docs(readme): tighten tagline & emphasize browser control by @jackwener in #1596
  • feat: add Youdao Notes shared note reader adapter by @Pandas886 in #1547
  • feat(linkedin): add messaging commands by @hanzili in #1597
  • fix(adapters): surface silent empty fallbacks by @jackwener in #1603
  • feat(bilibili): add summary command for the official AI video summary by @asimovVong in #1590
  • fix(audit): ignore sentinels in thrown errors by @jackwener in #1604
  • fix(barchart): surface greeks fetch failures by @jun0315 in #1599
  • docs(readme): simplify Highlights from 9 to 5 bullets by @jackwener in #1605
  • fix(electron-apps): move codex CDP port off 9222 to avoid browser-bridge collision by @Benjamin-eecs in #1630
  • fix(adapters): drop silent-sentinel row fallbacks across 6 read commands by @Benjamin-eecs in #1631
  • fix(weibo/publish): replace brittle CSS-module hash with placeholder selector by @Benjamin-eecs in #1625
  • feat(xiaohongshu): add delete-note command to remove published notes by @Benjamin-eecs in #1624
  • feat(weibo): add delete command to remove user's own posts by @Benjamin-eecs in #1620
  • fix(lesswrong): drop "Unknown" silent sentinel in author column by @Benjamin-eecs in #1611
  • feat(twitter): rewrite download profile path on GraphQL UserMedia with cursor pagination by @Benjamin-eecs in #1636
  • build: tsc 重建后恢复 dist/src/main.js 的 +x 权限 by @huanghe in #1644
  • feat(weread-official): integrate WeRead official Agent Gateway as new CLI namespace by @jackwener in #1648
  • feat(linkedin): consolidate messaging and Sales Navigator commands by @hanzili in #1647
  • feat(xianyu): add inbox, messages, and reply commands by @jun0315 in #1639
  • feat(zhihu): paginate search results by @lenovobenben in #1615
  • fix(browser): goto 重试时回收陈旧 page identity + 把 -32000 "Cannot find default execution context" 归类为可重试 by @huanghe in #1645
  • fix: keep media filenames in output directory by @hiSandog in #1642
  • feat(12306): add full read adapter (stations / trains / train / price / me / passengers / orders) by @Benjamin-eecs in #1637
  • docs(readme): fix skill attribution — 'operate any website' uses opencli-browser, not opencli-adapter-author by @jackwener in #1654
  • fix(youtube/transcript): 把 timedtext URL 匹配限定到当前 videoId,修跨视频字幕串台 by @huanghe in #1655
  • fix(twitter/lists): 跳过 "Discover new Lists" 推荐区块,避免被当成用户的 list 抓取 by @huanghe in #1652
  • fix(adapters): drop silent-sentinel row fallbacks across Apple Podcasts, Reddit, and Gitee by @Benjamin-eecs in #1634
  • feat(suno): add suno.com music-generation adapter by @ele-yufo in #1638
  • fix(zhihu): decode numeric entities in answer detail by @lenovobenben in #1629
  • feat(reddit): 新增 subscribed 命令 + 在 listing 命令上暴露 id / created_utc / selftext by @huanghe in #1651
  • chore(deps): bump undici from 6.25.0 to 8.3.0 by @dependabot[bot] in #1661
  • chore(deps): bump ws from 8.20.0 to 8.20.1 by @dependabot[bot] in #1662
  • chore(deps): bump @types/node from 25.6.0 to 25.9.0 by @dependabot[bot] in #1664
  • chore(deps): bump tsx from 4.21.0 to 4.22.2 by @dependabot[bot] in #1663
  • feat(twitter): 新增 list-create 命令(GraphQL CreateList mutation) by @huanghe in #1656
  • feat(twitter): 在 read 命令上暴露 card binding_values(链接预览卡片) by @huanghe in #1660
  • fix(cli): escape leading-dash positional values via argv preprocessor by @Benjamin-eecs in #1658
  • feat(linkedin-learning): add search / trending / course read commands by @Benjamin-eecs in #1657
  • docs(readme): tighten skill attribution (T1) + remove redundant Highlights (T2) by @jackwener in #1666
  • feat(reddit/subscribed): 接入 LoginWallError 嗅探(#1650 的第一个 caller) by @huanghe in #1668
  • feat(twitter): 在 read 命令上暴露 quoted_tweet(被引用的推文) by @huanghe in #1667
  • feat(zhihu): include answer links in question results by @lenovobenben in #1670
  • feat(twitter): 在 read 命令上暴露 bio(用户简介) by @huanghe in #1675
  • fix(xhs,youtube): 把合法空数据语义切到 EmptyResultError by @huanghe in #1674
  • feat(reddit): 在 listing 命令上暴露 post_hint / url / preview / gallery 4 个媒体路由列 by @huanghe in #1676
  • fix(deps): restore Node 20 compatibility by @jackwener in #1673
  • feat(twitter): add device-follow command for /i/timeline notification stream by @Benjamin-eecs in #1672
  • fix(chatgpt): detect generated image surfaces by @jackwener in #1677
  • feat(zhihu): add answer comments reader by @lenovobenben in #1671
  • docs(readme): curate built-in commands + add wrangler external CLI by @jackwener in #1679
  • fix(adapters): migrate empty-data throws to EmptyResultError across 5 commands (#1674 follow-up) by @Benjamin-eecs in #1678
  • feat(linkedin): add people-search command by @Benjamin-eecs in #1649
  • docs(readme): shrink CLI Hub + Core Concepts + merge Update into Install by @jackwener in #1681
  • chore(skills): remove smart-search by @jackwener in #1683
  • feat(booking): add search adapter for Booking.com hotel listings by @jackwener in #1680
  • chore(release): 1.8.0 by @jackwener in #1682

New Contributors

Full Changelog: v1.7.22...v1.8.0

v1.7.22

15 May 09:31
aae6e82

Choose a tag to compare

What's Changed

Full Changelog: v1.7.21...v1.7.22

v1.7.21

14 May 11:37
9ccc896

Choose a tag to compare

What's Changed

  • fix(ci): add Windows native binding lock entries by @jackwener in #1563
  • fix(xiaohongshu,rednote): unwrap page.evaluate envelope in search adapter by @cyqiris in #1561
  • fix(extension): reuse existing adapter tab group by @GreyC in #1541
  • feat: add DuckDuckGo, Brave, and Yahoo web search adapters by @Pandas886 in #1546
  • test(extension): cover adapter group tiebreaker by @jackwener in #1566
  • feat(boss): support job-seeker chatlist and chatmsg by @GreyC in #1539
  • fix(facebook/feed): add fallback extraction for empty article nodes by @GreyC in #1538
  • fix(social): use ephemeral adapter site sessions by @jackwener in #1569
  • chore(release): 1.7.21 by @jackwener in #1571

New Contributors

Full Changelog: v1.7.20...v1.7.21

v1.7.20

14 May 08:34
8c88a3c

Choose a tag to compare

What's Changed

  • feat(external)!: drop -cli suffix from tg/discord/wx subcommand names by @jackwener in #1544
  • fix(extension): keep active daemon websocket by @GreyC in #1540
  • docs(browser): clarify named session lifecycle by @GreyC in #1542
  • fix(extension): coalesce daemon websocket connects by @jackwener in #1554
  • feat(twitter/list-tweets): include media via extractMedia (parity with timeline/search) by @huanghe in #1464
  • feat(twitter): add extractMedia parity to bookmarks + bookmark-folder by @jackwener in #1555
  • fix(daemon): report unknown browser command results by @jackwener in #1558
  • refactor(notion): replace built-in CDP adapter with external ntn CLI by @jackwener in #1559
  • fix(cli): show external CLI package aliases by @jackwener in #1560
  • chore(release): 1.7.20 by @jackwener in #1562

New Contributors

Full Changelog: v1.7.19...v1.7.20

v1.7.19

13 May 18:34
feab24f

Choose a tag to compare

What's Changed

  • fix(xiaohongshu+rednote): scroll until enough rows for --limit > 13 (#1471) by @jackwener in #1487
  • docs(skill/adapter-author): aria-label / placeholder / title are locale-dependent (#1474) by @jackwener in #1488
  • feat(ctrip): add hotel-search + flight browser-mode commands (#1481) by @jackwener in #1489
  • chore(scripts): auto-refresh dist/ before build-manifest by @jackwener in #1490
  • feat(reddit): add whoami, home, subreddit-info read commands by @jackwener in #1491
  • refactor(browser): replace --session flag with positional by @jackwener in #1505
  • feat(browser): add function form page.evaluate by @jackwener in #1508
  • refactor(env): remove OPENCLI_KEEP_TAB by @jackwener in #1509
  • refactor(extension): remove lease key session backdoor by @jackwener in #1510
  • fix(xueqiu/kline,earnings-date): format dates in Asia/Shanghai instead of UTC by @Benjamin-eecs in #1498
  • fix(browser): drop session injection from extension exec results by @hansnow in #1518
  • ci(e2e): drop e2e-headed from pull_request trigger by @jackwener in #1521
  • ci(adapter-test): gate off pull_request by @jackwener in #1522
  • fix(google/search): wrap evaluate return to fix Array.isArray check by @lyingflatDDD in #1523
  • fix(twitter): make reply submission robust by @darthjaja6 in #1511
  • fix(twitter): repair search and tweets readback by @darthjaja6 in #1512
  • feat(reddit/read): --expand-more via /api/morechildren + 7-kind typed errors by @jackwener in #1492
  • fix: clamp download progress percentages by @hiSandog in #1520
  • fix(xiaohongshu+rednote/search): fall back to href-based note cards when section.note-item class is dropped by @Benjamin-eecs in #1507
  • feat(zhihu): paginate question answers and recommendations by @lenovobenben in #1517
  • chore: drop util.styleText to support Node v20+ by @jackwener in #1524
  • fix(xiaohongshu): parseLikes should handle 2.1w / 1.5万 / 1.2k shortforms by @John15Wil in #1504
  • fix(google-scholar/search): wrap evaluate return to fix serialization by @lyingflatDDD in #1525
  • feat(zhihu): add answer-detail to fetch a single answer's full content by @jackwener in #1528
  • fix(twitter): raise cursor pagination guard by @jackwener in #1532
  • fix(twitter): repair list-add / list-tweets / lists / following after 2026-05 changes by @ppop123 in #1503
  • feat(twitter): default tweets to logged-in user + fix sibling envelope-unwrap silent bug by @jackwener in #1531
  • chore(release): 1.7.19 by @jackwener in #1543

New Contributors

Full Changelog: v1.7.18...v1.7.19

v1.7.18

11 May 18:51
23e1161

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.7.17...v1.7.18

v1.7.17

11 May 18:25
c1af68b

Choose a tag to compare

What's Changed

  • refactor(browser): replace workspace with explicit sessions by @jackwener in #1461
  • refactor(adapter): rename site browser reuse to persistent sessions by @jackwener in #1462
  • refactor(doctor): drop --no-live / --sessions + dead protocol chain by @jackwener in #1470
  • feat(chatgpt): support local image uploads by @E2ern1ty in #1476
  • chore(release): 1.7.17 by @jackwener in #1483

Full Changelog: v1.7.16...v1.7.17