Skip to content

Sync upstream scoped provider refresh#54

Merged
ColumbusLabs merged 3 commits into
mainfrom
codex/upstream-tail-refresh-20260705
Jul 5, 2026
Merged

Sync upstream scoped provider refresh#54
ColumbusLabs merged 3 commits into
mainfrom
codex/upstream-tail-refresh-20260705

Conversation

@ColumbusLabs

Copy link
Copy Markdown
Owner

Summary

  • Syncs Pete upstream tail 9ad35deb6a890cb2e44cdd4c395eff70c78999c8..45b000c135b06a69c982b2ed09df35563b2e2350.
  • Brings in scoped provider manual-refresh state so refreshing one provider no longer greys unrelated provider rows.
  • Updates UPSTREAM_MONITOR_BASE to 45b000c135b06a69c982b2ed09df35563b2e2350 and preserves QuotaKit release ownership/versioning.

Review Focus

  • Status/menu refresh state scoping: ManualRefreshScope, manualRefreshTasks, persistent refresh row enablement, shutdown cancellation.
  • QuotaKit-specific preservation: changelog style, upstream monitor cursor, no release/appcast/CloudKit/iOS build number changes.
  • Independent agent review found no behavior/branding issues after fixing the monitor cursor typo and adding the compact changelog ledger line.

Validation

  • git diff --check
  • swift build
  • swift test --filter 'StatusMenuPersistentRefreshTests|StatusMenuSwitcherRefreshTests|StatusMenuMergedOverviewRefreshTests|StatusMenuClosedPreparationTests' (56 tests passed)
  • PARSER_LINT_BASE=origin/main ./Scripts/lint.sh lint
  • ./Scripts/check_upstreams.sh (0 commits since 45b000c135b06a69c982b2ed09df35563b2e2350)

hhh2210 and others added 3 commits July 5, 2026 07:59
* fix: scope refresh-row disabling to the provider being refreshed

Refreshing one provider greyed out — and single-flighted — the Refresh
row for every provider, so the menu implied the others were refreshing
when they were not.

Replace the single global `manualRefreshTask` with a per-scope map
(`.global` for the all-providers ⌘R/overview refresh, `.provider(p)`
for a single provider). The disable gate now reflects only the target
provider's own refresh (a global refresh still disables every row), and
`startManualRefresh` guards per scope so different providers can refresh
concurrently instead of one blocking the rest. `MenuCardRefreshMonitor`
tracks in-flight providers as a set plus a global flag.

Rewrites the refresh-row tests that encoded the old blanket behavior and
adds coverage for scoped greying and concurrent per-provider refreshes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: address review — preserve frozen cards and exclude global/provider overlap

- MenuCardRefreshMonitor: keep an already-refreshing provider's frozen card when a
  second provider's refresh re-supplies models (old-wins merge), so the first card
  no longer jumps mid-refresh — the artifact the freeze exists to prevent.
- startManualRefresh: make a .global refresh mutually exclusive with any per-provider
  one (and vice versa); two different providers still refresh concurrently.
- Merged-overview Refresh row now reflects any in-flight manual refresh, including a
  per-provider refresh's post-fetch status/token tail, instead of flickering.
- Make the test-only manualRefreshTask / manualRefreshProvider accessors return a value
  only when unambiguous (global, or exactly one task), else nil; move them to +Actions.
- Add tests: concurrent frozen-card retention, and overview-busy-through-tail + global
  refresh exclusion.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: apply frozen-card old-wins merge, global/provider exclusivity guard, scoped overview greying

* fix: isolate provider refresh snapshots

* test: use scoped refresh tasks

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
# Conflicts:
#	CHANGELOG.md
@cursor

cursor Bot commented Jul 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@ColumbusLabs ColumbusLabs merged commit 3466b07 into main Jul 5, 2026
10 checks passed
@ColumbusLabs ColumbusLabs deleted the codex/upstream-tail-refresh-20260705 branch July 5, 2026 16:02
@ColumbusLabs

Copy link
Copy Markdown
Owner Author

Merged after full validation.\n\nFinal status:\n- Upstream range synced: 9ad35de..45b000c\n- Reviewed areas: scoped manual provider refresh state, status-menu reload paths, persistent menu shutdown/tracking, QuotaKit branding/release metadata, upstream cursor integrity\n- Local validation: git diff --check; swift build; focused status-menu refresh tests; PARSER_LINT_BASE=origin/main ./Scripts/lint.sh lint; ./Scripts/check_upstreams.sh\n- CI: run 28745247178 passed lint, Linux CLI x64/arm64, macOS shards 0-3; iOS skipped due no mobile impact\n- Merge commit: 3466b07\n- Post-merge upstream monitor: no new commits since 45b000c

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants