Repository navigation
Conversation
…x open-chat/new-chat selectors Add machine-readable chat-state reporting for external monitors/controllers: - status-all [--chats ...]: per-chat state (thinking/needs_input/attention/done/idle) in one CDP read - status: additive generating/needs_input/state keys for the active chat - open-chat --next/--prev: sidebar cycling with wrap-around, URL-slug active detection - focus: foreground the macOS app window via open -a (no CDP, no permission prompt) Fixes: - open-chat and open-chat --next/--prev: drop .or_() strict-mode crash; resolve the [role=option] row independently (exact -> substring -> JS fallback) - new-chat: click the primary Chat nav item (data-testid=nav-home) instead of a per-folder button CLI contract unchanged: existing commands, exit codes, and JSON keys are preserved; all changes are new keys or new commands.
Bump pyproject version to 2.1.0 to match the new top CHANGELOG entry (CI enforces this).
Ignore .agents/, .kiro/, and .worktrees/ so local agent tooling never gets committed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds machine-readable chat-state reporting and chat navigation to the desktop CLI (
quick_ctl.py) so an external monitor/controller can poll the CLI and branch on its JSON. The CLI contract is backward compatible — existing commands, exit codes, and JSON keys are unchanged; all changes are new keys or new commands.Added:
status-all [--chats A B ...]— one CDP connection reports every sidebar chat's state as JSON (thinking | needs_input | attention | done | idle); the active chat (identified from the page URL) gets a full state, background chats are flaggedattentionwhen the sidebar approval-dot is present. Names matched exactly, order preserved, unknown names returnfound:false.statusgains additivegenerating,needs_input, andstatekeys for the active chat (existingconnected/port/url/modeluntouched).open-chat --next/--prev— cycle the sidebar list with wrap-around.focus— foreground the macOS app window viaopen -a(no CDP, no Automation-permission prompt).Fixed:
open-chat(and--next/--prev) crashed with a Playwright strict-mode violation from combining locators via.or_(); now resolves the[role=option]row independently (exact → substring → JS fallback) and never raises.new-chatfocused the first folder instead of starting a chat; now clicks the primary "Chat" nav item (data-testid=nav-home).Version bumped to 2.1.0 with a matching CHANGELOG entry (CI enforces pyproject == top CHANGELOG version).
Type of change
Checklist
ruff check .clean;pytest -m "not realmachine"= 97 passed, 0 failures; the realmachine layer auto-skips without a live app;status-all,open-chatcycling,new-chat, andfocusverified live against a running Amazon Quick Desktop.)Related issues
N/A — happy to open a tracking issue first if the maintainers prefer.
By submitting this pull request, I confirm that my contribution is made under the terms of the project license.