fix: f11 fullscreen was completely broken on linux/windows; feat: butterchurn preset expansion + randomized preset arrows (#2280)

* added a ton of visualizers

* added f11 toggle functionality, f11 makes visualizer cover entire screen when pressed while visualizer is maximized

Bundling the additional butterchurn preset packs (extra, md1) pushed
renderer build memory past the default ~2GB Node heap on the macOS CI
runner, causing OOM crashes during the build.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jaxi
2026-07-30 23:49:24 -04:00
committed by GitHub
parent 2d45968b4a
commit e402bd5424
8 changed files with 159 additions and 21 deletions
@@ -5,7 +5,10 @@ import { useTranslation } from 'react-i18next';
import styles from './visualizer-settings-form.module.css';
import i18n from '/@/i18n/i18n';
import { getButterchurnPresetOptions } from '/@/renderer/features/visualizer/components/butternchurn/visualizer';
import {
getButterchurnPresetOptions,
loadAllButterchurnPresets,
} from '/@/renderer/features/visualizer/components/butternchurn/visualizer';
import { useSettingsStoreActions, useVisualizerSettings } from '/@/renderer/store/settings.store';
import { ActionIcon } from '/@/shared/components/action-icon/action-icon';
import { Button } from '/@/shared/components/button/button';
@@ -32,8 +35,8 @@ let butterchurnPresetOptionsCache: ButterchurnPresetOption[] | null = null;
const loadButterchurnPresetOptions = async (): Promise<ButterchurnPresetOption[]> => {
if (butterchurnPresetOptionsCache) return butterchurnPresetOptionsCache;
const mod = await import('butterchurn-presets');
const presets = getButterchurnPresetOptions((mod as any).default ?? mod);
const mergedPresets = await loadAllButterchurnPresets();
const presets = getButterchurnPresetOptions(mergedPresets);
const presetNames = Object.keys(presets);
butterchurnPresetOptionsCache = presetNames.map((presetName) => ({
@@ -2186,6 +2189,7 @@ const ButterChurnCycleSettings = () => {
}
label={t('visualizer.selectedPresets')}
onChange={(values) => updateProperty('selectedPresets', values)}
searchable
value={visualizer.butterchurn.selectedPresets}
/>
<MultiSelect
@@ -2193,6 +2197,7 @@ const ButterChurnCycleSettings = () => {
disabled={!visualizer.butterchurn.cyclePresets}
label={t('visualizer.ignoredPresets')}
onChange={(values) => updateProperty('ignoredPresets', values)}
searchable
value={visualizer.butterchurn.ignoredPresets}
/>