From 441ec0a162b0bddafb33b8eeea8c1674b7533fa2 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 4 Nov 2026 18:38:43 +0800 Subject: [PATCH 1/3] Let users pick a syntax colour scheme for the editor The editor had one fixed highlighting palette. Settings now offer six schemes (Classic, Ocean, Forest, Ember, Monochrome, High contrast), each with light and dark variants, previewed as small code cards. The choice is stored per device and applies to every editor pane immediately. Co-Authored-By: Claude Opus 5.5 --- apps/web/src/app/[locale]/app/page.test.tsx | 29 +++ apps/web/src/app/[locale]/app/page.tsx | 43 ++++ .../app/components/MonacoPseudocodeEditor.tsx | 136 +++++------ .../components/SyntaxColorSchemePicker.tsx | 95 ++++++++ apps/web/src/i18n/messages/editor.en.ts | 5 +- apps/web/src/i18n/messages/editor.zh.ts | 2 +- apps/web/src/lib/analytics.ts | 1 + apps/web/src/lib/syntaxColorSchemes.test.ts | 104 +++++++++ apps/web/src/lib/syntaxColorSchemes.ts | 213 ++++++++++++++++++ 9 files changed, 561 insertions(+), 67 deletions(-) create mode 100644 apps/web/src/app/components/SyntaxColorSchemePicker.tsx create mode 100644 apps/web/src/lib/syntaxColorSchemes.test.ts create mode 100644 apps/web/src/lib/syntaxColorSchemes.ts diff --git a/apps/web/src/app/[locale]/app/page.test.tsx b/apps/web/src/app/[locale]/app/page.test.tsx index ba60581..f90653a 100644 --- a/apps/web/src/app/[locale]/app/page.test.tsx +++ b/apps/web/src/app/[locale]/app/page.test.tsx @@ -142,14 +142,17 @@ vi.mock("@/app/components/MonacoPseudocodeEditor", async () => { MonacoPseudocodeEditor: memo(function MockEditor({ value, onChange, + colorScheme, }: { value: string; onChange: (value: string) => void; + colorScheme?: string; }) { editorRenderMock(); return (