From bd33e575f1ac73bad427285b2e942659528afa3f Mon Sep 17 00:00:00 2001 From: tsuixl Date: Tue, 6 Oct 2026 19:32:56 +0800 Subject: [PATCH] gui: let users choose installed interface and code fonts (#1007) * gui: choose installed interface and code fonts and styles Discover installed styles through DirectWrite, CoreText and Fontconfig. Keep choices per computer, apply them before paint and notify both desktop webviews after saving; defaults retain platform and Omarchy fallbacks. Verified seven focused Go tests, including real Windows discovery (90 families, 276 styles), 14 font browser cases in Chromium/WebKit, 68 settings/zoom/Omarchy/web cases, go vet, Windows amd64/arm64 and Linux nogui builds. Against the original assets, the new UI test fails with Settings must offer an interface font picker (0 != 1). Full Windows suites have separately reproduced upstream failures; macOS/Linux native discovery is covered by the added CI step. * gui: retain bundled Mac fonts and variable style precision Only filter an undownloaded CoreText face when it is explicitly downloadable; bundled fonts are installed without being downloaded. Use resolved font names when descriptors omit them. Preserve fractional weights and nonnegative CSS widths for named variable styles. * gui: restore the authored font cascade when returning to defaults Apply family-only trait overrides only while a custom face is active. The browser regression catches code under a bold parent becoming 700 instead of its original 400. Keep the compatibility shim first, and apply boot fonts before visible content. * gui: keep font picker review separate from CI integration Leave the native test sources and manual verification command with the feature. Move the added workflow step to a follow-up so the font picker can take the normal review path requested on PR #1007. --- docs/screenshots/font-settings.png | Bin 0 -> 154817 bytes docs/subsystems/gui-shell.md | 41 +++- internal/fonts/fonts.go | 94 ++++++++ internal/fonts/fonts_darwin.go | 31 +++ internal/fonts/fonts_darwin.m | 112 +++++++++ internal/fonts/fonts_darwin_test.go | 20 ++ internal/fonts/fonts_linux.go | 74 ++++++ internal/fonts/fonts_other.go | 11 + internal/fonts/fonts_test.go | 85 +++++++ internal/fonts/fonts_windows.go | 111 +++++++++ internal/fonts/fonts_windows_test.go | 24 ++ internal/gui/api.go | 25 +- internal/gui/app.go | 1 + internal/gui/assets/app.css | 101 +++++--- internal/gui/assets/app.js | 132 +++++++++- internal/gui/assets/fonts.js | 31 +++ internal/gui/assets/i18n.js | 36 +++ internal/gui/assets/index.html | 17 ++ internal/gui/assets/library.css | 37 +-- internal/gui/assets/omarchy.css | 3 +- internal/gui/assets/plugins.css | 8 +- internal/gui/assets/routing.css | 13 +- internal/gui/assets/sessions.css | 9 +- internal/gui/fonts.go | 49 ++++ internal/gui/fonts_desktop.go | 22 ++ internal/gui/fonts_test.go | 127 ++++++++++ internal/gui/tests/README.md | 24 ++ internal/gui/tests/font-cascade.test.cjs | 45 ++++ internal/gui/tests/fonts.test.cjs | 292 +++++++++++++++++++++++ internal/gui/tests/omarchy.test.cjs | 9 + internal/settings/fonts_test.go | 45 ++++ internal/settings/settings.go | 11 + 32 files changed, 1568 insertions(+), 72 deletions(-) create mode 100644 docs/screenshots/font-settings.png create mode 100644 internal/fonts/fonts.go create mode 100644 internal/fonts/fonts_darwin.go create mode 100644 internal/fonts/fonts_darwin.m create mode 100644 internal/fonts/fonts_darwin_test.go create mode 100644 internal/fonts/fonts_linux.go create mode 100644 internal/fonts/fonts_other.go create mode 100644 internal/fonts/fonts_test.go create mode 100644 internal/fonts/fonts_windows.go create mode 100644 internal/fonts/fonts_windows_test.go create mode 100644 internal/gui/assets/fonts.js create mode 100644 internal/gui/fonts.go create mode 100644 internal/gui/fonts_desktop.go create mode 100644 internal/gui/fonts_test.go create mode 100644 internal/gui/tests/font-cascade.test.cjs create mode 100644 internal/gui/tests/fonts.test.cjs create mode 100644 internal/settings/fonts_test.go diff --git a/docs/screenshots/font-settings.png b/docs/screenshots/font-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..8773102711dde6ff3869778d329904019f72c6bd GIT binary patch literal 154817 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

5pHc8{PLq@HXu)qq>ne#$VR2Ns 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 R9lzHjAu1zME~M-GzW^dmB*6dx literal 0 HcmV?d00001 diff --git a/docs/subsystems/gui-shell.md b/docs/subsystems/gui-shell.md index 0ad3360a..9d10e277 100644 --- a/docs/subsystems/gui-shell.md +++ b/docs/subsystems/gui-shell.md @@ -22,13 +22,51 @@ three. 1. `magpie` with no arguments, `magpie app` or `magpie tray` calls `runGUI`, which calls `gui.Run`. A `nogui` build runs the TUI instead. A second launch hands over to the instance already running. 2. `startBackend` brings up the gateway, or finds another magpie serving it. -3. The panel and the window load `index.html` from `Handler`. `boot.js` passes the saved language, theme and text size before the first paint. +3. The panel and the window load `index.html` from `Handler`. `boot.js` passes the saved language, theme, text size and desktop font choices before the first paint. 4. The page reads `GET /api/state` and writes through `POST` routes. Each write answers with the new state, built under `held`. 5. Closing the window hides it. On the Mac a full-screen window first leaves full screen (`closeStep`). 6. The window opens as it was last left. Its settled size and whether it was maximised are kept in `settings.Window` and `settings.WindowMaximised` (`settle`; per machine, see `KeepOwn`). A maximised window keeps the size it restores to. `makeMain` opens it at that size (`openSize`). On its first show, `placeMain` maximises it again on the Mac and Windows (on Windows once the page has come). On Linux, `makeMain` makes it maximised with `StartState`. On Windows a size larger than the screen's work area is fitted and centred (`fitRoom`), and the larger size stays kept. The window's position is not kept. ## Constraints and failure behavior +### Desktop fonts + +Settings → General offers independent interface and code fonts, each with +the installed family's actual styles. `GET /api/fonts` calls +[`fonts.List`](../../internal/fonts/fonts.go): DirectWrite on Windows, +CoreText on macOS and Fontconfig on Linux. Discovery is lazy, cached in the +handler, and refreshed by the menu. It returns names and CSS traits, never +font files or paths. A failed refresh answers 503 and preserves the previous +collection; an empty successful collection is distinct from failure. +`magpie web` and `nogui` do not expose this desktop catalogue. + +`settings.UIFont` and `settings.CodeFont` keep the family, style name, +OpenType weight, CSS slope and width percentage. A missing choice keeps the +platform default. A settings POST can restore that default with an explicit +null; omitting the field preserves it, as does every browser-mode save. +`KeepOwn` preserves this computer's choices during sync and backup restore. +Invalid traits reject the save without replacing the previous settings. + +[`fonts.js`](../../internal/gui/assets/fonts.js) applies choices at boot and +through `applyPrefs`. After a successful font change `host.fontsChanged` +notifies both existing webviews through `receiveFonts`, without waiting for +the other window to gain focus; a released lightweight webview uses boot +settings when recreated. An in-flight local save ignores the notification +and finishes its own queue. +The selected family precedes the existing platform fallback stack. The +interface and code traits apply independently; explicit component weights +still mark emphasis. A choice takes precedence over Omarchy's font, while +restoring the default follows the theme again. If discovery finds a saved +face missing, the page retains its name, explains the fallback and uses the +default until the face is available or the user chooses another. A discovery +error never clears a saved choice. The browser's own typography is unchanged. + +The menus support search, keyboard selection and refresh. Family changes +keep a matching style where possible, otherwise the nearest regular face; +named variable instances are offered without arbitrary axis controls. + +### Shared UI rules + - Every user-visible string has zh, ja and de translations with the same placeholders. `gui-ja.test.cjs` and `gui-de.test.cjs` fail on a missing one. - A click never moves the page. Code scrolls a view only with the reader's event in hand (`scrollOnPurpose`); `click-scroll.test.cjs` guards this. - There are no native ` + Code badge`); + await page.addScriptTag({ content: js }); + const read = () => page.evaluate(() => ["code", "ui", "emphasis", "badge"].map(id => { + const s = getComputedStyle(document.getElementById(id)); + return { weight: s.fontWeight, style: s.fontStyle, family: s.fontFamily }; + })); + const defaults = await read(); + assert.equal(defaults[0].weight, "400", "code's authored regular weight must not inherit its bold parent"); + assert.equal(defaults[1].weight, "400", "a UI family override must not discard the key's authored weight"); + assert.equal(defaults[2].weight, "450"); + await page.evaluate(s => window.desktopFonts.apply(s), { uiFont: choice("Arial", 500, "normal"), codeFont: choice("Consolas", 700, "italic") }); + const picked = await read(); + assert.equal(picked[0].weight, "700"); + assert.equal(picked[0].style, "italic"); + assert.equal(picked[1].weight, "500"); + assert.equal(picked[2].weight, "450", "component emphasis stays explicit"); + await page.evaluate(() => window.desktopFonts.apply({})); + assert.deepEqual(await read(), defaults, "reset restores every original font trait"); + await page.evaluate(s => window.desktopFonts.apply(s), { uiFont: choice("Arial", 600, "italic"), codeFont: choice("Consolas", 400, "normal") }); + const independent = await read(); + assert.equal(independent[3].weight, "400"); + assert.equal(independent[3].style, "normal", "code badges don't inherit the chosen interface slope"); + } finally { await browser.close(); } + }); +} diff --git a/internal/gui/tests/fonts.test.cjs b/internal/gui/tests/fonts.test.cjs new file mode 100644 index 00000000..c35bee69 --- /dev/null +++ b/internal/gui/tests/fonts.test.cjs @@ -0,0 +1,292 @@ +// Installed desktop fonts: real assets with an isolated API, in both engines. +const assert = require("node:assert/strict"); +const fs = require("node:fs/promises"); +const path = require("node:path"); +const { test } = require("node:test"); +const { chromium, webkit } = require("playwright"); +const assets = process.env.MAGPIE_FONT_ASSETS || path.resolve(__dirname, "../assets"); +const face = (family, name = "Regular", weight = 400, style = "normal", stretch = 100) => ({ family, name, weight, style, stretch }); +const harmony = [face("HarmonyOS Sans SC"), face("HarmonyOS Sans SC", "Medium", 500), face("HarmonyOS Sans SC", "Bold", 700)]; +const mono = [face("Consolas"), face("Consolas", "Italic", 400, "italic")]; +const odd = face('Reader\'s "中文" \\ family'); +const catalogue = [ + { name: harmony[0].family, styles: harmony }, { name: mono[0].family, styles: mono }, { name: odd.family, styles: [odd] }, + ...Array.from({ length: 200 }, (_, i) => ({ name: "Test Family " + i, styles: [face("Test Family " + i)] })), +]; + +async function open(browser, lang = "en", options = {}) { + const context = await browser.newContext({ locale: lang === "zh" ? "zh-CN" : "en-US", viewport: options.viewport || { width: 1000, height: 820 } }); + const api = { posts: [], reads: 0, fonts: structuredClone(catalogue), fontError: false, saveError: false, delay: 0, + cur: { lang, theme: "light", textSize: 100, currency: "usd", tray: "panel", version: "0.1.0", visionModels: [], imageGenModels: [], ...options.settings } }; + const page = await context.newPage(); + page.setDefaultTimeout(5000); + const errors = []; + page.on("pageerror", e => { errors.push(e.message); console.error(e.message); }); + await page.route("**/*", async route => { + const req = route.request(), url = new URL(req.url()); + const json = data => route.fulfill({ json: data }); + if (url.pathname === "/boot.js") return route.fulfill({ contentType: "text/javascript", body: `window.bootPrefs=${JSON.stringify({ ...api.cur, web: !!options.web, ...(options.omarchy ? { omarchy: { mode: "dark", stamp: "one", name: "Test theme", vars: { "--font": '"Theme Font", sans-serif', "--code": '"Theme Mono", monospace' } } } : {}) })};` }); + if (url.pathname === "/wails/runtime.js") return route.fulfill({ contentType: "text/javascript", body: "export const Window = {};" }); + if (url.pathname === "/api/fonts") { + api.reads++; + return api.fontError ? route.fulfill({ status: 503, body: "could not read installed fonts" }) : json(api.fonts); + } + if (url.pathname === "/api/settings") { + if (req.method() === "POST") { + const body = req.postDataJSON(); + api.posts.push(body); + if (api.delay) await new Promise(r => setTimeout(r, api.delay)); + if (api.saveError) return route.fulfill({ status: 400, body: "test save failed" }); + api.cur = { ...api.cur, ...body }; + } + return json(api.cur); + } + if (url.pathname === "/api/state") return json({ agents: [], profiles: [], settings: api.cur }); + if (url.pathname === "/api/plugins") return json({ plugins: [] }); + if (url.pathname === "/api/usage/quotas") return json([]); + if (url.pathname === "/api/groups") return json({ groups: [], models: [] }); + if (url.pathname === "/api/window/fit") return route.fulfill({ status: 204 }); + if (url.pathname.startsWith("/api/")) return json({}); + const file = path.join(assets, url.pathname === "/" ? "index.html" : url.pathname); + const contentType = { ".html": "text/html", ".js": "text/javascript", ".css": "text/css", ".svg": "image/svg+xml", ".png": "image/png" }[path.extname(file)]; + try { return await route.fulfill({ body: await fs.readFile(file), contentType }); } + catch { return route.fulfill({ status: 404, body: "not found" }); } + }); + await page.goto("http://magpie.test/?view=settings&tab=general"); + await page.locator("#themeSegs .opt").first().waitFor({ state: "attached" }); + // A real assertion, also usable against the original assets, rather than + // a timeout or a compile error as the negative-control result. + assert.equal(await page.locator("#uiFontRow").count(), 1, "Settings must offer an interface font picker"); + if (!options.web) await page.waitForFunction(() => fontList !== null || fontListError); + await page.evaluate(async () => { + await document.fonts.ready; + await Promise.all(document.getAnimations().map(a => a.finished.catch(() => {}))); + }); + return { page, api, errors, close: () => context.close() }; +} + +async function family(page, row, name) { + await page.locator(`#${row} .font-family`).click(); + await page.locator(".font-menu .sc-q").fill(name); + await page.locator(".font-menu .pm-item").filter({ has: page.locator(".pm-name", { hasText: name }) }).first().click(); +} +async function style(page, row, name) { + await page.locator(`#${row} .font-style`).click(); + await page.locator(".font-menu .pm-item").filter({ has: page.locator(".pm-name", { hasText: name }) }).click(); +} +async function reset(page, row) { + await page.locator(`#${row} .font-family`).click(); + await page.locator(".font-menu .pm-item").first().click(); +} +const settled = page => page.waitForFunction(() => prefsBusy === 0 && Object.keys(fontDrafts).length === 0); +const css = (page, selector) => page.locator(selector).evaluate(e => { + const s = getComputedStyle(e); + return { family: s.fontFamily, weight: s.fontWeight, style: s.fontStyle, stretch: s.fontStretch }; +}); +const engines = [["chromium", chromium], ["webkit", webkit]].filter(([name]) => !process.env.BROWSER || process.env.BROWSER === name); + +for (const [engine, runtime] of engines) { + for (const lang of ["en", "zh"]) test(`${engine} ${lang}: independent installed fonts, real styles, persistence and reset`, async () => { + const browser = await runtime.launch(); + try { + const { page, api, errors } = await open(browser, lang); + const before = await css(page, "#codeFontRow .font-preview"); + assert.equal(await page.locator("select").count(), 0); + await family(page, "uiFontRow", "HarmonyOS Sans SC"); + await style(page, "uiFontRow", "Medium"); + await settled(page); + assert.equal(api.cur.uiFont.weight, 500); + assert.match((await css(page, "body")).family, /^"?HarmonyOS Sans SC/); + assert.equal((await css(page, "body")).weight, "500"); + assert.deepEqual(await css(page, "#codeFontRow .font-preview"), before); + await family(page, "codeFontRow", "Consolas"); + await style(page, "codeFontRow", "Italic"); + await settled(page); + assert.equal((await css(page, "#codeFontRow .font-preview")).style, "italic"); + assert.equal((await css(page, "body")).style, "normal"); + // Other saved preferences must carry both choices through the queue. + await page.locator("#themeSegs .opt").nth(2).click(); + await settled(page); + assert.equal(api.cur.uiFont.weight, 500); + assert.equal(api.cur.codeFont.style, "italic"); + await page.reload(); + await page.locator("#uiFontRow .font-family").waitFor(); + await page.waitForFunction(() => fontList !== null && !fontFlight); + await page.evaluate(async () => { await document.fonts.ready; await Promise.all(document.getAnimations().map(a => a.finished.catch(() => {}))); }); + assert.equal((await css(page, "body")).weight, "500"); + assert.equal((await css(page, "#codeFontRow .font-preview")).style, "italic"); + await family(page, "uiFontRow", "Consolas"); + await settled(page); + assert.equal(api.cur.uiFont.name, "Regular", "a family without Medium chooses a regular face"); + await reset(page, "uiFontRow"); + await settled(page); + assert.equal(api.cur.uiFont, null); + assert.equal(api.cur.codeFont.style, "italic"); + await reset(page, "codeFontRow"); + await settled(page); + assert.deepEqual(await css(page, "#codeFontRow .font-preview"), before); + assert.deepEqual(errors, []); + } finally { await browser.close(); } + }); + + test(`${engine}: queued choices and failed writes restore the saved face`, async () => { + const browser = await runtime.launch(); + try { + const { page, api, errors } = await open(browser); + api.delay = 250; + await family(page, "uiFontRow", "HarmonyOS Sans SC"); + await style(page, "uiFontRow", "Medium"); + await family(page, "codeFontRow", "Consolas"); + await settled(page); + assert.equal(api.cur.uiFont.name, "Medium"); + assert.equal(api.cur.codeFont.family, "Consolas"); + api.saveError = true; + await style(page, "uiFontRow", "Bold"); + await settled(page); + assert.equal((await css(page, "body")).weight, "500"); + assert.equal(await page.locator("#uiFontRow .font-style span").textContent(), "Medium"); + assert.deepEqual(errors, []); + } finally { await browser.close(); } + }); + + test(`${engine}: refresh errors, missing faces, empty lists and literal names`, async () => { + const browser = await runtime.launch(); + try { + const { page, api, errors } = await open(browser, "en", { settings: { uiFont: harmony[1] } }); + api.fontError = true; + await page.locator("#uiFontRow .font-family").click(); + await page.getByRole("menuitemradio", { name: "Refresh fonts" }).click(); + await page.waitForFunction(() => fontListError); + assert.equal((await css(page, "body")).weight, "500", "failed discovery must not erase the last collection"); + api.fontError = false; + api.fonts = [{ name: "Consolas", styles: mono }, { name: odd.family, styles: [odd] }]; + await page.locator("#uiFontRow .font-family").click(); + await page.getByRole("menuitemradio", { name: /Refresh fonts/ }).click(); + await page.waitForFunction(() => !fontFlight && !fontListError); + assert.match(await page.locator("#uiFontRow .font-note").textContent(), /unavailable/); + assert.doesNotMatch((await css(page, "body")).family, /HarmonyOS/); + assert.equal(api.cur.uiFont.family, harmony[0].family, "missing font choice stays saved"); + await family(page, "uiFontRow", odd.family); + await settled(page); + assert.equal(await page.locator("#uiFontRow .font-family span").textContent(), odd.family); + assert.match((await css(page, "body")).family, /Reader/); + api.fonts = []; + await page.locator("#uiFontRow .font-family").click(); + await page.getByRole("menuitemradio", { name: "Refresh fonts" }).click(); + await page.waitForFunction(() => !fontFlight && fontList.length === 0); + await reset(page, "uiFontRow"); + await settled(page); + assert.equal(api.cur.uiFont, null); + assert.match(await page.locator("#uiFontRow .font-note").textContent(), /No installed fonts/); + assert.deepEqual(errors, []); + } finally { await browser.close(); } + }); + + test(`${engine}: font menu search and keys fit narrow windows without scrolling the page`, async () => { + const browser = await runtime.launch(); + try { + const { page, errors } = await open(browser, "zh", { viewport: { width: 560, height: 620 } }); + const top = await page.locator("#view-settings").evaluate(e => e.scrollTop); + await page.locator("#uiFontRow .font-family").click(); + const menu = page.locator(".font-menu"); + const box = await menu.boundingBox(); + assert(box.x >= 0 && box.x + box.width <= 560 && box.y >= 0 && box.y + box.height <= 620); + await menu.hover(); + await page.mouse.wheel(0, 240); + await page.waitForFunction(() => document.querySelector(".font-menu").scrollTop > 0); + assert.equal(await page.locator("#view-settings").evaluate(e => e.scrollTop), top); + await page.locator(".font-menu .sc-q").fill("HarmonyOS"); + await page.keyboard.press("Enter"); + await settled(page); + assert.equal(await page.locator("#uiFontRow .font-family span").textContent(), "HarmonyOS Sans SC"); + assert.equal(await page.locator("#view-settings").evaluate(e => e.scrollTop), top); + await page.locator("#uiFontRow .font-style").click(); + await page.keyboard.press("ArrowDown"); + await page.keyboard.press("Enter"); + await settled(page); + assert.equal(await page.locator("#uiFontRow .font-style span").textContent(), "Medium"); + await page.locator("#uiFontRow .font-style").click(); + await page.keyboard.press("Escape"); + assert.equal(await page.locator(".font-menu").count(), 0); + for (const width of [440, 560, 1000]) { + await page.setViewportSize({ width, height: 820 }); + assert(await page.locator("#view-settings").evaluate(e => e.scrollWidth <= e.clientWidth)); + for (const row of ["uiFontRow", "codeFontRow"]) { + const bounds = await page.locator(`#${row} .font-controls`).boundingBox(); + assert(bounds.x >= 0 && bounds.x + bounds.width <= width, `${row} at ${width}`); + } + } + if (process.env.ARTIFACT_DIR) { + await fs.mkdir(process.env.ARTIFACT_DIR, { recursive: true }); + await style(page, "uiFontRow", "Medium"); + await family(page, "codeFontRow", "Consolas"); + await settled(page); + await page.screenshot({ path: path.join(process.env.ARTIFACT_DIR, `fonts-${engine}-zh.png`) }); + } + assert.deepEqual(errors, []); + } finally { await browser.close(); } + }); + + test(`${engine}: explicit fonts override Omarchy and browser mode keeps its defaults`, async () => { + const browser = await runtime.launch(); + try { + const { page, errors } = await open(browser, "en", { omarchy: true, settings: { uiFont: harmony[1], codeFont: mono[0] } }); + assert.match((await css(page, "body")).family, /HarmonyOS/); + await reset(page, "uiFontRow"); + await settled(page); + assert.match((await css(page, "body")).family, /Theme Font/); + assert.match((await css(page, "#codeFontRow .font-preview")).family, /Consolas/); + assert.deepEqual(errors, []); + const web = await open(browser, "en", { web: true, settings: { uiFont: harmony[1] } }); + assert.equal(await web.page.locator("#uiFontRow").isVisible(), false); + assert.equal(web.api.reads, 0); + assert.doesNotMatch((await css(web.page, "body")).family, /HarmonyOS/); + assert.deepEqual(web.errors, []); + } finally { await browser.close(); } + }); + + test(`${engine}: native notifications update the other webview without another save`, async () => { + const browser = await runtime.launch(); + try { + const { page, api, errors } = await open(browser); + api.cur.uiFont = harmony[1]; + api.cur.codeFont = mono[1]; + await page.evaluate(s => window.receiveFonts(s), api.cur); + assert.equal((await css(page, "body")).weight, "500"); + assert.equal((await css(page, "#codeFontRow .font-preview")).style, "italic"); + assert.equal(await page.locator("#uiFontRow .font-style span").textContent(), "Medium"); + assert.equal(api.posts.length, 0, "a notification must not echo another save"); + api.cur.uiFont = null; + await page.evaluate(s => window.receiveFonts(s), api.cur); + assert.doesNotMatch((await css(page, "body")).family, /HarmonyOS/); + assert.equal((await css(page, "#codeFontRow .font-preview")).style, "italic"); + // A local queued choice wins over an older notice sent before its reply. + api.delay = 150; + await family(page, "uiFontRow", "HarmonyOS Sans SC"); + await page.evaluate(s => window.receiveFonts(s), { uiFont: mono[0], codeFont: null }); + await settled(page); + assert.match((await css(page, "body")).family, /HarmonyOS/); + assert.equal((await css(page, "#codeFontRow .font-preview")).style, "italic"); + assert.deepEqual(errors, []); + } finally { await browser.close(); } + }); + + test(`${engine}: named variable traits retain fractional weight and custom width`, async () => { + const browser = await runtime.launch(); + try { + const { page, api, errors } = await open(browser); + const book = face("Variable Sans", "Book", 425.5, "normal", 25); + api.fonts.push({ name: book.family, styles: [book] }); + await page.locator("#uiFontRow .font-family").click(); + await page.getByRole("menuitemradio", { name: "Refresh fonts" }).click(); + await page.waitForFunction(() => !fontFlight && fontList.some(f => f.name === "Variable Sans")); + await family(page, "uiFontRow", book.family); + await settled(page); + assert.equal(api.cur.uiFont.weight, 425.5); + assert.equal(api.cur.uiFont.stretch, 25); + assert.equal((await css(page, "body")).weight, "425.5"); + assert.equal((await css(page, "body")).stretch, "25%"); + assert.deepEqual(errors, []); + } finally { await browser.close(); } + }); +} diff --git a/internal/gui/tests/omarchy.test.cjs b/internal/gui/tests/omarchy.test.cjs index 6ab831a0..0fedd27a 100644 --- a/internal/gui/tests/omarchy.test.cjs +++ b/internal/gui/tests/omarchy.test.cjs @@ -126,6 +126,15 @@ for (const engine of (process.env.BROWSER ? [process.env.BROWSER] : ["chromium", const segs = page.locator("#barIconSegs .opt"); assert.deepEqual(await segs.allTextContents(), [off, on]); assert.equal(await segs.nth(0).evaluate((b) => b.classList.contains("on")), true, "off to start"); + // Font preferences add rows above the bar control. Bring it into + // this short window with a reader's wheel before testing a click. + await page.locator("#view-settings").hover(); + await page.mouse.wheel(0, 260); + await page.waitForFunction(() => { + const r = document.querySelector("#barIconSegs").getBoundingClientRect(); + const v = document.querySelector("#view-settings").getBoundingClientRect(); + return r.top >= v.top && r.bottom <= v.bottom; + }); const before = await view(page); await segs.nth(1).click(); await page.locator("#barIconSegs .opt.on", { hasText: on }).waitFor(); diff --git a/internal/settings/fonts_test.go b/internal/settings/fonts_test.go new file mode 100644 index 00000000..46ae1089 --- /dev/null +++ b/internal/settings/fonts_test.go @@ -0,0 +1,45 @@ +package settings + +import ( + "reflect" + "testing" + + "github.com/yetone/magpie/internal/fonts" + "github.com/yetone/magpie/internal/testenv" +) + +func TestFontChoicesPersistAndStayLocal(t *testing.T) { + testenv.SetHome(t, t.TempDir()) + ui := &fonts.Face{Family: "HarmonyOS Sans SC", Name: "Medium", Weight: 500, Style: "normal", Stretch: 100} + code := &fonts.Face{Family: "Consolas", Name: "Italic", Weight: 400, Style: "italic", Stretch: 100} + if err := Save(Settings{UIFont: ui, CodeFont: code}); err != nil { + t.Fatal(err) + } + got := Load() + if !reflect.DeepEqual(got.UIFont, ui) || !reflect.DeepEqual(got.CodeFont, code) { + t.Fatalf("font choices lost: %#v %#v", got.UIFont, got.CodeFont) + } + other := Settings{Theme: "dark"} + other.KeepOwn(got) + if !reflect.DeepEqual(other.UIFont, ui) || !reflect.DeepEqual(other.CodeFont, code) { + t.Fatal("sync replaced this computer's fonts") + } + other.KeepOwn(Settings{}) + if other.UIFont != nil || other.CodeFont != nil { + t.Fatal("sync imported fonts into a computer using defaults") + } + bad := *ui + bad.Weight = 1001 + if Save(Settings{UIFont: &bad}) == nil { + t.Fatal("saved an invalid font weight") + } + if !reflect.DeepEqual(Load().UIFont, ui) { + t.Fatal("a rejected choice overwrote the saved font") + } + if err := Save(Settings{}); err != nil { + t.Fatal(err) + } + if Load().UIFont != nil || Load().CodeFont != nil { + t.Fatal("default fonts did not persist") + } +} diff --git a/internal/settings/settings.go b/internal/settings/settings.go index 41cfc49b..c292da63 100644 --- a/internal/settings/settings.go +++ b/internal/settings/settings.go @@ -27,6 +27,7 @@ import ( "github.com/yetone/magpie/internal/catalog" "github.com/yetone/magpie/internal/edit" "github.com/yetone/magpie/internal/filememo" + "github.com/yetone/magpie/internal/fonts" "github.com/yetone/magpie/internal/redact" "github.com/yetone/magpie/internal/steady" ) @@ -305,6 +306,10 @@ type Settings struct { // drawn, in percent (one of TextSizes): the webviews' own zoom, as a // browser's, so the text and everything around it grow together. TextSize int `json:"textSize,omitempty"` + // UIFont and CodeFont are this computer's installed faces. Nil keeps + // the platform's stack (or Omarchy's). Sync never replaces them. + UIFont *fonts.Face `json:"uiFont,omitempty"` + CodeFont *fonts.Face `json:"codeFont,omitempty"` // How the agents are listed, by agent id. AgentOrder comes first, as // ordered; an agent it doesn't name (one installed since) follows in // magpie's own order. A hidden agent is folded away at the bottom of the @@ -696,6 +701,7 @@ func (s Settings) Compact() int { // icon (yoooo on Discord: usage turned off on a Mac came back from a // Windows box that shows it). func (s *Settings) KeepOwn(cur Settings) { + s.UIFont, s.CodeFont = cur.UIFont, cur.CodeFont s.Window, s.Proxy, s.Port, s.Dock, s.DockWindow, s.Lightweight = cur.Window, cur.Proxy, cur.Port, cur.Dock, cur.DockWindow, cur.Lightweight s.WindowMaximised, s.KeepAwake, s.KeepAwakeDisplay = cur.WindowMaximised, cur.KeepAwake, cur.KeepAwakeDisplay s.TrayUsages, s.TrayUsage, s.TrayUsageEvery, s.TrayNoLogos, s.TrayNoBird = cur.TrayUsages, cur.TrayUsage, cur.TrayUsageEvery, cur.TrayNoLogos, cur.TrayNoBird @@ -841,6 +847,11 @@ func Save(s Settings) error { if s.SessionTerminal != "" && s.SessionTerminal != "system" && !validTerminalBundleID.MatchString(s.SessionTerminal) { return fmt.Errorf("session terminal must be an app bundle id or system, not %q", s.SessionTerminal) } + for _, choice := range []*fonts.Face{s.UIFont, s.CodeFont} { + if err := fonts.Validate(choice); err != nil { + return err + } + } if !slices.Contains(Currencies, s.Currency) { return fmt.Errorf("currency must be one of %v, not %q", Currencies, s.Currency) }