Skip to content

Commit b6f1690

Browse files
d3nd3cursoragent
andcommitted
Release v7.6: Expand menu themes to 38 and inject theme list at load time.
Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 23292cd commit b6f1690

8 files changed

Lines changed: 83 additions & 52 deletions

File tree

.cursor/skills/rmf-menu-authoring/reference.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ Top = last `<hbr>`. `<br>` = temporary stepping stones; layout change resets `<b
120120

121121
`blank`, `hr`, `vbar`, `text`, `ctext`, `image`, `list`, `slider`, `ticker`, `input`, `setkey`, `popup`, `selection`, `ghoul`, `gpm`, `filebox`, `filereq`, `loadbox`, `serverbox`, `serverdetail`, `players`, `listfile`, `users`, `chat`, `rooms`. File sort: `name`/`rname`, `size`/`rsize`, `time`/`rtime`. Area width/height = absolute pixels. For exact tint on list/ctext use `noshade` and area-level tint.
122122

123+
**`<list>` size limit:** SoF can only read **239 characters inside each quoted string** — the dropdown names *and* the `match "..."` values are separate limits. Count every letter, space, and comma between the quotes; ignore `<list`, `match`, `cvar`, and the rest of the line. Too long → menu may freeze, or you see `cvar` / `key` printed as plain text instead of a list. Fix: shorter names, fewer items, or split into two lists.
124+
125+
Example: `<list "Off,On" match "0,1" ...>` — first string is 6 chars (`Off,On`), second is 3 (`0,1`). Both are fine.
126+
123127
## 9. Undocumented / Extended
124128

125129
- **hbar**: `<hbar "BACKGROUND" "BAR_ITEM" cvar PROGRESS_CVAR [invisible]>` (0.0–1.0).
@@ -133,7 +137,7 @@ Top = last `<hbr>`. `<br>` = temporary stepping stones; layout change resets `<b
133137
- `ctext` often has `invisible`; `text` has `regular`. `serverbox` columns 0–5 (5 = pure). `filebox` uses `align` in practice.
134138
- `chat` with `private`. Area parsers can be option-order sensitive. Most tags not explicitly closed.
135139
- `return` = guarded teardown; `menuoff` = direct. `defaults noborder` + selective borders for cleaner layouts. Prefer frames over blank-heavy layout for scaling. Use `noshade` when list/ctext looks muted.
136-
- **`<list>` comma-string limit (SoF.exe):** each quoted labels string and each `match "..."` value string is copied into a **240-byte stack buffer** during parse (`sub_200C92D0`, frame `0x11C`, buffer at `+0x2C`, no bounds check). Overflow corrupts the splitter loop and can **hang** the game. Keep each comma-separated string **239 chars**; split long pickers across lists/pages. **Do not put `{placeholders}` inside list quotes** — only `{name}` tokens on their own (like `{theme_tints}`) are expanded at load time; inside `"..."` the engine still sees the braces and the `<list>` parse fails, leaking `cvar` / `atext` / `key` tokens as raw centered text.
140+
- **`<list>` too long?** See §8 — max **239 chars inside each `"..."`**.
137141

138142
## 11. Agent Authoring Checklist
139143

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changelog
22

3+
## v7.6
4+
5+
### Internal menus — theme palette expansion & list injection
6+
7+
- **38 themes (was 31):** Added Kanagawa, Horizon, Oxocarbon, Moonlight, Ember, Candy, Frost; expanded `MenuTheme` to 10 tint slots (tip, hili, accent, subtle, heading, muted, active) with per-theme active-tab hues.
8+
- **`{menu_theme_list}`:** Buddy tab injects the full `<list …>` tag at load time via `internal_menus_get_theme_list_rmf()` so labels stay under the 239-char quoted-string cap as the theme count grows.
9+
- **RMF docs:** Clearer §8 note on `<list>` size limit — only characters inside each `"..."`, with a short example.
10+
311
## v7.5
412

513
### Internal menus — Buddy tab theme list fixes

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7.5
1+
7.6

hdr/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
Increment version using: ./increment_version.sh
88
*/
99

10-
#define SOFBUDDY_VERSION "7.5"
10+
#define SOFBUDDY_VERSION "7.6"

src/features/internal_menus/hooks/fs_loadfile_override.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ int internal_menus_fs_loadfile_override_callback(char* path, void** buffer, bool
7373
const char* inset_tall = internal_menus_get_content_inset_tall_rmf();
7474
const char* tabs_prefix = internal_menus_get_tabs_row_prefix_rmf();
7575
const char* theme_tints = internal_menus_get_theme_tints_rmf();
76-
const char* theme_labels = internal_menus_get_theme_list_labels_rmf();
77-
const char* theme_match = internal_menus_get_theme_list_match_rmf();
76+
const char* theme_list = internal_menus_get_theme_list_rmf();
7877
for (std::string::size_type pos = 0; (pos = content.find("{content_inset_tall}", pos)) != std::string::npos; )
7978
content.replace(pos, 20, inset_tall), pos += std::strlen(inset_tall);
8079
for (std::string::size_type pos = 0; (pos = content.find("{content_inset}", pos)) != std::string::npos; )
@@ -83,10 +82,8 @@ int internal_menus_fs_loadfile_override_callback(char* path, void** buffer, bool
8382
content.replace(pos, 17, tabs_prefix), pos += std::strlen(tabs_prefix);
8483
for (std::string::size_type pos = 0; (pos = content.find("{theme_tints}", pos)) != std::string::npos; )
8584
content.replace(pos, 13, theme_tints), pos += std::strlen(theme_tints);
86-
for (std::string::size_type pos = 0; (pos = content.find("{menu_theme_labels}", pos)) != std::string::npos; )
87-
content.replace(pos, 21, theme_labels), pos += std::strlen(theme_labels);
88-
for (std::string::size_type pos = 0; (pos = content.find("{menu_theme_match}", pos)) != std::string::npos; )
89-
content.replace(pos, 20, theme_match), pos += std::strlen(theme_match);
85+
for (std::string::size_type pos = 0; (pos = content.find("{menu_theme_list}", pos)) != std::string::npos; )
86+
content.replace(pos, 17, theme_list), pos += std::strlen(theme_list);
9087
for (std::string::size_type pos = 0; (pos = content.find("tall}", pos)) != std::string::npos; )
9188
content.replace(pos, 5, "");
9289

src/features/internal_menus/internal_menus.cpp

Lines changed: 63 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -429,54 +429,62 @@ const char* internal_menus_get_content_inset_tall_rmf(void) {
429429
std::snprintf(buf, sizeof(buf), "<blank %d %d>", internal_menus_content_inset_px(), internal_menus_menu_vid_h_px());
430430
return buf;
431431
}
432-
// Menu color themes: (bg, fg, secondary/accent, dim, panel) as ABGR (0xAABBGGRR).
433-
// Palettes sourced from popular editor themes (Dracula, Nord, One Dark, Tokyo Night, etc.).
434-
struct MenuTheme { unsigned bg, fg, sec, dim, panel; };
432+
// Menu color themes as ABGR (0xAABBGGRR): bg, panel, fg, tip, hili, accent, subtle, heading, muted, active.
433+
// Active tab uses the orange tint slot but each theme picks a distinct hue (pink/green/gold/cyan/etc.).
434+
struct MenuTheme { unsigned bg, panel, fg, tip, hili, accent, subtle, heading, muted, active; };
435435
static const MenuTheme kMenuThemes[] = {
436-
{0xff050913, 0xfff3f7ff, 0xff43ffd0, 0xff2b3b55, 0xff101b2b}, // 0 Dark
437-
{0xff000000, 0xffffffff, 0xff4ad5ff, 0xffa0a0a0, 0xff161616}, // 1 Hi Contrast
438-
{0xff00050a, 0xff00b0ff, 0xff7fd2ff, 0xff106aa0, 0xff000f1a}, // 2 Amber
439-
{0xff001100, 0xff66ff33, 0xffc4ff9e, 0xff4f8a2f, 0xff002600}, // 3 Green
440-
{0xff362b00, 0xffa1a193, 0xff98a12a, 0xff756e58, 0xff423607}, // 4 Solar Dark
441-
{0xffe3f6fd, 0xff423607, 0xffd28b26, 0xffa1a193, 0xffd5e8ee}, // 5 Solar Light
442-
{0xfff0f5f5, 0xff1a1a1a, 0xff875f00, 0xff707070, 0xffe0e6e6}, // 6 Paper
443-
{0xff000000, 0xff00ffff, 0xffffff00, 0xff00b0b0, 0xff101010}, // 7 Hi Yellow
444-
{0xff362a28, 0xfff2f8f8, 0xfffde98b, 0xffa47262, 0xff5a4744}, // 8 Dracula
445-
{0xff342c28, 0xffbfb2ab, 0xffefaf61, 0xff70635c, 0xff2b2521}, // 9 One Dark
446-
{0xff40342e, 0xfff4efec, 0xffd0c088, 0xff6a564c, 0xff52423b}, // 10 Nord
447-
{0xff222827, 0xfff2f8f8, 0xff2ee2a6, 0xff5e7175, 0xff1c1f1e}, // 11 Monokai
448-
{0xff261b1a, 0xfff5cac0, 0xfff7a27a, 0xff895f56, 0xff1e1616}, // 12 Tokyo Night
449-
{0xff2e1e1e, 0xfff4d6cd, 0xfffab489, 0xff86706c, 0xff251818}, // 13 Catppuccin
450-
{0xff282828, 0xffb2dbeb, 0xff98a583, 0xff748392, 0xff21201d}, // 14 Gruvbox
451-
{0xff3b352d, 0xffaac6d3, 0xff80c0a7, 0xff78847a, 0xff2e2a23}, // 15 Everforest
452-
{0xff17110d, 0xffd9d1c9, 0xffffa658, 0xff9e948b, 0xff221b16}, // 16 GitHub Dark
453-
{0xff140e0a, 0xffb6bdbf, 0xffe6ba39, 0xff736a62, 0xff1a130f}, // 17 Ayu Dark
454-
{0xff3e2d29, 0xffcdaca6, 0xffffaa82, 0xff956e67, 0xff33221f}, // 18 Palenight
455-
{0xff241719, 0xfff4dee0, 0xffe7a7c4, 0xff866a6e, 0xff2e1d1f}, // 19 Rose Pine
456-
{0xff271601, 0xffebded6, 0xffffaa82, 0xff777763, 0xff42290b}, // 20 Night Owl
457-
{0xff493519, 0xffffffff, 0xff00c6ff, 0xffff8800, 0xff382712}, // 21 Cobalt2
458-
{0xff3f3f3f, 0xffccdcdc, 0xff809070, 0xffafaf9f, 0xff333333}, // 22 Zenburn
459-
{0xff2f1b24, 0xfff1eff0, 0xffdb7eff, 0xffbd8b84, 0xff23141a}, // 23 Synthwave
460-
{0xff08020d, 0xff41ff00, 0xff33cc00, 0xff118f00, 0xff001a00}, // 24 Matrix
461-
{0xff000000, 0xffe0e0e0, 0xff76e600, 0xff888888, 0xff0a0a0a}, // 25 OLED
462-
{0xffffffff, 0xff2f2924, 0xffda6909, 0xff766d65, 0xfffaf8f6}, // 26 GitHub Light
463-
{0xfffafafa, 0xff423a38, 0xfff27840, 0xffa7a1a0, 0xfff0f0f0}, // 27 One Light
464-
{0xfff5f1ef, 0xff694f4c, 0xfff5661e, 0xffb0a09c, 0xffefe9e6}, // 28 Cat Latte
465-
{0xfff4efec, 0xff40342e, 0xffac815e, 0xff6a564c, 0xfff0e9e5}, // 29 Nord Snow
466-
{0xffd8ecf4, 0xff223443, 0xff13458b, 0xff556a7a, 0xffcfe3eb}, // 30 Sepia
436+
{0xff130905, 0xff2b1b10, 0xfffff7f3, 0xffe8d4c8, 0xff05070b, 0xffd0ff43, 0xff553b2b, 0xffffd94d, 0xffaa927a, 0xffc679ff}, // 0 Dark
437+
{0xff000000, 0xff161616, 0xffffffff, 0xffe0e0e0, 0xff1a1a1a, 0xffffff00, 0xff404040, 0xff00ffff, 0xffa0a0a0, 0xffff00ff}, // 1 HiCon
438+
{0xff0a0500, 0xff1a0f00, 0xffffb000, 0xffcc8800, 0xff080300, 0xff00d7ff, 0xffa06a10, 0xffffd27f, 0xffaa8844, 0xff6633ff}, // 2 Amber
439+
{0xff001100, 0xff002600, 0xff33ff66, 0xff28cc4d, 0xff000800, 0xffaaff00, 0xff2f8a4f, 0xff00ffcc, 0xff25663d, 0xffcc00ff}, // 3 Green
440+
{0xff362b00, 0xff423607, 0xff969483, 0xff837b65, 0xff261e00, 0xffd28b26, 0xff756e58, 0xff98a12a, 0xff524e45, 0xff2f32dc}, // 4 SolDk
441+
{0xffe3f6fd, 0xffd5e8ee, 0xff423607, 0xff362b00, 0xffc1d6dd, 0xff8236d3, 0xffa1a193, 0xffd28b26, 0xff837b65, 0xffc4716c}, // 5 SolLt
442+
{0xfff5f5f0, 0xffe6e6e0, 0xff1a1a1a, 0xff333333, 0xffecece8, 0xffcc6600, 0xff999999, 0xffaa8800, 0xff707070, 0xff880066}, // 6 Paper
443+
{0xff000000, 0xff101010, 0xffffff00, 0xffcccc00, 0xff0a0a0a, 0xff00ffff, 0xff888800, 0xffffffff, 0xffb0b000, 0xff8000ff}, // 7 HiYel
444+
{0xff362a28, 0xff5a4744, 0xfff2f8f8, 0xffdce0e0, 0xff2c2221, 0xfff993bd, 0xffa47262, 0xfffde98b, 0xff725751, 0xff7bfa50}, // 8 Dracula
445+
{0xff342c28, 0xff3c322c, 0xffbfb2ab, 0xff978982, 0xff2b2521, 0xffdd78c6, 0xff70635c, 0xffefaf61, 0xff63524b, 0xff7bc0e5}, // 9 1Dark
446+
{0xff40342e, 0xff52423b, 0xfff4efec, 0xffe9ded8, 0xff5e4c43, 0xffd0c088, 0xff6a564c, 0xffc1a181, 0xff886e61, 0xff6a61bf}, // 10 Nord
447+
{0xff222827, 0xff323d3e, 0xfff2f8f8, 0xffc2cfcf, 0xff1c1f1e, 0xff2ee2a6, 0xff3e4849, 0xffefd966, 0xff5e7175, 0xff7226f9}, // 11 Mono
448+
{0xff261b1a, 0xff3b2824, 0xfff5cac0, 0xffcea59a, 0xff1e1616, 0xfff79abb, 0xff684841, 0xfff7a27a, 0xff895f56, 0xff6ace9e}, // 12 Tokyo
449+
{0xff2e1e1e, 0xff443231, 0xfff4d6cd, 0xffc8ada6, 0xff251818, 0xfff7a6cb, 0xff5a4745, 0xfffab489, 0xff86706c, 0xffe7c2f5}, // 13 Catpp
450+
{0xff282828, 0xff36383c, 0xffb2dbeb, 0xffa1c4d5, 0xff21201d, 0xff26bbb8, 0xff454950, 0xff98a583, 0xff748392, 0xff2fbdfa}, // 14 Gruv
451+
{0xff3b352d, 0xff4d483d, 0xffaac6d3, 0xff8499a8, 0xff2e2a23, 0xff80c0a7, 0xff585247, 0xffb3bb7f, 0xff899285, 0xff807ee6}, // 15 Evrf
452+
{0xff17110d, 0xff221b16, 0xffd9d1c9, 0xff9e948b, 0xff090401, 0xffffa658, 0xff3d3630, 0xffffc079, 0xff81766e, 0xffffa8d2}, // 16 GHDrk
453+
{0xff140e0a, 0xff291f1a, 0xffb6bdbf, 0xff8f9893, 0xff0c0805, 0xff54b4ff, 0xff443832, 0xffffc259, 0xff736a62, 0xff7871f0}, // 17 Ayu
454+
{0xff3e2d29, 0xff4d3732, 0xffcdaca6, 0xffb88b82, 0xff32211e, 0xffea92c7, 0xff79554e, 0xffffaa82, 0xff956e67, 0xff8de8c3}, // 18 Palen
455+
{0xff241719, 0xff2e1d1f, 0xfff4dee0, 0xffaa8c90, 0xff1c1012, 0xffe7a7c4, 0xff3a2326, 0xffd8cf9c, 0xff866a6e, 0xff926feb}, // 19 Rose
456+
{0xff271601, 0xff42290b, 0xffebded6, 0xffc4b1a2, 0xff221100, 0xffffaa82, 0xff533b1d, 0xffcadb7f, 0xff777763, 0xffea92c7}, // 20 Nowl
457+
{0xff493519, 0xff382712, 0xffffffff, 0xffe8d8c0, 0xff37210d, 0xff00c6ff, 0xffff8800, 0xff00d93a, 0xff009dff, 0xff8c62ff}, // 21 Cob2
458+
{0xff3f3f3f, 0xff383838, 0xffccdcdc, 0xffacbcbc, 0xff2f2f2f, 0xff809070, 0xff606060, 0xffd3d08c, 0xffafaf9f, 0xffafdff0}, // 22 Zen
459+
{0xff2f1b24, 0xff4f2934, 0xfff1eff0, 0xffd8c0c8, 0xff1f1017, 0xffdb7eff, 0xff653446, 0xfff6f936, 0xffbd8b84, 0xff5ddefe}, // 23 Synth
460+
{0xff020d02, 0xff001a00, 0xff00ff41, 0xff00cc33, 0xff000800, 0xff66ff00, 0xff008f11, 0xffccff00, 0xff00660a, 0xffffff00}, // 24 Matrix
461+
{0xff000000, 0xff0a0a0a, 0xffe0e0e0, 0xffb0b0b0, 0xff141414, 0xff00e676, 0xff333333, 0xffffcc00, 0xff888888, 0xffff6699}, // 25 OLED
462+
{0xffffffff, 0xfffaf8f6, 0xff2f2924, 0xff534a42, 0xfff6f3f0, 0xffda6909, 0xffded7d0, 0xffae5005, 0xff766d65, 0xff2e22cf}, // 26 GHLit
463+
{0xfffafafa, 0xfff0f0f0, 0xff423a38, 0xff776c69, 0xffe6e5e5, 0xffa426a6, 0xffd4d4d4, 0xfff27840, 0xffa0a1a0, 0xff4956e4}, // 27 1Lite
464+
{0xfff5f1ef, 0xffefe9e6, 0xff694f4c, 0xff856f6c, 0xffe8e0dc, 0xffef3988, 0xffdad0cc, 0xfff5661e, 0xffb0a09c, 0xffcb76ea}, // 28 Latte
465+
{0xfff4efec, 0xfff0e9e5, 0xff40342e, 0xff6a564c, 0xffe9ded8, 0xffac815e, 0xffdacec8, 0xffc1a181, 0xff918880, 0xff8cbea3}, // 29 NSnow
466+
{0xfff4ecd8, 0xffebe3cf, 0xff433422, 0xff665544, 0xffe6ddc8, 0xff8b4513, 0xffccc0a8, 0xffaa7722, 0xff7a6a55, 0xff224488}, // 30 Sepia
467+
{0xff281f1f, 0xff372a2a, 0xffbad7dc, 0xffa6c2c8, 0xff1d1616, 0xffd89c7e, 0xff463636, 0xffb87f95, 0xff697172, 0xff6cbb98}, // 31 Kanag
468+
{0xff261e1c, 0xff302523, 0xffe1d5cb, 0xffc4b4a8, 0xff1d1716, 0xff6d56e9, 0xff3e302e, 0xffbcb025, 0xff89706b, 0xff95b7fa}, // 32 Horiz
469+
{0xff161616, 0xff262626, 0xfff8f4f2, 0xffcdc7c1, 0xff0d0d0d, 0xfff5a542, 0xff393939, 0xffffb133, 0xff8d8d8d, 0xffcf6fff}, // 33 Oxo
470+
{0xff19140f, 0xff32231a, 0xffcfe1e6, 0xffa0b0b8, 0xff120e0a, 0xffafff82, 0xff253040, 0xffe6cf5c, 0xff81766e, 0xff80d5ff}, // 34 Moon
471+
{0xff0a0a1a, 0xff14142a, 0xffd6e4ff, 0xffa8b8d4, 0xff060612, 0xff4466ff, 0xff20204a, 0xff44aaff, 0xff556688, 0xff4422ff}, // 35 Ember
472+
{0xff20101a, 0xff301828, 0xfff8e8ff, 0xffd0b8d8, 0xff180812, 0xffb469ff, 0xff482840, 0xffffe500, 0xff887890, 0xff00ffff}, // 36 Candy
473+
{0xff28160a, 0xff382214, 0xfffff4e8, 0xfff0d4b8, 0xff180e06, 0xffffcc66, 0xff50301e, 0xffffd8a8, 0xffaa8868, 0xffcc88ff}, // 37 Frost
467474
};
468475
// Short names for <list> labels — engine comma-split buffer is only 240 bytes (SoF.exe sub_200C92D0).
469476
static const char* kMenuThemeListLabels[] = {
470-
"Dark", "HiCon", "Amber", "Green", "SolDrk", "SolLit", "Paper", "HiYel",
471-
"Dracula", "OneDark", "Nord", "Monokai", "Tokyo", "Catpp", "Gruvbox", "Evrfrst",
472-
"GHDrk", "AyuDark", "Palenight", "Rose", "NOwl", "Cobalt2", "Zenburn", "Synth",
473-
"Matrix", "OLED", "GHLit", "OneLight", "Latte", "NSnow", "Sepia",
477+
"Dark", "HiCon", "Amber", "Green", "SolDk", "SolLt", "Paper", "HiYel",
478+
"Dracula", "1Dark", "Nord", "Mono", "Tokyo", "Catpp", "Gruv", "Evrf",
479+
"GHDrk", "Ayu", "Palen", "Rose", "Nowl", "Cob2", "Zen", "Synth",
480+
"Matrix", "OLED", "GHLit", "1Lite", "Latte", "NSnow", "Sepia",
481+
"Kanag", "Horiz", "Oxo", "Moon", "Ember", "Candy", "Frost",
474482
};
475483
static_assert(sizeof(kMenuThemeListLabels) / sizeof(kMenuThemeListLabels[0]) ==
476484
sizeof(kMenuThemes) / sizeof(kMenuThemes[0]), "theme list/name count mismatch");
477485

478486
const char* internal_menus_get_theme_list_labels_rmf(void) {
479-
static char buf[256];
487+
static char buf[280];
480488
char* p = buf;
481489
const char* end = buf + sizeof(buf) - 1;
482490
const int n = static_cast<int>(sizeof(kMenuThemeListLabels) / sizeof(kMenuThemeListLabels[0]));
@@ -492,6 +500,19 @@ const char* internal_menus_get_theme_list_labels_rmf(void) {
492500
return buf;
493501
}
494502

503+
const char* internal_menus_get_theme_list_rmf(void) {
504+
static char buf[768];
505+
const char* labels = internal_menus_get_theme_list_labels_rmf();
506+
const char* match = internal_menus_get_theme_list_match_rmf();
507+
std::snprintf(buf, sizeof(buf),
508+
"<list \"%s\" match \"%s\" cvari _sofbuddy_menu_theme atext \"Menu Theme : \" "
509+
"key mouse1 \"reloadall;sofbuddy_menu sof_buddy/sofbuddy\" "
510+
"key mouse2 \"reloadall;sofbuddy_menu sof_buddy/sofbuddy\" "
511+
"noshade tip \"Editor-inspired color preset. Tab reloads to apply tints.\"><br>",
512+
labels, match);
513+
return buf;
514+
}
515+
495516
const char* internal_menus_get_theme_list_match_rmf(void) {
496517
static char buf[128];
497518
char* p = buf;
@@ -525,9 +546,9 @@ const char* internal_menus_get_theme_tints_rmf(void) {
525546
"<tint sb_accent 0x%08x><tint sb_subtle 0x%08x>"
526547
"<tint white 0x%08x><tint cyan 0x%08x>"
527548
"<tint gray 0x%08x><tint orange 0x%08x>",
528-
t.fg, t.bg, t.bg, t.panel,
529-
t.sec, t.dim, t.fg, t.sec,
530-
t.dim, t.fg);
549+
t.tip, t.hili, t.bg, t.panel,
550+
t.accent, t.subtle, t.fg, t.heading,
551+
t.muted, t.active);
531552
return buf;
532553
}
533554
const char* internal_menus_get_tabs_row_prefix_rmf(void) {

src/features/internal_menus/menu_library/sof_buddy/sofbuddy_content.rmf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<font type title tint cyan atint cyan>
3333
"Menu"
3434
<font type title tint white atint white>
35-
<list "Dark,HiCon,Amber,Green,SolDrk,SolLit,Paper,HiYel,Dracula,OneDark,Nord,Monokai,Tokyo,Catpp,Gruvbox,Evrfrst,GHDrk,AyuDark,Palenight,Rose,NOwl,Cobalt2,Zenburn,Synth,Matrix,OLED,GHLit,OneLight,Latte,NSnow,Sepia" match "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30" cvari _sofbuddy_menu_theme atext "Menu Theme : " key mouse1 "reloadall;sofbuddy_menu sof_buddy/sofbuddy" key mouse2 "reloadall;sofbuddy_menu sof_buddy/sofbuddy" noshade tip "Editor-inspired color preset. Tab reloads to apply tints."><br>
35+
{menu_theme_list}
3636
<ctext tip_duration atext "Menu tooltip Duration (ms) : " noshade><br>
3737
<slider cvar tip_duration min 0 max 8000 step 250 tip "How long menu tooltips stay visible."><br>
3838
<ctext _sofbuddy_menu_hotkey atext "Menu open key : " noshade tip "Rebind via set _sofbuddy_menu_hotkey <key>;sofbuddy_apply_menu_hotkey in console, or Restore Defaults below."><br>

src/features/internal_menus/shared.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const char* internal_menus_get_tabs_row_prefix_rmf(void);
3434
const char* internal_menus_get_theme_tints_rmf(void);
3535
const char* internal_menus_get_theme_list_labels_rmf(void);
3636
const char* internal_menus_get_theme_list_match_rmf(void);
37+
const char* internal_menus_get_theme_list_rmf(void);
3738
void internal_menus_remember_menu_page(const char* menu_file);
3839

3940
#endif

0 commit comments

Comments
 (0)