Skip to content

Accessibility: text up to 200%, dark mode, team symbols by default - #73

Merged
EVCV merged 1 commit into
mainfrom
claude/new-session-ndeczf
Oct 31, 2026
Merged

EVCV merged 1 commit into
mainfrom
claude/new-session-ndeczf

Conversation

@EVCV

@EVCV EVCV commented Oct 31, 2026

Copy link
Copy Markdown
Owner

Adds what Apple's App Store accessibility labels need for Larger Text, Dark Interface and Differentiate Without Color Alone, working in the browser, the iOS app and the Android app.

Larger Text

  • Settings → Text size now goes up to 200%, with two new sizes: Very large (150%) and Huge (175%).
  • Menus grow to the full size. When the phone menu no longer fits the screen, its pages scroll (data-big-text). On big screens with big text, the game switches to the tap-through phone menu: the "Phones" CSS blocks now apply under :root[data-phone-menu], which ui/textSize.ts sets, instead of under a media query.
  • In a match, the HUD grows only as far as the screen has room for, so it never covers the battlefield.
  • Auto now follows the iOS text size (Dynamic Type), as well as Android's font size.

Dark Interface

  • Settings → Accessibility → Dark mode: Auto, On or Off. Auto follows the device.
  • New .dark theme for the menus and HUD. Text and light surfaces are now CSS tokens (--text, --surface, …).
  • In matches, every world is dimmed to dusk (shownArena, view only, the sim is untouched), with no lightning flashes. Works together with High contrast.

Differentiate Without Color Alone

  • Team symbols are on by default, with their own switch. They appear beside team names, health bars (including the phone's compact health strip for 5+ teams), colour dots, swatches and online lobby names.
  • Chosen buttons get a ring as well as a colour. Online friends show a filled dot, offline friends a ring.
  • The colour-blind palette turns on by itself with iOS Differentiate Without Color or Android Colour correction. High contrast turns on by itself with Increase Contrast (iOS) or High contrast text (Android).

Native

  • New ios/App/App/DisplayPlugin.swift, added to the Xcode project and registered. DisplayPlugin.java gains accessibility().
  • Both report text size, dark mode, colour filter and contrast to src/ui/device.ts. The game asks again whenever the app comes back to the front.
  • A setting the player hasn't changed keeps following the device.

Other

  • Translations for es, pt-BR, de, fr and ja. Two existing translations of "Largest" were changed so the sizes still read in order.
  • docs/IOS.md now lists which App Store accessibility boxes to tick, and why. docs/APPS.md and CLAUDE.md are updated.

Testing

  • npm test: all passing, including the new tests/accessibility.test.ts and the updated team symbol test.
  • npm run e2e: all 57 passing on desktop, phone and screens, plus 2 new phone tests (200% text scrolls with nothing spilling off the side; dark mode follows the device and can be turned off).
  • Not tested on real devices: Dynamic Type, Differentiate Without Color and Dark Mode in the iOS app, and the Android equivalents. These need a TestFlight or Play internal build to confirm.

Generated by Claude Code

What Apple's accessibility labels (Larger Text, Dark Interface,
Differentiate Without Color Alone) ask for, in the browser and both apps.

- Larger Text: Settings → Text size goes to 200% (new Very large and Huge
  sizes). Menus scale the whole way; when the phone menu no longer fits it
  becomes pages that scroll (data-big-text), and a big screen with big text
  switches to the phone menu (data-phone-menu, now set by textSize.ts
  instead of a media query). The match HUD grows only as far as the screen
  has room for. "Auto" follows iOS Dynamic Type as well as Android's font
  size.
- Dark mode (Settings → Accessibility, Auto/On/Off; Auto follows the
  device): a .dark theme for menus and HUD (text and surfaces are now CSS
  tokens), and every world shown at dusk in matches, without lightning.
  Works with High contrast.
- Team symbols are on by default (their own switch) beside names, health
  bars, colour dots and swatches, and on the phone's compact health strip.
  Chosen buttons get a ring, and online friends a filled dot (offline: a
  ring). The colour-blind palette turns on by itself with iOS Differentiate
  Without Color or Android Colour correction; High contrast with Increase
  Contrast or High contrast text.
- Native: DisplayPlugin.swift (new) and DisplayPlugin.java report text
  size, dark mode, colour filters and contrast (src/ui/device.ts); the
  game asks again when the app comes back to the front.
- Settings the player hasn't changed keep following the device.
- Translations for es, pt-BR, de, fr, ja; unit and e2e tests; the App
  Store accessibility answers in docs/IOS.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CU2JKQTDvCKSHjaeY5YQ8w
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-31T06:15:10.141859Z 1298742 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying tardigeddon with  Cloudflare Pages  Cloudflare Pages

Latest commit: 1298742
Status: ✅  Deploy successful!
Preview URL: https://1fd80344.tardigeddon.pages.dev
Branch Preview URL: https://claude-new-session-ndeczf.tardigeddon.pages.dev

View logs

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1298742ee6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/match.ts
Comment on lines +200 to 202
this.theme = shownArena(arenaTheme(this.state.scheme.arena ?? wearArena()));
app.renderer.background.color = this.theme.skyTop;
this.renderer = new GameRenderer(app, this.state, this.theme);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Refresh the arena theme when automatic dark mode changes

When a match starts in light mode and the device switches to dark mode, including while the app is backgrounded, ui/device.ts notifies applyAccess(), but the arena remains bright: shownArena() is evaluated only in the match constructor, and GameRenderer retains that theme and its prebuilt sky, hills and terrain textures. The HUD changes to dark mode while the battlefield stays light until another match starts; the reverse transition also leaves the arena dimmed. Subscribe the active match to display-setting changes and refresh its visual theme without changing the selected arena or simulation state.

Useful? React with 👍 / 👎.

@EVCV
EVCV merged commit 4b534ed into main Oct 31, 2026
6 checks passed
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