Repository navigation
Conversation
Automated AI review
Verified: in a headless check of the head against the merge-base, the provider switches behave as the PR body describes. Four smaller points follow: a stale view after switching a provider back on, an inaccurate startup-gate comment, an overlap with open PR #11967, and a pre-existing writer limitation that the switches now expose.
From source review, the dashboard keys, provider switching and IPC paths are unchanged outside the switch view; of those, only Enter-to-refresh on the dashboard was exercised. Switching a provider back on shows its old numbers until the next refresh
Impact: stale usage is displayed as current until the next refresh: a manual one ( Suggested change: after a successful enable, run a targeted collection such as Startup-gate comment does not match Bar.qmlThe comment above Impact: the gate is correct and does help hosts that inject a tick later. On the default bar it should change nothing (no path where it does was found), and a host without a bar now waits about 6 s for its first collection. The comment will mislead anyone maintaining the gate. Suggested change: reword the comment to describe the case the gate actually covers. If a specific host showed the start-up scrape, naming it in the comment would help. Overlap with open PR #11967Open PR #11967 ("Agents: user collectors + Go connection settings card") also adds a gear through Impact: if both changes are combined as they stand, the agents panel fails to load, and Suggested change: coordinate with #11967 on a single hero control, for example one container holding both gears. Optional (pre-existing): Optional test improvement: Review informationTest scope: Source review of head AI process: Opus 5.5 Medium coordination and synthesis, Opus 5.5 Xhigh technical review and final fact check, GPT 6 Sol Xhigh search for related issues, Opus 5.5 Medium editorial check. Opt out: To stop receiving these reviews, reply to this comment saying so. |
|
Rechecked the provider implementation at
The repair needs a fresh normal collection after a saved re-enable, preserved/merged queued IDs with normal work taking priority over limits-only work, and string-entry promotion in the writer. The startup comment also needs to match the bar's synchronous injection followed by its deferred pass. Upstream integration requires composing the existing account controls and provider settings into one hero control and retaining the upstream keyboard/refresh behavior. A mechanical rebase alone does not fix these defects. This diagnostic verifies JavaScript behavior only. It does not establish QML load correctness, timer timing, or visual acceptance; the updated code still needs those checks and the requested screenshot before the PR is ready. |
Keep provider enable and disable controls beside the account picker, preserve queued refresh requests, and leave disabled providers out of normal collection. Coordinate usage publishers and cache collectors with acceptance capture and restoration. Verify the held lease and blocked writers from kernel evidence, retain snapshots on uncertain cleanup, and record exact restoration checkpoints before releasing the gate.
ef7ff3e to
a527a0b
Compare
|
| var saved = false | ||
| if (root.bar && root.bar.shell && typeof root.bar.shell.updateEntryInline === "function") | ||
| saved = root.bar.shell.updateEntryInline(root.moduleName, entry) === true | ||
| if (!saved) { | ||
| root.settings = previous |
There was a problem hiding this comment.
Unsaved switches look successful
If shell.json cannot be written, setProviderEnabled() still treats updateEntryInline() returning true as a successful save. That return value only means the config changed; persistShellConfig() updates memory and calls setText() without checking whether the write succeeded. The switch stays flipped, no failure notice appears, and enabling still starts collection. The setting disappears after restarting the shell. Keep the previous settings until the write succeeds, and restore them when it fails.
| if [[ -e $dest || -L $dest ]]; then | ||
| if ! cp -a "$dest" "$snapshot"; then |
There was a problem hiding this comment.
Linked directories stay changed
If the usage or cache directory is a symlink, agents_provider_capture_path() saves only the link with cp -a, not the contents it points to. Collectors write through that link during acceptance. Cleanup restores the same link and checks only its target string, so it reports success and deletes the backup while the target still contains the test's changes. Capture and restore the target separately, or refuse these top-level symlinks before changing the session.
| # Space flips the highlighted switch. The trap puts the saved state back. | ||
| wtype -k space | ||
| sleep 1 | ||
| screenshot "success-agents-providers-toggled" |
There was a problem hiding this comment.
Broken switches pass acceptance
The acceptance test presses Space and takes a screenshot, but never checks that a provider changed or that shell.json saved the change. The PROVIDERS header check proves only that the page opened. A missing or refusing writer can therefore pass the test without a working switch. Assert that the selected provider's saved enabled value changed before running cleanup.
Adds switches for Codex, Claude Code, Fireworks and Grok to the agents panel. The gear or
sopens settings;j/kselects a provider, Enter or Space toggles it, and Escape returns or closes the panel. The bar entry stays reachable when every provider is off.This PR is a draft while three confirmed review findings are corrected:
The correction will confirm writes before publishing settings to collectors, serialize shared configuration mutations, and preserve unrelated queued settings on failure. Acceptance must assert the actual saved toggle and fail truthfully when the writer cannot save. These corrections and their new runtime checks are pending.
Existing validation at
a527a0bcovers the earlier ordinary-path implementation: 219 focused checks with zero skips and 532 real processes; additional writer and kernel-lock probes; and an installed Btrfs acceptance checkpoint with matching captured and restored state under the actual exclusive lease. All 2,116 tracked installed files matched that candidate tree on the official 4.0.4 test VM, using Qt 6.11.2 and Quickshell 0.3.1. Screenshots confirmed the account picker, four switches, Codex interaction and Escape. That evidence does not establish asynchronous write-failure handling, external symlink-target restoration, or an asserted saved-toggle transition.A correction must also retain the newer upstream changes when rebased onto current
quattro. Qt 6.12 provider behavior, other themes and other display scales remain unverified. The usage/cache gate coordinates cooperating writers sharing the same state context; unrelated writers and QML persistence remain outside that protocol. Its restoration checkpoint does not prevent legitimate later refreshes.