Skip to content

feat(i18n): Simplified Chinese across the site - #97

Open
Vasanthdev2004 wants to merge 19 commits into
mainfrom
feat/i18n-zh-cn
Open

Vasanthdev2004 wants to merge 19 commits into
mainfrom
feat/i18n-zh-cn

Conversation

@Vasanthdev2004

Copy link
Copy Markdown
Collaborator

What

The site now reads in English or Simplified Chinese (zh-CN), on every public page: the header and footer, the home page (hero, Trending, live activity, the market list), the token page (trade panel, chart, fees, posts), the launch flow, /me (including Earn), profiles, the leaderboard, the bridge, /rules, /about, /agents, the chain pages, the error pages and the 404, plus tab titles and descriptions.

  • Which language: the NEXT_LOCALE cookie, set by the switch in the header. Without it, Accept-Language decides: any Chinese tag reads Simplified Chinese, anything else English.
  • URLs: the same in both languages. <html lang> follows the language.
  • Switching: text rendered in the browser changes at once (about 0.1 s on a production build). Server-rendered parts (page headings, the footer) follow through a background refresh, which takes as long as that page's own render.

How

  • Library: use-intl 4.14.9, the core of next-intl, pinned to an exact version. next-intl itself pulls in native @swc/core and @parcel/watcher. This is a new dependency, so pr-guard will need @kevincodex1's approval.
  • Messages: one JSON file per area in app/src/i18n/messages/{en,zh-CN}/.
    • English ships with the client code.
    • Chinese is sent only to Chinese pages, and loaded once when someone switches.
    • A key with no Chinese text reads in English.
  • Typed keys: a key missing from the English file fails tsc. messages.test.ts checks that every Chinese key exists in English, that placeholders match, and that no message uses an em dash.
  • Text built outside components:
    • friendlyError words its reasons in the reader's language.
    • Reasons that libraries and APIs give in English are matched to messages where they are shown: posts, the profile sheet, the launch form, Earn. Tests keep each map in step with the strings the code actually produces.
  • Share cards: they stay in English, but now draw Chinese, Japanese and Korean names in the bold weight.
  • Conventions and glossary: app/src/i18n/README.md.

Stays in English, on purpose

  • Data: token names, tickers, addresses, chain names, numbers and prices.
  • Anything signed or machine-read: wallets still sign the code's English messages. API responses, llms.txt, the admin page and share-card copy stay English too.
  • Code blocks and parameter names on /agents.

Worth a look

  • One English wording change. The error pages said "Your funds are on-chain — this is only the site." Messages may not contain an em dash, so they now say "on-chain; this is only the site."
  • Main is merged in, including Earn (feat(earn): deposit idle USDC into a reviewed Morpho vault from /me #96), and Earn is translated.
    • earn-ui.test.ts now normalises line endings. It failed on Windows checkouts because it matched \n against CRLF files.
    • Reasons from lib/earn and the server's terms check stay in English in code and are matched to messages when shown.
  • Removed dead helpers. The error pages now read their text from messages, so the old English helpers in lib/error-copy.ts were dead and are gone. sanitizeDigest stays.

Checks

  • npm test: 1304 tests, 1293 pass, 0 fail, 11 skipped. Main skips 10 of these; the 11th is Earn's live-vault test.
  • tsc is clean.
  • eslint: 0 errors. The 5 warnings are the existing <img> warnings in the share-card routes.
  • next build passes.
  • Checked in a browser on a production build:
    • Every page in both languages, with the right <html lang> and tab title.
    • No sideways scroll at 375 px.
    • Scanning the Chinese pages for English turns up only data (token names, addresses), code and API parameters.

Commits

  • 79d254d feat(i18n): English and Simplified Chinese, starting with the site shell
  • 7b86b02 feat(og): draw Chinese, Japanese and Korean names in the cards' bold weight
  • bd081b5 feat(i18n): switch language without waiting for the server
  • 325101a chore(i18n): register the trade message area
  • 974359f feat(i18n): tab title and description in the reader's language
  • c368a56 feat(i18n): home hero and posts in Simplified Chinese
  • cec2abc feat(i18n): live activity in Simplified Chinese
  • 02a47fb feat(i18n): market list in Simplified Chinese
  • f3920de feat(i18n): trading panel and chart in Simplified Chinese
  • fde330a feat(i18n): bridge and shared error messages in Simplified Chinese
  • 8045d3e feat(i18n): dashboard, profiles and wallet picker in Simplified Chinese
  • 0d3836b feat(i18n): token page in Simplified Chinese
  • eb09f20 feat(i18n): info, chain and error pages in Simplified Chinese
  • d04a7da fix(i18n): one Chinese word per idea across the site
  • 6e2a142 feat(i18n): launch flow in Simplified Chinese
  • d377140 fix(i18n): word wallet and contract errors once, in lib/errors.ts
  • 6ae7c26 fix(i18n): /feed tab title and description in the reader's language
  • 0fbaea8 feat(i18n): Earn in Simplified Chinese

The site can now read in Simplified Chinese (zh-CN). English stays the
source text and the fallback: a Chinese message that is missing reads in
English, never as a key.

- Locale: the NEXT_LOCALE cookie the new language switch sets, else the
  browser's Accept-Language (any Chinese tag reads Simplified Chinese). The
  URL is the same in every language, and <html lang> follows the locale.
- Library: use-intl (the core of next-intl) and its 8 small pure-JS
  dependencies. next-intl itself pulls in @swc/core and @parcel/watcher
  native binaries for every platform for its extraction tooling, which the
  site does not need. useTranslations in client components;
  getTranslations from @/i18n/server in server components.
- Messages: one JSON file per area and language under src/i18n/messages,
  typed from the English files, so a key missing from English fails tsc.
  messages.test.ts checks every Chinese key exists in English with the same
  placeholders, that the translated areas are complete, and that no message
  uses an em dash.
- Translated: header and phone menu (navigation, search, bridge,
  notifications, theme, language, live visits), wallet chip and account
  menu, the search dialog (Chinese and English queries both find pages and
  actions), and the footer.
- Fonts: Chinese falls back to the platform's CJK face after Geist.
- src/i18n/README.md: how to add text, Chinese style, and the glossary.

Tests that read English text from component source now check the message
key in the source and the text in the English messages.
…weight

Token and profile share cards render with Geist, which has no CJK glyphs.
next/og already falls back to a font it fetches itself, but in a regular
weight, so a Chinese name sat thin beside the bold Latin title. The cards
now load a Noto Sans SC (Han, kana) or Noto Sans KR (Hangul) subset at the
title's weight, holding only the characters the card draws (Google Fonts
text= subsets, a few KB, cached for a day). Latin names fetch nothing new.
The switch used to set the cookie and refresh the page, so nothing changed
until the server had rendered the whole page again. Now every client
component re-renders in the new language at once, and the refresh only
brings the server-rendered parts (the footer, page headings) along after.

- English ships with the client code (messages/en.ts); a Chinese page sends
  only the Chinese translation, never the English text again. Switching to
  Chinese loads that translation as one chunk the first time.
- clientTranslator (src/i18n/client.ts) words text built outside a
  component, such as errors from lib functions, in the reader's language.
- Message areas registered for the rest of the site: token, launch, info,
  account, bridge, errors.
Chinese pages get a Chinese tab title and meta description. OpenGraph and X
previews stay English: link crawlers send no language, so every share shows
English anyway. A test keeps the English messages equal to SITE_TITLE and
SITE_DESCRIPTION.
Translated, in the "hero" and "posts" namespaces:
- Home hero: chain chip, headline, copy (the brand stays a linked plain
  word), both ways in, the proof chips and the not-configured note.
- The "Why it's free" card and the home sidebar's aria-label.
- Posts: the token page's comments (composer, reply and report controls,
  report reasons, toasts, empty and muted states), the home posts widget
  (title, tags, relative times through useAgo, empty state, show/hide)
  and the /feed intro.
- Failure reasons from validateBody, friendlyError and the posts API are
  mapped to messages in Posts.tsx; the libs keep their English, and any
  other text, such as a wallet's own error, reads as it came.
  posts-i18n.test.ts keeps the map in step with the reasons the code
  gives.

English reads as before. Judgment calls: the headline is two whole
messages with the highlight as a rich tag; on the token page a post is
评论 (the section is "Comments"), in the feed 动态; "on $PEPE" reads
关于 $PEPE; Whale is 巨鲸; the /feed title reads 每个代币背后的声音. The
token-page tag chip now shows the same sentence-case labels as the home
badge (CSS uppercases it, so it looks the same).

Left in English: page metadata, wallet and library error text, the
signed messages and the report reason codes they carry, and
components/sections/CommunityFeed.tsx (the body of /feed), which is
outside this change.
The home page's live panel, the Just launched rail, the phone's Launch
pill and the live activity toasts now read in Simplified Chinese.
English reads exactly as before: rendered side by side with the
previous components, every view and hover card gives the same HTML.

- Translated: the live panel's heading, summary line, view switch,
  legends, time axis, empty states, flow meter and hover cards in the
  bubbles, river and list views; the Latest column; Just launched; the
  Launch pill (common.launchToken); activity toasts and the toast
  card's status, link, dismiss button and queue count.
- riverSummary, bubbleSummary and bubbleWindowLabel take the reader's
  words (a translator over activity.river.summary or
  activity.bubbles.summary) instead of building English. Each count is
  a message of its own, so Chinese orders the sentence its own way.
  Their tests assert the English and the Chinese.
- Relative times use useAgo. Hand-made English plurals are ICU plurals;
  counts that were grouped (toLocaleString) stay grouped in Chinese.
- An activity toast is worded when it arrives, through an Effect Event,
  so a language switch never re-subscribes the feed.

Judgment calls: "River" keeps its picture (河流); the river legend says
中线 (centre line) because 线上 alone also reads as "online"; "in this
window" is 此时段内; "Buy {amount} of {symbol}" is
"买入价值 {amount} 的 {symbol}". The exact UTC timestamps in tooltips
stay English (toUTCString), as on every other page.
The home page's market list now reads in Simplified Chinese: the launch
list (sorts, chain and quick filters, layout, status line, empty and
error states, paging), its rows and cards, the live chip, the watchlist
tab and star button, the change chip's tooltip, and the Trending board
(headings, ranking rule, leader and runner cards, tapes, streaks,
lift-off chips, screen-reader sentences). English is unchanged: every
English case rendered with the original components reads the same.

- Messages live in market.json, nested by component. Sentences around a
  figure or a screen-reader span are whole messages with tags (t.rich),
  and English plurals are ICU plurals.
- Lib text is translated in the components; no lib file changed: quick
  filter labels and titles by key, capDisplay's "no USD price"
  (localizedCap), the live chip from liveChipParts' tier and count
  (useLiveWords), changeWords, and the lift-off chips, reworded from
  each hit's counts after applyPlan.
- ChangeChip is now a client component, so its tooltip follows the
  language on the server-rendered token page too. Chinese puts the
  context first ("自发行以来 12%").
- The board's screen-reader separators are messages, so Chinese gets
  full-width "," and "。".
- Judgment calls: Age 时长, Quiet launches 冷清的发行, launcher 发行者,
  "3 wallets this hour" 本小时 3 个钱包交易, all-time volume 累计,
  Watch/Watching 加自选/已自选, unlisted asset 未收录资产, website
  的网站 (not 官网, which claims "official").
- Still English: the UTC date tooltips (toUTCString), the quote and
  unlisted-pair badges, and context strings passed in by other areas.

Tests that read English from these components now check the key in the
source and the text in the English messages; the change chip, the
unpriced-cap mark and the lift-off chip are also checked in Chinese.
The token page's trading surfaces read in Simplified Chinese; English
reads exactly as before. Messages live in messages/{en,zh-CN}/trade.json,
nested by component (panel, chart, source, mobileBar).

- Trade panel: buy/sell and pay-with toggles, the ETH route line, the
  unlisted-pair warning, pay and receive wells, amount presets, quote
  details (price impact, fees, minimum received, slippage), every button
  and progress state, the price-impact confirmation, the TWIG hint, the
  done line, the sell-it-all summary, the custody note, the revert error
  and the success toast. Every value sent to the chain is unchanged.
- Chart: toolbar, view modes, fullscreen, the USD note, readout and
  range context, OHLC/volume/trades legends, empty and error overlays,
  volume and my-trades chips, keyboard help and announcements, and the
  reference-line labels and trade markers drawn on the canvas. Dates
  (readout, crosshair label, time axis, announcements) follow the
  reader's language ("10月04日 08:05 UTC"); numbers keep en-US formatting.
- Chart source toggle (on-chain / GeckoTerminal) with its fallback
  reasons, and the phone trade bar.
- chart-terminal: chartSpanParts replaces chartSpanLabel, so the
  "45m in view" span is worded through common.time.

Judgment calls: interval chips stay 1m/5m/15m/1h/4h/1D (compact codes,
as Chinese DEX tools show them); the OHLC legend reads 开/高/低/收;
K线 is written without inner spaces, per the glossary; the connect
button reuses common.connectWallet. Left to their own areas: the
trading-fee value (worded by the token page) and wallet and contract
errors from lib/errors.ts.

Tests that read English from these files now check the message key in
the source and the text in the English messages.
The bridge dialog and the wallet/contract error wording the whole site
shares now read in Simplified Chinese. English output is unchanged.

- Bridge dialog: every step, field, quote line, fee-limit notice,
  approval and transfer status, warning, aria-label and screen-reader
  text ("bridge" messages).
- Errors raised outside render (lib/bridge client, approval, storage,
  preflight and types, plus useBridge's handlers and effects) are worded
  with clientTranslator when raised; the hook's render-time text uses
  useTranslations. Callers, the hook's return shape and every effect and
  callback dependency list are unchanged.
- Approval health advice is worded when read, so advice already on
  screen, including the shared "unavailable" advice, follows a language
  switch.
- The bridge API keeps answering in English (agents read it too); the
  dialog shows its known messages in the reader's language through
  bridgeServiceMessage, and a test keeps bridge.service in step with
  the API's sentences.
- friendlyError words its own messages through the "errors" messages
  with the same signature and English, so every caller reads Chinese.

Judgment calls: useBridge.ts was not on this area's file list but holds
about 50 of the dialog's errors, so its wording is translated in place
with no logic change. Numbers inside messages are passed as strings so
English keeps its exact digits. viem/RPC library text and provider
details pass through unchanged, as data.
Translated, in the "account" namespace:
- /me: metadata, page intro, its loading label, and the dashboard: the
  connect prompt, figures, launches, holdings and trades tabs, empty
  states, errors, and the collect and edit toasts (relative times through
  useAgo).
- /u/<username>: metadata, joined date, stats, season points, the chain
  note and recent trades (relative times through common.time).
- /leaderboard: metadata, the teaser, the boards, days left and end dates;
  the season card on /me and the your-standing strip.
- Profiles: the profile chip on /me, the create, edit and verify sheet
  with its delete confirmation, and the verified tick and explorer labels.
- The connect-wallet dialog: wallet hints, the no-wallet note and connect
  errors, through clientTranslator in lib/wallet-connectors.ts (the chain
  list in the wrong-network error is joined the reader's way).
- Sheet's close button, the theme toggle's sr-only text, and the unused
  navigation-shell helpers (they reuse the header's labels).

Failure reasons from validateProfile, xHandle, the profile API,
friendlyError and the sheet's own fallbacks stay English in the libs and
the API; the sheet shows each through its message (profile/reasons.ts),
and profile-i18n.test.ts keeps the two in step. The points "why" line,
also English in /api/points, is read back part by part (points/why.ts,
why.test.ts). Signed messages and the X post text are untouched. Dates on
the server pages format in the reader's language ("en" reads as "en-US"
did).

Judgment calls: collecting fees is 收取; Scout is 发掘者; "Me" is
我的面板; ProfileQueue stays English with the rest of /admin; the
username and handle placeholders stay as format examples.
The token page reads in Simplified Chinese: the hero (back link, pair,
age, market cap, holders and trades, share), the stats row, the Proof
panel and its links, the Trades, Holders and About & contracts tabs with
every pair note, the About card, fee collection (with its toasts and
errors), the creator's edit sheet, the pair and fee badges, the copy
chip, the home hero's live line, the loading state and the page
metadata. English reads as before.

- Trades, holders, proof and about are async server components on
  getTranslations; relative times use common.time.
- proofFacts takes the reader's locale. trustNoteFacts gives the holder
  notes as data so the panel words them; the holders API keeps its
  English text.
- The pair badges and FeeChip are client components now (they render on
  the server page and in client lists), so feeModeOf moves to
  lib/launchpad/creator.ts, where the page reads it on the server.
- validateEdit words its errors with clientTranslator: the edit sheet
  shows them in the reader's language, the edit API still answers in
  English. The signed edit message is unchanged.
- The page words capDisplay's "no USD price" mark itself.

Judgment calls: the prefilled X share text is translated; UTC dates
(toUTCString) are left as they are, like other figures.
Translated, in the "info" namespace:
- How it works (/rules): every section, the points rules (their numbers
  stay placeholders filled from RULES), the risk questions, the contract
  registry and its labels, and the page metadata.
- About and Agents with their metadata. On Agents only the prose moves:
  code blocks, endpoints, parameter names and addresses stay in the page,
  and the identifiers inside <code> read the same in both languages
  (agents.test.ts checks every span). The code block's copy controls too.
- The /feed body (CommunityFeed): filters, counts, empty and error states,
  role chips, times through useAgo.
- /base, /robinhood and /arc with their metadata. Their words are messages
  now; chainLanding.test.ts keeps the English equal to CHAIN_LANDING, the
  copy it sizes for search.
- The 404, route error and root error pages, and the loading labels. The
  root error page renders outside the providers, so it reads NEXT_LOCALE
  from document.cookie (English on the server and while hydrating, and
  without the cookie) and loads the Chinese chunk only for a Chinese
  reader, with <html lang> to match.

English renders as before (every page compared before and after), with
one exception: the two error bodies joined their clauses with an em dash,
which messages.test.ts forbids in any message, so they now read
"Your funds are on-chain; this is only the site."

Judgment calls: "live" and "quiet launches" in the ranking question are
活跃 and 冷清的发行, the board's own labels; the token page's Collect
button is 领取 and its Conversation tab 讨论; the screen-reader "Post by"
is 发布者:; Regulation S, Robinhood Stock Tokens and "Shell · cast" stay
as named.
Community posts read 帖子 everywhere (header, footer, search, the feed
pages, the watchlist); 动态 stays for trading activity and the live feed.
Collecting fees reads 领取 on the dashboard as it already did on the
token page and in the guide, with 提取 kept for a beneficiary's claim.
The glossary in app/src/i18n/README.md now lists these terms.

The error pages read their words from the messages, so the English
helpers in lib/error-copy.ts that used to supply them are removed; the
test pins the English messages instead. sanitizeDigest stays.
Translated, in the "launch" namespace:
- /launch: tab title and description (generateMetadata; canonical and
  share card unchanged), heading, intro and the loading state's label.
- The launch form: chain cards, quote picker, the TWIG and GITLAWB notes
  (the badge sits inside the sentence as a rich tag), the stock picker
  and its issuer disclaimers, every label, hint, placeholder and
  validation message, the fee split editor, the first buy, the step
  summary, the console tiles, the submit button's states, the progress
  line (the explorer link stays around the hash) and the toasts.
- The fee card, the live preview, the image and banner picker, the token
  page's launch receipt (now an async server component), and the home
  hero's locker drawing, its new-launch caption and the totals strip.
- lib/launchpad/recipients.ts words the split errors and the share
  summary through clientTranslator("launch"); outside the browser it
  reads English, so its tests are unchanged.
- Failure reasons from friendlyError, the metadata and image routes and
  the form's own fallbacks are mapped to messages where they are shown;
  anything else, such as a wallet's own error, reads as it came. Tests
  keep each map in step with the reasons the code gives.

English reads as before: the rendered text of /launch, /, /rules and a
token page matches the previous code. Judgment calls: beneficiary is
受益人 and fee recipients 接收方; the name placeholder Clear Sky reads 晴空
while SKY and the preview's TICKER stay; the totals strip joins the chain
names per language (Base、Robinhood Chain 和 Arc); "The first ETH buys"
reads 最初的 1 ETH.
friendlyError already returns its reasons in the reader's language (the
errors area). The launch form, the posts UI and the profile sheet also
kept their own copies of those reasons, mapped from friendlyError's old
English; in Chinese the map never matched, so the copies were dead and
could drift. They are removed from the three maps and their messages,
and the tests now check that friendlyError's words are not mapped again.
Conflicts: the command palette keeps its translated words and gains the
Earn page entry (search.pages.earn); the dashboard keeps its translated
states with the Earn card under the season card; friendlyError's new
"insufficient liquidity" reason is a message (errors.insufficientLiquidity).
The /me Earn card, its sheet and the confirmation toast read from a new
earn message area. lib/earn and useEarn keep their English reasons (the
server's terms check sends its reason already worded); EarnPanel shows
each one through explainEarn (components/earn/reasons.ts), which maps
the English to its message with the values it carried, including the
reason inside a paused-deposit sentence. Anything else, such as a
wallet's own error, reads as it came.

earn-i18n.test.ts checks that every reason message is one the code
gives and reads back exactly in English and in Chinese. earn-ui.test.ts
now normalises line endings, so its patterns hold on a Windows checkout,
and checks the risk copy in both languages.
@coderabbitai

coderabbitai Bot commented Oct 14, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 222 files, which is 72 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to Team to raise the limit.

This review is too large to run within your organization's remaining usage spending cap. Raise or remove your spending cap in the billing tab, then retry.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 615c1402-e8a8-44d4-853d-3d7fce4adcad
📥 Commits

Reviewing files that changed from the base of the PR and between 8600dd5 and 0fbaea8.

⛔ Files ignored due to path filters: 1
  • app/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing: 222
  • app/package.json
  • app/src/app/(home)/loading.tsx
  • app/src/app/(home)/page.tsx
  • app/src/app/about/page.tsx
  • app/src/app/agents/page.tsx
  • app/src/app/arc/page.tsx
  • app/src/app/base/page.tsx
  • app/src/app/error.tsx
  • app/src/app/feed/loading.tsx
  • app/src/app/feed/page.tsx
  • app/src/app/global-error.tsx
  • app/src/app/globals.css
  • app/src/app/launch/loading.tsx
  • app/src/app/launch/page.tsx
  • app/src/app/layout.tsx
  • app/src/app/leaderboard/page.tsx
  • app/src/app/me/loading.tsx
  • app/src/app/me/page.tsx
  • app/src/app/not-found.tsx
  • app/src/app/robinhood/page.tsx
  • app/src/app/rules/page.tsx
  • app/src/app/t/[chain]/[token]/loading.tsx
  • app/src/app/t/[chain]/[token]/opengraph-image.tsx
  • app/src/app/t/[chain]/[token]/page.tsx
  • app/src/app/u/[username]/opengraph-image.tsx
  • app/src/app/u/[username]/page.tsx
  • app/src/app/ui-review-earn/EarnReview.tsx
  • app/src/components/CommandPalette.tsx
  • app/src/components/ConnectButton.tsx
  • app/src/components/Footer.tsx
  • app/src/components/HeaderNav.tsx
  • app/src/components/IntlProvider.tsx
  • app/src/components/LanguageSwitcher.tsx
  • app/src/components/NotificationSettings.tsx
  • app/src/components/Sheet.tsx
  • app/src/components/ThemeToggle.tsx
  • app/src/components/WalletMenu.tsx
  • app/src/components/WalletPicker.tsx
  • app/src/components/bridge/BridgeDialog.tsx
  • app/src/components/bridge/BridgeProvider.tsx
  • app/src/components/bridge/bridge-ui.test.ts
  • app/src/components/bridge/useBridge.ts
  • app/src/components/earn/EarnCard.tsx
  • app/src/components/earn/EarnDialog.tsx
  • app/src/components/earn/EarnPanel.tsx
  • app/src/components/earn/earn-flow.test.ts
  • app/src/components/earn/earn-i18n.test.ts
  • app/src/components/earn/earn-ui.test.ts
  • app/src/components/earn/reasons.ts
  • app/src/components/earn/useEarn.ts
  • app/src/components/footer.test.ts
  • app/src/components/launchpad/ChainLanding.tsx
  • app/src/components/launchpad/ChangeChip.tsx
  • app/src/components/launchpad/CollectPanel.tsx
  • app/src/components/launchpad/CopyChip.tsx
  • app/src/components/launchpad/EditTokenSheet.tsx
  • app/src/components/launchpad/FeeChip.tsx
  • app/src/components/launchpad/GitlawbBadge.tsx
  • app/src/components/launchpad/HeroLocker.tsx
  • app/src/components/launchpad/HoldersPanel.tsx
  • app/src/components/launchpad/ImageUpload.tsx
  • app/src/components/launchpad/JustLaunched.tsx
  • app/src/components/launchpad/LaunchCard.tsx
  • app/src/components/launchpad/LaunchFeeSettings.tsx
  • app/src/components/launchpad/LaunchForm.tsx
  • app/src/components/launchpad/LaunchHero.tsx
  • app/src/components/launchpad/LaunchList.tsx
  • app/src/components/launchpad/LaunchMachine.tsx
  • app/src/components/launchpad/LaunchMechanism.tsx
  • app/src/components/launchpad/LaunchPill.tsx
  • app/src/components/launchpad/LaunchPreview.tsx
  • app/src/components/launchpad/LaunchReceipt.tsx
  • app/src/components/launchpad/LaunchRow.tsx
  • app/src/components/launchpad/LaunchTape.tsx
  • app/src/components/launchpad/LiveBubbles.tsx
  • app/src/components/launchpad/LivePulse.tsx
  • app/src/components/launchpad/LiveRiver.tsx
  • app/src/components/launchpad/LiveTicker.tsx
  • app/src/components/launchpad/MeDashboard.tsx
  • app/src/components/launchpad/MobileBuyBar.tsx
  • app/src/components/launchpad/MuseworldBadge.tsx
  • app/src/components/launchpad/Posts.tsx
  • app/src/components/launchpad/RiverFeed.tsx
  • app/src/components/launchpad/TokenAbout.tsx
  • app/src/components/launchpad/TokenChart.tsx
  • app/src/components/launchpad/TokenDetails.tsx
  • app/src/components/launchpad/TokenProof.tsx
  • app/src/components/launchpad/TokenTrades.tsx
  • app/src/components/launchpad/TradePanel.tsx
  • app/src/components/launchpad/TradingChart.tsx
  • app/src/components/launchpad/TrendingStrip.tsx
  • app/src/components/launchpad/TwigBadge.tsx
  • app/src/components/launchpad/TxToasts.tsx
  • app/src/components/launchpad/UnlistedPairBadge.tsx
  • app/src/components/launchpad/WatchButton.tsx
  • app/src/components/launchpad/WatchlistPanel.tsx
  • app/src/components/launchpad/WhyFree.tsx
  • app/src/components/launchpad/change-chip.test.ts
  • app/src/components/launchpad/collect-panel.test.ts
  • app/src/components/launchpad/hero-layout.test.ts
  • app/src/components/launchpad/hero-locker.test.ts
  • app/src/components/launchpad/home-floor.test.ts
  • app/src/components/launchpad/home-leftovers.test.ts
  • app/src/components/launchpad/image-upload.test.ts
  • app/src/components/launchpad/launch-fees.test.ts
  • app/src/components/launchpad/launch-form.test.ts
  • app/src/components/launchpad/launch-machine.test.ts
  • app/src/components/launchpad/launch-pill.test.ts
  • app/src/components/launchpad/launch-symbol.test.ts
  • app/src/components/launchpad/list-load-errors.test.ts
  • app/src/components/launchpad/live-ticker.test.ts
  • app/src/components/launchpad/market-cap-sites.test.ts
  • app/src/components/launchpad/me-dashboard.test.ts
  • app/src/components/launchpad/posts-i18n.test.ts
  • app/src/components/launchpad/token-page.test.ts
  • app/src/components/launchpad/trading-chart.test.ts
  • app/src/components/launchpad/transaction-safety.test.ts
  • app/src/components/launchpad/trending-strip.test.ts
  • app/src/components/launchpad/tx-toasts.test.ts
  • app/src/components/navigation-shell.tsx
  • app/src/components/notification-settings.test.ts
  • app/src/components/points/SeasonCard.tsx
  • app/src/components/points/YourStanding.tsx
  • app/src/components/points/why.test.ts
  • app/src/components/points/why.ts
  • app/src/components/profile/ProfileIdentity.tsx
  • app/src/components/profile/ProfileSheet.tsx
  • app/src/components/profile/Who.tsx
  • app/src/components/profile/profile-i18n.test.ts
  • app/src/components/profile/reasons.ts
  • app/src/components/sections/AgentsCodeBlock.tsx
  • app/src/components/sections/CommunityFeed.tsx
  • app/src/components/sections/about.test.ts
  • app/src/components/sections/agents.test.ts
  • app/src/components/sections/rules-guide.test.ts
  • app/src/components/vendor/animated-theme-toggler.tsx
  • app/src/components/wallet-avatar.test.ts
  • app/src/components/wallet-menu.test.ts
  • app/src/components/wallet-picker.test.ts
  • app/src/i18n/README.md
  • app/src/i18n/client.ts
  • app/src/i18n/locales.ts
  • app/src/i18n/messages.test.ts
  • app/src/i18n/messages/en.ts
  • app/src/i18n/messages/en/account.json
  • app/src/i18n/messages/en/activity.json
  • app/src/i18n/messages/en/bridge.json
  • app/src/i18n/messages/en/common.json
  • app/src/i18n/messages/en/earn.json
  • app/src/i18n/messages/en/errors.json
  • app/src/i18n/messages/en/footer.json
  • app/src/i18n/messages/en/header.json
  • app/src/i18n/messages/en/hero.json
  • app/src/i18n/messages/en/info.json
  • app/src/i18n/messages/en/launch.json
  • app/src/i18n/messages/en/market.json
  • app/src/i18n/messages/en/posts.json
  • app/src/i18n/messages/en/search.json
  • app/src/i18n/messages/en/token.json
  • app/src/i18n/messages/en/trade.json
  • app/src/i18n/messages/en/wallet.json
  • app/src/i18n/messages/index.ts
  • app/src/i18n/messages/zh-CN.ts
  • app/src/i18n/messages/zh-CN/account.json
  • app/src/i18n/messages/zh-CN/activity.json
  • app/src/i18n/messages/zh-CN/bridge.json
  • app/src/i18n/messages/zh-CN/common.json
  • app/src/i18n/messages/zh-CN/earn.json
  • app/src/i18n/messages/zh-CN/errors.json
  • app/src/i18n/messages/zh-CN/footer.json
  • app/src/i18n/messages/zh-CN/header.json
  • app/src/i18n/messages/zh-CN/hero.json
  • app/src/i18n/messages/zh-CN/info.json
  • app/src/i18n/messages/zh-CN/launch.json
  • app/src/i18n/messages/zh-CN/market.json
  • app/src/i18n/messages/zh-CN/posts.json
  • app/src/i18n/messages/zh-CN/search.json
  • app/src/i18n/messages/zh-CN/token.json
  • app/src/i18n/messages/zh-CN/trade.json
  • app/src/i18n/messages/zh-CN/wallet.json
  • app/src/i18n/server.ts
  • app/src/i18n/useAgo.ts
  • app/src/lib/bridge/approval-health.test.ts
  • app/src/lib/bridge/approval-health.ts
  • app/src/lib/bridge/approval.ts
  • app/src/lib/bridge/client-storage.ts
  • app/src/lib/bridge/client.test.ts
  • app/src/lib/bridge/client.ts
  • app/src/lib/bridge/transaction-preflight.ts
  • app/src/lib/bridge/types.ts
  • app/src/lib/chainLanding.test.ts
  • app/src/lib/command-palette.ts
  • app/src/lib/error-copy.test.ts
  • app/src/lib/error-copy.ts
  • app/src/lib/errors.ts
  • app/src/lib/launchpad/bubbles.test.ts
  • app/src/lib/launchpad/bubbles.ts
  • app/src/lib/launchpad/chart-terminal.test.ts
  • app/src/lib/launchpad/chart-terminal.ts
  • app/src/lib/launchpad/community-feed.test.ts
  • app/src/lib/launchpad/creator.test.ts
  • app/src/lib/launchpad/creator.ts
  • app/src/lib/launchpad/editAuth.ts
  • app/src/lib/launchpad/eth-route.test.ts
  • app/src/lib/launchpad/feed-dust-wiring.test.ts
  • app/src/lib/launchpad/holders.test.ts
  • app/src/lib/launchpad/holders.ts
  • app/src/lib/launchpad/launch-preview.ts
  • app/src/lib/launchpad/museworld.test.ts
  • app/src/lib/launchpad/proof.test.ts
  • app/src/lib/launchpad/proof.ts
  • app/src/lib/launchpad/recipients.ts
  • app/src/lib/launchpad/river.test.ts
  • app/src/lib/launchpad/river.ts
  • app/src/lib/launchpad/time.ts
  • app/src/lib/launchpad/twig.test.ts
  • app/src/lib/launchpad/unlisted-quote.test.ts
  • app/src/lib/launchpad/xHandle.test.ts
  • app/src/lib/og-fonts.test.ts
  • app/src/lib/ogFonts.ts
  • app/src/lib/wallet-connectors.test.ts
  • app/src/lib/wallet-connectors.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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