Oracle-specific notes:
- ChatGPT project URLs: steipete@gmail.com -> https://chatgpt.com/g/g-p-691edc9fec088191b553a35093da1ea8-oracle/project; studpete@gmail.com -> https://chatgpt.com/g/g-p-69505ed97e3081918a275477a647a682/project. Prefer studpete URL if steipete project not found.
- Pro browser runs: allow up to 10 minutes; never click "Answer now"; keep at least 1–2 Pro live tests (reattach must stay Pro); move other tests to faster models where safe.
- Live smoke tests: OpenAI live tests are opt-in. Run
ORACLE_LIVE_TEST=1 pnpm vitest run tests/live/openai-live.test.tswith a realOPENAI_API_KEYwhen you need the background path; gpt-5-pro can take ~10 minutes. - Wait defaults: gpt-5-pro API runs detach by default; use
--waitto stay attached. gpt-5.1 and browser runs block by default; every run printsoracle session <id>for reattach. - Session storage: Oracle stores session data under
~/.oracle; delete it if you need a clean slate. - CLI output: the first line of any top-level CLI start banner should use the oracle emoji, e.g.
🧿 oracle (<version>) ...; keep it only for the initial command headline. Exception: the TUI exit message also keeps the emoji. - Model access note (2025-11-23): gpt-5.1-pro and grok-4.1 are not yet available on Peter’s keys; live tests that require them will fail until access is granted.
- Oracle CLI on Node 25: if
pnpm dlx @steipete/oracle --helpfails with a missingnode_sqlite3.node, rebuild sqlite3 in the pnpm dlx cache using system Python:PYTHON=/usr/bin/python3 /Users/steipete/Projects/oracle/runner npx node-gyp rebuildfrom the sqlite3 package dir printed in the error, then rerun the command. - Before a release, skim manual smokes in
docs/manual-tests.mdand rerun any that cover your change surface (especially browser/serve paths). - If browser smokes echo the prompt (Instant), rerun with
--browser-keep-browser --verbosein tmux, then inspect DOM withpnpm tsx scripts/browser-tools.ts eval ...to confirm assistant turns exist; we fixed a case by refreshing assistant snapshots post-send. - Browser “Pro thinking” gate: never click/auto-click ChatGPT’s “Answer now” button. Treat it as a placeholder and wait 10m–1h for the real assistant response (auto-clicking skips long thinking and changes behavior).
- Browser smokes should preserve Markdown (lists, fences); if output looks flattened or echoed, inspect the captured assistant turn via
browser-tools.ts evalbefore shipping. - Working on Windows? Read and update
docs/windows-work.mdbefore you start. - Sparkle signing key lives at
/Users/steipete/Library/CloudStorage/Dropbox/Backup/Sparkle; setSPARKLE_PRIVATE_KEY_FILEto that path when notarizing the notifier. - Browser cookie sync + Node 25: if browser runs fail with “Failed to load keytar… Cannot find module '../build/Release/keytar.node'” and no cookies are applied, rebuild keytar in the pnpm dlx cache: run
PYTHON=/usr/bin/python3 /Users/steipete/Projects/oracle/runner npx node-gyp rebuildinside the keytar directory printed in the error, then rerun the oracle command. - npm publish OTP: prepare/tag/release first, then run
npm publish ...and stop atEnter OTP:; ask user for the OTP and continue (ok to handle OTP in chat).
Browser-mode debug notes (ChatGPT URL override)
- When a ChatGPT folder/workspace URL is set, Cloudflare can block automation even after cookie sync. Use
--browser-keep-browserto leave Chrome open, solve the interstitial manually, then rerun. - If a run stalls/looks finished but CLI didn’t stream output, check the latest session (
oracle status) and open it (oracle session <id> --render) to confirm completion. - Active Chrome port/pid live in session metadata (
~/.oracle/sessions/<id>/meta.json). Connect withnpx tsx scripts/browser-tools.ts eval --port <port> "({ href: window.location.href, ready: document.readyState })"to inspect the page. - To debug with agent-tools, launch Chrome via an Oracle browser run (cookies copied) and keep it open (
--browser-keep-browser). Then use~/Projects/agent-scripts/bin/browser-tools ... --port <port>with the port from~/.oracle/sessions/<id>/meta.json. Avoid starting a fresh browser-tools Chrome when you need the synced cookies. - Double-hop nav is implemented (root then target URL), but Cloudflare may still need manual clearance or inline cookies.
- After finishing a feature, ask whether it matters to end users; if yes, update the changelog. Read the top ~100 lines first and group related edits into one entry instead of scattering multiple bullets.
- Beta publishing: when asked to ship a beta to npm, bump the version with a beta suffix (e.g.,
0.4.4-beta.1) before publishing; npm will not let you overwrite an existing beta tag without a new version.