Skip to content

Releases: steipete/oracle

0.12.0

15 May 17:53
v0.12.0
363827f

Choose a tag to compare

Added

  • CLI: add --perf-trace / --perf-trace-path / ORACLE_PERF_TRACE startup timing traces and lazy-load heavy browser/provider/runtime modules to reduce time-to-first-output.
  • API: add --allow-partial / --partial ok for multi-model runs so advisory panels can exit 0 when at least one model succeeds, while still listing saved outputs and a JSON output manifest before failures.
  • API: classify common provider failures in multi-model summaries and metadata, including auth, expired keys, quota, rate limits, and unavailable models, with secret-safe recovery hints.
  • API: add root --preflight provider readiness checks and packed CLI help smoke coverage so stale installed help is caught before release.
  • Sessions: print and persist a compact lifecycle block showing foreground/background execution, detach state, model count, and reattach command.
  • Docs: add oracle docs check / pnpm docs:check to catch documented flags that are missing from Commander help metadata.
  • Docs: document provider preflight, route diagnostics, partial multi-model recovery, and output manifest workflows in README/provider docs.
  • API: add --provider openai / --no-azure to force first-party OpenAI when Azure env/config is present, add oracle doctor --providers and --route redacted route diagnostics, keep provider-qualified model IDs on OpenRouter/proxy routes instead of accidental Azure/native routes, and fail early when Azure routing lacks a deployment.
  • Browser/MCP: add opt-in ZIP formatting for bundled browser uploads with --browser-bundle-format zip / browserBundleFormat: "zip", preserving individual file names in one ChatGPT attachment.

Fixed

  • CLI: make missing-prompt help exit nonzero, reject --dry-run --render like --dry-run --render-markdown, and terminate promptly with code 130 on SIGINT.
  • API: parse duration-style --timeout values such as 10m, derive the HTTP transport timeout and stale-session cutoff from explicit overall timeouts, and warn when an explicit shorter --http-timeout can fail first.
  • Browser: select thinking effort from the currently checked ChatGPT model row so Pro Extended runs do not fall back to the Thinking row's effort control.
  • Browser: record ChatGPT model-selection evidence in session metadata and CLI output so Pro browser runs show the selected model proof (#195). Thanks @pdurlej!
  • Browser: target ChatGPT's renamed bare Pro picker row for Pro browser runs while keeping older Pro CLI aliases mapped to the current browser target (#190, fixes #182). Thanks @jungdaesuh!
  • Browser: recognize current ChatGPT attachment chips without treating stale page-level chips as ready, and keep the longer send-button wait scoped to attachment uploads (#192). Thanks @li-aolong!

0.11.1

09 May 23:37
v0.11.1
1daf76f

Choose a tag to compare

Changed

  • Dependencies: update Google GenAI, OpenAI, Zod, Puppeteer, and developer tooling packages. (#187)

Fixed

  • Browser: allow Pro model selection in ChatGPT Temporary Chat URLs and skip archive attempts for temporary conversations. (#185) — thanks @pdurlej.
  • Browser: recognize ChatGPT's renamed GPT-5.5 Pro/Thinking model labels and always apply requested thinking time instead of assuming Pro implies Extended. (#183, fixes #182) — thanks @broady.
  • MCP: reject unknown consult fields instead of silently ignoring misspelled tool-call arguments. (#184) — thanks @pdurlej.

Docs

  • Website: highlight code blocks in the generated docs site.

CI

  • Install dependencies before building the docs site and update the Homebrew tap after releases.

0.11.0

07 May 02:18
v0.11.0
89e7027

Choose a tag to compare

Added

  • Browser/MCP: add non-destructive ChatGPT Project Sources management (oracle project-sources list|add, MCP project_sources) so Developer Mode workflows can share explicit project context through Sources. Addresses #131 and builds on #132 by @vgorlovi.
  • Browser: add repeatable --browser-follow-up prompts and MCP browserFollowUps for multi-turn ChatGPT browser consults in one conversation. (#170) — thanks @pdurlej.
  • Browser: add live ChatGPT tab inspection, oracle status --browser-tabs, browser session harvest/live-tail commands, and --browser-tab <ref> to reuse an existing ChatGPT tab by current tab, target id, URL, or title substring. (#126) — thanks @NathanSkene.
  • Browser: add --browser-research deep / MCP browserResearchMode: "deep" for ChatGPT Deep Research browser runs, including progress monitoring, reattach recovery, and iframe report capture. (#151) — thanks @pdurlej.
  • Browser: save durable browser session artifacts, including transcripts, Deep Research reports, and ChatGPT-generated image files when downloadable image URLs are present. (#169) — thanks @pdurlej.
  • Browser: add --browser-archive / MCP browserArchive to archive successful one-shot ChatGPT browser runs after local artifacts are saved. (#178) — thanks @pdurlej.
  • Browser: add --browser-attach-running to reuse a local already-running signed-in Chrome through Chrome's local remote-debugging toggle. Oracle opens a dedicated tab, stores attach metadata for reattach, and leaves the browser itself untouched. (#119) — thanks @dedene.
  • MCP: add the chatgpt-pro-heavy consult preset, MCP dry-runs, browser model strategy passthrough, and oracle bridge claude-config --local-browser for Claude Code + local ChatGPT Pro browser consults. (#149) — thanks @pdurlej.
  • Browser: coordinate concurrent ChatGPT browser runs that share one manual-login profile with a tab lease registry, --browser-max-concurrent-tabs, stale lease cleanup, and shared Chrome discovery. (#150) — thanks @pdurlej.
  • Browser: print a browser control plan before ChatGPT runs and dry-runs, and clean up leftover blank tabs after completed manual-profile runs. (#179) — thanks @pdurlej.
  • Browser: document multi-turn consult guardrails and make browser dry-runs explicit that Oracle only sends caller-provided follow-up prompts. (#180) — thanks @pdurlej.

Docs

  • Browser: document the new attach-running workflow and add a manual smoke test for the direct attach path.
  • Website: add the generated askoracle.dev docs site, social preview asset, and GitHub Pages deployment workflow.

Changed

  • Browser: emit --heartbeat status while waiting for ChatGPT browser responses, including safe Thinking/Reasoning sidecar liveness metadata without logging reasoning text. (#148) — thanks @pdurlej.

Fixed

  • Browser/MCP: harden ChatGPT Pro browser consults with louder GPT-5.5 Pro selection validation, resolved MCP dry-run details, assistant-timeout diagnostics, incomplete-capture reattach metadata, and clean Pro Extended live-run metadata. (#177) — thanks @pdurlej.
  • Browser: clear stale ChatGPT composer drafts before initial browser submissions and ignore model-picker thinking-effort controls while scanning model rows. (#176) — thanks @oirehT.
  • Browser: keep the completed conversation tab open when --browser-keep-browser is set so oracle status --browser-tabs, harvest, and --browser-tab current can inspect/reuse it.
  • Browser: retry Chrome remote-debugging approval 403 responses for --browser-attach-running and report the actionable approval/toggle guidance instead of a raw websocket error.
  • Browser: fail fast when ChatGPT shows an account security block during Deep Research, instead of waiting until the research timeout.
  • Browser: strengthen live upload verification so smoke tests catch cases where ChatGPT accepts a file chip but cannot read the uploaded content.
  • Bridge: keep generated Codex/Claude MCP config snippets clean on stdout so redirecting oracle bridge claude-config --local-browser > .mcp.json produces valid JSON.
  • MCP: clarify consult engine defaults and add ChatGPT browser-mode recovery guidance to missing GPT API-key errors. (#172) — thanks @pdurlej.

0.10.0

04 May 00:45
v0.10.0
e0dfb11

Choose a tag to compare

Changed

  • OpenAI: switch the default model to gpt-5.5-pro, add explicit gpt-5.5 support, and roll older Pro CLI aliases (gpt-5.1-pro, gpt-5.2-pro) forward to the current Pro API target.
  • Browser: target ChatGPT GPT-5.5 Pro by default for Pro browser runs and recognize current GPT-5.5 picker labels such as Pro Extended and Thinking Heavy.
  • Dependencies: update the npm dependency set.

Fixed

  • Gemini web: prefer the latest non-empty streaming response chunk so gemini-3-pro and gemini-3.1-pro browser runs do not report (no text output) when the first chunk is an empty placeholder. (#153, #154) — thanks @manhtruong03.
  • Browser: keep ChatGPT cookie sync to the minimal auth/Cloudflare set by default, preventing oversized request headers from breaking browser runs after login.
  • Browser: recover missing project/workspace URLs by resetting the tab before falling back to the base ChatGPT URL.
  • Browser: recognize uploaded attachments from current ChatGPT file-chip labels, wait for a clickable send button, and continue when ChatGPT omits sent-message attachment UI after upload has already completed.
  • Browser: reattach completed Pro sessions by anchoring response capture to the matching prompt turn instead of filtering out already-visible answers.
  • CLI: avoid loading clipboardy during startup and add /usr/sbin before lazy clipboard loading on Intel macOS, preventing spawnSync sysctl ENOENT crashes from transitive architecture detection. (#129)
  • Browser: track ChatGPT's composer rewrite by matching the new __composer-pill model button and selecting thinking effort from the model menu's per-row effort control, with bilingual label matching and old-chip fallback. (#146) — thanks @SyntaxSmith.
  • Browser: open isolated local browser tabs directly on the configured ChatGPT URL instead of starting at about:blank and navigating later. (#139) — thanks @betamod.
  • MCP: prevent the stdio server from auto-starting a second time when imported by an oracle-mcp bin shim. (#137) — thanks @SyntaxSmith.
  • Gemini web: honor resolved manual-login browser profile directories when launching Gemini browser sessions. (#124) — thanks @blackopsrepl.
  • Browser: avoid Linux hidden-home temp dirs for ephemeral Chrome profiles and redact inline cookie values in low-level debug config logs. (#136) — thanks @lodekeeper.
  • Browser: fail attachment submissions before send instead of falling back to Enter after upload/send-readiness timeouts. (#115, #116) — thanks @HeMuling.
  • Browser: stabilize localized ChatGPT model selection when the header stays generic by waiting on composer-footer model state changes. (#118) — thanks @dedene.
  • CLI: accept -p - / --prompt - to read the prompt from stdin. (#117) — thanks @frankekn.
  • Browser: preserve prompt-too-large fallback recovery after a dead-composer retry. (#117) — thanks @frankekn.
  • Browser: guard assistant response capture against stale turns from a different ChatGPT conversation. (#117) — thanks @frankekn.
  • Browser: verify sent attachments against the expected user turn instead of stale earlier turns. (#117) — thanks @frankekn.

0.9.0

08 Mar 02:47

Choose a tag to compare

Changed

  • OpenAI: switch the default Pro target from gpt-5.2-pro to gpt-5.4-pro, add explicit gpt-5.4 support, roll gpt-5.1-pro and gpt-5.2-pro forward to gpt-5.4-pro, keep provider-qualified custom ids intact, and map browser default Pro selection to ChatGPT GPT-5.4 Pro (#107, thanks @jameskraus).

Fixed

  • Gemini web: add Deep Think DOM automation for browser/manual-login runs, keep Deep Think browser-only, and honor configured browser timeouts/profile reuse semantics. (#97) — thanks @kanlanc.
  • Browser: leave headful Chrome/profile state running when a Cloudflare anti-bot challenge interrupts browser mode, and record reuse guidance in the saved session metadata. (#111) — thanks @WinnCook.
  • Browser: keep manual-login sessions reattachable when Chrome disconnects with the DevTools "Inspected target navigated or closed" error. (#110) — thanks @WinnCook.
  • Gemini API: add explicit gemini-3.1-pro alias support, map it to Google's preview model id, and keep it API-only so browser runs do not silently target the wrong Gemini web model. (#100, #101) — thanks @ninjaa.
  • API: route Gemini and Claude through chat/completions-compatible proxies when --base-url targets OpenRouter or another OpenAI-style endpoint, and keep explicit Claude base URLs from being overwritten by env defaults. (#95) — thanks @thesobercoder.
  • Azure: route Responses API runs through Azure's /openai/v1 endpoint and honor --azure-deployment as the dispatched model name. (#92) — thanks @yellowgolfball.
  • CLI: make the per-file --file size guard configurable via ORACLE_MAX_FILE_SIZE_BYTES or maxFileSizeBytes in ~/.oracle/config.json, and persist that limit for restarts. (#76)
  • CLI: scope --followup to the OpenAI/Azure Responses path so Gemini, Claude, and custom --base-url adapters fail fast instead of silently starting a fresh run. (#105) — thanks @cheulyop.
  • Gemini web: include upload MIME metadata so image attachments keep working for image analysis, with regression coverage for image and non-image payloads. (#104) — thanks @DK625.
  • Gemini web: include Chrome/sweet-cookie warnings in missing-cookie failures so app-bound-cookie and SQLite/BigInt extraction problems surface actionable diagnostics instead of a generic auth-cookie error.
  • MCP: let consult inherit browser defaults from ~/.oracle/config.json while still honoring explicit tool-call overrides. (#109) — thanks @doodaaatimmy-creator.
  • Dependencies: bump @steipete/sweet-cookie to 0.2.0, picking up the Node 22 Chrome-cookie read fix that casts expires_utc safely instead of tripping the SQLite BigInt overflow path.

0.8.6

09 Feb 18:03

Choose a tag to compare

Added

  • Sessions: add oracle restart <id> to re-run a stored session as a new session (clones options) (#84, thanks @enki).
  • Browser: optional periodic auto-reattach attempts after assistant timeouts (--browser-auto-reattach-delay / --browser-auto-reattach-interval / --browser-auto-reattach-timeout). Original PR #87 by Felix Huber (@felix-huber) — thank you!

Fixed

  • Browser: fix memory leaks in browser mode and model resolver cache (#77, thanks @bindscha).
  • Browser: fix markdown fallback extractor TDZ crash in browser mode (#90, thanks @julianknutsen).
  • CLI: honor --no-wait for Commander --no- flags (fixes restart wait preference) (#91).

Changed

  • Deps: update dependencies.

0.8.5

19 Jan 04:29

Choose a tag to compare

Added

  • Bridge: add the bridge workflow + MCP browser controls for remote ChatGPT sessions. Original PR #42 by Kyle McCleary (@kmccleary3301) — thank you!
  • CLI: add --background/--no-background, --http-timeout, --zombie-timeout, and --zombie-last-activity to support long-running API sessions.

Fixed

  • CLI: restore legacy --[no-]notify, --[no-]notify-sound, and --[no-]background flags as hidden aliases (Commander no longer accepts [no-] in new Option()).
  • Sessions: zombie detection now respects explicit timeouts and can optionally use last log activity to avoid false “zombie” status on long runs.
  • Browser: fall back to the default DevTools target if an isolated tab fails, and keep the run tab open when --keep-browser is set.
  • Browser: refresh long assistant responses without clobbering captured Markdown.

Changed

  • Config: remove legacy remote.host/remote.token and top-level remoteHost/remoteToken; use browser.remoteHost/browser.remoteToken or env vars.

0.8.4

05 Jan 00:25

Choose a tag to compare

Changed

  • Deps: update zod to 4.3.5.
  • Deps: add qs as a direct dependency (avoids Dependabot pnpm transitive-update failures).

Fixed

  • Browser: fix attachment uploads in the current ChatGPT composer (avoid duplicate uploads; avoid image-only inputs for non-image files). Original PR #60 by Alex Naidis (@TheCrazyLex) — thank you!

0.8.3

31 Dec 19:43

Choose a tag to compare

Added

  • Config: allow browser.forceEnglishLocale to opt into --lang/--accept-lang for browser runs.
  • Browser: add --browser-cookie-wait / browser.cookieSyncWaitMs to wait once and retry cookie sync. Original PR #55 by bheemreddy-samsara — thank you!

Fixed

  • Browser: avoid stray attachment removal clicks while still detecting stale chips, and allow completed uploads even if send stays disabled. Original PR #56 by Alex Naidis (@TheCrazyLex) — thank you!
  • Browser: dismiss blocking modals when a custom ChatGPT project URL is missing, and harden attachment uploads (force input/change events; retry via DataTransfer; treat “file selected” as insufficient unless the composer shows attachment UI).
  • Browser: prefer a trusted (CDP) click on the composer “+” button so attachment uploads work even when ChatGPT ignores synthetic clicks.

0.8.1

30 Dec 02:42

Choose a tag to compare

Added

  • Config: allow browser.thinkingTime, browser.manualLogin, and browser.manualLoginProfileDir defaults in ~/.oracle/config.json.

Fixed

  • Browser: thinking-time chip selection now recognizes "Pro" labeled composer pills. Original PR #54 by Alex Naidis (@TheCrazyLex) — thank you!
  • CLI: disable OSC progress output when running under Codex (CODEX_MANAGED_BY_NPM=1) to avoid spinner noise.

Tests

  • Stabilize OSC progress detection tests when CODEX_MANAGED_BY_NPM=1 is set.