Skip to content

UI copy audit — 2026-09-21

Scope

Source-based audit of 6,810 English strings in 16 locale namespaces, with candidate copy traced to renderers and notification call sites. Areas reviewed: Discover, settings/configuration, create/Studio, library/assets/bundles, chat/sandbox, profile/referrals, plans, authentication, community/DM/friends, notifications, extensions, achievements/quests, creator/admin, and game controls. This is a targeted cleanup of the approved shortlist, not a claim that all filler is gone.

This report covers non-Discover UI and corresponding keys in en, es, ja, zh, and zh-Hant. Discover UI, hub.json copy, account persistence, and feed behavior are documented in the account interests verification note. This copy audit used source inspection and non-browser checks; it did not involve production access or new copy-mirroring tests.

Changes

Paths below are relative to packages/app/; locale keys are under src/locales/<language>/.

Area / keysRendered change and evidence
Settings: settings.json::contentSafety.description, privacy.descriptionRemoved generic section introductions in src/features/settings/settings-page.tsx. Retained the keys for settings search descriptions.
Wallpaper: wallpaper.opacity.description, wallpaper.gradient.hint, wallpaper.cloudyGlass.hint, wallpaper.autoSavesRemoved redundant slider copy; optional descriptions/hints no longer leave empty elements. Autosave guidance appears once above the three sliders. Opacity description remains in search metadata.
Support: about.contactSupportDescription, about.messageOfficialHintRemoved “We read every message” and narration beneath the Message button, including the support search blurb. Contact actions remain.
Auth: auth.json::login.subtitle, register.subtitle, verified.descriptionShortened sign-in/account creation labels; removed the welcome paragraph in src/features/auth/verified-page.tsx. Verification status and redirect instructions remain. The login key also serves Krew sign-in.
Create: library.json::create.mobileSubtitleRemoved the paragraph and decorative wrapper from src/routes/app/worlds.create.tsx; template choices and descriptions remain.
Editor: editor.json::simple.advancedPromo.title, .subtitleNeutral heading; removed the promotional paragraph in src/features/editor/quick-create-editor.tsx. Feature bullets, Studio instructions, and reimbursement information remain.
Media creation: library.json::generation.atelier.lead, .audioLeadReplaced narrated steps and speed claims with the asset-library destination in src/features/generation/generation-atelier.tsx.
Generation feedback: generation.submittedToast, generation.models.deletedToast, generation.community.collectedToastRemoved redundant calls in use-generation-state.ts, use-models.ts, and community-models.tsx. Jobs/model lists and the Added button still update. Collection exposes aria-pressed; existing job status labels use role="status"; the model list has a polite removal live region.
Sandbox chat: sandbox/chat/i18n.ts::chatRestarted, revertedToHereRemoved only built-in success announcements from message-input.tsx and message-actions.tsx, plus obsolete dictionary entries. Restart invocation, awaiting behavior, destructive prompts, and errors are unchanged. The sandbox's existing Chinese dictionary serves both Chinese locales.
Profile: profile.json::referral.subtitleRemoved the repeated invitation line from src/features/profile/profile-sidebar.tsx and src/routes/app/profile.invite-code.tsx. Reward details remain.
Plans: plans.json::title“Plans & Mushies” replaces the promotional heading. No other billing copy or behavior changed.
Chat preview: chat.json::preview.signUpToStartShortened the signup button in src/features/chat/world-preview.tsx to “Sign up to play.”

Removed locale keys were deleted only after their callers were removed; no empty translations were used to hide UI. Other locale strings and placeholders remain unchanged. The shared sandbox toast bridge still supports card-authored messages.

Retained rationale

  • Errors, retry guidance, partial outcomes, asynchronous completion/import notices, moderation/report receipts, clipboard feedback, and undo actions communicate results users may not otherwise see.
  • Destructive and public-sharing confirmations explain consequences. Payment, refund, renewal, expiry, provider billing, and reimbursement details remain.
  • Accessibility labels, progress indicators, and actionable instructions remain. AI terminology, prompt instructions, template content, and user-authored content were not removed simply for mentioning AI.
  • library:toast.bundleSaved remains because Studio exports can complete while the destination library is not visible. Unused legacy success keys elsewhere were not counted as visible UI fixes.

Validation

  • Integrated app regressions: 256 passed, 0 failed. Full monorepo build and typecheck passed, as did the client edition boundary check.
  • Existing scoped tests: 18 passed, 0 failed, using the command below from packages/app.
  • All 80 locale JSON files parsed. Comparing the 35 edited locale files with HEAD confirmed exactly 95 approved key edits/removals and preserved interpolation placeholders. Searches found no remaining app callers for the removed keys.
  • Scoped git diff --check passed. Visual layout and screen-reader behavior were not exercised in a browser.
powershell
pnpm exec tsx --tsconfig tsconfig.app.json --test --test-timeout=120000 src/features/settings/settings-search.test.ts src/lib/create-page-mobile-layout.test.ts src/features/generation/generation-recovery.test.tsx src/features/generation/generation-workflow.test.tsx src/features/generation/generation-panel-access.test.tsx