From 3be277e76358379e940fdb29ca3ec701099d31f5 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Tue, 8 Apr 2025 11:49:40 +0200 Subject: [PATCH 1/3] more fonts --- .../TestProvisioners_Golden/list.golden | 2 +- cli/testdata/coder_provisioner_list.golden | 2 +- coderd/apidoc/docs.go | 8 +++- coderd/apidoc/swagger.json | 12 ++++- codersdk/users.go | 12 +++-- docs/reference/api/schemas.md | 12 ++--- site/package.json | 2 + site/pnpm-lock.yaml | 16 +++++++ site/src/api/typesGenerated.ts | 9 +++- .../AppearancePage/AppearanceForm.tsx | 8 +++- .../AppearancePage/AppearancePage.test.tsx | 44 ++++++++++++++++++- site/src/theme/constants.ts | 12 ++++- site/src/theme/globalFonts.ts | 6 ++- 13 files changed, 123 insertions(+), 22 deletions(-) diff --git a/cli/testdata/TestProvisioners_Golden/list.golden b/cli/testdata/TestProvisioners_Golden/list.golden index 3f50f90746744..35844d8b9c50e 100644 --- a/cli/testdata/TestProvisioners_Golden/list.golden +++ b/cli/testdata/TestProvisioners_Golden/list.golden @@ -1,4 +1,4 @@ -ID CREATED AT LAST SEEN AT NAME VERSION TAGS KEY NAME STATUS CURRENT JOB ID CURRENT JOB STATUS PREVIOUS JOB ID PREVIOUS JOB STATUS ORGANIZATION +ID CREATED AT LAST SEEN AT NAME VERSION TAGS KEY NAME STATUS CURRENT JOB ID CURRENT JOB STATUS PREVIOUS JOB ID PREVIOUS JOB STATUS ORGANIZATION 00000000-0000-0000-aaaa-000000000000 ====[timestamp]===== ====[timestamp]===== default-provisioner v0.0.0-devel map[owner: scope:organization] built-in idle 00000000-0000-0000-bbbb-000000000001 succeeded Coder 00000000-0000-0000-aaaa-000000000001 ====[timestamp]===== ====[timestamp]===== provisioner-1 v0.0.0 map[foo:bar owner: scope:organization] built-in busy 00000000-0000-0000-bbbb-000000000002 running Coder 00000000-0000-0000-aaaa-000000000002 ====[timestamp]===== ====[timestamp]===== provisioner-2 v0.0.0 map[owner: scope:organization] built-in offline 00000000-0000-0000-bbbb-000000000003 succeeded Coder diff --git a/cli/testdata/coder_provisioner_list.golden b/cli/testdata/coder_provisioner_list.golden index 64941eebf5b89..e34db5605fd81 100644 --- a/cli/testdata/coder_provisioner_list.golden +++ b/cli/testdata/coder_provisioner_list.golden @@ -1,2 +1,2 @@ -CREATED AT LAST SEEN AT KEY NAME NAME VERSION STATUS TAGS +CREATED AT LAST SEEN AT KEY NAME NAME VERSION STATUS TAGS ====[timestamp]===== ====[timestamp]===== built-in test v0.0.0-devel idle map[owner: scope:organization] diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index d4dfb80cd13b5..a4ce06d7cb2c3 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -15605,12 +15605,16 @@ const docTemplate = `{ "enum": [ "", "ibm-plex-mono", - "fira-code" + "fira-code", + "source-code-pro", + "jetbrains-mono" ], "x-enum-varnames": [ "TerminalFontUnknown", "TerminalFontIBMPlexMono", - "TerminalFontFiraCode" + "TerminalFontFiraCode", + "TerminalFontSourceCodePro", + "TerminalFontJetBrainsMono" ] }, "codersdk.TimingStage": { diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index 7e28bf764d9e7..37dbcb4b3ec02 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -14187,11 +14187,19 @@ }, "codersdk.TerminalFontName": { "type": "string", - "enum": ["", "ibm-plex-mono", "fira-code"], + "enum": [ + "", + "ibm-plex-mono", + "fira-code", + "source-code-pro", + "jetbrains-mono" + ], "x-enum-varnames": [ "TerminalFontUnknown", "TerminalFontIBMPlexMono", - "TerminalFontFiraCode" + "TerminalFontFiraCode", + "TerminalFontSourceCodePro", + "TerminalFontJetBrainsMono" ] }, "codersdk.TimingStage": { diff --git a/codersdk/users.go b/codersdk/users.go index bdc9b521367f0..9c46be1ded3f8 100644 --- a/codersdk/users.go +++ b/codersdk/users.go @@ -192,12 +192,16 @@ type ValidateUserPasswordResponse struct { // TerminalFontName is the name of supported terminal font type TerminalFontName string -var TerminalFontNames = []TerminalFontName{TerminalFontUnknown, TerminalFontIBMPlexMono, TerminalFontFiraCode} +var TerminalFontNames = []TerminalFontName{TerminalFontUnknown, TerminalFontIBMPlexMono, TerminalFontFiraCode, + TerminalFontSourceCodePro, TerminalFontJetBrainsMono, +} const ( - TerminalFontUnknown TerminalFontName = "" - TerminalFontIBMPlexMono TerminalFontName = "ibm-plex-mono" - TerminalFontFiraCode TerminalFontName = "fira-code" + TerminalFontUnknown TerminalFontName = "" + TerminalFontIBMPlexMono TerminalFontName = "ibm-plex-mono" + TerminalFontFiraCode TerminalFontName = "fira-code" + TerminalFontSourceCodePro TerminalFontName = "source-code-pro" + TerminalFontJetBrainsMono TerminalFontName = "jetbrains-mono" ) type UserAppearanceSettings struct { diff --git a/docs/reference/api/schemas.md b/docs/reference/api/schemas.md index 35f9f61f7c640..be809670a6d84 100644 --- a/docs/reference/api/schemas.md +++ b/docs/reference/api/schemas.md @@ -6723,11 +6723,13 @@ Restarts will only happen on weekdays in this list on weeks which line up with W #### Enumerated Values -| Value | -|-----------------| -| `` | -| `ibm-plex-mono` | -| `fira-code` | +| Value | +|-------------------| +| `` | +| `ibm-plex-mono` | +| `fira-code` | +| `source-code-pro` | +| `jetbrains-mono` | ## codersdk.TimingStage diff --git a/site/package.json b/site/package.json index 2b5104ddcb283..6f164005ab49e 100644 --- a/site/package.json +++ b/site/package.json @@ -44,6 +44,8 @@ "@fontsource-variable/inter": "5.1.1", "@fontsource/fira-code": "5.2.5", "@fontsource/ibm-plex-mono": "5.1.1", + "@fontsource/jetbrains-mono": "5.2.5", + "@fontsource/source-code-pro": "5.2.5", "@monaco-editor/react": "4.6.0", "@mui/icons-material": "5.16.14", "@mui/lab": "5.0.0-alpha.175", diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml index 7a6dac0d026b6..92382a11b2ad7 100644 --- a/site/pnpm-lock.yaml +++ b/site/pnpm-lock.yaml @@ -46,6 +46,12 @@ importers: '@fontsource/ibm-plex-mono': specifier: 5.1.1 version: 5.1.1 + '@fontsource/jetbrains-mono': + specifier: 5.2.5 + version: 5.2.5 + '@fontsource/source-code-pro': + specifier: 5.2.5 + version: 5.2.5 '@monaco-editor/react': specifier: 4.6.0 version: 4.6.0(monaco-editor@0.52.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1049,6 +1055,12 @@ packages: '@fontsource/ibm-plex-mono@5.1.1': resolution: {integrity: sha512-1aayqPe/ZkD3MlvqpmOHecfA3f2B8g+fAEkgvcCd3lkPP0pS1T0xG5Zmn2EsJQqr1JURtugPUH+5NqvKyfFZMQ==, tarball: https://registry.npmjs.org/@fontsource/ibm-plex-mono/-/ibm-plex-mono-5.1.1.tgz} + '@fontsource/jetbrains-mono@5.2.5': + resolution: {integrity: sha512-TPZ9b/uq38RMdrlZZkl0RwN8Ju9JxuqMETrw76pUQFbGtE1QbwQaNsLlnUrACNNBNbd0NZRXiJJSkC8ajPgbew==, tarball: https://registry.npmjs.org/@fontsource/jetbrains-mono/-/jetbrains-mono-5.2.5.tgz} + + '@fontsource/source-code-pro@5.2.5': + resolution: {integrity: sha512-1k7b9IdhVSdK/rJ8CkqqGFZ01C3NaXNynPZqKaTetODog/GPJiMYd6E8z+LTwSUTIX8dm2QZORDC+Uh91cjXSg==, tarball: https://registry.npmjs.org/@fontsource/source-code-pro/-/source-code-pro-5.2.5.tgz} + '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==, tarball: https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz} engines: {node: '>=10.10.0'} @@ -7022,6 +7034,10 @@ snapshots: '@fontsource/ibm-plex-mono@5.1.1': {} + '@fontsource/jetbrains-mono@5.2.5': {} + + '@fontsource/source-code-pro@5.2.5': {} + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 1197d6b6e109e..0fd31361e69a3 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -2658,11 +2658,18 @@ export interface TemplateVersionsByTemplateRequest extends Pagination { } // From codersdk/users.go -export type TerminalFontName = "fira-code" | "ibm-plex-mono" | ""; +export type TerminalFontName = + | "fira-code" + | "ibm-plex-mono" + | "jetbrains-mono" + | "source-code-pro" + | ""; export const TerminalFontNames: TerminalFontName[] = [ "fira-code", "ibm-plex-mono", + "jetbrains-mono", + "source-code-pro", "", ]; diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx index 9ecee2dfac83a..10b549d23c792 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx @@ -16,7 +16,11 @@ import { Stack } from "components/Stack/Stack"; import { ThemeOverride } from "contexts/ThemeProvider"; import type { FC } from "react"; import themes, { DEFAULT_THEME, type Theme } from "theme"; -import { DEFAULT_TERMINAL_FONT, terminalFontLabels } from "theme/constants"; +import { + DEFAULT_TERMINAL_FONT, + terminalFontLabels, + terminalFonts, +} from "theme/constants"; import { Section } from "../Section"; export interface AppearanceFormProps { @@ -115,7 +119,7 @@ export const AppearanceForm: FC = ({ value={name} control={} label={ -
+
{terminalFontLabels[name]}
} diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx index 59dc62980b9f0..6f78fec6b58a0 100644 --- a/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx +++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx @@ -51,8 +51,8 @@ describe("appearance page", () => { theme_preference: "dark", }); - const ibmPlex = await screen.findByText("Fira Code"); - await userEvent.click(ibmPlex); + const firaCode = await screen.findByText("Fira Code"); + await userEvent.click(firaCode); // Check if the API was called correctly expect(API.updateAppearanceSettings).toHaveBeenCalledTimes(1); @@ -61,4 +61,44 @@ describe("appearance page", () => { theme_preference: "dark", }); }); + + it("changes font to fira code, then back to web terminal font", async () => { + renderWithAuth(); + + // given + jest + .spyOn(API, "updateAppearanceSettings") + .mockResolvedValueOnce({ + ...MockUser, + terminal_font: "fira-code", + theme_preference: "dark", + }) + .mockResolvedValueOnce({ + ...MockUser, + terminal_font: "ibm-plex-mono", + theme_preference: "dark", + }); + + // when + const firaCode = await screen.findByText("Fira Code"); + await userEvent.click(firaCode); + + // then + expect(API.updateAppearanceSettings).toHaveBeenCalledTimes(1); + expect(API.updateAppearanceSettings).toHaveBeenCalledWith({ + terminal_font: "fira-code", + theme_preference: "dark", + }); + + // when + const ibmPlex = await screen.findByText("Web Terminal Font"); + await userEvent.click(ibmPlex); + + // then + expect(API.updateAppearanceSettings).toHaveBeenCalledTimes(2); + expect(API.updateAppearanceSettings).toHaveBeenNthCalledWith(2, { + terminal_font: "ibm-plex-mono", + theme_preference: "dark", + }); + }); }); diff --git a/site/src/theme/constants.ts b/site/src/theme/constants.ts index 162e67310749c..8a3c6375dce3a 100644 --- a/site/src/theme/constants.ts +++ b/site/src/theme/constants.ts @@ -7,13 +7,23 @@ export const BODY_FONT_FAMILY = `"Inter Variable", system-ui, sans-serif`; export const terminalFonts: Record = { "fira-code": MONOSPACE_FONT_FAMILY.replace("IBM Plex Mono", "Fira Code"), + "jetbrains-mono": MONOSPACE_FONT_FAMILY.replace( + "IBM Plex Mono", + "JetBrains Mono", + ), + "source-code-pro": MONOSPACE_FONT_FAMILY.replace( + "IBM Plex Mono", + "Source Code Pro", + ), "ibm-plex-mono": MONOSPACE_FONT_FAMILY, "": MONOSPACE_FONT_FAMILY, }; export const terminalFontLabels: Record = { "fira-code": "Fira Code", - "ibm-plex-mono": "IBM Plex Mono", + "jetbrains-mono": "JetBrains Mono", + "source-code-pro": "Source Code Pro", + "ibm-plex-mono": "Web Terminal Font", "": "", // needed for enum completeness, otherwise fails the build }; export const DEFAULT_TERMINAL_FONT = "ibm-plex-mono"; diff --git a/site/src/theme/globalFonts.ts b/site/src/theme/globalFonts.ts index db8089f9db266..c30bccca63d53 100644 --- a/site/src/theme/globalFonts.ts +++ b/site/src/theme/globalFonts.ts @@ -3,6 +3,10 @@ import "@fontsource/ibm-plex-mono/400.css"; import "@fontsource/ibm-plex-mono/600.css"; // Main body copy font import "@fontsource-variable/inter"; -// Alternative font for Terminal +// Alternative fonts for Terminal import "@fontsource/fira-code/400.css"; import "@fontsource/fira-code/600.css"; +import "@fontsource/source-code-pro/400.css"; +import "@fontsource/source-code-pro/600.css"; +import "@fontsource/jetbrains-mono/400.css"; +import "@fontsource/jetbrains-mono/600.css"; From e13a76cbdef5ba9333a90aadb613bc97199910c2 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Tue, 8 Apr 2025 09:53:43 +0000 Subject: [PATCH 2/3] fix --- cli/testdata/TestProvisioners_Golden/list.golden | 2 +- cli/testdata/coder_provisioner_list.golden | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/testdata/TestProvisioners_Golden/list.golden b/cli/testdata/TestProvisioners_Golden/list.golden index 35844d8b9c50e..3f50f90746744 100644 --- a/cli/testdata/TestProvisioners_Golden/list.golden +++ b/cli/testdata/TestProvisioners_Golden/list.golden @@ -1,4 +1,4 @@ -ID CREATED AT LAST SEEN AT NAME VERSION TAGS KEY NAME STATUS CURRENT JOB ID CURRENT JOB STATUS PREVIOUS JOB ID PREVIOUS JOB STATUS ORGANIZATION +ID CREATED AT LAST SEEN AT NAME VERSION TAGS KEY NAME STATUS CURRENT JOB ID CURRENT JOB STATUS PREVIOUS JOB ID PREVIOUS JOB STATUS ORGANIZATION 00000000-0000-0000-aaaa-000000000000 ====[timestamp]===== ====[timestamp]===== default-provisioner v0.0.0-devel map[owner: scope:organization] built-in idle 00000000-0000-0000-bbbb-000000000001 succeeded Coder 00000000-0000-0000-aaaa-000000000001 ====[timestamp]===== ====[timestamp]===== provisioner-1 v0.0.0 map[foo:bar owner: scope:organization] built-in busy 00000000-0000-0000-bbbb-000000000002 running Coder 00000000-0000-0000-aaaa-000000000002 ====[timestamp]===== ====[timestamp]===== provisioner-2 v0.0.0 map[owner: scope:organization] built-in offline 00000000-0000-0000-bbbb-000000000003 succeeded Coder diff --git a/cli/testdata/coder_provisioner_list.golden b/cli/testdata/coder_provisioner_list.golden index e34db5605fd81..64941eebf5b89 100644 --- a/cli/testdata/coder_provisioner_list.golden +++ b/cli/testdata/coder_provisioner_list.golden @@ -1,2 +1,2 @@ -CREATED AT LAST SEEN AT KEY NAME NAME VERSION STATUS TAGS +CREATED AT LAST SEEN AT KEY NAME NAME VERSION STATUS TAGS ====[timestamp]===== ====[timestamp]===== built-in test v0.0.0-devel idle map[owner: scope:organization] From d6f431228a2efad8294fa2e3ec677e50df3556d1 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Tue, 8 Apr 2025 12:09:53 +0200 Subject: [PATCH 3/3] make fmt --- codersdk/users.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/codersdk/users.go b/codersdk/users.go index 9c46be1ded3f8..ab51775e5494d 100644 --- a/codersdk/users.go +++ b/codersdk/users.go @@ -192,7 +192,8 @@ type ValidateUserPasswordResponse struct { // TerminalFontName is the name of supported terminal font type TerminalFontName string -var TerminalFontNames = []TerminalFontName{TerminalFontUnknown, TerminalFontIBMPlexMono, TerminalFontFiraCode, +var TerminalFontNames = []TerminalFontName{ + TerminalFontUnknown, TerminalFontIBMPlexMono, TerminalFontFiraCode, TerminalFontSourceCodePro, TerminalFontJetBrainsMono, } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy