Codex App Usage page drops date for next-day reset times under 24h
What version of the Codex App are you using (From "About Codex" dialog)?
Version 26.506.31421 (2620)
What subscription do you have?
Paid ChatGPT plan. I am omitting the exact tier here because this appears to be a client-side timestamp formatting bug rather than a quota-tier behavior.
What platform is your computer?
Darwin 25.3.0 arm64 arm
What issue are you seeing?
The Codex App Usage page can show an incomplete reset time when the reset is on the next local calendar day but less than 24 hours away.
In the attached screenshot, the local system time is May 11, 2026 18:40. The Codex website shows that the general weekly usage limit resets at May 12, 2026 12:51, but the Codex App shows only:
Reset time: 12:51
In Chinese UI this appears as:
重置时间:12:51
Because 12:51 on May 11 has already passed, the App display makes the reset look stale or wrong. It should not drop the date when the reset is tomorrow.
Screenshot:
This is related to #21939, but not exactly the same symptom. #21939 asks for the weekly row to show reset time along with the date. This issue is about the opposite edge case: a next-day reset under 24 hours away is shown as time-only, which makes it look like today's already-past time.
What steps can reproduce the bug?
- Use Codex App on macOS.
- Use a locale/time zone where the next reset is on the next local calendar day but less than 24 hours away.
- Concrete observed case: current local time May 11, 2026 18:40, reset time May 12, 2026 12:51.
- Open Settings > Usage.
- Look at the general weekly usage limit row.
Actual behavior:
- The App renders only
12:51. - The date (
May 12) is omitted even though the reset is not on the current local date.
I also inspected the installed app bundle locally and this appears consistent with the frontend formatting logic. In webview/assets/rate-limit-rows-*.js, the reset formatter chooses timeStyle: "short" whenever the reset is less than 24 hours away:
return secondsUntilReset < 86400
? new Intl.DateTimeFormat(undefined, { timeStyle: "short" }).format(resetDate)
: new Intl.DateTimeFormat(undefined, { month: "short", day: "numeric" }).format(resetDate);
That means "tomorrow, but less than 24 hours from now" is formatted as time-only.
What is the expected behavior?
If the reset is not on the same local calendar day, the Usage page should include the date.
For example:
May 12, 12:51- or localized equivalent, such as
5月12日 12:51
More generally, reset timestamps in Usage should avoid ambiguous partial formats:
- same local day: time-only may be okay;
- different local day: show date + time;
- weekly windows: date + time is preferable because the exact reset hour matters.
Additional information
Suggested fix: format reset times based on calendar-day equality, not only on whether the timestamp is less than 24 hours away. The same bundle already appears to contain a helper that checks whether the reset date is the same local day before choosing time-only formatting.
cc @etraut-openai since you handled nearby Usage/rate-limit UI issues such as #13330 and #20395; please redirect if another app owner is more appropriate.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗