Describe the bug
When defining items in a Custom Context Menu (using Simple JSON Format) and you set a background color for the item, I observe two bugs / unexpected behavior:
- Subtitles are not displayed.
- Icons become misaligned.
For example, the Custom Context Menu generated by the JS code below produces the following context menu:
Tests 4, 7, & 8 do not pass.
Expected Behavior
• Subtitle should appear under the title, even when a background color is set.
• Icon should align consistently, regardless of background color being set.
//see https://docs.folivora.ai/docs/1108_simple_format.html
async function retrieveJSON() {
const emoji = {
checked: "\u2705",
unchecked: "\u274C",
};
const subtitleText = "Subtitle text.";
const backgroundColor = "#D3B3FF80";
const iconDefinition = {
type: "sfsymbol",
value: "person.3.sequence",
};
let items = [
{
// Test 1: Pass 👍
title: `Test 1: Subtitle ${emoji.unchecked}, Background ${emoji.unchecked}, Icon ${emoji.unchecked}`,
subtitle: null,
background: null,
icon: null,
},
{
// Test 2: Pass 👍
title: `Test 2: Subtitle ${emoji.checked}, Background ${emoji.unchecked}, Icon ${emoji.unchecked}`,
subtitle: { text: subtitleText },
background: null,
icon: null,
},
{
// Test 3: Pass 👍
title: `Test 3: Subtitle ${emoji.unchecked}, Background ${emoji.checked}, Icon ${emoji.unchecked}`,
subtitle: null,
background: backgroundColor,
icon: null,
},
{
// Test 4: Fail 👎 'Subtitle' unexpectedly is not being displayed due to 'Background' being set
title: `Test 4: Subtitle ${emoji.checked}, Background ${emoji.checked}, Icon ${emoji.unchecked}`,
subtitle: { text: subtitleText },
background: backgroundColor,
icon: null,
},
{
// Test 5: Pass 👍
title: `Test 5: Subtitle ${emoji.unchecked}, Background ${emoji.unchecked}, Icon ${emoji.checked}`,
subtitle: null,
background: null,
icon: iconDefinition,
},
{
// Test 6: Pass 👍
title: `Test 6: Subtitle ${emoji.checked}, Background ${emoji.unchecked}, Icon ${emoji.checked}`,
subtitle: { text: subtitleText },
background: null,
icon: iconDefinition,
},
{
// Test 7: Fail 👎 'icon' placement and dimensions are distorted due to 'Background' being set
title: `Test 7: Subtitle ${emoji.unchecked}, Background ${emoji.checked}, Icon ${emoji.checked}`,
subtitle: null,
background: backgroundColor,
icon: iconDefinition,
},
{
// Test 8: Fail 👎 'Subtitle' unexpectedly is not being displayed and 'icon' placement and dimensions are distorted due to 'Background' being set
title: `Test 8: Subtitle ${emoji.checked}, Background ${emoji.checked}, Icon ${emoji.checked}`,
subtitle: { text: subtitleText },
background: backgroundColor,
icon: iconDefinition,
},
];
return JSON.stringify(items);
}
Here's the configuration of the Keyboard Shortcut trigger and the Show Custom Context Menu (NEW) action:
[
{
"BTTActionCategory" : 0,
"BTTLastUpdatedAt" : 1736982754.103164,
"BTTTriggerType" : 0,
"BTTTriggerClass" : "BTTTriggerTypeKeyboardShortcut",
"BTTUUID" : "B4579788-0615-4FA4-8331-569E1AA27C3B",
"BTTPredefinedActionType" : 366,
"BTTPredefinedActionName" : "Empty Placeholder",
"BTTAdditionalConfiguration" : "8388608",
"BTTKeyboardShortcutKeyboardType" : 2302,
"BTTTriggerOnDown" : 1,
"BTTLayoutIndependentChar" : "F3",
"BTTEnabled" : 1,
"BTTEnabled2" : 1,
"BTTShortcutKeyCode" : 99,
"BTTShortcutModifierKeys" : 8388608,
"BTTOrder" : 3,
"BTTAutoAdaptToKeyboardLayout" : 0,
"BTTAdditionalActions" : [
{
"BTTActionCategory" : 0,
"BTTLastUpdatedAt" : 1736982763.16522,
"BTTTriggerParentUUID" : "B4579788-0615-4FA4-8331-569E1AA27C3B",
"BTTIsPureAction" : true,
"BTTTriggerClass" : "BTTTriggerTypeKeyboardShortcut",
"BTTUUID" : "C947D3A4-D548-4E8E-80F1-ACF28AF6441D",
"BTTPredefinedActionType" : 327,
"BTTPredefinedActionName" : "Show Custom Context Menu (NEW)",
"BTTActionCustomScriptSettings" : "ewogICJCVFRTY3JpcHRUeXBlIiA6IDMsCiAgIkJUVEFwcGxlU2NyaXB0U3RyaW5nIiA6ICJcL1wvc2VlIGh0dHBzOlwvXC9kb2NzLmZvbGl2b3JhLmFpXC9kb2NzXC8xMTA4X3NpbXBsZV9mb3JtYXQuaHRtbFxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZUpTT04oKSB7XG5cdGNvbnN0IGVtb2ppID0ge1xuXHRcdGNoZWNrZWQ6IFwiXFx1MjcwNVwiLFxuXHRcdHVuY2hlY2tlZDogXCJcXHUyNzRDXCIsXG5cdH07XG5cblx0Y29uc3Qgc3VidGl0bGVUZXh0ID0gXCJTdWJ0aXRsZSB0ZXh0LlwiO1xuXHRjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBcIiNEM0IzRkY4MFwiO1xuXHRjb25zdCBpY29uRGVmaW5pdGlvbiA9IHtcblx0XHR0eXBlOiBcInNmc3ltYm9sXCIsXG5cdFx0dmFsdWU6IFwicGVyc29uLjMuc2VxdWVuY2VcIixcblx0fTtcblxuXHRsZXQgaXRlbXMgPSBbXG5cdFx0e1xuXHRcdFx0XC9cLyBUZXN0IDE6IFBhc3Mg76O_w7zDq8OnXG5cdFx0XHR0aXRsZTogYFRlc3QgMTogU3VidGl0bGUgJHtlbW9qaS51bmNoZWNrZWR9LCBCYWNrZ3JvdW5kICR7ZW1vamkudW5jaGVja2VkfSwgSWNvbiAke2Vtb2ppLnVuY2hlY2tlZH1gLFxuXHRcdFx0c3VidGl0bGU6IG51bGwsXG5cdFx0XHRiYWNrZ3JvdW5kOiBudWxsLFxuXHRcdFx0aWNvbjogbnVsbCxcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwvXC8gVGVzdCAyOiBQYXNzIO+jv8O8w6vDp1xuXHRcdFx0dGl0bGU6IGBUZXN0IDI6IFN1YnRpdGxlICR7ZW1vamkuY2hlY2tlZH0sIEJhY2tncm91bmQgJHtlbW9qaS51bmNoZWNrZWR9LCBJY29uICR7ZW1vamkudW5jaGVja2VkfWAsXG5cdFx0XHRzdWJ0aXRsZTogeyB0ZXh0OiBzdWJ0aXRsZVRleHQgfSxcblx0XHRcdGJhY2tncm91bmQ6IG51bGwsXG5cdFx0XHRpY29uOiBudWxsLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XC9cLyBUZXN0IDM6IFBhc3Mg76O_w7zDq8OnXG5cdFx0XHR0aXRsZTogYFRlc3QgMzogU3VidGl0bGUgJHtlbW9qaS51bmNoZWNrZWR9LCBCYWNrZ3JvdW5kICR7ZW1vamkuY2hlY2tlZH0sIEljb24gJHtlbW9qaS51bmNoZWNrZWR9YCxcblx0XHRcdHN1YnRpdGxlOiBudWxsLFxuXHRcdFx0YmFja2dyb3VuZDogYmFja2dyb3VuZENvbG9yLFxuXHRcdFx0aWNvbjogbnVsbCxcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwvXC8gVGVzdCA0OiBGYWlsIO+jv8O8w6vDqSAnU3VidGl0bGUnIHVuZXhwZWN0ZWRseSBpcyBub3QgYmVpbmcgZGlzcGxheWVkIGR1ZSB0byAnQmFja2dyb3VuZCcgYmVpbmcgc2V0XG5cdFx0XHR0aXRsZTogYFRlc3QgNDogU3VidGl0bGUgJHtlbW9qaS5jaGVja2VkfSwgQmFja2dyb3VuZCAke2Vtb2ppLmNoZWNrZWR9LCBJY29uICR7ZW1vamkudW5jaGVja2VkfWAsXG5cdFx0XHRzdWJ0aXRsZTogeyB0ZXh0OiBzdWJ0aXRsZVRleHQgfSxcblx0XHRcdGJhY2tncm91bmQ6IGJhY2tncm91bmRDb2xvcixcblx0XHRcdGljb246IG51bGwsXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcL1wvIFRlc3QgNTogUGFzcyDvo7_DvMOrw6dcblx0XHRcdHRpdGxlOiBgVGVzdCA1OiBTdWJ0aXRsZSAke2Vtb2ppLnVuY2hlY2tlZH0sIEJhY2tncm91bmQgJHtlbW9qaS51bmNoZWNrZWR9LCBJY29uICR7ZW1vamkuY2hlY2tlZH1gLFxuXHRcdFx0c3VidGl0bGU6IG51bGwsXG5cdFx0XHRiYWNrZ3JvdW5kOiBudWxsLFxuXHRcdFx0aWNvbjogaWNvbkRlZmluaXRpb24sXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcL1wvIFRlc3QgNjogUGFzcyDvo7_DvMOrw6dcblx0XHRcdHRpdGxlOiBgVGVzdCA2OiBTdWJ0aXRsZSAke2Vtb2ppLmNoZWNrZWR9LCBCYWNrZ3JvdW5kICR7ZW1vamkudW5jaGVja2VkfSwgSWNvbiAke2Vtb2ppLmNoZWNrZWR9YCxcblx0XHRcdHN1YnRpdGxlOiB7IHRleHQ6IHN1YnRpdGxlVGV4dCB9LFxuXHRcdFx0YmFja2dyb3VuZDogbnVsbCxcblx0XHRcdGljb246IGljb25EZWZpbml0aW9uLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0XC9cLyBUZXN0IDc6IEZhaWwg76O_w7zDq8OpICdpY29uJyBwbGFjZW1lbnQgYW5kIGRpbWVuc2lvbnMgYXJlIGRpc3RvcnRlZCBkdWUgdG8gJ0JhY2tncm91bmQnIGJlaW5nIHNldFxuXHRcdFx0dGl0bGU6IGBUZXN0IDc6IFN1YnRpdGxlICR7ZW1vamkudW5jaGVja2VkfSwgQmFja2dyb3VuZCAke2Vtb2ppLmNoZWNrZWR9LCBJY29uICR7ZW1vamkuY2hlY2tlZH1gLFxuXHRcdFx0c3VidGl0bGU6IG51bGwsXG5cdFx0XHRiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kQ29sb3IsXG5cdFx0XHRpY29uOiBpY29uRGVmaW5pdGlvbixcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwvXC8gVGVzdCA4OiBGYWlsIO+jv8O8w6vDqSAnU3VidGl0bGUnIHVuZXhwZWN0ZWRseSBpcyBub3QgYmVpbmcgZGlzcGxheWVkIGFuZCAnaWNvbicgcGxhY2VtZW50IGFuZCBkaW1lbnNpb25zIGFyZSBkaXN0b3J0ZWQgZHVlIHRvICdCYWNrZ3JvdW5kJyBiZWluZyBzZXRcblx0XHRcdHRpdGxlOiBgVGVzdCA4OiBTdWJ0aXRsZSAke2Vtb2ppLmNoZWNrZWR9LCBCYWNrZ3JvdW5kICR7ZW1vamkuY2hlY2tlZH0sIEljb24gJHtlbW9qaS5jaGVja2VkfWAsXG5cdFx0XHRzdWJ0aXRsZTogeyB0ZXh0OiBzdWJ0aXRsZVRleHQgfSxcblx0XHRcdGJhY2tncm91bmQ6IGJhY2tncm91bmRDb2xvcixcblx0XHRcdGljb246IGljb25EZWZpbml0aW9uLFxuXHRcdH0sXG5cdF07XG5cblx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KGl0ZW1zKTtcbn1cbiIsCiAgIkJUVFNjcmlwdEZ1bmN0aW9uVG9DYWxsIiA6ICJyZXRyaWV2ZUpTT04iLAogICJCVFRTY3JpcHRMb2NhdGlvbiIgOiAwLAogICJCVFRBcHBsZVNjcmlwdFVzZVBhdGgiIDogZmFsc2UsCiAgIkJUVEphdmFTY3JpcHRVc2VJc29sYXRlZENvbnRleHQiIDogZmFsc2UKfQ==",
"BTTAdditionalActionData" : {
"BTTActionRetrieveFromScript" : 1
},
"BTTKeyboardShortcutKeyboardType" : 0,
"BTTEnabled" : 1,
"BTTEnabled2" : 1,
"BTTShortcutKeyCode" : -1,
"BTTOrder" : 696,
"BTTAutoAdaptToKeyboardLayout" : 0
}
]
}
]
Device information:
- Device: MacBook Pro (14-inch, 2021)
- macOS: 15.2 (24C101)
- BTT Version: 5.071 (2025011404)
- Alpha: 0 update(s) behind latest Alpha version 5.071 (2025011404).
- Regular: Installed version is ahead of latest Regular version 5.061.
Additional information (e.g. crash logs, related issues, etc.):