From ca806c12f88c2d504408958fc83daf94904898a8 Mon Sep 17 00:00:00 2001 From: Tridhatri Vallamkondu Date: Fri, 19 Jun 2026 17:07:31 -0400 Subject: [PATCH 1/3] feat(theme): add Graphite theme preset A neutral cool-grey theme joins the board picker, with light and dark palettes derived from one Palette each like the other presets. Co-Authored-By: Claude Opus 4.7 --- .changeset/graphite-theme.md | 5 +++++ server/themes.ts | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 .changeset/graphite-theme.md diff --git a/.changeset/graphite-theme.md b/.changeset/graphite-theme.md new file mode 100644 index 0000000..35b275d --- /dev/null +++ b/.changeset/graphite-theme.md @@ -0,0 +1,5 @@ +--- +"sideshow": minor +--- + +Add a Graphite theme — a neutral cool-grey preset — to the board theme picker. diff --git a/server/themes.ts b/server/themes.ts index ef5913a..f579ba1 100644 --- a/server/themes.ts +++ b/server/themes.ts @@ -369,6 +369,41 @@ export const THEMES: Theme[] = [ danger: { bg: "rgba(230, 126, 128, 0.16)", text: "#e67e80", border: "#e67e80" }, }, }, + { + id: "graphite", + label: "Graphite", + shiki: { light: "github-light", dark: "github-dark-dimmed" }, + light: { + bg: "#f4f4f5", + panel: "#e8e8ea", + surface: "#ffffff", + text: "#1d1f24", + muted: "#5b5f66", + faint: "#8b8f97", + border: "#d8dadd", + border2: "#bfc2c7", + hover: "#e8e8ea", + info: { bg: "#e6ebf2", text: "#3f6896", border: "#85a3c9" }, + success: { bg: "#e6efe8", text: "#3f7d52", border: "#86b395" }, + warning: { bg: "#f3ecdc", text: "#8a6d33", border: "#cbb077" }, + danger: { bg: "#f4e3e2", text: "#a6443f", border: "#cf8f8d" }, + }, + dark: { + bg: "#1b1c1e", + panel: "#232427", + surface: "#2a2c30", + text: "#e3e4e8", + muted: "#a0a3ab", + faint: "#71747c", + border: "#36383d", + border2: "#45474d", + hover: "#2f3135", + info: { bg: "rgba(127, 166, 214, 0.16)", text: "#7fa6d6", border: "#7fa6d6" }, + success: { bg: "rgba(126, 186, 148, 0.16)", text: "#7eba94", border: "#7eba94" }, + warning: { bg: "rgba(212, 178, 110, 0.16)", text: "#d4b26e", border: "#d4b26e" }, + danger: { bg: "rgba(214, 132, 130, 0.16)", text: "#d68482", border: "#d68482" }, + }, + }, ]; export const DEFAULT_THEME_ID = "github"; From 12d9508fffd06e77c33056ef46cc75d306df2d5d Mon Sep 17 00:00:00 2001 From: Tridhatri Vallamkondu Date: Fri, 19 Jun 2026 17:12:37 -0400 Subject: [PATCH 2/3] feat(theme): restore the original palette as the Classic theme Replace the placeholder Graphite preset with the exact pre-theme-picker palette (warm paper / ink), reconstructed from styles.css + surfacePage tokens at commit 746b7e0^. shiki github-light/github-dark, matching the original markdown/diff highlighting. Co-Authored-By: Claude Opus 4.7 --- .changeset/classic-theme.md | 6 ++++ .changeset/graphite-theme.md | 5 ---- server/themes.ts | 58 +++++++++++++++++++----------------- 3 files changed, 36 insertions(+), 33 deletions(-) create mode 100644 .changeset/classic-theme.md delete mode 100644 .changeset/graphite-theme.md diff --git a/.changeset/classic-theme.md b/.changeset/classic-theme.md new file mode 100644 index 0000000..5f398e8 --- /dev/null +++ b/.changeset/classic-theme.md @@ -0,0 +1,6 @@ +--- +"sideshow": minor +--- + +Add a Classic theme to the board theme picker — the original sideshow palette +(warm paper / ink), restored exactly from the pre-theme-picker styles. diff --git a/.changeset/graphite-theme.md b/.changeset/graphite-theme.md deleted file mode 100644 index 35b275d..0000000 --- a/.changeset/graphite-theme.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"sideshow": minor ---- - -Add a Graphite theme — a neutral cool-grey preset — to the board theme picker. diff --git a/server/themes.ts b/server/themes.ts index f579ba1..bcade52 100644 --- a/server/themes.ts +++ b/server/themes.ts @@ -370,38 +370,40 @@ export const THEMES: Theme[] = [ }, }, { - id: "graphite", - label: "Graphite", - shiki: { light: "github-light", dark: "github-dark-dimmed" }, + // The original sideshow palette (warm paper / ink), restored from the + // pre-theme-picker styles.css + surfacePage tokens (commit 746b7e0^). + id: "classic", + label: "Classic", + shiki: { light: "github-light", dark: "github-dark" }, light: { - bg: "#f4f4f5", - panel: "#e8e8ea", + bg: "#faf9f5", + panel: "#f3f2ec", surface: "#ffffff", - text: "#1d1f24", - muted: "#5b5f66", - faint: "#8b8f97", - border: "#d8dadd", - border2: "#bfc2c7", - hover: "#e8e8ea", - info: { bg: "#e6ebf2", text: "#3f6896", border: "#85a3c9" }, - success: { bg: "#e6efe8", text: "#3f7d52", border: "#86b395" }, - warning: { bg: "#f3ecdc", text: "#8a6d33", border: "#cbb077" }, - danger: { bg: "#f4e3e2", text: "#a6443f", border: "#cf8f8d" }, + text: "#1a1915", + muted: "#5f5e56", + faint: "#8e8d83", + border: "rgba(20, 20, 10, 0.12)", + border2: "rgba(20, 20, 10, 0.25)", + hover: "rgba(20, 20, 10, 0.05)", + info: { bg: "#e6f1fb", text: "#185fa5", border: "#378add" }, + success: { bg: "#eaf3de", text: "#3b6d11", border: "#97c459" }, + warning: { bg: "#faeeda", text: "#854f0b", border: "#ef9f27" }, + danger: { bg: "#fcebeb", text: "#a32d2d", border: "#e24b4a" }, }, dark: { - bg: "#1b1c1e", - panel: "#232427", - surface: "#2a2c30", - text: "#e3e4e8", - muted: "#a0a3ab", - faint: "#71747c", - border: "#36383d", - border2: "#45474d", - hover: "#2f3135", - info: { bg: "rgba(127, 166, 214, 0.16)", text: "#7fa6d6", border: "#7fa6d6" }, - success: { bg: "rgba(126, 186, 148, 0.16)", text: "#7eba94", border: "#7eba94" }, - warning: { bg: "rgba(212, 178, 110, 0.16)", text: "#d4b26e", border: "#d4b26e" }, - danger: { bg: "rgba(214, 132, 130, 0.16)", text: "#d68482", border: "#d68482" }, + bg: "#1f1e1b", + panel: "#1a1917", + surface: "#2a2925", + text: "#eceadf", + muted: "#b3b1a4", + faint: "#8a887c", + border: "rgba(255, 255, 250, 0.12)", + border2: "rgba(255, 255, 250, 0.25)", + hover: "rgba(255, 255, 250, 0.06)", + info: { bg: "rgba(55, 138, 221, 0.18)", text: "#85b7eb", border: "#378add" }, + success: { bg: "rgba(151, 196, 89, 0.18)", text: "#c0dd97", border: "#97c459" }, + warning: { bg: "rgba(239, 159, 39, 0.18)", text: "#fac775", border: "#ef9f27" }, + danger: { bg: "rgba(226, 75, 74, 0.18)", text: "#f09595", border: "#e24b4a" }, }, }, ]; From 6b71fbd8c62da3ba48a45fa8a37e7d90e04b60c3 Mon Sep 17 00:00:00 2001 From: Tridhatri Vallamkondu Date: Fri, 19 Jun 2026 17:15:33 -0400 Subject: [PATCH 3/3] feat(theme): default fresh boards to the Classic theme First-time loads (no stored setting) now resolve to Classic; an explicit pick is still persisted per board and takes precedence. themeById falls back to the configured default instead of the first registry entry. Co-Authored-By: Claude Opus 4.7 --- server/themes.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/themes.ts b/server/themes.ts index bcade52..e9a5303 100644 --- a/server/themes.ts +++ b/server/themes.ts @@ -408,10 +408,12 @@ export const THEMES: Theme[] = [ }, ]; -export const DEFAULT_THEME_ID = "github"; +export const DEFAULT_THEME_ID = "classic"; export function themeById(id: string | null | undefined): Theme { - return THEMES.find((t) => t.id === id) ?? THEMES[0]; + return ( + THEMES.find((t) => t.id === id) ?? THEMES.find((t) => t.id === DEFAULT_THEME_ID) ?? THEMES[0] + ); } // Compact descriptor for the picker (avoids shipping full palettes to list).