Skip to main content

max / makenotwork

themes: titular default skins + resolve neobrute name collision Each app's default skin is a titular theme named after the app; the rest are universal and cross-available. - neobrute.toml (the lavender "Original GoingsOn" look) -> goingson.toml, name "GoingsOn" — GoingsOn's titular skin. - mnw-default.toml -> makenotwork.toml; DEFAULT_THEME_ID = "makenotwork". Still the exact current platform CSS, lossless. - New audiofiles.toml: muted sage-and-mocha light theme (audiofiles' titular skin), cross-available here. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-06-13 00:26 UTC
Commit: 80570691a6afbfd6fc88ec3788f7b330a2cd2deb
Parent: e2a8381
7 files changed, +96 insertions, -65 deletions
@@ -25,7 +25,7 @@ static THEMES_DIR: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/../shared/themes"
25 25
26 26 /// The platform default theme id — the stock parchment look. Reproduces the
27 27 /// historical `:root` exactly, so an unset (`None`) choice renders unchanged.
28 - pub const DEFAULT_THEME_ID: &str = "mnw-default";
28 + pub const DEFAULT_THEME_ID: &str = "makenotwork";
29 29
30 30 /// A built-in theme: its metadata (for the picker) and its pre-rendered
31 31 /// primitive-layer CSS (for `<head>` injection).
@@ -143,7 +143,7 @@ mod tests {
143 143 fn default_theme_is_bundled() {
144 144 assert!(
145 145 is_valid_theme(DEFAULT_THEME_ID),
146 - "mnw-default.toml must be bundled"
146 + "makenotwork.toml must be bundled"
147 147 );
148 148 }
149 149
@@ -142,7 +142,7 @@
142 142 3 fg, 6 accent, 1 border. These are the ONLY literal source for
143 143 themeable color. A built-in or creator theme swaps this block; the
144 144 semantic layer below derives from it, so re-theming cascades for free.
145 - Values reproduce shared/themes/mnw-default.toml exactly. Names match
145 + Values reproduce shared/themes/makenotwork.toml exactly. Names match
146 146 GoingsOn + audiofiles, so one theme ports across every product.
147 147 -------------------------------------------------------------------- */
148 148 --bg-primary: #ede8e1;
@@ -0,0 +1,30 @@
1 + # audiofiles — the app's titular default skin. Cross-available as a universal
2 + # theme. Built from a 5-tone earthy palette: Ash Grey #CCDAD1 / #9CAEA9,
3 + # Grey Olive #788585, Dim Grey #6F6866, Deep Mocha #38302E. Accents are
4 + # desaturated naturals tuned to harmonize with the sage-to-mocha range.
5 +
6 + [meta]
7 + name = "audiofiles"
8 + variant = "light"
9 +
10 + [background]
11 + primary = "#CCDAD1" # Ash Grey — main canvas
12 + secondary = "#B4C5BB" # mid sage — headers / secondary panels
13 + tertiary = "#9CAEA9" # Ash Grey deep — selected / inset
14 + surface = "#DAE3DC" # lighter sage — raised cards/rows
15 +
16 + [foreground]
17 + primary = "#38302E" # Deep Mocha — body text
18 + secondary = "#6F6866" # Dim Grey
19 + muted = "#788585" # Grey Olive — hints / disabled
20 +
21 + [accent]
22 + red = "#B05F4E" # muted terracotta
23 + green = "#6F8A5C" # muted olive
24 + blue = "#5E7C8E" # muted slate
25 + yellow = "#C19A53" # muted ochre
26 + purple = "#836A80" # muted mauve
27 + cyan = "#5F8C82" # muted teal
28 +
29 + [border]
30 + default = "#9CAEA9"
@@ -0,0 +1,28 @@
1 + # GoingsOn — the app's titular default skin (formerly "neobrute"). Also
2 + # available cross-app as a universal theme.
3 +
4 + [meta]
5 + name = "GoingsOn"
6 + variant = "light"
7 +
8 + [background]
9 + primary = "#E0E4FA"
10 + secondary = "#CDD3F0"
11 + tertiary = "#BAC2E6"
12 + surface = "#FFFFFF"
13 +
14 + [foreground]
15 + primary = "#000000"
16 + secondary = "#2D2D2D"
17 + muted = "#6B6B6B"
18 +
19 + [accent]
20 + red = "#DC3545"
21 + green = "#5CB85C"
22 + blue = "#6196FF"
23 + yellow = "#F7D154"
24 + purple = "#7B68EE"
25 + cyan = "#17A2B8"
26 +
27 + [border]
28 + default = "#000000"
@@ -0,0 +1,35 @@
1 + # makenot.work — the platform's titular default skin (the stock parchment
2 + # look), cross-available as a universal theme. Authored to be visually lossless
3 + # against the hand-tuned :root in server/static/style.css: each value below is
4 + # the exact hex that MNW's semantic layer derives from. Picking a different
5 + # built-in theme swaps these primitives; this file reproduces the default.
6 + #
7 + # MNW tokens that diverge from a generic accent (brown --warning, health-*,
8 + # diff-*, --stripe, input/overlay tints) stay app-side literals in style.css and
9 + # are intentionally NOT represented here — the crate is a pure palette.
10 +
11 + [meta]
12 + name = "makenot.work"
13 + variant = "light"
14 +
15 + [background]
16 + primary = "#ede8e1" # --background: base page parchment
17 + secondary = "#f4f0eb" # --light-background / --secondary-bg: raised light sections
18 + tertiary = "#ddd7c5" # --surface-muted: darker inset panel
19 + surface = "#f5f0eb" # --surface-raised: card surface
20 +
21 + [foreground]
22 + primary = "#3d3530" # --detail / --text: body and headings
23 + secondary = "#5c554f" # mid-tone between primary and muted (portability slot)
24 + muted = "#8a8480" # --text-muted: secondary/disabled copy
25 +
26 + [accent]
27 + red = "#c0392b" # --danger
28 + green = "#27ae60" # --success
29 + blue = "#6c5ce7" # --highlight: the brand accent / primary action
30 + yellow = "#f59e0b" # amber for warning emphasis (portable; brown --warning stays app-side)
31 + purple = "#a29bfe" # brand-adjacent indigo light (portability slot)
32 + cyan = "#17a2b8" # teal (portability slot)
33 +
34 + [border]
35 + default = "#d0cbb8" # --border / --surface-border
@@ -1,35 +0,0 @@
1 - # makenot.work default — the platform's stock parchment look as a theme-common
2 - # palette. Authored to be visually lossless against the hand-tuned :root in
3 - # server/static/style.css: each value below is the exact hex that MNW's semantic
4 - # layer derives from. Picking a different built-in theme swaps these primitives;
5 - # this file reproduces the default.
6 - #
7 - # MNW tokens that diverge from a generic accent (brown --warning, health-*,
8 - # diff-*, --stripe, input/overlay tints) stay app-side literals in style.css and
9 - # are intentionally NOT represented here — the crate is a pure palette.
10 -
11 - [meta]
12 - name = "makenot.work"
13 - variant = "light"
14 -
15 - [background]
16 - primary = "#ede8e1" # --background: base page parchment
17 - secondary = "#f4f0eb" # --light-background / --secondary-bg: raised light sections
18 - tertiary = "#ddd7c5" # --surface-muted: darker inset panel
19 - surface = "#f5f0eb" # --surface-raised: card surface
20 -
21 - [foreground]
22 - primary = "#3d3530" # --detail / --text: body and headings
23 - secondary = "#5c554f" # mid-tone between primary and muted (portability slot)
24 - muted = "#8a8480" # --text-muted: secondary/disabled copy
25 -
26 - [accent]
27 - red = "#c0392b" # --danger
28 - green = "#27ae60" # --success
29 - blue = "#6c5ce7" # --highlight: the brand accent / primary action
30 - yellow = "#f59e0b" # amber for warning emphasis (portable; brown --warning stays app-side)
31 - purple = "#a29bfe" # brand-adjacent indigo light (portability slot)
32 - cyan = "#17a2b8" # teal (portability slot)
33 -
34 - [border]
35 - default = "#d0cbb8" # --border / --surface-border
@@ -1,27 +0,0 @@
1 - # Original GoingsOn theme
2 -
3 - [meta]
4 - name = "Neobrute"
5 - variant = "light"
6 -
7 - [background]
8 - primary = "#E0E4FA"
9 - secondary = "#CDD3F0"
10 - tertiary = "#BAC2E6"
11 - surface = "#FFFFFF"
12 -
13 - [foreground]
14 - primary = "#000000"
15 - secondary = "#2D2D2D"
16 - muted = "#6B6B6B"
17 -
18 - [accent]
19 - red = "#DC3545"
20 - green = "#5CB85C"
21 - blue = "#6196FF"
22 - yellow = "#F7D154"
23 - purple = "#7B68EE"
24 - cyan = "#17A2B8"
25 -
26 - [border]
27 - default = "#000000"