diff --git a/src/components/builder/components/CommandPalette.tsx b/src/components/builder/components/CommandPalette.tsx
index 92790298..f0b275f4 100644
--- a/src/components/builder/components/CommandPalette.tsx
+++ b/src/components/builder/components/CommandPalette.tsx
@@ -1,6 +1,10 @@
// src/components/builder/components/CommandPalette.tsx
import React, { useState, useEffect, useRef, useCallback, memo } from 'react';
import { Command, Search, X } from 'lucide-react';
+import {
+ loadRecentCommandIds,
+ saveRecentCommandIds,
+} from '../systems/storage/builderStorage';
export interface PaletteCommand {
id: string;
@@ -61,22 +65,13 @@ const CommandPalette: React.FC
+ {title} +
+ ++ Selected: {selectedTitle || `TMDB #${config.tmdbId}`} +
+ )} + + {error && ( ++ {error} +
+ )} ++ Walkthrough +
++ {stageCopy.subtitle} +
++ Progress +
++ {currentStep} / {totalSteps} +
++ {STAGE_COPY[flowStage].label} +
++ {stageCopy.label} +
++ Poster source +
+ {renderSegmented(config.source, [...SOURCE_OPTIONS], (value) => + setConfig((prev) => ({ ...prev, source: value as PosterConfig['source'] })) + )} ++ Poster choice +
+ {renderSegmented(config.ptype || 'auto', PTYPE_OPTIONS, (value) => + setConfig((prev) => ({ ...prev, ptype: value })) + )} ++ Community presets live in the examples gallery. This placeholder follows the diagram while + still giving you the redirect path. +
+ } + onClick={() => window.location.assign('/examples')} + > + Go to /examples + ++ Logo source +
+ {renderSegmented(String(config.logoSource ?? 'auto'), LOGO_SOURCE_OPTIONS, (value) => + setConfig((prev) => ({ + ...prev, + logoSource: value === 'auto' ? null : (value as PosterConfig['logoSource']), + })) + )} ++ Layout direction +
+ {renderSegmented(config.layout, [ + { id: 'row', label: 'Row' }, + { id: 'col', label: 'Column' }, + { id: 'custom', label: 'Custom' }, + ], (value) => + setConfig((prev) => ({ ...prev, layout: value as PosterConfig['layout'] })) + )} ++ Preset position +
+ {renderSegmented(config.preset, PRESET_OPTIONS, (value) => + setConfig((prev) => ({ ...prev, preset: value as PresetType, layout: 'row' })) + )} ++ Final enlarged preview +
++ Export now or move the work into simple or advanced mode. +
++ Override the default API keys used to fetch ratings and posters. Stored in a browser cookie. +
+ + {[ + { key: 'tmdb' as const, label: 'TMDB Key', show: showTmdb, setShow: setShowTmdb }, + { + key: 'fanart' as const, + label: 'Fanart.tv Key', + show: showFanart, + setShow: setShowFanart, + }, + ].map(({ key, label, show, setShow }) => ( ++ {label} +
++ {fetchedData.title || ( + + Untitled + + )} +
++ Search Media +
++ {item.title || item.name} +
++ Media Type +
++ IMDb ID +
+ { + const val = e.target.value.trim(); + if (val.startsWith('tt')) { + setConfig((prev) => ({ ...prev, imdbId: val })); + } else { + setConfig((prev) => ({ ...prev, tmdbId: val, imdbId: undefined })); + } + }} + className="w-full h-9 px-2 rounded-lg mono-font text-center focus:outline-none transition-colors" + style={{ + background: 'rgba(255,255,255,0.04)', + border: '1px solid rgba(255,255,255,0.1)', + fontSize: 11, + color: 'var(--film-pale)', + }} + onMouseEnter={(e) => { + (e.currentTarget as HTMLElement).style.borderColor = 'rgba(196,124,46,0.4)'; + }} + onMouseLeave={(e) => { + if (document.activeElement !== e.currentTarget) { + (e.currentTarget as HTMLElement).style.borderColor = 'rgba(255,255,255,0.1)'; + } + }} + onFocus={(e) => { + (e.currentTarget as HTMLElement).style.borderColor = 'rgba(196,124,46,0.4)'; + }} + onBlur={(e) => { + (e.currentTarget as HTMLElement).style.borderColor = 'rgba(255,255,255,0.1)'; + }} + /> ++ Poster Source +
++ Poster Type +
+
+
+ Show/hide all layers with badge behavior +
++ Logo Overlay +
++ {config.logo + ? 'Enabled · Customizable in the Badges/Logo tab' + : 'Transparent title art overlay'} +
++ Poster / Canvas +
++ 500×750 canvas · central controls for poster effects, overlays, and export format. +
++ No active badges +
++ Enable some from the list below +
++ Position preset +
++ Flow direction +
++ Drag the logo on the canvas to reposition it. +
+ ++ Nothing selected +
++ Click a layer on the canvas to edit +
++ {multi ? `${selectionCount} items selected` : selectedBadgeLabel} +
++ {multi ? 'Changes apply to all selected layers' : 'Layer-specific configuration'} +
+posterium_apikeys_v1).posterium_apikeys_v2).