Releases: jackwener/OpenCLI
Releases · jackwener/OpenCLI
v1.8.3
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
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
- @RavenLiao made their first contribution in #1805
- @LeoLin990405 made their first contribution in #1804
- @pg-adm1n made their first contribution in #1783
- @yapxue made their first contribution in #1784
- @ken-zy made their first contribution in #1802
- @Daily-AC made their first contribution in #1759
- @dusty-cjh made their first contribution in #1734
- @FSpark made their first contribution in #1733
- @nightwhite made their first contribution in #1739
- @chang-ph made their first contribution in #1740
- @Chen17-sq made their first contribution in #1593
- @JasonYang0104 made their first contribution in #1743
Full Changelog: v1.8.1...v1.8.2
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 #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
- @NSOiO made their first contribution in #1609
- @gallexy-liu made their first contribution in #1591
- @galaxypluto made their first contribution in #1577
- @truffle-dev made their first contribution in #1718
- @lvsao made their first contribution in #1717
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...
v1.8.0
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
- @chonglinghuc made their first contribution in #1379
- @sczhengyabin made their first contribution in #1499
- @ele-yufo made their first contribution in #1580
- @asimovVong made their first contribution in #1590
- @jun0315 made their first contribution in #1599
Full Changelog: v1.7.22...v1.8.0
v1.7.22
What's Changed
- fix(boss): map code=24 (identity mismatch) to AuthRequiredError by @Benjamin-eecs in #1573
- fix(weibo): unwrap page.evaluate envelope in read adapters by @Benjamin-eecs in #1568
- feat(external): add Longbridge CLI by @jackwener in #1584
- feat(external-cli): render brand alias for ambiguous executable names by @jackwener in #1585
- chore(release): 1.7.22 by @jackwener in #1586
Full Changelog: v1.7.21...v1.7.22
v1.7.21
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
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
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
- @hansnow made their first contribution in #1518
- @lyingflatDDD made their first contribution in #1523
- @lenovobenben made their first contribution in #1517
- @John15Wil made their first contribution in #1504
- @ppop123 made their first contribution in #1503
Full Changelog: v1.7.18...v1.7.19
v1.7.18
What's Changed
- feat(rednote): add rednote.com adapter mirroring xiaohongshu read commands (#1136) by @Benjamin-eecs in #1475
- feat(reddit): add reply command for replying to comments by @gauravsaxena1997 in #1428
- fix(youtube): request srv3 format for caption URLs (#1420) by @kagura-agent in #1422
- fix(doubao/ask): restore Assistant detection after 2026-05 DOM refactor by @jackwener in #1484
- fix(doctor): pass session to connectivity probe by @jackwener in #1485
- chore(release): 1.7.18 by @jackwener in #1486
New Contributors
- @gauravsaxena1997 made their first contribution in #1428
Full Changelog: v1.7.17...v1.7.18
v1.7.17
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