Skip to content

Dev - #3

Closed
thanhthien1305 wants to merge 7 commits into
olucasandrade:masterfrom
thanhthien1305:dev
Closed

Dev#3
thanhthien1305 wants to merge 7 commits into
olucasandrade:masterfrom
thanhthien1305:dev

Conversation

@thanhthien1305

@thanhthien1305 thanhthien1305 commented Sep 8, 2026 •

Copy link
Copy Markdown

Description

Type of Change

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Performance improvement
  • Code refactoring
  • Dependency update

Related Issues

Fixes #
Relates to #

Changes

  • Change 1
  • Change 2
  • Change 3

Testing

Manual Testing

  • Tested on Chrome
  • Tested on Firefox
  • Tested on Safari
  • Tested on mobile/tablet
  • Tested on multiple screen sizes

Checklist

  • Linter passes (npm run lint)
  • Build succeeds (npm run build)
  • No TypeScript errors
  • Console has no errors/warnings
  • localStorage works correctly (if applicable)
  • Functionality works as intended

Checklist

  • Code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have tested my changes thoroughly
  • I have added tests for new features (if applicable)
  • Existing tests still pass

Screenshots or Videos

Additional Notes

Summary by CodeRabbit

  • New Features

    • Added Vietnamese as a supported language, with translations across the app.
    • Added 33 Vietnamese interactive distributed-systems cases and 23 builder challenges.
    • Added Vietnamese concepts, cheatsheet content, and localized training feedback.
    • Added a three-option language selector for English, Vietnamese, and Portuguese.
  • Style

    • Updated typography with Vietnamese-compatible fonts and improved text rendering.
    • Removed the scan-line visual overlay for a cleaner interface.
  • Bug Fixes

    • Improved Vietnamese content validation and catalog consistency checks.

thanhthien1305 and others added 7 commits September 8, 2026 11:04
Adds `vi` alongside `en` and `pt-BR`: UI strings, 33 cases, 45 cheatsheet
cards, concepts, and 23 builder challenges, plus the wiring to load them
(locale type, translation map, case/challenge loaders, header + mobile
menu toggle) and parity tests covering the new locale.

Swaps the font stack to Be Vietnam Pro / Montserrat / JetBrains Mono so
Vietnamese diacritics render correctly, and drops the scan-line overlay
that made stacked diacritics hard to read.

Terminology follows a single glossary rather than literal translation.
Notably `idempotency` was rendered as "lũy thừa" (exponentiation) in 20
places; it is now "tính idempotent". Same for failover ("chuyển vùng" =
roaming -> "chuyển đổi dự phòng"), node ("nút" = button -> "node"),
quorum ("túc số" -> "quorum"), and queue messages ("tin nhắn" = SMS ->
"thông điệp"). Genuine uses of those words — pressing a button, the
"nút thắt cổ chai" idiom, clipboard copies, real chat messages — are
kept as they were.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Commits the pnpm-lock.yaml and pnpm-workspace.yaml produced by the switch
to pnpm, and allows esbuild to run its install script.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: fd53e868-0c05-46dd-9b44-f1a386d8f194

📥 Commits

Reviewing files that changed from the base of the PR and between a4677c8 and e152514.

⛔ Files ignored due to path filters (2)
  • package-lock.json is excluded by !**/package-lock.json
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (80)
  • index.html
  • package.json
  • pnpm-workspace.yaml
  • scripts/apply_translations.py
  • scripts/generate-case-index.mjs
  • scripts/translations/cases_01_07.py
  • scripts/translations/cases_08_14.py
  • scripts/translations/cases_15_21.py
  • scripts/translations/cases_22_28.py
  • scripts/translations/cases_29_33.py
  • scripts/validate-builder-challenges.js
  • src/components/layout/Header.tsx
  • src/components/layout/MobileMenu.tsx
  • src/data/builder/vi/challenges-01.json
  • src/data/builder/vi/challenges-02.json
  • src/data/builder/vi/challenges-03.json
  • src/data/builder/vi/challenges-04.json
  • src/data/builder/vi/challenges-05.json
  • src/data/builder/vi/challenges-06.json
  • src/data/builder/vi/challenges-07.json
  • src/data/builder/vi/challenges-08.json
  • src/data/builder/vi/challenges-09.json
  • src/data/builder/vi/challenges-10.json
  • src/data/builder/vi/challenges-11.json
  • src/data/builder/vi/challenges-12.json
  • src/data/builder/vi/challenges-13.json
  • src/data/builder/vi/challenges-14.json
  • src/data/builder/vi/challenges-15.json
  • src/data/builder/vi/challenges-16.json
  • src/data/builder/vi/challenges-17.json
  • src/data/builder/vi/challenges-18.json
  • src/data/builder/vi/challenges-19.json
  • src/data/builder/vi/challenges-20.json
  • src/data/builder/vi/challenges-21.json
  • src/data/builder/vi/challenges-22.json
  • src/data/builder/vi/challenges-23.json
  • src/data/case-index.vi.json
  • src/data/cases/vi/case-01.json
  • src/data/cases/vi/case-02.json
  • src/data/cases/vi/case-03.json
  • src/data/cases/vi/case-04.json
  • src/data/cases/vi/case-05.json
  • src/data/cases/vi/case-06.json
  • src/data/cases/vi/case-07.json
  • src/data/cases/vi/case-08.json
  • src/data/cases/vi/case-09.json
  • src/data/cases/vi/case-10.json
  • src/data/cases/vi/case-11.json
  • src/data/cases/vi/case-12.json
  • src/data/cases/vi/case-13.json
  • src/data/cases/vi/case-14.json
  • src/data/cases/vi/case-15.json
  • src/data/cases/vi/case-16.json
  • src/data/cases/vi/case-17.json
  • src/data/cases/vi/case-18.json
  • src/data/cases/vi/case-19.json
  • src/data/cases/vi/case-20.json
  • src/data/cases/vi/case-21.json
  • src/data/cases/vi/case-22.json
  • src/data/cases/vi/case-23.json
  • src/data/cases/vi/case-24.json
  • src/data/cases/vi/case-25.json
  • src/data/cases/vi/case-26.json
  • src/data/cases/vi/case-27.json
  • src/data/cases/vi/case-28.json
  • src/data/cases/vi/case-29.json
  • src/data/cases/vi/case-30.json
  • src/data/cases/vi/case-31.json
  • src/data/cases/vi/case-32.json
  • src/data/cases/vi/case-33.json
  • src/data/cheatsheet/parity.test.ts
  • src/data/cheatsheet/vi.json
  • src/data/concepts-vi.json
  • src/hooks/useBuilderChallenges.ts
  • src/hooks/useCase.ts
  • src/hooks/useGameState.test.ts
  • src/i18n/index.ts
  • src/i18n/locales/vi.json
  • src/i18n/useTranslation.ts
  • src/index.css

📝 Walkthrough

Walkthrough

Vietnamese support is added across the interface, 33 training cases, 23 builder challenges, concepts, cheatsheet data, locale-aware loaders, validation scripts, and typography. Package configuration permits esbuild build scripts.

Changes

Vietnamese localization

Layer / File(s) Summary
Locale runtime and interface
src/i18n/*, src/components/layout/*, src/hooks/useCase.ts, src/hooks/useBuilderChallenges.ts
The application supports the vi locale. Desktop and mobile selectors expose English, Vietnamese, and Portuguese. Vietnamese content loads for cases and builder challenges.
Translated case content
src/data/cases/vi/*, src/data/case-index.vi.json, src/data/concepts-vi.json
Vietnamese metadata, diagrams, diagnoses, concepts, and badges are added for 33 cases.
Builder challenge content
src/data/builder/vi/*
Twenty-three Vietnamese builder challenge definitions are added with constraints, components, and concept wiring.
Translation pipeline and validation
scripts/translations/*, scripts/apply_translations.py, scripts/generate-case-index.mjs, scripts/validate-builder-challenges.js
Translation modules and scripts generate, apply, and validate Vietnamese case and builder data.
Cheatsheet and presentation
src/data/cheatsheet/vi.json, src/data/cheatsheet/parity.test.ts, index.html, src/index.css, package.json, pnpm-workspace.yaml
Vietnamese cheatsheet data and parity checks are added. Fonts, font smoothing, scan-line styling, and pnpm esbuild build permissions are updated.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant LocaleSelector
  participant GameState
  participant useCase
  participant VietnameseData
  LocaleSelector->>GameState: setLocale('vi')
  GameState->>useCase: select Vietnamese loaders and indexes
  useCase->>VietnameseData: load case, concept, and challenge data
  VietnameseData-->>useCase: return localized content
  useCase-->>LocaleSelector: render Vietnamese content
Loading
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

⚠️ This pull request shows signs of AI-generated slop (description_diff_mismatch, ai_padded_prose). It has been flagged by CodeRabbit slop detection and should be reviewed carefully.


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.

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.

1 participant