What's New
🛡️ Browser Stealth Anti-Detection
Automatic injection of 7 anti-detection patches when controlling browsers via CDP or daemon mode, preventing websites from detecting opencli's automation:
navigator.webdrivermaskingwindow.chromestub (headless only)navigator.plugins/languagesfallback (headless only)Permissions.querynormalization- Dynamic
cdc_*/__playwright/__puppeteerartifact cleanup - CDP stack trace sanitization via
Error.prototype.stackgetter override
Other Changes
- Docs sync with current command registry (#318)
- Extracted shared modules:
getErrorMessageandDEFAULT_DAEMON_PORT(#313)
What's Changed
- docs: clarify release follow-up steps by @jackwener in #279
- feat: add weixin article download adapter & abstract download helpers by @jackwener in #280
- feat(xiaohongshu): add publish command for 图文 note automation by @stone16 in #276
- feat: add Doubao browser adapter by @helloimcx in #277
- fix: add turndown dependency to package.json by @jackwener in #288
- feat(doubao-app): add Doubao AI desktop app CLI adapter by @jackwener in #289
- docs: sync adapter lists with codebase by @jackwener in #291
- feat(hackernews): add new, best, ask, show, jobs, search, user commands by @Astro-Han in #290
- fix(xiaohongshu): scope image selector to avoid downloading avatars by @jackwener in #293
- docs: add gws to External CLI Hub table in README by @Astro-Han in #286
- feat: add xianyu-cli (闲鱼) as external CLI by @donquijote2557-web in #292
- revert: remove xianyu-cli by @jackwener in #295
- fix: ensure standard PATH is available for external CLIs by @jicaiji1-max in #285
- fix(xiaohongshu): improve search login-wall handling and detail output by @xiaokuili in #298
- feat(v2ex): add node, user, member, replies, nodes commands by @Astro-Han in #282
- Add weibo search command by @caokaizz in #299
- docs: update xiaohongshu search description, fix unit test count 31→32 by @jackwener in #301
- fix(tests,docs): use positional arg syntax for search commands by @jackwener in #302
- feat(record): add live recording command for API capture by @yee94 in #300
- feat(yollomi): add new commands and update documentation in README files by @AniChikage in #235
- feat(plugin): add update command, hot reload after install, README section by @jackwener in #307
- feat: refine error handling with semantic error types by @jackwener in #312
- chore: pre-release cleanup — fix dependencies, sync docs, reduce code duplication by @jackwener in #311
- docs(SKILL.md): sync command reference — add missing sites and desktop adapters by @jackwener in #314
- fix(external): replace execSync with execFileSync to prevent command injection by @0xsline in #309
- fix: remove duplicate getErrorMessage import in discovery.ts by @jackwener in #315
- fix(e2e): broaden xiaoyuzhou skip logic for overseas CI runners by @jackwener in #316
- refactor: extract shared utilities to reduce code duplication by @shouldnotappearcalm in #313
- chore: release v1.3.2 by @jackwener in #317
- docs: sync command references with current registry by @jackwener in #318
- feat(browser): add stealth anti-detection for CDP and daemon modes by @jackwener in #319
- fix(stealth): review fixes — guard plugins, rewrite stack trace cleanup by @jackwener in #320
- chore: release v1.3.3 by @jackwener in #321
New Contributors
- @helloimcx made their first contribution in #277
- @donquijote2557-web made their first contribution in #292
- @jicaiji1-max made their first contribution in #285
- @xiaokuili made their first contribution in #298
- @caokaizz made their first contribution in #299
- @yee94 made their first contribution in #300
- @AniChikage made their first contribution in #235
- @shouldnotappearcalm made their first contribution in #313
Full Changelog: v1.3.1...v1.3.3