[codex] fix: guard invalid web timestamps#3515
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Approved Defensive bug fix that guards timestamp formatting utilities against invalid date inputs. Changes are limited to returning empty strings/null instead of throwing or displaying NaN, with comprehensive test coverage for the new behavior. You can customize Macroscope's approvability policy. Learn more. |
39c8024 to
399d0fd
Compare
Dismissing prior approval to re-evaluate 1a4e9ee
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 1a4e9ee. Configure here.
Dismissing prior approval to re-evaluate 00c2979
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
00c2979 to
dd3b03a
Compare
* [codex] Expand real-route app store screenshot harness (pingdotgg#4014) Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… (pingdotgg#4017) Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * feat: show nightly update changelog tooltip (pingdotgg#3832) Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * fix(git): treat selected commit paths literally (pingdotgg#3998) * fix(server): stabilize non-repository Git diagnostics (pingdotgg#4077) * Refresh app icons across release variants (pingdotgg#4080) Co-authored-by: codex <codex@users.noreply.github.com> * Update marketing GitHub star count (pingdotgg#4088) * fix(marketing): correct Cursor icon color (pingdotgg#4090) * Normalize protocol-relative remote host input as https (pingdotgg#3971) * fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) (pingdotgg#4094) * Fix documented task-runner commands (bun run -> vp) (pingdotgg#3965) Co-authored-by: Julius Marminge <julius0216@outlook.com> * Allow preview panel to grow on wide displays (pingdotgg#4044) * fix: prevent initial right-click from selecting a context menu item (pingdotgg#3877) * Fix duplicate keybinding rule when replacing with an existing rule (pingdotgg#3969) Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(server): image upload crashed dispatchCommand with a stack overflow (pingdotgg#3952) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * Remove unused code parameter from describePreviewError (pingdotgg#3970) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> * [codex] prevent ACP assistant ID collisions after restarts (pingdotgg#3932) Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(web): inset Windows desktop scrollbars from resize edge (pingdotgg#4097) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> * [codex] fix mobile composer Enter behavior (pingdotgg#3930) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * feat(server): include runtime model and effort in Codex developer instructions (pingdotgg#3948) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(ux): spamming cmd + , no longer stack opening settings (pingdotgg#2757) Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(terminal): strip AppImage runtime env from spawned terminals (pingdotgg#3108) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): thread cwd through Claude capability probe (pingdotgg#2048) (pingdotgg#2124) Co-authored-by: Julius Marminge <julius0216@outlook.com> * [codex] fix: guard invalid web timestamps (pingdotgg#3515) Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * [codex] fix: tolerate invalid latest user message timestamps (pingdotgg#3521) Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * [codex] Fix provider update checks restore defaults (pingdotgg#3531) Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(server): skip undecodable provider runtime rows when listing sessions (pingdotgg#3951) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: codex <codex@users.noreply.github.com> * Share MCP OAuth locks across Codex shadow homes (pingdotgg#4104) * Preserve T3 Code identity in macOS development launcher (pingdotgg#4102) * fix(web): increase contrast of question option descriptions (pingdotgg#3867) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(sync): reconcile fork divergences after upstream cherry-picks Post-cherry-pick fixups for the 20260718 upstream sync: - ElectronUpdater: restore setAllowDowngrade key dropped during pingdotgg#3832 conflict resolution - AcpSessionRuntime: thread assistantItemRuntimeId through the fork's session/load replay path (observeSessionLoadAssistantSegments + ensureActiveAssistantSegmentState) to match upstream pingdotgg#3932's collision-safe assistant item id scheme - Update fork tests asserting the old assistant item id format to the runtime-scoped format (AcpJsonRpcConnection, CursorAdapter) - GitVcsDriverCore test: expect the fork's for-each-ref listRefs command under pingdotgg#4077's stable-diagnostics assertion - showcasePendingTasks test: add fork-required dataAudience to EnvironmentProject fixtures Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * style: format GitVcsDriverCore.test.ts (vp check --fix) * fix(sync): coerce optional itemId to string in CursorAdapter.test asserts * style: format CursorAdapter.test.ts --------- Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Dimitar Stoykov <mitkostoikov1988@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Hugo Vizcaino Santana <42343504+HugoVizcainoSantana@users.noreply.github.com> Co-authored-by: Eric Tsai <52527831+EricTsai83@users.noreply.github.com> Co-authored-by: Manuel De Ceglie <80224270+AmoonPod@users.noreply.github.com> Co-authored-by: Kriday Dave <technocratix902@gmail.com> Co-authored-by: BunnyGamezsc <146652788+BunnyGamezsc@users.noreply.github.com> Co-authored-by: Olivier Melcher <olivier.melcher@gmail.com> Co-authored-by: Fazal Kadivar <fazalkadivar7@gmail.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: Maxwell Young <maxtheyoung@gmail.com> Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com> Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com> Co-authored-by: Leonel Rivas <herial_vi@icloud.com> Co-authored-by: Matt Van Horn <mvanhorn@users.noreply.github.com> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: Codex <codex@openai.com> Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com> Co-authored-by: wizzoapp[bot] <254688279+wizzoapp[bot]@users.noreply.github.com> Co-authored-by: Wizzo Bot <wizzoapp@users.noreply.github.com>
* Use client-side fallbacks for missing project favicons (pingdotgg#3959) * Skip stale working-task notifications (pingdotgg#3961) * Prepare Android beta branding and review diff UI (pingdotgg#3967) * perf(web): duty-cycle status animations and remove fixed noise overlay (pingdotgg#3978) * fix(docs): correct CI task-runner commands in ci.md (pingdotgg#3990) * fix(docs): repair broken source links in architecture overview (pingdotgg#3991) * fix(docs): replace stale codething-mvp absolute paths with repo-relative links (pingdotgg#3992) * docs: Add T3 Code Legal Docs (pingdotgg#3972) Co-authored-by: codex <codex@users.noreply.github.com> * Fix Legal modal header crash (pingdotgg#4000) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Fix onboarding connection status (pingdotgg#4001) Co-authored-by: codex <codex@users.noreply.github.com> * Isolate native diff highlight grammar state (pingdotgg#4029) * Fix macOS fullscreen titlebar spacing (pingdotgg#4019) * Prevent duplicate project workspace roots (pingdotgg#3829) Co-authored-by: codex <codex@users.noreply.github.com> * Normalize over-indented markdown list items (pingdotgg#4020) Co-authored-by: codex <codex@users.noreply.github.com> * Resolve localhost preview URLs for remote environments (pingdotgg#4011) Co-authored-by: codex <codex@users.noreply.github.com> * fix(mobile): Send composer images in upload wire format (pingdotgg#4035) * Fix iOS terminal Enter input encoding (pingdotgg#4043) * Add native mobile share target support (pingdotgg#4021) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Expand real-route app store screenshot harness (pingdotgg#4014) Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): use CLAUDE_CONFIG_DIR instead of HOME for Claude instanc… (pingdotgg#4017) Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * Fix dropped events during initial thread snapshot (pingdotgg#4079) * feat: show nightly update changelog tooltip (pingdotgg#3832) Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * fix(git): treat selected commit paths literally (pingdotgg#3998) * fix(server): stabilize non-repository Git diagnostics (pingdotgg#4077) * Refresh app icons across release variants (pingdotgg#4080) Co-authored-by: codex <codex@users.noreply.github.com> * Update marketing GitHub star count (pingdotgg#4088) * fix(marketing): correct Cursor icon color (pingdotgg#4090) * Normalize protocol-relative remote host input as https (pingdotgg#3971) * fix(cursor): default binary path to cursor-agent (avoid path conflict w/ grok) (pingdotgg#4094) * Fix documented task-runner commands (bun run -> vp) (pingdotgg#3965) Co-authored-by: Julius Marminge <julius0216@outlook.com> * Allow preview panel to grow on wide displays (pingdotgg#4044) * fix: prevent initial right-click from selecting a context menu item (pingdotgg#3877) * Fix duplicate keybinding rule when replacing with an existing rule (pingdotgg#3969) Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(server): image upload crashed dispatchCommand with a stack overflow (pingdotgg#3952) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * Remove unused code parameter from describePreviewError (pingdotgg#3970) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> * [codex] prevent ACP assistant ID collisions after restarts (pingdotgg#3932) Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(web): inset Windows desktop scrollbars from resize edge (pingdotgg#4097) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> * [codex] fix mobile composer Enter behavior (pingdotgg#3930) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * feat(server): include runtime model and effort in Codex developer instructions (pingdotgg#3948) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(ux): spamming cmd + , no longer stack opening settings (pingdotgg#2757) Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(terminal): strip AppImage runtime env from spawned terminals (pingdotgg#3108) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * fix(server): thread cwd through Claude capability probe (pingdotgg#2048) (pingdotgg#2124) Co-authored-by: Julius Marminge <julius0216@outlook.com> * [codex] fix: guard invalid web timestamps (pingdotgg#3515) Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * [codex] fix: tolerate invalid latest user message timestamps (pingdotgg#3521) Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * [codex] Fix provider update checks restore defaults (pingdotgg#3531) Co-authored-by: Codex <codex@openai.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(server): skip undecodable provider runtime rows when listing sessions (pingdotgg#3951) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: codex <codex@users.noreply.github.com> * Share MCP OAuth locks across Codex shadow homes (pingdotgg#4104) * Preserve T3 Code identity in macOS development launcher (pingdotgg#4102) * fix(web): increase contrast of question option descriptions (pingdotgg#3867) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> --------- Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Kriday Dave <technocratix902@gmail.com> Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Ishan <ishansachu1@gmail.com> Co-authored-by: Dimitar Stoykov <mitkostoikov1988@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Hugo Vizcaino Santana <42343504+HugoVizcainoSantana@users.noreply.github.com> Co-authored-by: Eric Tsai <52527831+EricTsai83@users.noreply.github.com> Co-authored-by: Manuel De Ceglie <80224270+AmoonPod@users.noreply.github.com> Co-authored-by: BunnyGamezsc <146652788+BunnyGamezsc@users.noreply.github.com> Co-authored-by: Olivier Melcher <olivier.melcher@gmail.com> Co-authored-by: Fazal Kadivar <fazalkadivar7@gmail.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: Maxwell Young <maxtheyoung@gmail.com> Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com> Co-authored-by: James <105842516+jamesx0416@users.noreply.github.com> Co-authored-by: Leonel Rivas <herial_vi@icloud.com> Co-authored-by: Matt Van Horn <mvanhorn@users.noreply.github.com> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: Codex <codex@openai.com> Co-authored-by: xxashxx-svg <xxanshxx9@gmail.com>

Summary
Root cause
Some future-time label helpers formatted input without first normalizing through the shared parser, so invalid strings could leak into date math.
Impact
Malformed timestamp values no longer break web timestamp labels.
Validation
PATH="$HOME/.vite-plus/bin:$PATH" vp test apps/web/src/timestampFormat.test.tsPATH="$HOME/.vite-plus/bin:$PATH" vp checkPATH="$HOME/.vite-plus/bin:$PATH" vp run typecheckNote
Low Risk
Display-layer validation only; no auth, persistence, or API contract changes beyond safer empty labels.
Overview
Hardens web timestamp helpers so malformed ISO strings no longer produce invalid labels or bad date math.
timestampFormat.tsadds sharedparseTimestampDateand routes absolute, relative, elapsed, until, and expires-in formatters through it; invalid input yields""ornullinstead ofNaN-based output.getRelativeTimeStateexposesmissingvsinvalidvsrelativefor UI that needs different copy.Diagnostics and provider settings “last checked” labels use that state so bad timestamps show Checked unavailable instead of looking like a still-loading check. Tests cover invalid inputs and valid relative state.
Reviewed by Cursor Bugbot for commit 217a7cc. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Guard invalid web timestamps across all timestamp formatting functions
parseTimestampDateintimestampFormat.tsas a shared helper that returnsnullfor invalid ISO date strings, replacing ad-hoc date construction throughout the module.formatTimestamp,formatShortTimestamp,formatRelativeTime,formatElapsedDurationLabel,formatRelativeTimeUntil,formatExpiresInLabel, etc.) now return an empty string ornullon invalid input instead of computing from aNaNdate.getRelativeTimeState, a new function returning a discriminated union ('missing'|'invalid'|'relative') so UI components can distinguish between null and invalid timestamps.DiagnosticsLastCheckedandProviderLastCheckedcomponents to usegetRelativeTimeState, showing'Checked unavailable'for invalid timestamps instead of silently treating them as missing.Macroscope summarized 217a7cc.