Skip to content

feat: time gap info to package timeline page - #3121

Open
btea wants to merge 2 commits into
npmx-dev:mainfrom
btea:feat/timeline-deprecated-and-time-gap
Open

feat: time gap info to package timeline page#3121
btea wants to merge 2 commits into
npmx-dev:mainfrom
btea:feat/timeline-deprecated-and-time-gap

Conversation

@btea

@btea btea commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

🔗 Linked issue

/

🧭 Context

  • Add deprecated field to TimelineVersion API type and response
  • Show deprecated badge and message on the latest deprecated version only
  • Render deprecated message using the same sub-event layout (dot + left border)

📚 Description

image

I originally wanted to separately tag the deprecated label and display the time when it was added (the version release time and the tagging time are not the same). However, the data provided by npm seems to lack this information, so I can only maintain the current display.

@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
npmx.dev Ready Ready Preview Aug 4, 2026 1:31pm
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
docs.npmx.dev Ignored Ignored Preview Aug 4, 2026 1:31pm
npmx-lunaria Ignored Ignored Aug 4, 2026 1:31pm

Request Review

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

Lunaria Status Overview

🌕 This pull request will trigger status changes.

Learn more

By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.

You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

File Note
i18n/locales/en.json Source changed, localizations will be marked as outdated.
i18n/locales/zh-CN.json Localization changed, will be marked as complete. 🔄️
i18n/locales/zh-TW.json Localization changed, will be marked as complete. 🔄️
Warnings reference
Icon Description
🔄️ The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Package timelines now highlight release gaps longer than seven days, showing the elapsed time since the previous release.
    • Deprecated versions are clearly identified with a badge and timeline message.
    • Version events and deprecation details are displayed more consistently.
  • Localisation

    • Added English, Simplified Chinese and Traditional Chinese translations for release gaps, durations and deprecated statuses.
    • Improved translated timeline labels and accessibility text.

Walkthrough

Changes

Package timeline updates

Layer / File(s) Summary
Timeline deprecation data contract
server/api/registry/timeline/[...pkg].get.ts, i18n/schema.json
The timeline API now returns an optional deprecation message for each version. The i18n schema defines deprecation and release-gap translation keys.
Timeline event detection and rendering
app/pages/package-timeline/[[org]]/[packageName].vue
The page detects release gaps longer than seven days, identifies the latest deprecated version, and renders localised sub-events, badges, and messages.
Timeline localisation messages
i18n/locales/en.json, i18n/locales/zh-CN.json, i18n/locales/zh-TW.json
The locale files define deprecation and elapsed-time labels with day, month, and year forms.

Sequence Diagram(s)

sequenceDiagram
  participant TimelineAPI
  participant PackageTimelinePage
  participant I18nCatalog
  TimelineAPI-->>PackageTimelinePage: ordered versions with deprecation data
  PackageTimelinePage->>PackageTimelinePage: detect gaps over seven days
  PackageTimelinePage->>I18nCatalog: resolve timeline labels
  I18nCatalog-->>PackageTimelinePage: localised gap and deprecation text
  PackageTimelinePage-->>PackageTimelinePage: render timeline events and badge
Loading

Possibly related PRs

Suggested reviewers: gameroman

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly identifies the main change: adding time-gap information to the package timeline page.
Description check ✅ Passed The description explains the related deprecated-version and timeline changes.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@codecov

codecov Bot commented Aug 3, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 9.09091% with 20 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
...p/pages/package-timeline/[[org]]/[packageName].vue 9.09% 13 Missing and 7 partials ⚠️

📢 Thoughts on this report? Let us know!

@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.

Actionable comments posted: 10

🤖 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.

Inline comments:
In `@app/pages/package-timeline/`[[org]]/[packageName].vue:
- Around line 336-352: Move the chronological gap calculation around the semver
guard in the loop so it runs whenever a chronological predecessor exists, even
when prevBySemver has no entry. Keep the gap comparison and timeGap event
behavior unchanged, using entries and prevRelease rather than semver predecessor
data.
- Around line 180-183: Update the time-gap formatting logic so the years branch
is selected only when days is at least 365. For values from 360 through 364
days, retain the month-based translation and count from months, while preserving
the existing year calculation for days >= 365.
- Around line 341-344: Update the gap calculation in the package timeline
release comparison to retain the raw millisecond difference between current.time
and prevRelease.time for the seven-day threshold check. Compare that raw gap
against seven days so partial days beyond the threshold are included, and apply
Math.floor only when producing the displayed duration value.
- Around line 177-184: Update formatDuration to use the auto-imported $t()
rather than the destructured t from useI18n(), and pass the duration count as
the third plural-choice argument for the days, months, and years timeline
messages while retaining the existing thresholds and interpolation values.

In `@i18n/locales/az-AZ.json`:
- Around line 413-418: Replace the EN TEXT TO REPLACE placeholders for
deprecated, time_gap, time_gap_days, time_gap_months, and time_gap_years with
locale-specific translations, preserving {duration}, {count}, and the | plural
separator. Apply the translations in i18n/locales/az-AZ.json lines 413-418,
i18n/locales/bg-BG.json lines 376-381, and i18n/locales/pt-BR.json lines
589-594.

In `@i18n/locales/bn-IN.json`:
- Around line 658-662: Replace the English placeholder values for timeline keys
deprecated, time_gap, time_gap_days, time_gap_months, and time_gap_years with
translations in i18n/locales/bn-IN.json lines 658-662, i18n/locales/cs-CZ.json
lines 649-653, i18n/locales/de.json lines 611-615, i18n/locales/es.json lines
658-662, i18n/locales/fr-FR.json lines 611-615, i18n/locales/vi-VN.json lines
463-467, i18n/locales/zh-CN.json lines 605-609, and i18n/locales/zh-TW.json
lines 559-563; use the required three plural forms for cs-CZ and preserve the
existing {duration} and {count} interpolation tokens.

In `@i18n/locales/cs-CZ.json`:
- Around line 651-653: Update the time_gap_days, time_gap_months, and
time_gap_years translations to use Czech pluralization with three forms:
singular for 1, the 2–4 form, and the 5+ form, matching the existing
dep_increase and dep_decrease patterns.

In `@i18n/locales/hi-IN.json`:
- Around line 449-453: Replace the EN TEXT TO REPLACE placeholders for
deprecated, time_gap, time_gap_days, time_gap_months, and time_gap_years with
accurate localized translations in i18n/locales/hi-IN.json (lines 449-453),
i18n/locales/hu-HU.json (lines 377-381), i18n/locales/id-ID.json (lines
463-467), i18n/locales/it-IT.json (lines 644-648), i18n/locales/ja-JP.json
(lines 652-656), i18n/locales/mr-IN.json (lines 432-436),
i18n/locales/nb-NO.json (lines 649-653), i18n/locales/ne-NP.json (lines
658-662), and i18n/locales/nl.json (lines 651-655). Preserve the {duration} and
{count} placeholders and use each locale’s appropriate singular and plural
forms.

In `@i18n/locales/pl-PL.json`:
- Around line 425-429: Replace the English placeholder values for deprecated,
time_gap, time_gap_days, time_gap_months, and time_gap_years with Polish
translations. Remove the “EN TEXT TO REPLACE:” prefix, preserve the {duration}
and {count} placeholders, and follow the existing Polish locale’s five-form
plural structure.

In `@i18n/locales/pt-PT.json`:
- Around line 594-598: Replace the English timeline placeholders for deprecated,
time_gap, time_gap_days, time_gap_months, and time_gap_years with localized
translations in i18n/locales/pt-PT.json lines 594-598, i18n/locales/ro-RO.json
lines 602-606, i18n/locales/ru-RU.json lines 667-671,
i18n/locales/sr-Latn-RS.json lines 463-467, i18n/locales/tr-TR.json lines
610-614, and i18n/locales/uk-UA.json lines 605-609. Preserve the {duration} and
{count} interpolation tokens in every locale.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 74d45e12-7ba5-46fe-bf07-f548112dae1d

📥 Commits

Reviewing files that changed from the base of the PR and between ac8e171 and bddb97e.

📒 Files selected for processing (31)
  • app/pages/package-timeline/[[org]]/[packageName].vue
  • i18n/locales/az-AZ.json
  • i18n/locales/bg-BG.json
  • i18n/locales/bn-IN.json
  • i18n/locales/cs-CZ.json
  • i18n/locales/de.json
  • i18n/locales/en.json
  • i18n/locales/es.json
  • i18n/locales/fr-FR.json
  • i18n/locales/hi-IN.json
  • i18n/locales/hu-HU.json
  • i18n/locales/id-ID.json
  • i18n/locales/it-IT.json
  • i18n/locales/ja-JP.json
  • i18n/locales/mr-IN.json
  • i18n/locales/nb-NO.json
  • i18n/locales/ne-NP.json
  • i18n/locales/nl.json
  • i18n/locales/pl-PL.json
  • i18n/locales/pt-BR.json
  • i18n/locales/pt-PT.json
  • i18n/locales/ro-RO.json
  • i18n/locales/ru-RU.json
  • i18n/locales/sr-Latn-RS.json
  • i18n/locales/tr-TR.json
  • i18n/locales/uk-UA.json
  • i18n/locales/vi-VN.json
  • i18n/locales/zh-CN.json
  • i18n/locales/zh-TW.json
  • i18n/schema.json
  • server/api/registry/timeline/[...pkg].get.ts

Comment thread app/pages/package-timeline/[[org]]/[packageName].vue
Comment thread app/pages/package-timeline/[[org]]/[packageName].vue Outdated
Comment thread app/pages/package-timeline/[[org]]/[packageName].vue Outdated
Comment thread app/pages/package-timeline/[[org]]/[packageName].vue Outdated
Comment thread i18n/locales/az-AZ.json Outdated
Comment thread i18n/locales/bn-IN.json Outdated
Comment thread i18n/locales/cs-CZ.json Outdated
Comment thread i18n/locales/hi-IN.json Outdated
Comment thread i18n/locales/pl-PL.json Outdated
Comment thread i18n/locales/pt-PT.json Outdated

@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.

Actionable comments posted: 7

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (8)
i18n/locales/ro-RO.json (1)

16-28: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Do not ship EN TEXT TO REPLACE values in non-English locales.

These markers appear directly to users and affect the new timeline deprecation and release-gap messages.

  • i18n/locales/ro-RO.json#L16-L28: replace all marker values, including the timeline values in Lines 651-671, with Romanian translations or {} placeholders.
  • i18n/locales/sr-Latn-RS.json#L16-L53: replace all marker values, including the timeline values in Lines 634-671, with Serbian translations or {} placeholders.
🤖 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 `@i18n/locales/ro-RO.json` around lines 16 - 28, Replace every “EN TEXT TO
REPLACE” value in i18n/locales/ro-RO.json at lines 16-28 and 651-671 with
Romanian translations or {} placeholders, including the timeline messages. Apply
the same replacement in i18n/locales/sr-Latn-RS.json at lines 16-53 and 634-671,
using Serbian translations or {} placeholders; no marker values should remain.

Source: Learnings

i18n/locales/cs-CZ.json (1)

667-671: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Translate the new locale strings before release.

The four non-English locale files still expose EN TEXT TO REPLACE values to users. Replace these markers before enabling the new timeline and related UI.

  • i18n/locales/cs-CZ.json#L667-L671: Translate the timeline keys and the other markers listed in the file review.
  • i18n/locales/de.json#L667-L671: Translate the timeline keys and all added markers across the file.
  • i18n/locales/es.json#L667-L671: Translate the timeline keys and the additional markers at Lines [194], [266], [324-329], and [422].
  • i18n/locales/fr-FR.json#L667-L671: Translate the timeline keys and all added markers across the file.
🤖 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 `@i18n/locales/cs-CZ.json` around lines 667 - 671, Replace every “EN TEXT TO
REPLACE” marker with accurate translations: update the timeline keys and all
other added markers in i18n/locales/cs-CZ.json (667-671), i18n/locales/de.json
(667-671), and i18n/locales/fr-FR.json (667-671); additionally update the
timeline keys and markers at 194, 266, 324-329, and 422 in i18n/locales/es.json.
Preserve placeholders and pluralization forms.
i18n/locales/vi-VN.json (1)

634-671: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Do not ship EN TEXT TO_REPLACE: template values.

These non-empty values override fallback text and expose internal markers to users. Translate the remaining package.timeline.* items in vi-VN, zh-CN, and zh-TW, and remove EN TEXT TO REPLACE: strings from locale files before release.

🤖 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 `@i18n/locales/vi-VN.json` around lines 634 - 671, Replace every “EN TEXT TO
REPLACE:” placeholder in package.timeline with appropriate translations,
covering i18n/locales/vi-VN.json lines 634-671, i18n/locales/zh-CN.json lines
651-665, and i18n/locales/zh-TW.json lines 634-671. Preserve all message keys
and interpolation placeholders while ensuring no placeholder values remain in
these locale files.

Source: Learnings

i18n/locales/hu-HU.json (1)

633-671: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Replace the timeline marker values before merge.

Lines 667-671 use EN TEXT TO REPLACE: as the values for package.timeline.deprecated and package.timeline.time_gap*. The page will display these internal markers instead of the deprecated badge and release-gap messages. Add Hungarian translations, or use the repository’s empty {} fallback placeholder.

i18n/locales/id-ID.json (1)

633-671: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Replace the timeline marker values before merge.

Lines 667-671 use EN TEXT TO REPLACE: as the values for package.timeline.deprecated and package.timeline.time_gap*. The page will display these internal markers instead of the deprecated badge and release-gap messages. Add Indonesian translations, or use the repository’s empty {} fallback placeholder.

i18n/locales/it-IT.json (1)

651-671: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Replace the timeline marker values before merge.

Lines 651-671 contain EN TEXT TO REPLACE: values for new chart labels, package.timeline.deprecated, and package.timeline.time_gap*. These values are user-visible. Add Italian translations, or use the repository’s empty {} fallback placeholder.

i18n/locales/ja-JP.json (1)

651-671: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Remove literal replacement markers from all four timeline locales.

These locale blocks contain EN TEXT TO REPLACE: values. The new deprecation and release-gap UI can therefore display development text instead of localised messages.

  • i18n/locales/ja-JP.json#L651-L671: translate the chart, deprecation, and time-gap values.
  • i18n/locales/kn-IN.json#L649-L671: translate the complete added timeline block.
  • i18n/locales/mr-IN.json#L634-L671: translate the complete added timeline block.
  • i18n/locales/nb-NO.json#L651-L671: translate the chart, deprecation, and time-gap values.

Based on learnings, untranslated non-English keys use managed empty placeholders rather than visible replacement text.

🤖 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 `@i18n/locales/ja-JP.json` around lines 651 - 671, Remove every “EN TEXT TO
REPLACE:” marker from the timeline locale entries. In i18n/locales/ja-JP.json
lines 651-671 and i18n/locales/nb-NO.json lines 651-671, translate the chart,
deprecation, and time-gap values; in i18n/locales/kn-IN.json lines 649-671 and
i18n/locales/mr-IN.json lines 634-671, translate the complete added timeline
blocks. Use managed empty placeholders for any untranslated non-English values
instead of visible English replacement text.

Source: Learnings

i18n/locales/ne-NP.json (1)

667-671: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Do not expose untranslated release-gap messages.

  • i18n/locales/ne-NP.json#L667-L671: replace the English replacement markers with Nepali translations.
  • i18n/locales/nl.json#L667-L671: replace the English replacement markers with Dutch translations.

Preserve {duration} and {count} in both locale files.

🤖 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 `@i18n/locales/ne-NP.json` around lines 667 - 671, Replace the English
replacement-marker values for deprecated and release-gap messages with accurate
Nepali translations in i18n/locales/ne-NP.json lines 667-671 and Dutch
translations in i18n/locales/nl.json lines 667-671, preserving the {duration}
and {count} placeholders exactly.
♻️ Duplicate comments (2)
i18n/locales/bn-IN.json (1)

667-671: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Translate the timeline localisation keys before merge.

The timeline uses these values for visible messages and accessibility text.

  • i18n/locales/bn-IN.json#L667-L671: add Bengali translations for deprecation and release-gap messages.
  • i18n/locales/pt-BR.json#L650-L665: add Brazilian Portuguese chart and accessibility translations.
  • i18n/locales/pt-BR.json#L667-L671: add Brazilian Portuguese deprecation and release-gap translations.
  • i18n/locales/pt-PT.json#L650-L665: add European Portuguese chart and accessibility translations.
  • i18n/locales/pt-PT.json#L667-L671: add European Portuguese deprecation and release-gap translations.

Preserve {duration} and {count}.

🤖 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 `@i18n/locales/bn-IN.json` around lines 667 - 671, Replace the English
placeholder timeline values with accurate translations: in
i18n/locales/bn-IN.json lines 667-671 translate deprecation and release-gap
messages; in i18n/locales/pt-BR.json lines 650-665 and 667-671 translate
chart/accessibility and deprecation/release-gap messages; in
i18n/locales/pt-PT.json lines 650-665 and 667-671 do the same for European
Portuguese. Preserve the {duration} and {count} placeholders in every locale.
i18n/locales/hi-IN.json (1)

634-671: ⚠️ Potential issue | 🟠 Major

Translate the timeline placeholders in all three locales.

The new timeline contract still returns literal placeholder text for chart labels, deprecation, and release-gap events. Replace these values with locale-specific translations. Preserve {duration}, {count}, and the required plural forms.

  • i18n/locales/hi-IN.json#L634-L671: add Hindi translations for the timeline messages.
  • i18n/locales/tr-TR.json#L651-L671: add Turkish translations for the timeline messages.
  • i18n/locales/uk-UA.json#L651-L671: add Ukrainian translations for the timeline messages.
🤖 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 `@i18n/locales/hi-IN.json` around lines 634 - 671, Replace every “EN TEXT TO
REPLACE” timeline value with locale-specific translations in
i18n/locales/hi-IN.json lines 634-671, i18n/locales/tr-TR.json lines 651-671,
and i18n/locales/uk-UA.json lines 651-671. Translate chart labels, timeline
events, deprecation, and release-gap messages while preserving placeholders such
as {duration}, {count}, and all required plural forms.
🤖 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.

Inline comments:
In `@i18n/locales/ar.json`:
- Around line 667-671: Replace the five “EN TEXT TO REPLACE:” values in
package.timeline with proper translations: add Arabic translations in
i18n/locales/ar.json lines 667-671, Azerbaijani translations in
i18n/locales/az-AZ.json lines 667-671, and Bulgarian translations in
i18n/locales/bg-BG.json lines 667-671. Preserve the {duration} and {count}
placeholders and the | plural separator at every site.

In `@i18n/locales/bn-IN.json`:
- Line 194: Replace every non-empty “EN TEXT TO REPLACE” placeholder in the
specified locale entries with properly localized Bengali, Brazilian Portuguese,
and European Portuguese text, covering all affected non-timeline ranges and
sections in bn-IN.json, pt-BR.json, and pt-PT.json. Preserve every interpolation
token exactly.

In `@i18n/locales/hi-IN.json`:
- Line 16: Replace every non-timeline “EN TEXT TO REPLACE:” placeholder in
i18n/locales/hi-IN.json lines 16-16 with Hindi translations, preserving
interpolation tokens; apply the equivalent replacement with Turkish translations
in i18n/locales/tr-TR.json lines 16-16 and Ukrainian translations in
i18n/locales/uk-UA.json lines 16-16. Timeline markers require no direct change.

In `@i18n/locales/nl.json`:
- Around line 651-652: Replace the remaining English placeholder values for
dependency_size, other_dependencies, and the stacked-bar accessibility messages
in the Dutch locale with natural Dutch translations. Preserve every
interpolation token exactly as currently defined, including tokens in the
messages referenced around lines 661-665.

In `@i18n/locales/pl-PL.json`:
- Line 627: Update the general_description translation value to use the
{versions_count} interpolation token instead of {version_count}, matching the
source string and preserving all other text unchanged.

In `@i18n/locales/ta-IN.json`:
- Around line 667-671: Replace the scalar “EN TEXT TO REPLACE:” values in the
timeline keys of i18n/locales/ta-IN.json (667-671) and i18n/locales/te-IN.json
(667-671) with Tamil/Telugu translations or the supported empty-object
placeholders. Also update every other “EN TEXT TO REPLACE:” value in both files,
preserving the existing key structure and placeholders.

In `@i18n/locales/tr-TR.json`:
- Line 49: Update the shortcuts.disable_shortcuts translation in tr-TR.json to
preserve the {settings} interpolation token, matching the corresponding
translations in the other locales while retaining the existing Turkish wording.

---

Outside diff comments:
In `@i18n/locales/cs-CZ.json`:
- Around line 667-671: Replace every “EN TEXT TO REPLACE” marker with accurate
translations: update the timeline keys and all other added markers in
i18n/locales/cs-CZ.json (667-671), i18n/locales/de.json (667-671), and
i18n/locales/fr-FR.json (667-671); additionally update the timeline keys and
markers at 194, 266, 324-329, and 422 in i18n/locales/es.json. Preserve
placeholders and pluralization forms.

In `@i18n/locales/ja-JP.json`:
- Around line 651-671: Remove every “EN TEXT TO REPLACE:” marker from the
timeline locale entries. In i18n/locales/ja-JP.json lines 651-671 and
i18n/locales/nb-NO.json lines 651-671, translate the chart, deprecation, and
time-gap values; in i18n/locales/kn-IN.json lines 649-671 and
i18n/locales/mr-IN.json lines 634-671, translate the complete added timeline
blocks. Use managed empty placeholders for any untranslated non-English values
instead of visible English replacement text.

In `@i18n/locales/ne-NP.json`:
- Around line 667-671: Replace the English replacement-marker values for
deprecated and release-gap messages with accurate Nepali translations in
i18n/locales/ne-NP.json lines 667-671 and Dutch translations in
i18n/locales/nl.json lines 667-671, preserving the {duration} and {count}
placeholders exactly.

In `@i18n/locales/ro-RO.json`:
- Around line 16-28: Replace every “EN TEXT TO REPLACE” value in
i18n/locales/ro-RO.json at lines 16-28 and 651-671 with Romanian translations or
{} placeholders, including the timeline messages. Apply the same replacement in
i18n/locales/sr-Latn-RS.json at lines 16-53 and 634-671, using Serbian
translations or {} placeholders; no marker values should remain.

In `@i18n/locales/vi-VN.json`:
- Around line 634-671: Replace every “EN TEXT TO REPLACE:” placeholder in
package.timeline with appropriate translations, covering i18n/locales/vi-VN.json
lines 634-671, i18n/locales/zh-CN.json lines 651-665, and
i18n/locales/zh-TW.json lines 634-671. Preserve all message keys and
interpolation placeholders while ensuring no placeholder values remain in these
locale files.

---

Duplicate comments:
In `@i18n/locales/bn-IN.json`:
- Around line 667-671: Replace the English placeholder timeline values with
accurate translations: in i18n/locales/bn-IN.json lines 667-671 translate
deprecation and release-gap messages; in i18n/locales/pt-BR.json lines 650-665
and 667-671 translate chart/accessibility and deprecation/release-gap messages;
in i18n/locales/pt-PT.json lines 650-665 and 667-671 do the same for European
Portuguese. Preserve the {duration} and {count} placeholders in every locale.

In `@i18n/locales/hi-IN.json`:
- Around line 634-671: Replace every “EN TEXT TO REPLACE” timeline value with
locale-specific translations in i18n/locales/hi-IN.json lines 634-671,
i18n/locales/tr-TR.json lines 651-671, and i18n/locales/uk-UA.json lines
651-671. Translate chart labels, timeline events, deprecation, and release-gap
messages while preserving placeholders such as {duration}, {count}, and all
required plural forms.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: bf6fb552-2dcd-4809-9a7d-190325da4d15

📥 Commits

Reviewing files that changed from the base of the PR and between bddb97e and c544b12.

📒 Files selected for processing (30)
  • i18n/locales/ar.json
  • i18n/locales/az-AZ.json
  • i18n/locales/bg-BG.json
  • i18n/locales/bn-IN.json
  • i18n/locales/cs-CZ.json
  • i18n/locales/de.json
  • i18n/locales/es.json
  • i18n/locales/fr-FR.json
  • i18n/locales/hi-IN.json
  • i18n/locales/hu-HU.json
  • i18n/locales/id-ID.json
  • i18n/locales/it-IT.json
  • i18n/locales/ja-JP.json
  • i18n/locales/kn-IN.json
  • i18n/locales/mr-IN.json
  • i18n/locales/nb-NO.json
  • i18n/locales/ne-NP.json
  • i18n/locales/nl.json
  • i18n/locales/pl-PL.json
  • i18n/locales/pt-BR.json
  • i18n/locales/pt-PT.json
  • i18n/locales/ro-RO.json
  • i18n/locales/sr-Latn-RS.json
  • i18n/locales/ta-IN.json
  • i18n/locales/te-IN.json
  • i18n/locales/tr-TR.json
  • i18n/locales/uk-UA.json
  • i18n/locales/vi-VN.json
  • i18n/locales/zh-CN.json
  • i18n/locales/zh-TW.json

Comment thread i18n/locales/ar.json Outdated
Comment thread i18n/locales/bn-IN.json Outdated
Comment thread i18n/locales/hi-IN.json Outdated
Comment thread i18n/locales/nl.json Outdated
Comment thread i18n/locales/pl-PL.json
Comment thread i18n/locales/ta-IN.json Outdated
Comment thread i18n/locales/tr-TR.json

@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.

Actionable comments posted: 1

🤖 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.

Inline comments:
In `@i18n/locales/pt-BR.json`:
- Around line 590-594: Replace the unfinished values for deprecated, time_gap,
time_gap_days, time_gap_months, and time_gap_years with natural Brazilian
Portuguese translations, removing the EN TEXT TO REPLACE prefix while preserving
the {duration} and {count} placeholders and singular/plural alternatives.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 6b5c2ee7-4969-4ea7-a00f-21880c4b193d

📥 Commits

Reviewing files that changed from the base of the PR and between 5c8bcb0 and 52229b0.

📒 Files selected for processing (31)
  • app/pages/package-timeline/[[org]]/[packageName].vue
  • i18n/locales/az-AZ.json
  • i18n/locales/bg-BG.json
  • i18n/locales/bn-IN.json
  • i18n/locales/cs-CZ.json
  • i18n/locales/de.json
  • i18n/locales/en.json
  • i18n/locales/es.json
  • i18n/locales/fr-FR.json
  • i18n/locales/hi-IN.json
  • i18n/locales/hu-HU.json
  • i18n/locales/id-ID.json
  • i18n/locales/it-IT.json
  • i18n/locales/ja-JP.json
  • i18n/locales/mr-IN.json
  • i18n/locales/nb-NO.json
  • i18n/locales/ne-NP.json
  • i18n/locales/nl.json
  • i18n/locales/pl-PL.json
  • i18n/locales/pt-BR.json
  • i18n/locales/pt-PT.json
  • i18n/locales/ro-RO.json
  • i18n/locales/ru-RU.json
  • i18n/locales/sr-Latn-RS.json
  • i18n/locales/tr-TR.json
  • i18n/locales/uk-UA.json
  • i18n/locales/vi-VN.json
  • i18n/locales/zh-CN.json
  • i18n/locales/zh-TW.json
  • i18n/schema.json
  • server/api/registry/timeline/[...pkg].get.ts
🚧 Files skipped from review as they are similar to previous changes (17)
  • i18n/locales/ne-NP.json
  • i18n/locales/ja-JP.json
  • i18n/schema.json
  • i18n/locales/pt-PT.json
  • i18n/locales/en.json
  • i18n/locales/sr-Latn-RS.json
  • i18n/locales/ru-RU.json
  • server/api/registry/timeline/[...pkg].get.ts
  • i18n/locales/de.json
  • i18n/locales/id-ID.json
  • i18n/locales/uk-UA.json
  • i18n/locales/ro-RO.json
  • i18n/locales/zh-CN.json
  • app/pages/package-timeline/[[org]]/[packageName].vue
  • i18n/locales/mr-IN.json
  • i18n/locales/fr-FR.json
  • i18n/locales/bn-IN.json

Comment thread i18n/locales/pt-BR.json Outdated
- Add `deprecated` field to TimelineVersion API type and response
- Show deprecated badge and message on the latest deprecated version only
- Render deprecated message using the same sub-event layout (dot + left border)
- Add time gap sub-event showing duration between consecutive releases (>7 days),
  computed from raw ms diff, independent of semver predecessor
- Use plural-choice-aware $t() calls for duration formatting; fix 360-364 day
  boundary returning "0 years"
- Add i18n keys (en + zh-CN/zh-TW) for deprecated label and time gap formatting
@ghostdevv

Copy link
Copy Markdown
Member

Could you put the deprecation marking into a separate PR? The time gap stuff will likely require some discussion 👀

@btea

btea commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

Done — the deprecation marking is now in #3133.

@ghostdevv

Copy link
Copy Markdown
Member

Done — the deprecation marking is now in #3133.

there's still a couple parts left over, mostly in the i18n files but also one ts file

@btea

btea commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the reminder, it has been readjusted.

@btea btea changed the title feat: add deprecated marking and time gap info to package timeline page feat: time gap info to package timeline page Aug 4, 2026
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.

2 participants