Skip to content

Releases: DoomSalat/Cursor-Palette

v2.2.0

Choose a tag to compare

@DoomSalat DoomSalat released this 24 Jul 06:29

Animated cursor editing in the Paint editor - a .cur can now be drawn into a full animated .ani cursor without leaving the editor:

  • Frame timeline: add/remove frames, scrub between them, set a per-frame duration, and play/stop a live preview (up to 60 frames, 17ms minimum per frame per the .ani format's own limit)
  • Drop a multi-frame GIF straight onto the timeline - every frame becomes a timeline frame, with disposal and per-frame delay handled automatically
  • Export the finished animation as .gif or a real .ani, next to the existing .png export
  • A "Use for all" checkbox applies one duration to every frame at once
  • The background reference panel gained matching controls: multi-frame navigation tied to the timeline (or independent, with prev/next/reset), and a "hide main image" toggle to see the reference alone
  • PresetEditor no longer blocks .ani from the Paint editor flow - opening one seeds the full timeline, saving writes back .ani when animated or .cur otherwise

Editor polish

  • BgRef and Move tools can now be dragged directly on the canvas, not just via the arrow pad
  • Bilinear filtering toggle for the BgRef reference image (off by default)
  • A dedicated canvas drop zone in the Paint editor, and the import button renamed to "Load file"
  • Preset editor now auto-converts dropped or browsed images straight into cursors
  • Block empty/transparent cursors - saving or importing a fully transparent cursor (which would make the mouse pointer invisible) is now blocked with a clear warning; folder/archive imports skip empty files and report how many were skipped

Download system cursors - right-click the default (system) tile for a context menu to download the current Windows cursor set, either as PNG+GIF images or as the original .cur/.ani files (falls back to bundled Crosshair/IBeam cursors for roles Windows doesn't store separately)

Export for Linux - a new "▾" next to the ZIP archive button (in both the Export window and the preset editor's own download button) offers:

  • Xcursor theme - a real conversion into the binary Xcursor format (index.theme + a cursors folder), with each Windows cursor role mapped to the matching Xcursor/CSS names (left_ptr, text, ns-resize, pointer, etc.) so it's ready to drop into ~/.icons
  • Raw cursor files - the plain .cur/.ani files in folders, with no extra metadata
  • Download README - saves just the README.txt on its own (app link and install instructions), without exporting any preset
  • The Xcursor theme and raw cursor files - along with the existing ZIP archive, or either as an unzipped folder - can be dragged straight back into this app; the Import button also gained a folder picker for the same purpose

Unified export manifest - ZIP archives now carry a single cursor-palette.json manifest with full metadata (roles, locked roles, cursor size, groups) and a README.txt with install instructions, so a ZIP archive can be re-imported just like a .cursorpalette bundle

Quick single-preset download (gallery tile, preset editor's own download button) stays a plain folder as before, now paired with a lightweight cursor-palette-preset.json (name, cursor size, locked roles) and its own README.txt, so it can be dragged back into the app just like the other Linux formats

In-app help moved to Markdown files - the ⓘ help text for every window is now stored as Markdown instead of XAML string resources, fixing a language-switching bug and unifying InfoBox card styling

  • Fix: downloading a single cursor from a preset slot now opens File Explorer with the new file selected, matching every other download/export action in the app

v2.1.0

Choose a tag to compare

@DoomSalat DoomSalat released this 23 Jul 00:16

Preset groups on the board - Ctrl+click multiple tiles, then pick a color and name at the bottom of the board to create a group:

  • click a group tile to collapse/expand it (collapsed shows tiles stacked, expanded shows them side by side)
  • right-click a group - edit, "consolidate members", ungroup, or delete
  • right-click empty board space - "Create group"
  • right-click a preset - "Add to group" submenu; dragging a tile onto a group attaches it
  • board order is preserved and survives restarts

Groups in export/import - export window shows colored group tiles; a group is only included in the .cursorpalette file if all its presets are selected, and restored automatically on import

Painting in the Paint editor - Brush, Eraser and Fill tools instead of "coming soon" placeholders:

  • Brush/Eraser paint pixels while dragging; Shift+click draws a straight line (Shift+Ctrl snaps to 45°); Fill flood-fills a same-colored area
  • Color picker toggles between a wheel and a Photoshop-style square, brightness/alpha sliders, hex code copy/paste
  • Eyedropper samples a color from anywhere on screen, not just the canvas
  • Undo/Redo (Ctrl+Z / Ctrl+Y) covers painting, erasing, filling, moving the sprite, resizing the canvas, and importing an image
  • The Hotspot tool inside the Paint editor is now fully functional instead of a placeholder
  • Last tool, zoom, pan, color, and picker mode are remembered between sessions
  • Hotkeys: V/H/B/E/G/C/O

Background reference (BgRef) - a semi-transparent tracing overlay behind the sprite, with opacity/margin/offset controls; never saved into the cursor

Import an image onto the canvas - "Load image" button or drag-and-drop .png/.jpg/.bmp/.gif/.cur/.ani, with Over (composite) or Replace (overwrite) mode

  • The Paint editor button is now available on empty preset slots too
  • Toast notifications for "Consolidate members", "Ungroup", and "Delete group"
  • Fix: drag-reorder drop indicator Y-position and group hover outline positioning
  • Fix: submenus weren't rendering in custom context menus (dark/light themes)
  • Fix: drop-zone highlight not clearing when the cursor moved between the main window and a modal window on top of it
  • Fix: canvas flicker while painting; fix for 45° line-angle snapping occasionally double-stepping a pixel

v2.0.2

Choose a tag to compare

@DoomSalat DoomSalat released this 22 Jul 08:10
  • Infobox image icons: Replaced emoji icons (export, import, lock, link, brush, eraser, download) with actual PNG image resources via {img:ResourceName} tokens
  • Inline icon support: Multiple icons in a single line (e.g. brush / eraser) now render correctly via InlineUIContainer
  • Text color fix: Icon rows now match the surrounding text color — gray (BrushTextDim) in section cards, white (BrushText) in standalone lines and tips cards
  • Open-folder toggle: Added a toggle button with folder icon in the bottom bar; blue = open Downloads folder after export/download, gray = disabled
  • ExplorerService: New service that reuses existing Explorer windows and selects the exported file, instead of always opening a new window
  • All Explorer-open calls (export, PNG save, update download) are now guarded by the OpenFolderAfterDownload setting

v2.0.1

Choose a tag to compare

@DoomSalat DoomSalat released this 22 Jul 06:35

Fixed

  • Canvas tool resize (drag handles, and the "Canvas size" dialog's anchor picker): growing the canvas from the left/top edge visually always rendered as growth down-right, even though the underlying pixel data was already correct — the viewport wasn't panning to compensate. Now the canvas visually extends toward whichever edge/corner you actually drag or anchor toward. Cancelling an in-progress resize (switching tools without hitting Apply) also restores the prior view position instead of leaving it scrolled oddly.
  • Resize corner handles rendered as blobby, inconsistent shapes at typical zoom levels — their border thickness wasn't scaling with zoom the way their size already did, so the border overwhelmed the handle. They're now clean, consistent white/accent squares at any zoom.
  • Import picker: entries from a plain ZIP archive (which don't carry a stored cursor size) showed "0 px" on their tile — now shown as the actual size that gets applied on import.
  • Cursor download naming was inconsistent across the app — single-slot download and whole-preset download (preset editor and main gallery context menu) only used the role name, while Paint/Hotspot PNG export already used preset + role. Unified everywhere.
  • In-app help text: Paint editor's help still described the pre-rework single-tool editor; preset editor's help was missing the Paint-editor slot button and had a stale download-naming description. German/Japanese/Chinese preset-editor help text was missing the lock/download/link bullets that other languages already had.

Changed

  • Resize edge handles are now draggable along their entire length instead of only a small handle centered on each edge.
  • Hotspot editor now follows the main window's UI scale instead of having its own separate zoom controls; its "download as PNG" button was removed (redundant with the app-wide download).
  • Import picker's "ignore individual sizes" checkbox renamed to "Uniform cursor size" (all 6 languages).

Added

  • Import tiles now show each preset's cursor size below its role count, live-updating with the uniform-size toggle/slider.

v2.0.0

Choose a tag to compare

@DoomSalat DoomSalat released this 22 Jul 05:30

Added

  • Paint editor — a new editor for a cursor's artwork, opened from a
    slot in the preset editor:
    • Move tool — drag the sprite directly, or nudge it with an
      arrow/snap-to-edge pad.
    • Hand tool — pan the canvas by holding the left mouse button.
      The middle mouse button pans from any tool, at any time.
    • Canvas tool — resize the canvas by dragging handles on its
      edges/corners, with a live preview; an Apply button confirms the new
      size, and switching to another tool without clicking Apply reverts
      it.
    • A "Canvas size" dialog for numeric width/height entry, size presets,
      and a 3×3 anchor grid.
    • Zooming (mouse wheel + Ctrl, or +/- buttons) anchored to the
      cursor/viewport center, a sprite-bounds toggle, independent editor UI
      zoom, and a resizable editor window.
    • Export to PNG, named <preset name> <cursor role> <width>x<height>.png
      (e.g. My preset Arrow 32x32.png).
    • Brush and Eraser tools are present in the toolbar as placeholders for
      upcoming pixel-editing features; they aren't functional yet.
  • Drag-and-drop preset reordering on the main gallery — drag a tile to
    reorder presets, with a translucent ghost tile following the cursor and
    a blue insertion indicator showing where it'll land. Order is saved and
    persists across restarts.
  • The preset context menu gained inline rename, move left/right,
    and download to the Downloads folder (previously it only offered
    Edit and Delete).
  • Export presets as a full-fidelity .cursorpalette bundle (roles,
    locks, and cursor size preserved; roles borrowed from other presets are
    copied in so the bundle is self-contained) or as a plain ZIP of the raw
    cursor files, picked from a tile-grid selector. Both save to Downloads
    and reveal themselves in Explorer. The export dialog also has an
    optional custom file name field.
  • Import presets from a .cursorpalette bundle or a .zip/.rar/
    .7z archive, via a file dialog or by dropping onto the main window,
    with an optional "override size" toggle to apply one uniform cursor size
    to everything being imported. Packages created by a newer, incompatible
    app version are detected and rejected with a clear message.

Changed

  • The update-check footer now shows a "checking version" state while it
    runs, a checkmark on the up-to-date label, and lets you click that label
    to re-check manually.

Fixed

  • The toast notification's slide-in animation never played, because its
    Storyboard targeted a TranslateTransform that was never attached to
    the toast's RenderTransform.
  • Long bullet lines in the in-app help (ⓘ) windows were clipped instead of
    wrapping to a new line.

v1.2.1

Choose a tag to compare

@DoomSalat DoomSalat released this 21 Jul 10:31

Bug Fixes

  • Fixed invisible hotspot arrows - arrow icons in the pivot point quick-set pad were white-on-white in light theme; now uses OpacityMask with theme-aware Brush.Text fill, visible in both light and dark themes
  • Fixed clipped arrow icons - buttons in the 3×3 pad had default padding that cropped the 20px icons; added Padding="0" to all preset buttons
  • Fixed app not closing - process lingered after closing the window; added ShutdownMode="OnMainWindowClose" to ensure clean exit
  • Fixed update window height - increased to fit buttons properly

Improvements

  • New center icon - the center button in the pivot point pad now uses a dedicated crosshair icon (CenterIcon26.png) instead of a text bullet character
  • Updated help text - info box for pivot point editor updated in all 6 languages to reflect the new crosshair icon; added update indicator and info button descriptions to main help text; replaced 'Pick from existing' with puzzle icon in editor help; removed empty tiles line from role picker help

Update Flow

  • Manual download improvements - window closes immediately after clicking download, download runs in background, toast notification appears on main window
  • Download started toast - added notification when update download begins

v1.2.0

Choose a tag to compare

@DoomSalat DoomSalat released this 21 Jul 09:27

New

  • Custom preset builder - mix and match cursor roles from different presets into a new one. A visual preset picker shows previews so you can borrow exactly the roles you want.
  • Role locking in the preset editor - pin slots you don't want accidentally overwritten. Lock state persists across sessions.
  • Download cursors and presets straight from the UI - grab an individual cursor file or export an entire preset's files to your Downloads folder.
  • Update checker - on launch, the app quietly checks GitHub for a new release. A spinner shows it's looking, then a blue button appears if an update is available (or a subtle "Up to date" label if not). Click it to open the update dialog with two options:
  • Auto update - downloads the new .exe, swaps it in via a temporary script, and relaunches the app. No manual steps.
  • Manual download - saves the .exe to your Downloads folder and opens Explorer to show it.
  • Toast notifications - a brief popup confirms when a new version is found and when a manual download finishes.
  • Per-window text zoom in info/help windows - each window remembers its own zoom level independently.

Fixes

  • GitHub icon recolored for better visibility in both themes.

v1.1.1

Choose a tag to compare

@DoomSalat DoomSalat released this 20 Jul 20:35

New

  • Import presets straight from .zip/.rar/.7z archives - drop one onto the main window or onto the "Choose folder" area in the preset editor, exactly like a loose folder. The preset name is picked up automatically from the folder/archive name.
  • A dashed outline now highlights exactly where the file, folder, or archive you're dragging can be dropped, as soon as you drag it in.
  • A loading overlay appears while a cursor or preset is being applied, so the brief system-wide apply no longer looks like the app froze.

Fixes

  • Fixed the mouse cursor getting stuck in a "still dragging" state after dropping files onto the main window.
  • Fixed double-click (to edit a preset) breaking after the loading overlay was introduced.
  • Cursor files named "Location Select" and "Diagonal Resize 1/2" are now auto-matched to their roles on import.

v1.1.0

Choose a tag to compare

@DoomSalat DoomSalat released this 20 Jul 18:53

Highlights

  • Pivot point editor — drag a marker on an enlarged preview to set exactly where clicks register for any cursor, or snap it to a corner, edge, or center with the new 3×3 quick-set pad (it lights up when the current position matches a preset). Works for both .cur and every frame of a .ani.
  • 6 languages — Russian, English, Simplified Chinese, Japanese, Spanish, German. Picks up your Windows display language automatically on first launch, remembers your choice after.
  • Animated .ani previews — busy/working cursors now play their full animation in the gallery and editor instead of showing a static first frame.
  • Smarter preset editor — empty role slots show the actual Windows default cursor (dimmed, with an "auto" badge) instead of a blank icon; drag a folder straight onto the editor to auto-import cursors by filename, no dialog needed.

New

  • Pivot/hotspot editor (.cur and .ani, drag-to-set + 3×3 quick-set pad with live highlight)
  • Blue dot on each slot's preview showing its current hotspot
  • Folder drag-and-drop inside the preset editor (was file-dialog only)
  • Light/dark theme toggle, follows system theme on first launch
  • Interface zoom and gallery grid-size sliders, independent of each other
  • Cursor size is now per-preset with a highlight on "Apply" whenever the slider drifts from what's actually applied
  • Fixed
  • Role names in the editor showed raw resource keys (S.Role.Role.Arrow) instead of translated text
  • "Browse" button sat off-center in empty slots
  • Bundled default cursors for roles Windows has no file for (Crosshair/IBeam) weren't included in the single-file publish output

Polish

  • Custom-styled context menus and scrollbars (previously unreadable system defaults)
  • "Remove role" button fills solid red on hover and sits with breathing room from the other buttons
  • Sliders shrink with the window instead of getting clipped, down to a workable minimum

v1.0.0

v1.0.0 Pre-release
Pre-release

Choose a tag to compare

@DoomSalat DoomSalat released this 20 Jul 07:29

Simple cursor pallet