Conversation
Port CodexProviderDescriptorTests from upstream steipete#4005: the registered Usage Dashboard URL parses as https://chatgpt.com/codex/cloud/settings/analytics#usage with the usage fragment intact.
This reverts commit 2aa7ff5.
This reverts commit 6eec2e2.
Port the remaining upstream 0.63.0 fd2414d conditions: the legacy weekly counters must be reliable, counters are integers (an invalid used falls back to a valid remaining balance), and the replacement window is built from those counters. Translate the upstream KimiRatioPoolTests cases.
…tests - Compare the unused rolling weekly offset at full timestamp precision, like upstream's floating-point |boundary - capturedAt - 604800| < 120 check; the seconds-truncated version rejected resets 119.x s short of one week. - Split delayed-candidate revalidation into a pure evaluation that returns the decision and its fixed reason code, and report a missing current credit inventory as missingCreditInventory instead of changedCreditInventory. - Port the upstream rejection table (plan mismatch, changed and missing credit inventory, non-exact source) with reason codes, the confirmed observation reason, and the persisted relaunch test for fixed and rolling boundaries through the StateFile envelope.
…69.0-codex-plan-change-baseline
Move the plan-change weekly-reset tests into weekly_reset/tests/plan_change.rs so tests.rs stays under 1000 lines after merging #629, and port the upstream CodexPlanTransitionPublicationTests cases that were missing: - a new plan without a weekly window cannot borrow the old plan's window; - the new plan's own usage and reset become the stored baseline at 0 % and 5 %; - same-plan (any case or spacing) or blank-plan near-zero readings keep the old evidence.
Upstream loadCredentials(retryStale: true) also rereads a native credential that needs renewal, because the Codex CLI may be publishing its renewal. The usage path now repeats every failed read, including the gate's stale AuthRequired, up to three reads 50 ms apart. The last error keeps its category, so unchanged stale credentials still need the owner's renewal. The retry loop is a separate function so the tests can count reads like upstream's injected reader. The tests run on a paused clock and publish between reads, so they no longer race a writer thread: - an owner publication in progress (missing, partial, incomplete, expired, near expiry) is picked up on the second read and keeps its workspace; - retries are bounded at three reads and keep the final error category; - an unpolled or dropped load stops reading. The external-OAuth gate now loads settings only when the opt-in decides the outcome (no refresh provenance). Repeated reads no longer reload the host settings each time.
CodexBar now takes the foreground only on a direct user action (tray click, tray menu item, global hotkey, a click in its own UI). - Route every focus request through shell::activation (UserAction, IfAllowed, Never). Only UserAction calls set_focus, whose tao implementation injects a synthetic Alt through SendInput. - Build main, flyout, Settings and the float bar unfocused so show() uses SW_SHOWNOACTIVATE; add SWP_NOACTIVATE to the DWM frame refresh. - Startup and single-instance handoff ask Windows once (IfAllowed); the second instance passes its foreground permission on with AllowSetForegroundWindow before handing off. - Proof mode (CODEXBAR_PROOF_MODE) shows surfaces without activating them. - Float bar recovery restores with SW_SHOWNOACTIVATE instead of SW_RESTORE. - Auto-resume flashes an already running session's taskbar button instead of restoring and activating it, and starts new resume consoles minimized and inactive (SW_SHOWMINNOACTIVE). Batch shims now run through the system cmd.exe with quoting cmd.exe parses; the old wrapper produced \" escapes that cmd.exe cannot read. - Hooks, the Bedrock AWS CLI call and Doubao's arkcli run with CREATE_NO_WINDOW, so background refreshes open no console windows.
…icing in the background Resolve the usage_spend.rs, usageSpendSharing, UsageSpendTab, cost.rs, local_history.rs and local_sqlite_tests.rs conflicts against #610 at 15f1091 (localized known-subtotal label, tray-panel-only main). Review fixes: - Routine reads (desktop Usage & Spend, serve /cost) now start one bounded models.dev refresh in the background when the history records a model with no known public price, as upstream 0.64 does; the next read reprices. - Pricing refresh targets route each unpriced model and its routing base through the same models.dev providers a rescan prices from (google for Gemini, openai for GPT, anthropic for Claude) instead of anthropic only. - docs/CLI.md no longer calls Antigravity cost token-history only. - Translate the upstream routine-read and explicit-refresh scenarios.
(cherry picked from commit f8732f9)
(cherry picked from commit dccacc6)
(cherry picked from commit 399741e)
(cherry picked from commit ccd5867)
… setup-token advice
… process tree (keeps HEAD's LiveFailure error classification)
…ication (ExecutableNotFound vs LaunchFailed) while adopting the Job-Object reap
…riptionFallback for the hook fallback slot, gate informational windows, keep detail lines out of reset wording
…labels under Hide Personal Info
…in CLI and serve fetch contexts (keeps HEAD account projection; populates the region for serve-side Claude account fetches)
… redaction semantics (#741)
Prepare the v0.70.0 release from the cumulative Windows port line.
…ate, gate test-only helpers behind cfg(test), drop unused imports and a redundant rebinding
…ardDetails monthlyLimitBlockNow + DailyTokenPoint types, sectionTitle in display-detail fixtures
…-surface-layout.css: keep both the monthly-block status and detail selectors in the tray layout
Batch 8 integrated (GAP-03 / GAP-22 / GAP-28 + version bump) — head
|
| PR | GAP | Merged sha | Notes |
|---|---|---|---|
| #741 | GAP-03 (redact all Codex System Account labels under Hide Personal Info) | 7e5af6cb |
clean merge; one stale test on the branch still expected the pre-GAP-03 managed-account label — fixed as glue dfff91cb (desktop suite caught it) |
| #736 | GAP-22 (Devin manual paste auth guidance) | 4f343307 |
clean merge |
| #737 | GAP-28 (honor the saved Kimi API region in CLI + serve) | 93be1337 |
3 conflicts in fetch_helpers.rs / serve/data.rs / dashboard/source.rs — resolved keeping HEAD's account projection and adding the region populate BEFORE set.spawn (the branch's inner-loop populate escaped the borrow into the spawned future); missing token_account_kind/token_account_isolated fields completed in two FetchContext literals |
Version bump 4fc27d03 (per VERSION-BUMP-PLAN.md, mirroring the v0.60.3 pattern): version.env 0.70.0/150; both Cargo manifests + Cargo.lock (exactly the 2 codexbar entries) + tauri.conf.json + package.json → 0.70.0; CHANGELOG gained the [Windows] 0.70.0 - 2026-10-02 section (from RELEASE-NOTES-DRAFT.md, 18/25/2 bullets) and the stale 0.61.0 - Unreleased is retitled 0.61.0 - 2026-09-15.
Glue seams (each caught by a gate, fixed, re-run green): 911b9ed8 clippy (region-populate line had been dropped in the #737 restructure + cfg(test) gating), ada63b3a frontend (null-safe overview spend total in TrayPanel; MetricRowDisplay.monthlyLimitBlockNow; DailyTokenPoint import; sectionTitle in display-detail fixtures), fb8fa075 CSS (3 leftover #657 conflict markers in styles.css / menu-surface-layout.css — resolved keeping BOTH .menu-metric__status and .menu-metric__detail).
Validation at fb8fa075: full scripts/local-check.ps1 -Slice ci GREEN end-to-end — fmt clean, clippy --workspace --all-targets -D warnings 0 errors, cargo test --lib codexbar 2990 passed / 0 failed / 1 ignored, desktop-tauri 575 passed / 0 failed, tsc --noEmit + vite build OK, vitest 83 files / 531 passed / 0 failed, interaction-guard tests pass.
Open before merge of #735: installer build + Winget manifest prep, port-9360 browser-use proof at the release head, batch-8 validator comments (coordinator decision). PR body updated with the full batch-8 table (74 integrated PRs) and status.
…pe details, default detailed)
…eset observations
…ll quota rows, keep provider details visible in compact (release grouped ProviderDisplayRow layout kept), default detailed overview layout
…tailSection IDs (applies the hidden-id filter per detail row inside the release grouped ProviderDisplayRow layout)
…owner and open_ai_api_usage fields
…e HEAD imports plus the detailSection visibility import
v0.70.0 release prep status (head
|
Summary
Integration of the upstream steipete/CodexBar 0.60.4 → 0.70.0 port as v0.70.0, targeting
main.The branch integrates 74 port/integration PRs across batches 1–8 (plus glue commits), covering every PORT and DEFER item from the per-version manifests (0.60.4–0.70.0) that has a Windows counterpart. macOS-only behaviors are SKIPped per the coverage audit (list below). The full per-item coverage map is
port-audit/COVERAGE-0.70.md.This PR stays draft until release prep lands (version bump,
local-check -Slice ci, release notes); the user merges.Integrated PRs
Merge shas are the
Integrate #Ncommits onrelease/v0.70.0(branched2440c3+). Base-chain column fromINTEGRATION.md.SKIP list (macOS-only / no Windows counterpart)
From
COVERAGE-0.70.mdsection (1) — all documented SKIP items with reasons:ProviderMetricsInlineViewonly; Windows has no such placeholder surface.managed_process.rs).Per-provider "preserving behaviors" from the 0.66.0 bundled-plugin cutover were NOT skipped: each was checked against the local Rust provider and ported (see
COVERAGE-0.70.md0.66.0 rows).Glue commits
Status
INTEGRATION.mdadv column). Batch-8 rows still need the validator campaign — coordinator decision whether to un-draft before that completes.[Windows] 0.70.0 - 2026-10-02section; stale0.61.0 - Unreleasedretitled0.61.0 - 2026-09-15). CHANGELOG content built fromRELEASE-NOTES-DRAFT.md(18 added / 25 fixed / 2 changed bullets).scripts/local-check.ps1 -Slice cipassed end-to-end at fb8fa07 (fmt, clippy -D warnings, cargo test --lib 2990/0, desktop rust 575/0, tsc+vite build, vitest 531/0, interaction-guard tests).port-audit/release-0.70.0/), port-9360 browser-use proof at the release head, batch-8 validator comments (coordinator decision). Draft until then; user merges.