From e007bd7f334eb3551d4a3af42d14d5c96d49ae2f Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Fri, 2 Jan 2026 00:31:21 -0700 Subject: [PATCH 1/4] Fix: limit ornament icon-swapping behavior to armor --- config/i18n.json | 4 ++-- src/app/inventory/ItemIcon.tsx | 6 +++++- src/locale/en.json | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/config/i18n.json b/config/i18n.json index 0f10b9cb71..51342a5d33 100644 --- a/config/i18n.json +++ b/config/i18n.json @@ -1259,8 +1259,8 @@ "MaxParallelCores": "Maximum cores for parallel tasks", "MaxParallelCoresExplanation": "Controls how many CPU cores DIM can use for intensive tasks like Loadout Optimizer and Loadout Analyzer. Higher values may improve performance but use more system resources.", "OrnamentDisplay": "Show Ornaments on item tiles", - "OrnamentDisplayExplanationHide": "Hovering or long-pressing an item will hide its ornament", - "OrnamentDisplayExplanationShow": "Hovering or long-pressing an item will show its ornament", + "OrnamentDisplayExplanationHide": "Hovering or long-pressing armor will hide its ornament", + "OrnamentDisplayExplanationShow": "Items will never display their ornaments", "ResetToDefault": "Reset", "ReverseSort": "Toggle forward/reverse sort", "SetSort": "Sort items by:", diff --git a/src/app/inventory/ItemIcon.tsx b/src/app/inventory/ItemIcon.tsx index bdc1871de3..78ea763038 100644 --- a/src/app/inventory/ItemIcon.tsx +++ b/src/app/inventory/ItemIcon.tsx @@ -116,7 +116,11 @@ export default function ItemIcon({ item, className }: { item: DimItem; className let foreground = (item.iconDef?.foreground ?? item.icon) || ''; let altIcon = ''; if (item.ornamentIconDef) { - altIcon = item.ornamentIconDef.foreground; + if (item.bucket.inArmor) { + altIcon = item.ornamentIconDef.foreground; + } else { + foreground = item.ornamentIconDef.foreground; + } } if (!animatedBackground && !altIcon) { diff --git a/src/locale/en.json b/src/locale/en.json index bc6058a159..f44e33f63a 100644 --- a/src/locale/en.json +++ b/src/locale/en.json @@ -1242,8 +1242,8 @@ "MaxParallelCores": "Maximum cores for parallel tasks", "MaxParallelCoresExplanation": "Controls how many CPU cores DIM can use for intensive tasks like Loadout Optimizer and Loadout Analyzer. Higher values may improve performance but use more system resources.", "OrnamentDisplay": "Show Ornaments on item tiles", - "OrnamentDisplayExplanationHide": "Hovering or long-pressing an item will hide its ornament", - "OrnamentDisplayExplanationShow": "Hovering or long-pressing an item will show its ornament", + "OrnamentDisplayExplanationHide": "Hovering or long-pressing armor will hide its ornament", + "OrnamentDisplayExplanationShow": "Items will never display their ornaments", "ResetToDefault": "Reset", "RestoreVaultSide": "Show vaulted items in their own column", "ReverseSort": "Toggle forward/reverse sort", From 443f0fb6f26004578427f0b1f1d7a4567f5b5c63 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Fri, 2 Jan 2026 00:47:11 -0700 Subject: [PATCH 2/4] Use new i18n keys for ornament explanation Retain the old keys --- config/i18n.json | 6 ++++-- src/app/settings/SettingsPage.tsx | 8 ++++++-- src/locale/en.json | 6 ++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/config/i18n.json b/config/i18n.json index 51342a5d33..f5e93c8617 100644 --- a/config/i18n.json +++ b/config/i18n.json @@ -1259,8 +1259,10 @@ "MaxParallelCores": "Maximum cores for parallel tasks", "MaxParallelCoresExplanation": "Controls how many CPU cores DIM can use for intensive tasks like Loadout Optimizer and Loadout Analyzer. Higher values may improve performance but use more system resources.", "OrnamentDisplay": "Show Ornaments on item tiles", - "OrnamentDisplayExplanationHide": "Hovering or long-pressing armor will hide its ornament", - "OrnamentDisplayExplanationShow": "Items will never display their ornaments", + "OrnamentDisplayExplanationDisabled": "Items will never display their ornaments", + "OrnamentDisplayExplanationEnabled": "Hovering or long-pressing armor will hide its ornament", + "OrnamentDisplayExplanationHide": "Hovering or long-pressing an item will hide its ornament", + "OrnamentDisplayExplanationShow": "Hovering or long-pressing an item will show its ornament", "ResetToDefault": "Reset", "ReverseSort": "Toggle forward/reverse sort", "SetSort": "Sort items by:", diff --git a/src/app/settings/SettingsPage.tsx b/src/app/settings/SettingsPage.tsx index ae99843501..f82adff508 100644 --- a/src/app/settings/SettingsPage.tsx +++ b/src/app/settings/SettingsPage.tsx @@ -60,6 +60,10 @@ const themeOptions = mapToOptions({ vexnet: 'Vex Network', }); +// Old ornament setting; keeping these strings from being culled +// t('Settings.OrnamentDisplayExplanationHide') +// t('Settings.OrnamentDisplayExplanationShow') + export default function SettingsPage() { usePageTitle(t('Settings.Settings')); const dispatch = useThunkDispatch(); @@ -526,8 +530,8 @@ export default function SettingsPage() { />
{settings.ornamentDisplay === OrnamentDisplay.All - ? t('Settings.OrnamentDisplayExplanationHide') - : t('Settings.OrnamentDisplayExplanationShow')} + ? t('Settings.OrnamentDisplayExplanationEnabled') + : t('Settings.OrnamentDisplayExplanationDisabled')}
diff --git a/src/locale/en.json b/src/locale/en.json index f44e33f63a..4173a19cfc 100644 --- a/src/locale/en.json +++ b/src/locale/en.json @@ -1242,8 +1242,10 @@ "MaxParallelCores": "Maximum cores for parallel tasks", "MaxParallelCoresExplanation": "Controls how many CPU cores DIM can use for intensive tasks like Loadout Optimizer and Loadout Analyzer. Higher values may improve performance but use more system resources.", "OrnamentDisplay": "Show Ornaments on item tiles", - "OrnamentDisplayExplanationHide": "Hovering or long-pressing armor will hide its ornament", - "OrnamentDisplayExplanationShow": "Items will never display their ornaments", + "OrnamentDisplayExplanationDisabled": "Items will never display their ornaments", + "OrnamentDisplayExplanationEnabled": "Hovering or long-pressing armor will hide its ornament", + "OrnamentDisplayExplanationHide": "Hovering or long-pressing an item will hide its ornament", + "OrnamentDisplayExplanationShow": "Hovering or long-pressing an item will show its ornament", "ResetToDefault": "Reset", "RestoreVaultSide": "Show vaulted items in their own column", "ReverseSort": "Toggle forward/reverse sort", From b20f097d03a54534a1cc6cb469d3a23279a60d14 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Fri, 2 Jan 2026 17:02:41 -0700 Subject: [PATCH 3/4] Revise so that ornaments can still be toggled off for weapons instead of only armor, with hover behavior restricted to armor --- config/i18n.json | 2 +- src/app/inventory/ItemIcon.m.scss | 4 ++-- src/app/inventory/ItemIcon.m.scss.d.ts | 1 + src/app/inventory/ItemIcon.tsx | 18 +++++++++++------- src/locale/en.json | 2 +- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/config/i18n.json b/config/i18n.json index f5e93c8617..c8e54d3c83 100644 --- a/config/i18n.json +++ b/config/i18n.json @@ -1259,7 +1259,7 @@ "MaxParallelCores": "Maximum cores for parallel tasks", "MaxParallelCoresExplanation": "Controls how many CPU cores DIM can use for intensive tasks like Loadout Optimizer and Loadout Analyzer. Higher values may improve performance but use more system resources.", "OrnamentDisplay": "Show Ornaments on item tiles", - "OrnamentDisplayExplanationDisabled": "Items will never display their ornaments", + "OrnamentDisplayExplanationDisabled": "Hovering or long-pressing armor will show its ornament", "OrnamentDisplayExplanationEnabled": "Hovering or long-pressing armor will hide its ornament", "OrnamentDisplayExplanationHide": "Hovering or long-pressing an item will hide its ornament", "OrnamentDisplayExplanationShow": "Hovering or long-pressing an item will show its ornament", diff --git a/src/app/inventory/ItemIcon.m.scss b/src/app/inventory/ItemIcon.m.scss index 529b1e8352..1fb309d4ae 100644 --- a/src/app/inventory/ItemIcon.m.scss +++ b/src/app/inventory/ItemIcon.m.scss @@ -97,7 +97,7 @@ $commonBg: #366f42; content-visibility 0.2s allow-discrete; } - :global(.item):hover & { + :global(.item):hover &.isArmor { opacity: var(--ornament-display-opacity, 1); content-visibility: var(--ornament-display-visibility, auto); } @@ -114,7 +114,7 @@ $commonBg: #366f42; content-visibility 0.2s allow-discrete; } - :global(.item):hover & { + :global(.item):hover &.isArmor { opacity: calc(1 - var(--ornament-display-opacity, 1)); content-visibility: var(--ornament-display-visibility-inverse, hidden); } diff --git a/src/app/inventory/ItemIcon.m.scss.d.ts b/src/app/inventory/ItemIcon.m.scss.d.ts index 895a20041a..d7b59c67cc 100644 --- a/src/app/inventory/ItemIcon.m.scss.d.ts +++ b/src/app/inventory/ItemIcon.m.scss.d.ts @@ -15,6 +15,7 @@ interface CssExports { 'hasAltIcon': string; 'highlightedObjective': string; 'inverted': string; + 'isArmor': string; 'legendary': string; 'masterwork': string; 'rare': string; diff --git a/src/app/inventory/ItemIcon.tsx b/src/app/inventory/ItemIcon.tsx index 78ea763038..f101f10879 100644 --- a/src/app/inventory/ItemIcon.tsx +++ b/src/app/inventory/ItemIcon.tsx @@ -116,11 +116,7 @@ export default function ItemIcon({ item, className }: { item: DimItem; className let foreground = (item.iconDef?.foreground ?? item.icon) || ''; let altIcon = ''; if (item.ornamentIconDef) { - if (item.bucket.inArmor) { - altIcon = item.ornamentIconDef.foreground; - } else { - foreground = item.ornamentIconDef.foreground; - } + altIcon = item.ornamentIconDef.foreground; } if (!animatedBackground && !altIcon) { @@ -184,10 +180,18 @@ export default function ItemIcon({ item, className }: { item: DimItem; className {foreground && (
+ )} + {altIcon && ( +
)} - {altIcon &&
} {masterworkGlow && (
)} diff --git a/src/locale/en.json b/src/locale/en.json index 4173a19cfc..6dbf1f5d8a 100644 --- a/src/locale/en.json +++ b/src/locale/en.json @@ -1242,7 +1242,7 @@ "MaxParallelCores": "Maximum cores for parallel tasks", "MaxParallelCoresExplanation": "Controls how many CPU cores DIM can use for intensive tasks like Loadout Optimizer and Loadout Analyzer. Higher values may improve performance but use more system resources.", "OrnamentDisplay": "Show Ornaments on item tiles", - "OrnamentDisplayExplanationDisabled": "Items will never display their ornaments", + "OrnamentDisplayExplanationDisabled": "Hovering or long-pressing armor will show its ornament", "OrnamentDisplayExplanationEnabled": "Hovering or long-pressing armor will hide its ornament", "OrnamentDisplayExplanationHide": "Hovering or long-pressing an item will hide its ornament", "OrnamentDisplayExplanationShow": "Hovering or long-pressing an item will show its ornament", From 7676c300f2b82245d7c2a30f1d77c66c31a7ea2d Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Fri, 2 Jan 2026 17:27:20 -0700 Subject: [PATCH 4/4] Update behavior so setting off = no hover behavior --- config/i18n.json | 2 +- src/app/inventory/ItemIcon.m.scss | 8 ++++---- src/locale/en.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/i18n.json b/config/i18n.json index c8e54d3c83..f5e93c8617 100644 --- a/config/i18n.json +++ b/config/i18n.json @@ -1259,7 +1259,7 @@ "MaxParallelCores": "Maximum cores for parallel tasks", "MaxParallelCoresExplanation": "Controls how many CPU cores DIM can use for intensive tasks like Loadout Optimizer and Loadout Analyzer. Higher values may improve performance but use more system resources.", "OrnamentDisplay": "Show Ornaments on item tiles", - "OrnamentDisplayExplanationDisabled": "Hovering or long-pressing armor will show its ornament", + "OrnamentDisplayExplanationDisabled": "Items will never display their ornaments", "OrnamentDisplayExplanationEnabled": "Hovering or long-pressing armor will hide its ornament", "OrnamentDisplayExplanationHide": "Hovering or long-pressing an item will hide its ornament", "OrnamentDisplayExplanationShow": "Hovering or long-pressing an item will show its ornament", diff --git a/src/app/inventory/ItemIcon.m.scss b/src/app/inventory/ItemIcon.m.scss index 1fb309d4ae..d4c9aee577 100644 --- a/src/app/inventory/ItemIcon.m.scss +++ b/src/app/inventory/ItemIcon.m.scss @@ -98,8 +98,8 @@ $commonBg: #366f42; } :global(.item):hover &.isArmor { - opacity: var(--ornament-display-opacity, 1); - content-visibility: var(--ornament-display-visibility, auto); + opacity: 1; + content-visibility: auto; } } @@ -115,8 +115,8 @@ $commonBg: #366f42; } :global(.item):hover &.isArmor { - opacity: calc(1 - var(--ornament-display-opacity, 1)); - content-visibility: var(--ornament-display-visibility-inverse, hidden); + opacity: 0; + content-visibility: hidden; } } diff --git a/src/locale/en.json b/src/locale/en.json index 6dbf1f5d8a..4173a19cfc 100644 --- a/src/locale/en.json +++ b/src/locale/en.json @@ -1242,7 +1242,7 @@ "MaxParallelCores": "Maximum cores for parallel tasks", "MaxParallelCoresExplanation": "Controls how many CPU cores DIM can use for intensive tasks like Loadout Optimizer and Loadout Analyzer. Higher values may improve performance but use more system resources.", "OrnamentDisplay": "Show Ornaments on item tiles", - "OrnamentDisplayExplanationDisabled": "Hovering or long-pressing armor will show its ornament", + "OrnamentDisplayExplanationDisabled": "Items will never display their ornaments", "OrnamentDisplayExplanationEnabled": "Hovering or long-pressing armor will hide its ornament", "OrnamentDisplayExplanationHide": "Hovering or long-pressing an item will hide its ornament", "OrnamentDisplayExplanationShow": "Hovering or long-pressing an item will show its ornament",