palettethief.com

Palette Thief — Changelog

Full version history · All changes, fixes, and additions

v3.0 Convenience current 2026-04-03
Summary: Rebuilt the app to be modular and to have more room for expansion in the future, this establishes a strong foundation for the Palette Thief Ecosystem for Libraries, AI Suggestions and Analysis, API, Smart Tools that work together using the same DNA. More uploads to platforms for exposure. Since the last update v3.0 is heavely focused on convenience,, expansion and foundation as a lot of bugs fixed both major and minor, finaly a Dark/White mode introduced, Undo/Redo is now in the game and let's you experiment with no fear by saving the last 40 actions, LOCK ALL the palettes and add even more, Export in HTML and see your full collection of palettes by choosing White Mode to make the site white or dark mode to make it dark, Your Palettes, Your Experiments!.
7New Features
7Impovements
14Bug Fixes
1New Rebuild
Changes
  • NEW
    Light / Dark Mode Added a full theme toggle in the top-right of the header. Click the moon/sun SVG icon to switch between dark and light mode. Preference is saved to localStorage and persists across sessions. Light mode uses an off-white base (`#f4f4f6`), true black for primary text, dark gray for secondary labels, and muted gray for supporting text to maintain visual hierarchy without a wall of pure black.
  • NEW
    Lock All / Unlock All New button in the palette header (between the score widget and Clear Palette). Locks every swatch in the current palette in one click. If all swatches are already locked, the button becomes "Unlock All" and reverses the state. Button reflects locked state visually.
  • NEW
    Undo / Redo Full undo/redo history with a 40-step stack. Undo and Redo buttons appear between the Extraction Settings and Tools panels. Every destructive operation pushes a snapshot — extraction, random generation, sort, shuffle, remove duplicates, lock all, variations. Keyboard shortcuts: `Ctrl+Z` to undo, `Ctrl+Y` or `Ctrl+Shift+Z` to redo.
  • NEW
    Expand All Tints / Collapse All Tints New full-width button at the bottom of the Tools panel. Expands the tint/shade strip on every swatch simultaneously. Click again to collapse all. Tint expanded state now persists through regeneration, sorting, locking, and any other palette operation — expanded tints stay open until you explicitly close them.
  • NEW
    Auto-Save Indicator A subtle pill indicator appears centered in the header every time the palette state is committed. Shows a green checkmark and "Auto-saved" text, fades out after 1.6 seconds. Confirms to the user that their palette is always persisted to history without any manual action.
  • NEW
    Gradient Copy Button A copy icon button sits inline next to the "Generate Gradient" button. Click it to copy the full CSS gradient string to clipboard. Confirms with a checkmark icon and a toast notification.
  • NEW
    Version Badge App version displayed as a silver gradient pill badge inline with the title in the header. Updates with each release.
  • IMP
    Theme-Aware Exports PNG Card and HTML Preview exports now respect the current theme at export time. In dark mode they export with dark backgrounds and light text as before. In light mode they export with light backgrounds (`#f4f4f6`) and dark text. Video export is theme-independent by design.
  • IMP
    Proper PWA / Store Files - `manifest.json` is now a proper standalone file instead of an inline base64 data URL. - `sw.js` is now a proper standalone service worker file instead of an inline blob. - The service worker now caches all JS and CSS assets on install, not just `index.html`.
  • IMP
    App Icons Replaced the inline SVG placeholder icon with the official Palette Thief fox icon at all required sizes: 16×16, 32×32, 48×48, 96×96, 192×192, 512×512, and a 512×512 maskable variant with safe-zone padding. PWA install prompt all use the icon.
  • IMP
    Panels Reordered Color + Variations panel moved above Gradient Maker in the left panel for a more logical workflow — color input first, gradient tools second.
  • IMP
    Intelligence Score Score number font size increased from 10px to 16px. The score widget now has additional margin separating it from the action buttons, pushing it visually toward the center of the header row.
  • IMP
    Shortcuts Hint Button The `? shortcuts` button in the bottom-right corner is now larger — increased padding and font size for easier tap and click targeting.
  • IMP
    Keyboard Shortcuts Modal Undo (`Ctrl+Z`) and Redo (`Ctrl+Y`) added to the Palette section of the shortcuts reference modal.
  • FIX
    Luminance Formula Inconsistency `score.js` was using a gamma approximation (`v/255 ** 2.2`) for luminance while `contrast.js` used the correct IEC 61966-2-1 piecewise formula. Both now use the correct formula so WCAG scores and intelligence scores are internally consistent.
  • FIX
    Design System Export — Missing Roles `design-system.js` could silently omit semantic role variables (e.g. `--color-background`, `--color-surface`) when the palette contained no dark or no bright colors. All 7 semantic roles now always get assigned via a fallback to the nearest available color.
  • FIX
    Color Namer — Duplicate Name Collisions When all prefix/base word combinations were exhausted, the fallback appended `index + 1` to an already-used name, producing duplicate names. The fallback now increments a suffix counter until a genuinely unique name is found.
  • FIX
    Lock-Merge Index Bug `_applyGeneratedPalette` had an off-by-one error in the lock-merge loop that caused one generated color to be silently dropped for each locked slot in the palette. Fixed — no more silent color loss when regenerating with locked swatches.
  • FIX
    PNG Card Font Reliability `downloadPngCard` now wraps canvas rendering in `document.fonts.ready` so Fira Code is guaranteed loaded before the canvas draws. Previously the font could silently fall back to system monospace.
  • FIX
    Video Cards Style — `roundRect` Polyfill The Cards animation style used `ctx.roundRect()` directly, which is not available in Chrome < 99, Firefox < 112, or Safari < 15.4. A `canvasRoundRect()` polyfill now handles all browsers.
  • FIX
    PWA — Assets Not Cached The previous service worker only cached `index.html` on install. All script files and the stylesheet would 404 on an offline reload despite the app appearing to be a PWA. The service worker now caches all JS files and the CSS on install.
  • FIX
    `hslToRgbArr` Duplication The function was defined identically in both `app.js` and `sidebar.js`. Moved to `PT.utils.hslToRgbArr` as a single shared implementation.
  • FIX
    `renderPalette` Double `updateGradientSelectors` Call The gradient selectors were being rebuilt twice on every render. Redundant call removed.
  • FIX
    `removeDuplicates` — Hex-Exact Only Previously used strict hex string equality, missing perceptually identical colors that differed by one channel value. Now uses Euclidean RGB distance with the same threshold as the extraction engine.
  • FIX
    `btnRegenerate` Enabled on Library Load Loading a palette from the library enabled the Regenerate button even when there was no image loaded and no random preset selected, leading to a confusing "Load an image first" toast. Regenerate is now correctly disabled when there is nothing to regenerate from.
  • FIX
    Light Mode — Invisible Text Multiple panels had text that became invisible in light mode due to hardcoded rgba white colors in inline styles and CSS rules. Fixed across: extraction settings checkboxes and labels, palette size select, gradient maker labels and selects, score widget "Intelligence" label, score grade, harmony badge, score breakdown tooltip, video export drawer labels and buttons, export dropdown category labels, library action buttons.
  • FIX
    Theme Toggle Icon Color The SVG moon/sun icons use `currentColor`. The toggle button previously inherited a dark color in dark mode making the icon invisible against the dark header. Explicit `color: #c8c8d0` set on `.theme-toggle` in dark mode.
  • FIX
    Export Dropdown Hover — Light Mode The hover background on export items was `rgba(0,0,0,0.05)` — effectively invisible on a white background. Replaced with solid `#d6d6e2` for standard items and appropriately tinted solid backgrounds for the colored items (Figma, Tailwind, Design System, Video).

v2.6 PWA previous 2026-03-15
Summary: v2.6 Takes Palette Thief from your browser straight to your Desktop environtment in two steps, click the 3 Dots in your browser, Install it as Application and you're DONE. Your favorite tool now stays with you and its completely bug free and even more stable than ever.
2Bugs Fixed
1New Feature
1Code Cleanup
Changes
  • NEW
    PWA — Install as Desktop app and use.
  • IMP
    Removed empty rulesets and did a code cleanup. the app under the hood now feels like it went to the Spa. Mantain becomes easier.
  • FIX
    Locked colors + Random Palette Generator — Locked swatches stay when you use Pastel/Neon/Mono/Earthy/Ocean or spacebar; only unlocked slots get new colors.
  • FIX
    Score breakdown on mobile — Tooltip opens to the right on small screens so it doesn’t go off the left edge.

v2.5 Stable Ground previous 2026-03-06
Summary: The most important update since v2.0 — focused entirely on stability and reliability. v2.5 fixes all mobile and tablet breakage, rebuilds the export panel as a centered modal, hardens clipboard copy across all browsers, introduces a proper mobile layout, adds library export/import so palettes survive browser switches, and upgrades storage to localStorage-primary with silent IndexedDB overflow. The tool now works correctly on PC, tablet, and mobile.
11Bugs Fixed
3New Features
4Improvements
1Removed
Changes
  • FIX
    Mobile and tablet completely broken — The viewport meta tag was missing. Without it every mobile browser renders at ~980px desktop width and scales it down. One missing tag was the root cause of all mobile issues.
  • FIX
    Export panel hidden behind palette on mobile — Replaced the absolute-positioned dropdown with a centered modal overlay. Works on every screen size.
  • FIX
    Copy not working on mobile and file:// protocol — Clipboard API silently failed. Now always falls back to execCommand textarea method.
  • FIX
    Video export window closing automatically — Drawer was auto-closing 1.2s after export. Now stays open until user closes it manually with ✕.
  • FIX
    Video export hex codes broken in all styles — Hex text was rotated, too small, or overflowing. Removed from all 4 styles entirely.
  • FIX
    Clear Palette disabled after loading from library — Clear, Save, and Regenerate now all enable on library load.
  • FIX
    Fira Code font not loading — Fixed Google Fonts import.
  • FIX
    Video export crash on Safari and Firefox — Added VP9 → VP8 → default WebM fallback chain.
  • FIX
    PNG export hex codes too small — Completely redesigned: larger swatches, bold 16px labels, 4-column layout.
  • FIX
    Tints/shades click mutating the palette — Now only copies HEX to clipboard, never adds to palette.
  • FIX
    Random generator ignoring locked colors — Locked colors now preserved across all random generation.
  • NEW
    Full mobile layout — Below 640px: 2-column palette grid, sticky action bar, full-screen color sidebar, palette shown first.
  • NEW
    Library Export / Import (JSON) — ⬇ Export saves library as JSON. ⬆ Import loads it back. Palettes can now move between browsers and devices.
  • NEW
    Single color export in Detail sidebar — CSS variable line + Copy All Formats button (HEX, RGB, HSL, CMYK, LCH, name).
  • IMP
    Storage: localStorage primary + IndexedDB overflow — Existing palettes are safe. localStorage stays primary. Overflows silently to IndexedDB when full.
  • IMP
    Video export ✕ Close button — Visible close button added. Clicking dark background also closes. No more auto-close.
  • IMP
    Video export — clean visuals — All 4 styles (Sweep, Bars, Cards, Wave) now show pure color, no text overlays.
  • IMP
    Export panel now a centered modal — Nothing can hide behind the palette or go off screen on any device.
  • REM
    Hex codes in video export — Removed from all 4 styles. Were broken across the board and serve no practical purpose.

v2.4 Color Deep Dive previous 2026-02-26
Summary: Two major color exploration features. The Color Detail Sidebar — a click-to-open panel showing every color space value, WCAG scores, and tints & shades strip. And the Color + Variations Generator — a manual color picker with five variation modes.
2New Features
6Color Spaces
5Variation Modes
9Tint/Shade Steps
Changes
  • NEW
    Color Detail Sidebar — Click any swatch to open a full breakdown: HEX, RGB, HSL, CMYK, LCH, oklch(). All click-to-copy. WCAG contrast against white/black with AA/AAA/Fail ratings. 9-cell tints & shades strip. Closes with ✕ or Esc.
  • NEW
    Color + Variations Generator — Native color wheel synced to HEX input. Five modes: All, Tints, Shades, Analogous, Complement. Live preview strip. Add to Palette button.

v2.3 Show & Record previous 2026-02-24
Summary: Two visual presentation features: Live Preview — a fullscreen animated stripe visualisation — and Video Export, a canvas-based animation renderer with 4 styles and 3 resolutions that exports WebM entirely in the browser.
2New Features
4Video Styles
3Resolutions
0Dependencies
Changes
  • NEW
    Live Preview overlay — Fullscreen animated vertical stripes. HEX at bottom, hover to expand and show color name. Keyboard shortcut L. Closes with ✕ or Esc.
  • NEW
    Video Export — WebM — Four styles: Sweep, Bars, Cards, Wave. Three resolutions: 480p, 720p, 1080p. Uses MediaRecorder + canvas. No server. Keyboard shortcut V.

v2.2 Generate & Score previous 2026-02-22
Summary: The Random Palette Generator with 5 themed presets and parametric sliders, plus the Intelligence Score widget — a circular ring gauge scoring every palette on Contrast, Harmony, and Range in real time.
2New Features
5Presets
3Score Dimensions
5Harmony Types
Changes
  • NEW
    Random Palette Generator — 5 presets: Pastel, Neon, Mono, Earthy, Ocean. Three sliders: Spread, Vibrancy, Chaos. Respects palette size and locked colors. Space to re-run last preset.
  • NEW
    Intelligence Score widget — Ring gauge scoring 0–100 across Contrast, Range, and Harmony. Color-coded green/amber/red. Tooltip shows exact breakdown. Badge shows harmony type.

v2.1 Palette Thief Ultimate previous 2026-02-21
Summary: Quality-of-life update: core bug fixes, new professional exports, improved color naming engine, and full visual rebrand to neutral dark mode.
2Bugs Fixed
2New Exports
1Removed
6Improvements
Changes
  • FIX
    Locked color regeneration underflow — Regeneration could produce fewer swatches than selected size. Fixed by extracting paletteSize + lockedCount candidates.
  • FIX
    Duplicate color names in large palettes — Fixed with resetUsedNames() tracker and collision-aware retry loop.
  • NEW
    Figma Tokens export — .tokens.json in W3C Design Tokens format. Compatible with Figma, Token Studio, Style Dictionary.
  • NEW
    Tailwind Config export — Ready-to-paste tailwind.config.js with colors under theme.extend.colors.
  • REM
    ASE export removed — Was a plain text file renamed .ase.txt. Not a real Adobe Swatch Exchange binary.
  • IMP
    Color namer expanded — 24 words per category. New categories: Warm, Cool, Muted. 576 unique combos before collision.
  • IMP
    CSS Vars export — Now includes color name as comment per line.
  • IMP
    Library load resets name tracker — Loaded palettes don't inherit naming state from previous extraction.
  • DES
    Rebranded to Palette Thief Ultimate — Title updated.
  • DES
    Full dark mode retheme — Blue-tinted backgrounds replaced with neutral near-blacks. Gold accent hits harder.

v2.0 Palette Thief 2.0 previous 2026-02-12
Summary: Full rebuild. Median cut extraction engine, WCAG contrast analysis, color naming, multi-format export, palette library. Single-file, zero-dependency, fully offline.
5Core Features
8Export Formats
3Tools
0Dependencies
Changes
  • NEW
    Median cut quantization — Replaced basic pixel sampling for accurate color extraction.
  • NEW
    Palette size control — 4 / 6 / 8 / 12 / 16 / 24 colors.
  • NEW
    Extraction filters — Ignore dark pixels, ignore bright pixels, boost saturation.
  • NEW
    Lock colors on regenerate — Swatches can be locked to persist through re-extractions.
  • NEW
    WCAG contrast ratio display — Every swatch shows contrast rating with AA/AAA/Fail.
  • NEW
    Procedural color naming — 5 thematic categories with prefix + base word generation.
  • NEW
    Exports: CSS Variables, JSON, TXT, GPL, HTML Preview, PNG Card, Copy HEX
  • NEW
    Palette Library — Save, load, rename, delete palettes via localStorage.
  • NEW
    Tools: Sort by Hue / Saturation / Brightness, Shuffle, Remove Duplicates, Gradient Maker
  • NEW
    Fully offline — Zero network requests, zero tracking, zero dependencies.

v1.0 Palette Thief initial 2026-01
Summary: Initial release. Basic color extraction from images, HEX display, and clipboard copy.
Changes
  • NEW
    Basic pixel sampling color extraction
  • NEW
    HEX code display with click-to-copy
  • NEW
    Image upload via file input
  • NEW
    Single-file HTML architecture