Skip to content

Add opt-in live session indicators and unread result markers - #15

Open
priva7eer wants to merge 8 commits into
Netroforge:mainfrom
priva7eer:feat/session-status-pr
Open

priva7eer wants to merge 8 commits into
Netroforge:mainfrom
priva7eer:feat/session-status-pr

Conversation

@priva7eer

Copy link
Copy Markdown

Summary

The chat list currently gives no indication that an agent is working or that a completed result is waiting to be read. Add codexExtras.showSessionStatusIcons, an experimental setting that is off by default, so the author's existing icons and metadata-only reads remain unchanged unless enabled.

  • Blue spinner for confirmed live work, yellow bell for blocking input/approval waits, and yellow question mark for unanswered non-blocking questions.
  • Green check for a new result. Opening it successfully through Extras acknowledges that specific result across reloads; failed opens and stale clicks cannot acknowledge a newer completion.
  • Orange interrupted and red failed indicators. Small gray dots for idle, unknown, and reviewed states keep text aligned. Unconfirmed activity uses a muted clock, never a spinner inferred from an unfinished log.
  • Match async answers individually, including legacy rehydrated IDs; expire superseded and abandoned questions.

Uses file events and a read-only local IPC observer rather than status polling. The observer sends no task-control requests and retains runtime state and pending question IDs, not transcripts. Log reads are cached and limited to the final 256 KiB. The setting toggles without reloading.

Compatibility: the IPC stream is internal and undocumented (verified with openai.chatgpt 26.1007.21434 on Windows). Disconnects, unsupported stream versions, and revision gaps invalidate or reconcile live state. A connected but frozen owner cannot be reliably detected. Unix endpoint support is implemented and covered by mocked transport tests; live Unix connectivity has not been verified. Details: docs/SESSION-STATUS.md.

Independent of #13; archive changes are excluded. No version bump, dependencies, or generated VSIX files.

Closes #14

Validation

  • Windows, Node 24.14.0: npm ci --offline --no-audit --no-fund, npm test (41/41), and npm run package -- --out codex-extras-status.vsix.
  • Ubuntu via WSL, Node 22.23.3: npm test (41/41) and npm run package -- --out codex-extras-status-ci.vsix. Dependencies installed from the npm cache with --offline --ignore-scripts --no-audit --no-fund because DNS was unavailable.
  • Regression coverage includes IPC framing and disconnection, protocol/revision mismatches, bounded log reads, option toggling, question reconciliation, persistent result acknowledgement, failed opens, and completion/open races.
  • Manual Windows smoke testing during development: local IPC handshake and runtime snapshots, working state, question-state corrections on existing sessions, local VSIX installation, and result-review indicators. The final neutral-dot visual still requires a window reload for visual confirmation.
  • git diff --check passes; README and changelog updated.

Checklist

  • The change is focused and contains no unrelated files.
  • npm test passes.
  • npm run package succeeds.
  • User-facing behavior is documented.
  • CHANGELOG.md is updated when appropriate.
  • No credentials, personal data, or generated build artifacts are committed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Optional session activity indicators and unread result markers

1 participant