jackwener / jackwener/OpenCLI

[Bug]: chatgpt history/ask broken — chatgpt.com sidebar no longer renders conversations as <a href="/c/..."> anchors

Open
#2,435 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
29.5k
Forks
2.9k
Avg merge
15h 36m
Merged PRs (30d)
70

Description

### Description

The `chatgpt` web adapter's conversation discovery is broken against the current chatgpt.com frontend (observed 2026-08-29, logged-in home page, zh-CN UI).

ChatGPT's web app no longer renders sidebar conversation items as `` anchors — they are now bare, attribute-less `

` elements (no `` ancestor either). `extractConversationLinks()` in `clis/chatgpt/utils.js` relies entirely on `document.querySelectorAll('a[href*="/c/"]')`, so it finds nothing.

Result:

- `opencli chatgpt history` → `EMPTY_RESULT` / exit 66 ("No ChatGPT conversation links were visible in the sidebar")
- `opencli chatgpt ask ""` → `TIMEOUT` after 120s (no response detected)

The page itself is healthy: logged in, composer mounted (1 `textarea` + 1 `[contenteditable=true]`, 13 buttons), and the sidebar clearly shows a recent conversation title. The adapter simply can't see it anymore.

### Steps to Reproduce

1. `opencli chatgpt status` → reports `Connected`, `Login: 'Yes'`
2. `opencli chatgpt history --limit 3` → `EMPTY_RESULT`
3. Inspect the live bound tab:

```
opencli browser eval "document.querySelectorAll('a[href*=\"/c/\"]').length"
→ 0
opencli browser eval "document.querySelectorAll('a[href]').length"
→ 0–1 (the whole page has essentially no anchors left; earlier snapshot had exactly one: `#main`)
```

4. A sidebar conversation entry (e.g. "Update the OpenCLI Doubao PR") is a bare `

` with zero attributes and no `` ancestor; dispatching `.click()` on it does not navigate either.

### Expected Behavior

- `chatgpt history` should list visible conversations
- `chatgpt ask` should send the prompt and wait for the response successfully

Suggestion: conversation-list discovery probably needs to stop keying on `a[href*="/c/"]`. The new sidebar items expose no stable attributes at all (bare `

`s), which will make selector-based detection drift-prone — maybe role/tree-item semantics or another discovery path (SPA router state) is worth considering.

### Environment

- OpenCLI: **1.8.7** (npm global). Verified current: `npm view @jackwener/opencli version` → 1.8.7; `git ls-remote --tags` → newest tag v1.8.7; `git rev-list --count v1.8.7..upstream/main -- clis/chatgpt` → 0; installed adapter files sha256-identical to the `v1.8.7` tag.
- No local overrides: `~/.opencli/clis/` contains no `chatgpt/` copy (unrelated doubao overrides exist, chatgpt loads the packaged adapter).
- Node.js: v24.18.0 (Other)
- OS: Windows 11 Pro (Chrome desktop, UA `Windows NT 10.0; Win64; x64`, Browser Bridge extension connected, daemon v1.8.7)

### Logs

```
$ opencli chatgpt ask "1+1等于几?"
ok: false
error:
code: TIMEOUT
message: chatgpt ask timed out after 120s
help: No ChatGPT response appeared before timeout. Re-run with a higher --timeout if it is still generating.
exitCode: 75

$ opencli chatgpt history --limit 3
ok: false
error:
code: EMPTY_RESULT
message: chatgpt history returned no data
help: No ChatGPT conversation links were visible in the sidebar.
exitCode: 66

$ opencli chatgpt status
- Status: Connected
Login: 'Yes'
Url: https://chatgpt.com/

# live page diagnostics (logged-in chatgpt.com home)
{"ua":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)",
"anchors":0,"convAnchors":0,"loggedIn":true}
# body text confirms logged-in home: composer present ("你今天在想些什么?"),
# sidebar contains a real conversation title rendered as an attribute-less


```

Contributor guide

Open the contributing guide

Research direction

Start in clis/chatgpt/utils.js at extractConversationLinks(), then reproduce the live-page diagnostics and the history/ask commands against chatgpt.com. Determine a reliable way to discover visible conversations without the former anchor selector; done means history lists conversations and ask sends a prompt and receives a response.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
cli, web-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.