-
Notifications
You must be signed in to change notification settings - Fork 768
Comparing changes
Open a pull request
base repository: jackwener/opencli
base: v1.5.1
head repository: jackwener/opencli
compare: v1.5.2
- 8 commits
- 26 files changed
- 3 contributors
Commits on Mar 27, 2026
-
fix(extension): minimize automation window + reduce idle timeout to 3…
…0s (#521) - Create automation window with `state: 'minimized'` so it never appears in the user's taskbar or steals visual attention - Reduce idle timeout from 120s to 30s — window closes quickly after the last command finishes, instead of lingering for 2 minutes - CDP debugger works fine on minimized windows, no functional impact Fixes the user-visible issue of a blank data:text/html tab appearing during command execution.
Configuration menu - View commit details
-
Copy full SHA for a1561e5 - Browse repository at this point
Copy the full SHA a1561e5View commit details -
fix: relax extension version check, enable all adapter tests (#520)
* feat: zero onboarding, extension version check, and update notifier - Fail-fast guard in execution.ts: when daemon is running but extension is not connected, immediately surface a setup guide instead of waiting for the 30s connect timeout - Extension version handshake: extension sends `hello` with its version on WebSocket connect; daemon stores it and exposes via /status; CLI warns on mismatch in both execution path and `opencli doctor` - `opencli doctor` now shows extension version inline and reports version mismatch as an actionable issue - Non-blocking npm update checker: registers a process exit hook so the update notice appears after command output (same pattern as npm/gh/yarn); background fetch writes to ~/.opencli/update-check.json for next run - postinstall: print Browser Bridge setup instructions after shell completion install for first-time global install users Bug fixes caught in review: - discover.ts: add AbortController timeout to checkDaemonStatus() fetch, move clearTimeout after res.json() to cover body streaming - daemon.ts: clear extensionVersion and reject pending requests in ws.on('error') handler, not just ws.on('close') - update-check.ts: skip update notice when process exits with non-zero code; read cache once at module load to avoid double disk I/O; guard isNewer() against NaN from pre-release version strings * fix: relax extension version check to major-only in doctor, remove from hot path * test: enable all adapter tests via wildcard glob, fix apple-podcasts url field * fix: clearTimeout in finally block, reset extensionVersion on reconnect, fix e2e regexConfiguration menu - View commit details
-
Copy full SHA for 0f3021a - Browse repository at this point
Copy the full SHA 0f3021aView commit details -
fix(weread): resolve shelf auth fallback (#518)
* fix(weread): resolve shelf auth fallback * chore(docs): move local issue notes out of pr * fix(weread): classify session expiry as auth required --------- Co-authored-by: jackwener <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 0085d63 - Browse repository at this point
Copy the full SHA 0085d63View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6e90356 - Browse repository at this point
Copy the full SHA 6e90356View commit details -
fix(ci): stabilize public command and plugin e2e checks (#522)
* test(e2e): accept current apple podcasts fetch errors * fix(ci): stabilize plugin and public command checks --------- Co-authored-by: pi-dal <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for f79d5ab - Browse repository at this point
Copy the full SHA f79d5abView commit details -
fix(browser): retry settle probe after SPA client-side redirect (#517)
* fix(browser): retry settle probe after SPA client-side redirect SPA sites like creator.xiaohongshu.com can trigger a client-side redirect after chrome.tabs reports status 'complete', invalidating the CDP target. The waitForDomStable probe in page.goto() was unprotected, causing -32000 "Inspected target navigated or closed". Wrap the settle probe in try/catch with a single 200ms-delayed retry, consistent with the existing stealth injection error handling pattern. The retry gives the SPA redirect time to complete, while the outer catch ensures settle failure never crashes goto() since navigation itself already succeeded. Closes #502 * review: narrow settle retry to target redirects --------- Co-authored-by: jackwener <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 53b06db - Browse repository at this point
Copy the full SHA 53b06dbView commit details -
perf: smart pre-navigation, DOM-stable waits, in-memory URL tracking (#…
…524) * perf: smart pre-navigation — skip redundant domain nav + remove hardcoded 2s wait - Add `getCurrentUrl()` to IPage, Page, and CDPPage to check current browser URL - Skip pre-navigation entirely if the browser is already on the target domain - Remove the hardcoded `page.wait(2)` after pre-navigation — `page.goto()` already includes smart DOM-settle detection via `waitForDomStable`, making the fixed 2-second sleep redundant - Saves ~2s per browser command in the common case (consecutive commands on the same site), and ~1-2s even on cold navigation * perf: smart page.wait() — DOM-stable early return for waits >= 1s For page.wait(N) where N >= 1 second, use DOM MutationObserver-based stability detection instead of a fixed sleep. The original wait time becomes a hard cap, but the call returns as soon as the DOM stops mutating (500ms quiet period). This benefits ~200 hardcoded sleep calls across ~40 adapters without changing any adapter code. A typical page.wait(5) now completes in <1s when the page is already stable, instead of always waiting 5s. Short waits (< 1s) are kept as fixed sleeps — these are typically UI animation delays or anti-bot throttling where DOM-ready is irrelevant. * refactor: getCurrentUrl() uses in-memory tracking instead of round-trip Replace the sendCommand('exec', 'window.location.href') call with a local _lastUrl field set during goto(). This eliminates a daemon HTTP round-trip for the domain check, making isAlreadyOnDomain() zero-cost. On fresh tabs (about:blank), _lastUrl is null so we correctly fall through to navigation — no special-casing needed.
Configuration menu - View commit details
-
Copy full SHA for 3834292 - Browse repository at this point
Copy the full SHA 3834292View commit details -
* chore(release): 1.5.2 * test(e2e): stabilize output format checks
Configuration menu - View commit details
-
Copy full SHA for 9919f03 - Browse repository at this point
Copy the full SHA 9919f03View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v1.5.1...v1.5.2