Repository navigation
fix(codex): derive quota expiry from exhausted windows - #570
Merged
Merged
Conversation
yyyr-p
added a commit
to yyyr-p/Floway
that referenced
this pull request
Oct 4, 2026
Integrates upstream commits e286553..c7e4d78: - refactor(responses): lower agent_message in a request middleware (Menci#576) - fix(claude-code): update subscription request defaults (Menci#571) - fix(compaction): use the context compaction shim by default (Menci#572) - fix(codex): derive quota expiry from exhausted windows (Menci#570) - fix(tls): support IP-literal certificate identities (Menci#569) - fix(web-search): resolve the OpenAI search passthrough lazily (Menci#568) - fix(provider-codex): update stable client identity for newer models (Menci#567) - fix(provider-codex): preserve Responses Lite wire semantics (Menci#543) - feat(web): adopt the blue Floway logo (Menci#563) - feat(codex): show and redeem ChatGPT reset cards (Menci#528) - fix(responses): answer Codex WebSocket prewarms locally (Menci#552) - fix(responses): handle positional tool declarations in middleware (Menci#558) - fix(gateway): preserve first-token timing across tool continuations (Menci#561) - fix(responses): consume hosted-tool streams before billing metadata (Menci#560) - fix(codex): restore output omitted from terminal snapshots (Menci#551) - fix(codex): preserve model catalog context windows (Menci#559) - fix(web): disable inactive upstream disclosure (Menci#534) - fix(translate): isolate translated request payloads (Menci#557) - feat(models): support Claude Sonnet 5.5 (Menci#555) - feat(models): support GPT-6.1 Sol (Menci#553) - fix(web): allow imported credentials on upstream creation (Menci#556) - fix(gateway): preserve hosted tool selection across aliases and continuations (Menci#549) - fix(translate): restore Responses callable identities (Menci#547) - perf(translate): bound namespace tool name allocation work (Menci#548) - fix(translate): preserve namespace descriptions on child tools (Menci#545) - feat(requests): show each request's time to first token (Menci#550) - fix(translate): reject ambiguous flat callable kinds (Menci#542) - fix(gateway): preserve client tool identity in hosted dispatch (Menci#538) - fix(web): mask credential headers in request record exports (Menci#539) Conflict resolutions: - upstreams/access-control.tsx: keep the fork's parameterized title, description, and error props (title/description ?? defaults, plus defaultOpen/revealOn) alongside upstream Menci#534's disclosureDisabled={!override}. - upstreams/access-control_test.tsx: union the Control helper to accept both error and initialOverride, and keep both Menci#534's disabled-disclosure case and the fork's validation-error cases. - control-plane/routes.ts: union the schemas.ts named imports -- the fork's OAuth2 admin bodies plus upstream Menci#528's codexRateLimitResetCreditsBody and codexRateLimitResetConsumeBody; both sides' route blocks merged cleanly. - requests/ttft_test.tsx (Menci#550): pass the fork's required exchangeStreams={[]} to the RequestDetailPanel cases that construct it with no collected streams. Verified with pnpm run verify (typegen, lint, typecheck, 611 test files / 6644 tests, test:installers, check:agents-md, check:generated-assets, check:verify-parity, build:web).
wang563681252
added a commit
to wang563681252/Floway
that referenced
this pull request
Oct 7, 2026
Integrate 68 upstream commits while retaining live Copilot catalog pricing, guarded historical repricing, Windows Codex auth, and encrypted replay lanes. Resolve compatibility identities and advance the catalog contract to revision 16. Adapt Azure Compose and Caddy to the bundled Node dashboard while preserving existing loopback ports and data volumes. Upstream references: Menci#482, Menci#488, Menci#523, Menci#570, Menci#571, Menci#572, Menci#584. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.
Summary
Codex quota snapshots contain separate primary and secondary usage percentages and reset times. Floway previously set
ratelimited_untilto the later reset from either window on every 429, even when that window still had capacity. That could keep the Codex account card or upstream-list signal marked rate-limited past the reset of the quota that was actually exhausted.This PR derives the displayed timed restriction only from windows with a finite reported usage of at least 100% and a valid reset time. When both windows are known to be exhausted, the later of those exhausted windows' known resets remains the timed restriction.
Related report from the fork: Issue #5. It is linked for context; it is not an issue in this upstream repository and is not being closed automatically.
Changes
Behavior and scope
The Codex quota badge is informational. The data plane does not use
ratelimited_untilto reject or skip requests. Floway continues to send requests upstream and returns a real upstream 429 unchanged; this change corrects the displayed known timed restriction and leaves upstream response behavior intact.The UI behavior was exercised locally with synthetic quota snapshots. It was not tested against a live Codex account or deployment. In particular, an expired known timer does not prove that an account with incomplete quota metadata is fully available; a subsequent upstream response remains authoritative.
Verification
pnpm run verifypassed: type generation, lint, typecheck, 599 test files / 6,488 tests, repository checks, and web build.pnpm run test apps/web/__tests__/components/upstream-editor/codex-quota-expiry_test.tsx packages/provider-codex/__tests__/fetch_test.tspassed: 2 files / 82 tests.pnpm run lintpassed.pnpm run typecheckpassed.No deployment was performed.