Repository navigation
UI Consistency: 1 issue found
apps/web/src/timestampFormat.ts — mixed-locale output in formatDayAwareTimestamp.
The wall-clock formatter now resolves through the new timestampLocale (host/OS locale on desktop), but numericDateFormatter and numericDateWithYearFormatter are still constructed with undefined (runtime default). Because formatDayAwareTimestamp concatenates both, a packaged desktop build — where the Chromium runtime default is pinned to en-US per this PR's own rationale — renders an en-GB machine's older messages as 8/13 15:44: UK hour cycle with US month/day order in one label. This also contradicts the function's docstring, which promises "locale digit order".
Unlike the tooltip's monthNameFormatter, these formatters emit no English words, so the documented English-label exception does not cover them. Smallest fix: pass timestampLocale to both numeric date formatters (they are declared after the binding, so no reordering is required), or add a brief note if the runtime default is deliberate there.
An inline comment has been posted on the PR.
Details
Note
Your check run agent prompt is: .macroscope/check-run-agents/ui-consistency.md
More information about how Check Run Agents work can be found in our Help Center.
Scope reviewed: files matching apps/web/src/**/*.{ts,tsx,css} in the diff — apps/web/src/timestampFormat.ts and apps/web/src/timestampFormat.test.ts. Desktop (apps/desktop/**) and packages/contracts changes were read as context only.
Checks performed:
- No component, primitive, Tailwind, CSS, theme-variant, scroll/mask, or layout changes are present in this PR, so the shared-primitive and CSS-ownership rules produced no findings.
resolveTimestampLocalecorrectly falls back toundefinedon blank, structurally invalid (not a locale), and POSIX (en_GB) tags, and the new unit tests cover those paths plus theen-GBvsen-UShour cycle. Module-level resolution is safe because the preloadcontextBridgevalue is installed before renderer scripts run.- Surveyed other
Intl/toLocale*call sites inapps/web/src(Sidebar.snooze.ts,ConnectionsSettings.tsx, clerk profile pages, etc.). These remain on the runtime default; they are outside this PR's focused scope and were not flagged as repository-wide cleanup. Only the same-file composition insideformatDayAwareTimestamp, which the patch directly makes inconsistent, is reported.
🔍 Agent activity — 1 tool call
💭 Looking at the in-scope files, I'm noticing a potential issue with the module-level constant that resolves the timestamp locale at import time—this could cause mismatches during SSR and hydration. I should examine the actual implementation to understand how the formatter cache interacts with this. Looking at the UI Consistency check for this diff, I'm noticing that the locale/timestamp formatting changes are pretty minimal in scope — mostly affecting apps/web/src/timestampFormat.ts and its tests. The key inconsistency I'm seeing is that the numeric date formatters are still using
undefinedfor the locale parameter, while the time formatters have been updated to handle locale differently. This creates a real problem on desktop: a GB user would see "8/13 15:44" instead of "13/08 15:44" because the date part defaults to en-US order while the time part respects the host locale. The comment about "(locale digit order)" even hints at this being intentional, but it's exactly the kind of locale-mixing bug the PR is supposed to fix. That said, this check is specifically about shared component consistency and Tailwind ownership — the rules focus on primitives and CSS. A locale-mixing bug doesn't really fall into that category, even though the check does mention reviewing "directly affected call sites for consistency." I need to decide whether to flag this. The monthNameFormatter explicitly documents avoiding host locale, but the numeric date formatters have no such note — that's arguably an oversight. The changed line makes the time formatter locale-aware while leaving the date formatters at runtime-default, which is pre-existing behavior the patch doesn't actually introduce. But under the reporting rule about pre-existing behavior the patch makes relevant, this qualifies: formatDayAwareTimestamp now concatenates a host-locale time with a runtime-default date, creating mixed-locale output like "8/13 15:44" for an en-GB user when the packaged desktop pins Intl to en-US. That's a concrete inconsistency worth reporting. I'm also verifying the module-level evaluation of readHostSystemLocale happens after the contextBridge preload, so that's safe, and checking whether "en_GB" with an underscore would throw a RangeError since it's invalid BCP-47 — it would, but that's not an issue here. Now I'm searching through apps/web for other DateTimeFormat consumers to see if there's a broader consistency problem — other places formatting times would stay en-US while these become en-GB, which could be a more significant finding. There's a broader issue here beyond the PR's scope — many other formatters throughout the web app still use runtime defaults, but flagging all of those would be asking for unrelated cleanup. The real problem is within the same file:formatDayAwareTimestampcombines a host-locale time withnumericDateFormatterthat defaults to runtime settings, and its own documentation mentions locale digit ordering. After this PR, a desktop en-GB user would see the date in the wrong format. The author annotated whymonthNameFormatterstays default but didn't explain the numeric date ones, which suggests they might not have considered them. Since numeric date order is purely locale-dependent with no English-language content, this looks like a genuine inconsistency. I'm checking whether this would trigger the consistency/regression check — it seems like it should, given the mixed-locale output it creates. I also need to verify howformatDayAwareTimestampis being called and whetherSidebar.snooze.tshas similar issues with its timestamp formatting. I'm identifying the call sites that use formatShortTimestamp with runtime-default date labels, though I'm not sure if this warrants flagging. The real issue is the mixed locale handling in numericDateFormatter and numericDateWithYearFormatter. I'll add an inline comment to timestampFormat.ts around lines 130-138 suggesting we usetimestampLocalefor those numeric formatters, or document why we're not doing that like we did for monthNameFormatter. The challenge is that GitHub PR comments only work on lines within the diff hunks. Looking at what's available: the added lines 23-55, line 69 withtimestampLocale, and the comment block at lines 87-89. I can comment on lines 87-89 to explain that while monthNameFormatter is intentionally left alone, the numeric formatters below are now producing mixed-locale output in formatDayAwareTimestamp, and I'll provide a unified diff showing the fix. But I'm weighing whether this locale mixing issue—where a UK user sees "8/13 15:44" instead of consistent formatting—actually qualifies as a reportable finding. The PR is about desktop system locale timestamps, so this inconsistency is directly relevant to the changed behavior. The check rules focus on components and CSS, but the general instruction covers "consistency and behavioral constraints." This feels like a concrete, moderate consistency risk that warrants reporting as a single finding. I'll draft an inline comment on line 89 pointing out thatformatDayAwareTimestampnow mixes locales—the time uses the host locale while the date formatters still use the runtime default pinned toen-US. The fix would be to passtimestampLocaleto both numeric date formatters, though since there are multiple hunks I'll skip the diff and just describe the change needed.
1. modify_pr — One consistency issue found in apps/web/src/timestampFormat.ts: the day-aware timestamp now mixes the host locale (time) with the runtime-default locale (numeric date). Details inline.
Agent Credits: 50 credits