From 9deb341f3e96ee4e49861772de88d6dfe4e5c0ef Mon Sep 17 00:00:00 2001 From: cmdr-chara <249489759+cmdr-chara@users.noreply.github.com> Date: Wed, 22 Jul 2026 17:16:03 +0200 Subject: [PATCH 1/2] feat: redesign settings and add window transparency --- scripts/toolbarCustomizationWiring.test.ts | 63 + src-tauri/Cargo.toml | 2 +- src-tauri/capabilities/default.json | 3 +- src-tauri/src/lib.rs | 38 +- src-tauri/tauri.conf.json | 1 + src/app.html | 4 +- src/lib/MarkdownViewer.svelte | 4 +- src/lib/components/Settings.svelte | 1158 +++++++++++------ src/lib/components/TitleBar.svelte | 87 +- src/lib/stores/settings.svelte.ts | 77 ++ src/lib/utils/editorToolbar.ts | 29 +- src/lib/utils/i18n.ts | 245 +++- src/lib/utils/settingsRedesignTranslations.ts | 251 ++++ src/styles.css | 63 +- 14 files changed, 1525 insertions(+), 500 deletions(-) create mode 100644 src/lib/utils/settingsRedesignTranslations.ts diff --git a/scripts/toolbarCustomizationWiring.test.ts b/scripts/toolbarCustomizationWiring.test.ts index 1af4c54a..f6740bd8 100644 --- a/scripts/toolbarCustomizationWiring.test.ts +++ b/scripts/toolbarCustomizationWiring.test.ts @@ -3,12 +3,15 @@ import { readFileSync } from 'node:fs'; import { test } from 'node:test'; import { getSupportedLanguages, translations, type LanguageCode } from '../src/lib/utils/i18n.js'; +import { EDITOR_TOOLBAR_TOOLS } from '../src/lib/utils/editorToolbar.js'; +import { settingsRedesignTranslationKeys } from '../src/lib/utils/settingsRedesignTranslations.js'; const markdownViewer = readFileSync('src/lib/MarkdownViewer.svelte', 'utf8'); const settingsComponent = readFileSync('src/lib/components/Settings.svelte', 'utf8'); const settingsStore = readFileSync('src/lib/stores/settings.svelte.ts', 'utf8'); const titleBar = readFileSync('src/lib/components/TitleBar.svelte', 'utf8'); const toastComponent = readFileSync('src/lib/components/Toast.svelte', 'utf8'); +const globalStyles = readFileSync('src/styles.css', 'utf8'); function getDirectTranslation(lang: LanguageCode, key: string): string | undefined { let current: unknown = translations[lang]; @@ -93,6 +96,45 @@ test('toolbar settings use collapsed accordions for application and editor toolb } assert.match(settingsComponent, /\.toolbar-settings\[open\]\s+\.toolbar-settings-chevron/); assert.match(settingsComponent, /\.toolbar-settings-summary::-webkit-details-marker/); + assert.doesNotMatch(settingsComponent, /class="toolbar-settings-header"/); + assert.match(settingsComponent, /\.toolbar-settings-reset\s*\{[\s\S]*?position:\s*absolute/); +}); + +test('appearance uses the shared settings group and native controls', () => { + const appearanceBlock = settingsComponent.match( + /{:else if activeCategory === 'appearance'}([\s\S]*?){:else if activeCategory === 'toolbars'}/, + ); + assert.ok(appearanceBlock); + assert.match(appearanceBlock[1], /
/); + assert.match(appearanceBlock[1], /
/); + assert.match(appearanceBlock[1], / + {#if settingsSearch.trim()} +
+ {#if settingsSearchResults.length > 0} + {#each settingsSearchResults as result} + + {/each} + {:else} + {t('settings.noSearchResults', settings.language)} + {/if} +
+ {/if} +
- - - - -