Skip to content

fix: normalize "original" locale to "en" for datetime formatting#4472

Open
leonardthethird wants to merge 4 commits into
mainfrom
claude/issue-4122-some-feed-tile-text-inconsistently
Open

fix: normalize "original" locale to "en" for datetime formatting#4472
leonardthethird wants to merge 4 commits into
mainfrom
claude/issue-4122-some-feed-tile-text-inconsistently

Conversation

@leonardthethird

@leonardthethird leonardthethird commented Mar 12, 2026

Copy link
Copy Markdown
Contributor

Fix datetime strings being partially localized based on OS language when site is in "Untranslated" mode.

When users select "Untranslated" mode, the locale is set to "original" which is not a valid BCP 47 tag. Browser Intl APIs fall back to OS language, causing mixed-language strings like "Revealed el próximo mes".

Adds a normalizeIntlLocale() utility that maps "original" to "en" and applies it consistently across all components using Intl-based date formatting.

Fixes #4122

Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes
    • Improved locale normalization for date/time displays across post cards and relative time components, ensuring consistent formatting and correct handling of the special "original" locale.
  • Chores / Refactor
    • Introduced shared formatter helpers for international dates and distances, and updated components to use them instead of direct date-fns Intl formatting.
    • Enforced usage via ESLint restrictions (while allowing the formatter utilities themselves).

When users select "Untranslated" mode, the locale is set to "original".
This is not a valid BCP 47 locale tag, so browser Intl APIs fall back to
the OS language, causing mixed-language strings like "Revealed el próximo mes".

Add a normalizeIntlLocale() utility that maps "original" to "en" and apply
it consistently across all components that pass locale to intlFormat,
intlFormatDistance, or the <relative-time> element.

Fixes #4122

Co-authored-by: leonardthethird <leonardthethird@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Mar 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Centralizes locale normalization for Intl date formatting, updates several UI components to use the shared helpers, and adds an ESLint rule preventing direct use of the restricted date-fns Intl imports.

Changes

Locale-normalized formatting

Layer / File(s) Summary
Formatter helpers
front_end/src/utils/formatters/date.ts
Added normalizeIntlLocale, updated existing date helpers to use it, and introduced formatIntlDate / formatIntlDistance wrappers around date-fns Intl APIs.
Component call sites
front_end/src/app/(main)/(home)/components/research_and_updates.tsx, front_end/src/components/consumer_post_card/upcoming_cp.tsx, front_end/src/components/cp_reveal_time/cp_reveal_time.tsx, front_end/src/components/ui/local_daytime.tsx, front_end/src/components/ui/relative_time.tsx
Switched date and relative-time rendering to the shared formatter helpers and normalized locale handling in RelativeTime and LocalDaytime.
Lint restriction
front_end/.eslintrc.json
Added a restricted-imports rule for direct date-fns Intl usage, with an override for the formatter utility module.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested reviewers: ncarazon

Poem

🐇 I nibbled the locale, then hopped it along,
"original" turned "en" and the strings sang in song.
Dates now sit tidy, time tags behave right,
And mixed-language crumbs took a softer night.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: normalizing the "original" locale for datetime formatting.
Linked Issues check ✅ Passed The changes address #4122 by normalizing "original" to "en" across Intl-based date and relative-time formatting, preventing mixed-language output.
Out of Scope Changes check ✅ Passed The extra lint restriction and formatter refactor support the locale fix and do not appear unrelated to the issue.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/issue-4122-some-feed-tile-text-inconsistently
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch claude/issue-4122-some-feed-tile-text-inconsistently

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
front_end/src/utils/formatters/date.ts (1)

192-198: Add a small regression test around normalizeIntlLocale.

This helper is now the single guard for Untranslated mode, so a focused test for "original" -> "en" plus one passthrough locale would make the bugfix harder to regress.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@front_end/src/utils/formatters/date.ts` around lines 192 - 198, Add a small
unit test suite for normalizeIntlLocale: import normalizeIntlLocale from its
module, then add two tests — one asserting normalizeIntlLocale("original")
returns "en" and another asserting normalizeIntlLocale("fr") (or "en-US")
returns the same input (passthrough). Use the project's test framework (e.g.,
Jest) and place the test alongside other utils tests so it runs in CI; name the
tests clearly like "returns en for 'original' (Untranslated mode)" and "passes
through valid locales".
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@front_end/src/utils/formatters/date.ts`:
- Around line 192-198: Add a small unit test suite for normalizeIntlLocale:
import normalizeIntlLocale from its module, then add two tests — one asserting
normalizeIntlLocale("original") returns "en" and another asserting
normalizeIntlLocale("fr") (or "en-US") returns the same input (passthrough). Use
the project's test framework (e.g., Jest) and place the test alongside other
utils tests so it runs in CI; name the tests clearly like "returns en for
'original' (Untranslated mode)" and "passes through valid locales".

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7c986d69-6129-4fac-b08b-7fe3c66e37ad

📥 Commits

Reviewing files that changed from the base of the PR and between 2e79b4d and e30cc43.

📒 Files selected for processing (5)
  • front_end/src/app/(main)/(home)/components/research_and_updates.tsx
  • front_end/src/components/consumer_post_card/upcoming_cp.tsx
  • front_end/src/components/cp_reveal_time/cp_reveal_time.tsx
  • front_end/src/components/ui/local_daytime.tsx
  • front_end/src/utils/formatters/date.ts

@github-actions

github-actions Bot commented Mar 12, 2026

Copy link
Copy Markdown
Contributor

🚀 Preview Environment

Your preview environment is ready!

Resource Details
🌐 Preview URL https://metaculus-pr-4472-claude-issue-4122-some-feed-ti-preview.mtcl.cc
📦 Docker Image ghcr.io/metaculus/metaculus:claude-issue-4122-some-feed-tile-text-inconsistently-930360b
🗄️ PostgreSQL NeonDB branch preview/pr-4472-claude-issue-4122-some-feed-ti
Redis Fly Redis mtc-redis-pr-4472-claude-issue-4122-some-feed-ti

Details

  • Commit: 930360bf1e3320fb1a6f2e639505f8357086ee4d
  • Branch: claude/issue-4122-some-feed-tile-text-inconsistently
  • Fly App: metaculus-pr-4472-claude-issue-4122-some-feed-ti

ℹ️ Preview Environment Info

Isolation:

  • PostgreSQL and Redis are fully isolated from production
  • Each PR gets its own database branch and Redis instance
  • Changes pushed to this PR will trigger a new deployment

Limitations:

  • Background workers and cron jobs are not deployed in preview environments
  • If you need to test background jobs, use Heroku staging environments

Cleanup:

  • This preview will be automatically destroyed when the PR is closed

@leonardthethird

Copy link
Copy Markdown
Contributor Author

@claude deal with failing unit tests / frontend checks.

@claude

claude Bot commented Mar 17, 2026

Copy link
Copy Markdown
Contributor

Claude finished @leonardthethird's task in 1m 35s —— View job


Fixed failing frontend lint check

  • Identify failing CI checks — Frontend Checks failed at check linters step
  • Read relevant code and test files — ESLint import/order error in research_and_updates.tsx
  • Fix the failures — moved normalizeIntlLocale import into correct alphabetical position within the @/ import group
  • Push fixes — committed and pushed as 930360b

Root cause: The normalizeIntlLocale import was placed in its own separate group (with a blank line above it) and was out of alphabetical order relative to other @/ imports. Fixed by removing the blank line and moving the import after @/utils/core/cn.
|

…ates

Co-authored-by: leonardthethird <leonardthethird@users.noreply.github.com>
@claude claude Bot temporarily deployed to testing_env March 17, 2026 18:15 Inactive
@claude claude Bot temporarily deployed to testing_env March 17, 2026 18:15 Inactive
@ncarazon

ncarazon commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

@claude If we introduce a new place where Intl formatting is applied, developers will need to manually add normalizeIntlLocale calls. Can we optimize that? One option could be to normalize the locale inside the formatters itself instead of normalizing it when accessing locale value from next-intl

@claude

claude Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Claude finished @ncarazon's task in 1m 42s —— View job


Analysis: centralizing normalizeIntlLocale

  • Read normalizeIntlLocale and all call sites
  • Investigate direct date-fns / Intl usage across the app
  • Check whether normalizing at the locale-source layer is viable
  • Post recommendation

Good point — the current PR already does "normalize inside the formatter" for the helpers we own (formatDate, formatDatetime, formatRelativeDate all call normalizeIntlLocale internally, date.ts:91-146). The reason four call sites still normalize explicitly is that they bypass those helpers and call date-fns's intlFormat / intlFormatDistance directly:

Two ways to solve it (I'd pick option A)

A. Push the last direct date-fns Intl calls behind wrappers in date.ts. Extend the existing pattern with two small helpers, e.g. formatIntlDate(locale, date, opts) and formatIntlDistance(locale, date, base, opts) that just forward to date‑fns with normalizeIntlLocale(locale) applied. Then the four components drop the normalizeIntlLocale at the call site, and the guard rail becomes "don't import intlFormat / intlFormatDistance from date-fns directly" — enforceable via an ESLint no-restricted-imports rule so a future contributor gets a lint error instead of a locale bug in prod.

B. Normalize at the locale-accessor layer (a useAppLocale() / getAppLocaleForIntl() shim that wraps next-intl). Problem: "original" is a load‑bearing value elsewhere — request.ts:43-53 uses it to pick which messages bundle to load, and LanguageService / the language menu treat it as a first-class option (language_service.ts:11). A blanket shim would break message loading; a shim that returns two values gives us the same "did you use the right accessor?" burden we have today, just moved one layer up.

Recommendation: go with A, and add a no-restricted-imports rule for intlFormat / intlFormatDistance from date-fns so the pattern is enforced. Small, matches what the PR already started, and turns "developer must remember" into a lint error.

Happy to make that change on this branch if you want — just say the word and I'll add the two wrappers, migrate the four call sites, and wire up the lint rule.
• branch: claude/issue-4122-some-feed-tile-text-inconsistently

@ncarazon

ncarazon commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

@claude let's proceed with option A

@claude

claude Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Claude finished @ncarazon's task in 5m 44s —— View job


Implementing option A: wrap direct date-fns Intl calls

  • Read date.ts and the four call sites
  • Add formatIntlDate / formatIntlDistance wrappers to date.ts
  • Normalize lang inside RelativeTime (same class of bug via <relative-time> web component)
  • Migrate the four components off direct date-fns Intl imports
  • Add ESLint no-restricted-imports rule for intlFormat / intlFormatDistance from date-fns
  • Push commit — ffa75a8

Summary of changes

front_end/src/utils/formatters/date.ts — two thin wrappers around date-fns, both applying normalizeIntlLocale internally:

formatIntlDate(locale, date, formatOptions?)         // → intlFormat
formatIntlDistance(locale, date, baseDate, options?) // → intlFormatDistance

front_end/src/components/ui/relative_time.tsx — normalizes the lang prop before forwarding to <relative-time>, because that web component uses lang to drive its own Intl formatting and would otherwise hit the same OS-language-fallback bug.

Four call sites (research_and_updates.tsx, upcoming_cp.tsx, cp_reveal_time.tsx, local_daytime.tsx) — dropped normalizeIntlLocale and now pass useLocale() / getLocale() directly into the wrappers and RelativeTime.

front_end/.eslintrc.json — added:

"no-restricted-imports": ["error", {
  "paths": [{
    "name": "date-fns",
    "importNames": ["intlFormat", "intlFormatDistance"],
    "message": "Use formatIntlDate / formatIntlDistance from @/utils/formatters/date …"
  }]
}]

with an overrides entry that turns the rule off inside src/utils/formatters/date.ts itself (which legitimately needs the raw date-fns imports).

Net effect: new call sites can just do useLocale() → wrappers, and if someone reaches for the raw date-fns Intl functions the lint step fails with the correct suggestion, instead of shipping a locale bug to Untranslated-mode users.

I couldn't run next lint / tsc locally in this environment (permission-gated), so CI is authoritative for validation.
• branch: claude/issue-4122-some-feed-tile-text-inconsistently

…ization

Adds `formatIntlDate` / `formatIntlDistance` in @/utils/formatters/date
so `normalizeIntlLocale` is applied inside the wrapper, and callers stop
needing to normalize the "original" locale at every site. Also normalizes
the `lang` prop inside RelativeTime, since the underlying <relative-time>
web component uses it for Intl formatting and would otherwise hit the
same OS-language-fallback bug.

An ESLint `no-restricted-imports` rule now blocks direct imports of
`intlFormat` / `intlFormatDistance` from date-fns so a future contributor
gets a lint error instead of a subtle locale bug in Untranslated mode.

Co-authored-by: Nikita <93587872+ncarazon@users.noreply.github.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
front_end/src/utils/formatters/date.ts (1)

96-96: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider having formatDate/formatDatetime/formatRelativeDate delegate to the new wrappers.

formatIntlDate/formatIntlDistance were added specifically to centralize the normalizeIntlLocale + intlFormat/intlFormatDistance call pattern, but formatDate, formatDatetime, and formatRelativeDate still call intlFormat/intlFormatDistance directly with an inline normalizeIntlLocale(locale) rather than reusing the new wrappers. This leaves two parallel implementations of the same call pattern in the same file, so any future change to the wrapping logic (e.g. adding a fallback, logging, or additional normalization) won't automatically propagate to these three functions.

♻️ Example refactor for formatRelativeDate
-  if (Math.abs(delta) < relCutoff) {
-    dateStr = intlFormatDistance(date, now, {
-      locale: normalizeIntlLocale(locale),
-      numeric: "always",
-      style: short ? "short" : "long",
-    });
+  if (Math.abs(delta) < relCutoff) {
+    dateStr = formatIntlDistance(locale, date, now, {
+      numeric: "always",
+      style: short ? "short" : "long",
+    });

A similar change applies to formatDate/formatDatetime using formatIntlDate.

Also applies to: 110-110, 134-140, 198-235

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@front_end/src/utils/formatters/date.ts` at line 96, `formatDate`,
`formatDatetime`, and `formatRelativeDate` still duplicate the
`normalizeIntlLocale` + `intlFormat`/`intlFormatDistance` pattern instead of
using the new wrappers. Update these functions to delegate to `formatIntlDate`
and `formatIntlDistance` so the shared locale normalization and formatting logic
stays centralized in `formatIntlDate`/`formatIntlDistance`, and remove the
inline `normalizeIntlLocale(locale)` calls from the direct formatter
invocations.
front_end/.eslintrc.json (1)

43-54: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

ESLint rule also needs the date-fns subpath entrypoints
no-restricted-imports only matches the bare date-fns specifier, so date-fns/intlFormat and date-fns/intlFormatDistance would still bypass this guard. Add explicit restrictions for both subpaths too.

Suggested addition
         "paths": [
           {
             "name": "date-fns",
             "importNames": ["intlFormat", "intlFormatDistance"],
             "message": "Use formatIntlDate / formatIntlDistance from `@/utils/formatters/date` so the 'original' locale (Untranslated mode) is normalized for Intl APIs."
+          },
+          {
+            "name": "date-fns/intlFormat",
+            "message": "Use formatIntlDate from `@/utils/formatters/date` so the 'original' locale (Untranslated mode) is normalized for Intl APIs."
+          },
+          {
+            "name": "date-fns/intlFormatDistance",
+            "message": "Use formatIntlDistance from `@/utils/formatters/date` so the 'original' locale (Untranslated mode) is normalized for Intl APIs."
           }
         ]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@front_end/.eslintrc.json` around lines 43 - 54, The no-restricted-imports
rule only blocks the bare date-fns import, so date-fns/intlFormat and
date-fns/intlFormatDistance can still slip through. Update the ESLint config in
the no-restricted-imports paths list to explicitly restrict both subpath
entrypoints as well, alongside the existing date-fns restriction. Keep the
existing message pointing developers to formatIntlDate and formatIntlDistance
from `@/utils/formatters/date`.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@front_end/.eslintrc.json`:
- Around line 43-54: The no-restricted-imports rule only blocks the bare
date-fns import, so date-fns/intlFormat and date-fns/intlFormatDistance can
still slip through. Update the ESLint config in the no-restricted-imports paths
list to explicitly restrict both subpath entrypoints as well, alongside the
existing date-fns restriction. Keep the existing message pointing developers to
formatIntlDate and formatIntlDistance from `@/utils/formatters/date`.

In `@front_end/src/utils/formatters/date.ts`:
- Line 96: `formatDate`, `formatDatetime`, and `formatRelativeDate` still
duplicate the `normalizeIntlLocale` + `intlFormat`/`intlFormatDistance` pattern
instead of using the new wrappers. Update these functions to delegate to
`formatIntlDate` and `formatIntlDistance` so the shared locale normalization and
formatting logic stays centralized in `formatIntlDate`/`formatIntlDistance`, and
remove the inline `normalizeIntlLocale(locale)` calls from the direct formatter
invocations.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 444f4c6a-4a60-4dce-9f30-d633a3984272

📥 Commits

Reviewing files that changed from the base of the PR and between 930360b and ffa75a8.

📒 Files selected for processing (7)
  • front_end/.eslintrc.json
  • front_end/src/app/(main)/(home)/components/research_and_updates.tsx
  • front_end/src/components/consumer_post_card/upcoming_cp.tsx
  • front_end/src/components/cp_reveal_time/cp_reveal_time.tsx
  • front_end/src/components/ui/local_daytime.tsx
  • front_end/src/components/ui/relative_time.tsx
  • front_end/src/utils/formatters/date.ts

@ncarazon

ncarazon commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

@claude

You removed fallback to en from front_end/src/components/ui/local_daytime.tsx which would bring back the original issue described in a comment.

    // For some reason, when the locale is "original" (Untranslated), the the server and client
    //  endup with different values for  the localValue variable. This is a workaround to
    // make sure the dates render correctly on both and default to English locale when
    // in Untranslated mode
    locale = "en";
  }

I think we should add it back and keep the comment.

@claude

claude Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Claude finished @ncarazon's task in 1m 3s —— View job


Restored the "original" → "en" fallback in local_daytime.tsx

  • Read the current local_daytime.tsx and the pre-PR version
  • Restore the explicit if (locale === "original") locale = "en" block with the original comment
  • Commit and push — 5c1b9c2

You're right — the original comment was documenting a hydration mismatch on localValue, not just the Intl OS-language-fallback bug. normalizeIntlLocale inside formatDate / RelativeTime fixes the Intl call sites, but that's a different problem from SSR/CSR agreeing on the rendered string here, so the component-level "original" → "en" guard belongs alongside it. Restored the block verbatim (comment included) so future readers get the same context.
• branch: claude/issue-4122-some-feed-tile-text-inconsistently

Restore the pre-existing workaround (and its comment) that defaults the
locale to "en" when it is "original", to avoid the server/client
hydration mismatch on `localValue`. The centralized `normalizeIntlLocale`
covers Intl call sites, but this component-level guard is what keeps
SSR and CSR producing the same string here.

Co-authored-by: Nikita <93587872+ncarazon@users.noreply.github.com>
@ncarazon

ncarazon commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

@claude can you resolve merge conflicts with main branch?

@claude

claude Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Claude finished @ncarazon's task in 10m 5s —— View job


Merge conflict analysis

I can't perform the actual merge in this environment (both git fetch/git merge/git checkout <ref> -- ... and gh api are permission-gated here, and origin/main is shallow-cloned so there's no reachable merge base), so I've reconstructed what the conflicts are by comparing this branch's HEAD, the pre-PR base (2e79b4d), and the origin/main snapshot we have (eca63e3).

Conflict inventory

Only three files really matter — the rest of main's ~964 changed files are additions/edits our branch never touched, so git will auto-take main's version there.

1. front_end/.eslintrc.json — delete/modify

Main removed the legacy JSON config and switched to flat config (front_end/eslint.config.mjs). This PR modified .eslintrc.json to add the no-restricted-imports rule for date-fns intlFormat/intlFormatDistance. Standard resolution: delete .eslintrc.json on our side (accept main's deletion) and port the rule into eslint.config.mjs.

2. front_end/src/app/(main)/(home)/components/research_and_updates.tsx — delete/modify

Main deleted the whole file (the homepage was restructured — a batch of (home)/components/* files went away). This PR modified it to use formatIntlDate. Resolution: accept main's deletion.

3. front_end/src/components/consumer_post_card/upcoming_cp.tsx — text merge (non-overlapping)

Main changed <span>{t("cpRevealed")} </span><span className="block">{t("cpRevealed")}</span>. This PR changed the intlFormatDistance call to formatIntlDistance. Different lines — git will 3-way merge cleanly.

The other four PR files (cp_reveal_time.tsx, local_daytime.tsx, relative_time.tsx, utils/formatters/date.ts) weren't touched on main since 2e79b4d, so no conflicts.

The eslint.config.mjs wrinkle (worth calling out before you merge)

Porting the no-restricted-imports rule into eslint.config.mjs needs to happen as part of the merge commit itself. If I pre-add eslint.config.mjs on this branch with the rule baked in, git sees "both branches added this file with different content" at merge time — that's a fresh add/add conflict. The only clean path is: perform the real merge, and while resolving, append the restricted-imports block to the incoming eslint.config.mjs.

Suggested local sequence

git fetch origin main
git checkout claude/issue-4122-some-feed-tile-text-inconsistently
git merge origin/main
# Conflicts to resolve:
git rm front_end/.eslintrc.json
git rm 'front_end/src/app/(main)/(home)/components/research_and_updates.tsx'
# Then hand-edit front_end/eslint.config.mjs to append inside the existing rules block:
#   "no-restricted-imports": ["error", { "paths": [{
#     "name": "date-fns",
#     "importNames": ["intlFormat", "intlFormatDistance"],
#     "message": "Use formatIntlDate / formatIntlDistance from @/utils/formatters/date so the 'original' locale (Untranslated mode) is normalized for Intl APIs."
#   }]}],
# ...and add an ignores/override entry for src/utils/formatters/date.ts so it can still import the raw date-fns Intl functions.
# upcoming_cp.tsx should merge automatically — verify the block class + formatIntlDistance both survive.
git commit
git push

If you'd prefer, I can push a partial resolution that just deletes .eslintrc.json and research_and_updates.tsx — that unblocks the auto-merge but loses the ESLint guard rail (which you'd want to re-add in a follow-up commit against eslint.config.mjs once main's version is on the branch). Let me know and I'll go ahead.

  • Fetch origin/main and check for conflicts (partial — shallow clone limited scope)
  • Identify conflicting files
  • Report resolution plan
  • Push merge commit — blocked; needs local run or explicit go-ahead for the lossy partial fix
    • branch: claude/issue-4122-some-feed-tile-text-inconsistently

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Some feed tile text inconsistently translated based on os language?

2 participants