Beta - Early access - we'd love your feedback! Become a beta tester →

Changelog

Every shipping release of Needlework Studio, what was added, what changed, what was fixed. This page is generated automatically from the project's CHANGELOG.md when a new version is tagged. Want the latest build? Head to Downloads. Curious who's making this? See About.

0.13.0

June 10, 2026

Added

  • Stitch-over reference images: import any cross-stitch PDF chart as a reference layer to stitch over. Charts that could not be read as a stitch grid (image-only, scanned, or photo charts) now arrive on a correctly sized canvas with the chart laid over the grid instead of failing, and charts with a readable thread list keep it, including bead palettes.
  • Line up with grid: imported chart pages arrive pre-aligned when the printed grid can be detected, with a one-button re-align and a two-click 10x10 box fallback when it cannot. Pages can be dragged into place (including by parts hanging off the canvas), fine-tuned with scale and rotation sliders, and multi-page charts tile side by side or stack to match the chart's shape.
  • A first-open banner on freshly imported reference charts walks you through lining the chart up before stitching.
  • Some single-page chart PDFs that previously failed to import now come in as a full editable pattern with the real grid and thread list.
  • Save a chart color from a brand without a built-in catalog as a custom thread, so it can be painted with and used in blends. (Full Version)
  • The editor's floating tool panels can be dragged out of the way by their grip bar.

Fixed

  • Dragging the trace image or a reference page now follows the mouse exactly at every zoom level.
  • The W key works again as a draw-tool shortcut.
  • PDFs with no chart pages (covers, floss lists) are rejected with a clear message instead of importing as a blank canvas.

Security

  • Hardened update signature verification on Windows, conflict handling for deletes synced between devices, file permissions on server installations, and several input-validation paths.

0.12.1

June 9, 2026

Added

  • Image to stitches: a Full Version editor tool that turns part of a photo into stitches in place. Pick the Image tool, drag a box on the grid, and the selected area of your image is converted to a movable block of stitches you can position and drop with a single tap. One undo removes the whole block, and an optional "use my colors" toggle keeps the conversion to the threads already in your pattern.

Fixed

  • On phones, the editor tool panels (image, trace, confetti, select, shape, eraser, replace) now open above the bottom toolbar instead of off the bottom of the screen, and the text panel stays above the on-screen keyboard. Opening the More tray no longer leaves a panel half-covered behind it.
  • Linen and evenweave fabrics (25, 28, 32 count) are now measured over 2 threads everywhere (materials calculator, image converter, tablet calculator, and skein math), matching how stitchers actually work them, so sizes and thread estimates are no longer doubled. The calculator's inches mode and the stitches/inches toggle were corrected to match.
  • LAN sharing to a phone is more reliable: pairing links opened inside an in-app browser (such as a QR scanner) now steer you to a real browser so the pairing cookie lands in the right place, and a self-signed certificate can no longer pin your local address to HTTPS-only.
  • Opening a pattern no longer shows a "Viewing offline" banner when you are actually online. A single dropped request on a flaky connection used to send the app straight to its saved offline copy; it now retries quietly first, so the banner appears only when you are genuinely offline.

0.12.0

June 6, 2026

Changed

  • Big refresh of the phone and tablet experience. The app already opened on a phone, but everything was sized for a mouse. Now the pattern editor, pattern viewer, image-to-pattern converter, saved patterns, and thread inventory all adapt to a small touch screen, with controls, rows, and inputs sized for tapping.
  • On a narrow screen the editor toolbar collapses to a compact bar with a More tray for the rest of the tools, and the thread and fabric pickers move into the color legend where they are easy to reach. The thread picker, fabric picker, and tool trays open as bottom sheets you can flick through.

Fixed

  • On iPhone and iPad, tapping a search box or number field no longer zooms the page in and leaves you unable to pinch back out.

0.11.0

June 2, 2026

Added

  • Sharing to a phone, tablet, or browser now works on computers that have more than one network address at the same time (for example Wi-Fi and Ethernet together, or a VPN). The pairing certificate and QR code now cover every local address, so the connection no longer fails when your computer is on more than one network. The Share page also shows an address picker, so if the first address will not connect you can try another. (Some addresses, such as a VPN's, may not be reachable from your phone.)

Changed

  • Stitch progress syncs faster and more reliably across your devices. Marks made on different devices are merged stitch by stitch, so progress from one device no longer overwrites another's, and the pattern viewer picks up changes from your server within seconds instead of waiting for the next full sync. Requires a server-tier license.
  • The editor toolbar now wraps neatly when the canvas area is narrow, such as in a small window or a side-by-side layout, instead of running past the edge.

Fixed

  • Stitch progress could be lost when two devices running different app versions synced the same pattern. Progress data now decodes correctly across versions.

0.10.13

June 1, 2026

Added

  • Blends can now combine up to three threads in a single stitch (previously two). A blended stitch shows an averaged color with a fine two-tone hatch on the chart and in swatches, and renders as parallel railroaded strands in thread view. The new look carries through to the PDF, SVG, standalone, and chart-image exports, and three-thread blends survive OXS and JSON import.
  • Backstitch Anchors setting (Settings, editor section): constrain backstitches to cell corners only, leaving out the half-step mid-edge anchors, for blackwork and grid-only work. A Snap button in the backstitch tools also pulls existing mid-edge backstitches onto the nearest corners in one step.
  • Eraser: a mode bar (All, Crosses, Backstitch) appears while the eraser is active, so you can erase only full and part stitches, only backstitches, or everything. Your choice is remembered between sessions.
  • Selections show a move cursor and an on-screen hint, making it clearer that you can drag inside a selection to move those stitches without copying them.

Changed

  • Editor toolbar tidy: the backstitch and part-stitch tools group their options (chain, snap, direction) beside them only while that tool is active, and the edit-action buttons are grouped consistently.

Fixed

  • Free tier: keyboard shortcuts for tools that are not in the free tier (French knot, bead, confetti cleanup, trace, color replace) no longer activate those tools. The buttons were already hidden, but the shortcuts still worked.
  • The Mirror Horizontal and Mirror Vertical tooltips no longer both claim the same shortcut; the M key cycles through the mirror modes.

0.10.12

May 30, 2026

Added

  • Multi-device sync now covers your custom threads. The custom threads you add (one-off or proprietary floss outside any catalog), along with their status (Own, Need, or Don't Own), notes, and skein counts, now sync to every device paired to your server, instead of staying only on the device that created them. Requires a server-tier license.
  • The tags you create and the tags you apply to threads now sync across your devices too, so your tag list and assignments match everywhere. Requires a server-tier license.

Security

  • Custom thread brand and name text is now escaped and validated everywhere it is shown, so it is always treated as plain text and never as markup.

0.10.11

May 29, 2026

Added

  • Inventory: a Custom filter button (on the inventory page and the dashboard) shows just your custom threads, across all of your custom brands at once, with each thread's brand labeled. Full Version.
  • Inventory: in Select mode you can now remove several custom threads at once. The Delete action applies only to your own custom threads; the built-in catalog threads (DMC, Anchor, and the rest) cannot be deleted.
  • Image to Pattern: the zoom percentage is now an editable field. Click it, type a number, and press Enter to jump to that zoom (type 100 to reset), matching the pattern viewer and editor.

Fixed

  • Editor: a custom thread with no number now shows its name in the active color label, instead of an internal identifier.
  • Inventory: changing the brand or Custom filter while threads are selected now drops the selections that scrolled out of view, so the Select-mode count and the Delete action only ever act on threads you can see.
  • Inventory: if your plan changes to the free tier, the inventory and dashboard no longer stay stuck on the Custom thread filter with no way to switch back.
  • Custom threads: the color picker and brand/name fields are validated more strictly, so a saved custom thread always has a usable color and a visible label. Custom thread tags and CSV import stay correctly scoped to your own threads.

0.10.10

May 29, 2026

Fixed

  • Desktop app: fixed a startup failure where the app showed "the application backend did not start" and never opened. Databases created by older versions (before the underlay-image feature) could crash during the startup migrations; the app now starts cleanly on upgrade.

0.10.9

May 29, 2026

Added

  • Inventory: Shift-click the skein plus/minus buttons to add or remove a whole skein at once, instead of stepping a quarter skein at a time.
  • Inventory: the Total / Owned / Need / Don't Own counts now update to the category you have filtered to, so you can see how complete a single category is (for example Standard DMC) instead of only the whole brand.
  • Pattern viewer and editor: the zoom percentage is now an editable field. Click it, type a percentage (for example 150) and press Enter to jump to that zoom; type 100 to snap back to 100%.
  • Inventory: add your own custom threads (Full Version) for floss outside the built-in catalogs. Give each one a brand label, name, and color, track them in your inventory, and pick them in the editor to stitch with. Custom threads stay private to your account and do not change color matching or find-similar.

0.10.8

May 28, 2026

Added

  • Server mode: each user now accepts the License Agreement personally on first login. Previously the Docker SKU only checked the operator's ACCEPT_EULA env var, so users created by an admin never saw the agreement. The accept page is a full-screen gate modeled on the desktop's first-launch flow, with a scroll-to-bottom Accept gate and Esc to decline. EULA_VERSION is now a shared constant in config.py; bumping it (in tandem with the matching constant in electron/eula-window.js) re-prompts every server user on their next request.
  • Admin panel: small inline hint below the Create User form noting that new users are prompted to accept the License Agreement on first login.

Changed

  • EULA bumped to version 1.1 to reflect the section 9 (Open-Source Components) rewording on needlework-studio.com (the public /licenses/ index page was retired per attorney guidance; the substantive commitment that license texts ship bundled with the installed app is preserved in the EULA itself). Existing desktop and server-mode users will be re-prompted to accept on next launch / next request.
  • The fabric color you set on a pattern now shows behind the chart in the viewer and editor, not just in the thumbnail. Designs on dark or colored fabric (blackwork and the like) are now readable while you stitch.
  • The fabric color control is available in Chart view again, now that the fabric color renders there.

Fixed

  • Zooming in thread view no longer spikes the CPU. Rapid mouse-wheel, trackpad, and touch pinch zoom were redrawing the whole chart on every gesture event; the redraw is now coalesced to one per frame and the heavy thread render is deferred until the zoom settles.
  • Self-hosted server: the Docker image now starts cleanly. The previous image was missing the PDF-parser package and brand-catalog modules, so a fresh container could crash on boot with a missing-module error.
  • Self-hosted server: importing a third-party progress file no longer fails. The progress_parser module was not copied into the Docker image, so the import endpoint crashed at runtime on server deployments. Desktop builds were unaffected.
  • Exporting all patterns as JSON and reimporting them no longer blanks the design. The export was dropping the legend ids that the grid references, so reimported patterns came back with every stitch cleared. Existing export files made before this fix cannot be recovered; re-export after updating.
  • electron/eula.html: pricing link resynced from the live EULA on needlework-studio.com (was pointing at the old anchor-style URL).
  • Gridlines stay visible on dark or black fabric. The grid color now adapts to the fabric instead of always being a faint black that vanished on dark backgrounds.
  • Typing in the color legend search box no longer fires tool shortcuts (B, M, K, and the rest) or progress undo and redo.
  • The Mirror Horizontal and Mirror Vertical buttons now show icons that match the direction they flip.

0.10.7

May 25, 2026

Added

  • Broader PDF import. Supports standard single-page exports, multi-page tiled exports, the key-on-one-page layout, and other common companion-app export styles.
  • Broader PDF import for newer templates, including single-color and companion-app export variants.

Fixed

  • Patterns exported from Needlework Studio can now be re-imported. The strands marker in the legend was not being parsed and the import failed with a "no legend" error.
  • PDFs without a real thread legend (Illustrator and similar) no longer match ruler-label rows as fake legend entries. The import now fails with a clear message instead.
  • Cstitch's symbol-chart PDF export rejects with a message telling you to re-export as a color-block PDF, instead of silently producing a grid of garbage colors.
  • The PDF import preview no longer shows a solid gray square.
  • Sparse designs (a small motif on a big canvas) now keep the surrounding empty cells and the design's canvas position instead of being cropped to the content.

0.10.6

May 23, 2026

Changed

  • Default theme now uses the Walnut and Brass palette, so colors match the website.

Fixed

  • Brand pickers in image-to-pattern, Blank Canvas, and the editor color picker no longer list brands without a thread catalog. Only DMC, Anchor, and Mill Hill appear, matching the inventory page.
  • Progress imports from additional companion-app file versions now work.

0.10.5

May 20, 2026

Added

  • Fabric inventory. The Inventory page now has a Threads | Fabric segmented control. Switch to Fabric to track each physical piece in your stash: brand, fabric name, count, width and height in inches, color swatch, status (Own / Need / Don't own), and notes. Add pieces with the Add fabric piece button, edit by clicking a card, and search or filter by status or count. Premium tier only.
  • Materials calculator surfaces matching fabric pieces. When you load a pattern in By Pattern mode, the new Matching fabric pieces card lists every piece from your stash whose count matches the pattern and whose dimensions cover the required cut size. Both orientations are considered (a 12x16 piece will match a pattern that needs 14x10 because the fabric can rotate on the hoop). Pieces you have flagged as Need to buy are surfaced too, with a badge, so you remember a matching cut is already on your shopping list. Premium tier only.
  • A Settings link in the pattern viewer toolbar, so you can open Settings without leaving the pattern you are working on.
  • The zoom percentage in the pattern viewer is now a button. Click it to jump straight back to 100%.

Fixed

  • Pixel art image conversion no longer discards a width or height you typed. Turning the Pixel art option off and back on keeps your numbers.
  • The unsaved-changes prompt shown when you close the app or leave a pattern now uses the app's own themed dialog instead of a plain system popup. The same themed dialog is now used for removing a color, deleting a row or column, and discarding a resize.
  • Importing a progress file from an unsupported version now shows a clear message instead of a confusing dimensions error.
  • In the pattern editor the fabric color control is disabled while you are in Chart view, where fabric color is not shown, and available again in Thread view.
  • The empty palette hint now names the Thread button correctly and follows your selected font instead of always being monospace.
  • Paired device times on the Share screen now show in your local time zone instead of UTC.

0.10.4

May 19, 2026

Added

  • Import progress from companion stitching apps. The saved patterns gallery has a new Import Progress button (next to Backup All) that accepts progress files exported by popular companion stitching apps. Pick the file, choose which pattern the progress belongs to, and the marked cells merge into the pattern's progress. Some formats require the cell count to exactly match the pattern's grid; others require matching dimensions. Only full-cross progress comes across in this release: some formats don't track backstitches or French knots in their progress files at all, and format support has so far been validated against full crosses.

Fixed

  • Home dashboard brand toggles match the inventory page. The home dashboard used to show toggles for every registered brand (Kreinik, Rainbow Gallery, Madeira, Sulky, Cosmo, Weeks Dye Works, Gentle Art, Caron, Classic Colorworks, Dinky Dyes), even though those brands exist only for OXS save / round-trip and have no rows to filter to. The home dashboard now mirrors the inventory page filter introduced in 0.10.2 and only renders DMC, Anchor, Mill Hill, and All.

0.10.3

May 18, 2026

Added

  • Pick your own symbol per legend entry. Click a swatch in the legend while editing to open a symbol picker with all 100 stitch glyphs. Click a glyph to apply, Escape or click outside to cancel. Works in both the pattern editor and the image-to-pattern editor. Blend rows still derive their symbol from the component colors; per-entry override on blends is a future addition.
  • Symbol picker is built for fast picking. Opening the picker scrolls your current symbol into view and highlights it, arrow keys and Home / End move focus between cells, and any glyph already used by another legend entry shows a small dot in the corner so you can dodge collisions at a glance. A new Auto button picks the first unused glyph when you just want a distinct symbol and don't care which. Duplicates are still allowed if you want them.
  • Editor keyboard shortcuts. Y opens the symbol picker for the active legend row. Esc exits edit mode (mirrors Cancel in the pattern editor and Done Editing in the image-to-pattern editor). / on any page with a search box jumps straight into the input (saved patterns, inventory, pattern viewer legend filter).
  • Gallery keyboard navigation. Arrow keys move between pattern cards on the saved-patterns and home galleries, Enter opens the focused pattern, and Down from the search input jumps to the first match.

Fixed

  • Symbol picker opens fluidly. The picker now appears instantaneously instead of stuttering open over the chart canvas.
  • Save then Cancel no longer reverts your edits. Clicking Save while editing a pattern and then clicking Cancel used to roll the in-memory legend back to its pre-edit state. Save now refreshes the edit baseline so Cancel after a successful save is a true no-op.
  • Bulk-added colors stay in the legend. Adding several colors via the multi-select catalog picker and then clicking row-by-row to set each one's symbol used to make the in-between colors disappear, because the auto-prune for unused colors was firing on every row switch. Colors you explicitly add via the picker now stay until you remove them with the x button.
  • Blank-canvas patterns can change symbols too. The symbol picker is now wired up to the blank-pattern editor; previously clicking a swatch on a freshly created unsaved pattern did nothing.
  • Add N selected button stays inside its dropdown. At larger UI text sizes the multi-select catalog picker's footer button used to overflow the dropdown edge.
  • Editor shortcuts no longer leak into open modals. Pressing arrow keys while the symbol picker was open used to also cycle the legend color underneath, and pressing Y while a modal was open would stack another copy of the modal.

0.10.2

May 15, 2026

Added

  • OXS import: additional thread-brand prefixes. Imports now recognize Mill Hill sub-lines (MHA Antique, MHF Frosted, MHG Glass, MHP Petite, MHE Magnifica), the alternate "Bead NNNNN" form with the brand in the name attribute, the shortened "KRE NNN" Kreinik prefix (with C / HL / V suffixes), and Rainbow Gallery "RGB <code>". Previously these fell through to a hex-only fallback and lost their brand attribution.
  • OXS brand recognition broadened to 10 catalog-less brands. Beyond the prefixes above, the importer also recognizes full-word matches for Madeira, Sulky, Cosmo, Weeks Dye Works, Gentle Art, Caron, Classic Colorworks, and Dinky Dyes. All ten new brands are accepted by the save validator and round-trip through OXS export. Color-data catalogs for these brands aren't seeded yet, so the Inventory page brand toggle continues to show only brands with catalog rows (DMC / Anchor / Mill Hill / All); the toggle picks up new brands automatically when their catalogs land.
  • Inventory bulk skein quantity. The bulk-edit bar gained a Skeins group with three actions: + Add N, - Subtract N, and Set to N. Add and Subtract resolve against each thread's current count (treating a never-touched thread as 0); Subtract clamps at 0 so a runaway "- 10" doesn't go negative. Single number input feeds all three buttons.
  • Multi-select in the add-color picker. Clicking a thread in the add-color dropdown now toggles it into a selected set; the new Add N selected button at the foot of the picker commits all selected threads to the palette in one shot. Selection survives filter changes within a picker session, so you can search "100s", pick a few, search "200s", pick a few more, and commit all at once.

Changed

  • Inventory number-range rail. Stays visible while a search / category / status filter is active (previously the rail vanished on any filter). Drops markers for empty number buckets (DMC's 1000 / 1500 / 2000 / 2500 ranges no longer clutter the rail since no DMC threads live there). Tracks scroll position so the rail stays anchored under the controls bar instead of scrolling off with the page.

0.10.1

May 15, 2026

Added

  • Multiple legend entries per DMC color. You can now have DMC 310 in your chart at both 2-strand and 1-strand, each with its own symbol, drawn cells, and stitch count. Click the new copy button on a legend row to duplicate a color, then change the new entry's strand count or symbol so it represents a distinct use of the same thread. The old "C310" workaround for getting two black symbols is no longer needed.
  • Strand-aware backstitches. Backstitch line width now scales with the entry's strand count. A 1-strand backstitch renders as a thin hair-line, a 4-strand renders distinctly heavier. So when you have DMC 310 at 1-strand and 2-strand backstitches in the same chart they're visually distinguishable, not just different symbols.
  • Lossless OXS round-trip on same-color palette entries. Importing an OXS file that has two palette items with the same color now preserves both as separate legend rows. Exporting an OXS keeps both as distinct palette items. Previously the importer collapsed same-DMC palette items into one and the exporter clobbered them.
  • Trace tool now accepts a reference image before you save. The drop zone is active immediately on Blank Canvas and Convert Image, you don't have to save the pattern first. The temp upload is automatically promoted to the pattern's permanent location on first save.
  • Save Debug Log button in Settings, under a new Diagnostics section. Writes the recent server log to a rotating file at userData/logs/, capped at about 4 MB across the active file and three backups. The button downloads everything as a text attachment for attaching to bug reports. Desktop builds also get a Reveal in Finder shortcut (Explorer on Windows, File Manager on Linux). The download starts with a preamble noting that logs may include local IP addresses, user-agent strings, and pattern slugs.

Changed

  • Chain button (continuous backstitch mode) is now positioned right next to the Back tool in the toolbar instead of at the end of the stitch group. It pops into view directly beside the tool it modifies, so it's easier to find when you switch to backstitch.

Fixed

  • Server-mode license deactivate no longer bricks a Docker server instance into the Free tier until the process restarts. Server mode licenses are bound to the LICENSE_KEY environment variable, not the account, and the endpoint correctly refuses in that mode.
  • Mill Hill brand toggle on the Inventory page no longer reverts to DMC after a reload.
  • Anonymous visitors on a shared pattern link stay on the share page. The write-path autosave fetches used to fire on initial render and bounce visitors who weren't logged in to the login screen.
  • Duplicating an image-to-pattern from the Saved Patterns gallery keeps the original's source image. The Trace tool was previously unavailable on duplicates because the source image reference was silently dropped.
  • JSON export round-trip preserves all stitches. Re-importing a Needlework Studio JSON export used to blank every cell because the legend entry id was missing from the exported file.
  • Clicking Duplicate on a legend row that had no stitches drawn yet no longer prunes the original. Both entries now persist even if the source is empty at the moment you duplicate it.
  • Duplicate-color row icon now matches the swap and delete icons. The new per-row button shipped in 0.10.x without inheriting the shared icon styling, so it rendered with a default native button frame instead of the line-art look the other two use.
  • Strand-count picker (the per-color x N dropdown on a legend row) no longer throws "Failed to set innerHTML" when you pick a value. The dropdown's change and blur events both fired the legend re-render, and the second one re-entered the in-flight DOM update.

0.10.0

May 12, 2026

Added

  • Per-color strand counts. Each color in the legend now has its own 1-8 strand count via the small `×N` picker on the right of each legend row. Calculator uses the per-color value when figuring out how many skeins you need. Carries through OXS export.
  • Continuous backstitch mode. Pick the Back tool and click the new "Chain" button next to it. Each click after the first extends the line from the previous endpoint, so a chain like A→B→C→D is four clicks instead of eight. Esc, switching tools, or clicking the same point twice ends the chain.
  • Highlight Strength setting (Soft / Normal / Strong) in Settings → Display. Controls how dim the rest of the chart goes when you click a color in the legend to highlight just that color.
  • Solid Backstitches toolbar button in the viewer. One-click switch between dashed (default) and solid backstitches in chart mode. Same option still available from Settings → Display.
  • End User License Agreement (EULA) shown on first launch. Scroll through the agreement to enable the Accept button. Acceptance is remembered so you only see it once per major EULA revision.
  • Docker server image now requires `ACCEPT_EULA=true` (or `yes`, `y`, `1`) on first run. Operators see clear instructions and the live EULA URL if the variable is missing.

Changed

  • Clicking Save while editing a pattern no longer kicks you out of edit mode. You stay in the editor; the Save button just saves.
  • Empty-palette save is allowed. Start a blank chart, hit Save without picking a color, and you land in the editor ready to add colors or drop in a trace image.
  • New patterns land in edit mode after the first save instead of bouncing through the "Edit Original / Create Copy" dialog.
  • Save dialog remembers what you typed if you close it and reopen it.
  • "Saved locally" message after a save failure is clearer in solo desktop mode: it says the edits are kept locally and to try again, instead of the misleading "will retry when you reconnect" text.
  • Pattern notes input is taller and resizable, easier to read longer notes without squinting.
  • Backstitch layer toggle in the viewer toolbar now reads "Show / hide backstitches" on hover.

Removed

  • "Hide backstitches in viewer" checkbox in Settings. The per-tab toolbar toggle (the eye icon in the viewer) already does the same job and was easier to find. Any saved preference is ignored.

Fixed

  • Returning to the app from another window no longer fires a spurious background save and "Pattern saved" toast.
  • The viewer's click-to-highlight dim layer now clears when you enter edit mode, instead of bleeding into the editor canvas.

0.9.9

May 8, 2026

Fixed

  • Desktop app failed to launch on 0.9.8 with a "backend failed to start" error. The Mill Hill bead catalog module wasn't bundled into the frozen executable because it loads dynamically. Adding it to the bundler config so the app starts cleanly. If you saw the error on 0.9.8, this update fixes it.

0.9.8

May 8, 2026

Added

  • Mill Hill bead catalog. 371 colors across seven bead lines (Petite, Glass, Antique, Crayon, Pebble, Magnifica, Frosted). Mill Hill shows up in the inventory brand toggle, the editor's add-color picker, and OXS imports that use `MH ` or `Mill Hill ` prefixes.
  • Solid backstitches toggle in Settings → Display. When on, every chart-mode backstitch renders as a solid line instead of cycling through per-color dash patterns.
  • Help popover on the ΔE number in the Similar Colors panel explains what the color-distance value means.

Changed

  • PDF export is back to Full Version. Free tier still has watermarked PNG and JSON export.
  • Auto-updater dialogs now name Needlework Studio explicitly so the "Restart now to install the update?" prompt is unambiguous.
  • Blank-canvas pattern setup no longer asks for a thread brand. Multi-brand patterns make a per-pattern primary brand mostly meaningless; brand is set per color in the editor's add-color modal.

Fixed

  • Shopping list (per-pattern and cross-pattern) now respects per-entry brand on multi-brand patterns. A Mill Hill bead in a DMC pattern now correctly shows its Mill Hill ownership status.
  • OXS import recognizes `ANC ` as an Anchor alias (used by some cross-stitch programs). Files that label Anchor floss this way no longer fail to import.
  • Beads-only and backstitch-only patterns render their specialty stitches in gallery thumbnails instead of showing a blank fabric square.
  • Editor's add-color brand picker now refreshes when new brands are registered, so Mill Hill (or any future brand) appears without requiring a hard reload.
  • HTML export button on the Free tier now shows the same Full Version label as the other premium export options.

0.9.7

May 6, 2026

Added

  • PDF import now brings in backstitches and outline strokes from more pattern formats, plus the chart and color legend.
  • Designer field on saved patterns. Edit it inline from the gallery.
  • Tag your threads. Same tag pool as pattern tags.
  • Inventory CSV import. Round-trips with the existing CSV export.
  • Per-pattern calculator settings. Fabric count, strands, skein length, and margin are now remembered per pattern.

Changed

  • Pattern Calculator fabric margin is now an editable number with 0.25" steps.

0.9.6

May 5, 2026

Changed

  • Expanded PDF import now pulls in backstitches, French knots, quarter / half / three-quarter stitches, and beads from more pattern sources, in addition to the full cross stitches and color legend. More sources will follow in a future release.

0.9.5

May 4, 2026

Added

  • Visible Undo and Redo buttons in the pattern viewer toolbar and Zen bar. Undoes the last markup-mode action (mark complete, place marker). Same 50-deep history that Ctrl+Z / Ctrl+Y already drove, now with an obvious button for users who didn't know the keyboard shortcut.

Changed

  • Mouse wheel now zooms the chart in both the viewer and the editor, centered on the cursor. Hold Ctrl (or Cmd on Mac) while scrolling the wheel to pan. Trackpad two-finger swipe still pans and pinch still zooms; those gestures are unchanged.
  • Markup-mode drag now paints along the cursor's actual path instead of selecting a rectangle. Hold Shift while dragging to get the previous rectangle behavior. Touch drag on iPad always uses the path gesture.

0.9.4

May 4, 2026

Changed

  • Better PDF imports. Patterns from popular cross-stitch programs come in cleanly now. Heads up: PDF import still only brings in full cross stitches and the color legend. Backstitches, French knots, part stitches, and beads aren't pulled in yet.

Fixed

  • Editor polish (from tester feedback): - Unused colors auto-prune from the legend so it stays tidy as you edit. - Delete colors directly from the legend with the × button. - Right-click a backstitch to erase it. - Replace-panel UX cleaned up; clicking through to the canvas is fixed. - Symbols stay visible after committing edits (contrast was getting lost on rebuild).

0.9.3

May 2, 2026

Added

  • Multi-brand patterns. A single pattern can now mix DMC, Anchor, and other brands without forcing one canonical brand for the whole design.
  • Cross-brand blends. Two-thread blend stitches can now combine threads from different brands.
  • Font picker in Settings: Default, Sans, or OpenDyslexic.
  • Brush size (1 / 2 / 3 / 5) for the Pencil and Eraser tools.
  • External links from the desktop app now open in your system browser.

Changed

  • Quarter, three-quarter, and petite stitches are now available on the Free tier. Previously they were premium-only, which made it awkward to import a kit pattern that used them. French knots and beads stay premium for now.
  • OXS export / import round-trips per-stitch completion via the marked attribute, so progress survives a round-trip through other apps that use OXS.

0.9.2

April 30, 2026

Added

  • Trace tool. Drop, paste, drag, or pick an image and stitch on top of it as a low-opacity reference. Adjust opacity, scale, and rotation; drag the underlay to position it; click Place when you're done so it stays put while you draw. Premium tier.
  • macOS auto-update is now a true in-app update. No more bouncing you to the website to download a new DMG.

Fixed

  • Custom themes you created by duplicating a preset are now properly saved to your account. Previously they only lived on the device that created them and could disappear after an update or when signing in on a new device.
  • Multi-device sync no longer drops marks. If you mark threads on one device while a pattern is open on another, the next save merges cleanly instead of overwriting.
  • Editor hover cell highlight now follows your cursor accurately at all zoom levels.

0.9.1

April 30, 2026

Fixed

  • Windows: Done Editing and Save buttons in the image-to-pattern editor's fullscreen mode didn't respond to clicks. The Color Key sidebar header was also being clipped by the window controls. Same family of bug as the macOS fix in 0.8.7. Now fixed for Windows too.
  • Desktop: the Thread Inventory filter bar (Brand / Search / Category / Status / Sort) was being hidden behind the title bar after scrolling. Now stays pinned at the top.
  • Free tier was incorrectly showing the cloud sync and share-to-phone icons in the header. Both gated to paid tiers now.

0.9.0

April 29, 2026

Added

  • Text Size in Settings → Display. Three levels (Default / Larger / Largest) for users who want larger UI text without zooming the whole window.
  • Reduce italic text option, also in Settings → Display, for users who find italic harder to read.
  • High Contrast theme. WCAG AAA contrast in both light and dark variants. Pick it from the Theme picker.

0.8.8

April 29, 2026

Added

  • OXS pattern import is now available on the Free tier. Use patterns from other apps without needing to upgrade.
  • Backstitches and French knots can now be anchored at edge midpoints and cell centers in addition to cell corners. 9 anchor points per cell instead of 4. Useful for curves, letterforms, and other detail that doesn't sit on the full grid. Hover over a cell in backstitch mode to see all available anchors as small dots.

0.8.7

April 28, 2026

Fixed

  • Buttons at the top of the image-to-pattern editor (Done Editing, Save, Gridlines / Symbols / Stitches) didn't respond to clicks on macOS while in fullscreen edit mode. The toolbar was overlapping the macOS window drag region.

0.8.6

April 28, 2026

Added

  • Self-hosted server version. Run your own Needlework Studio server via Docker (`ghcr.io/greenglasst/needleworkstudio`) with admin panel, multi-user accounts, and desktop sync. Requires a server-tier license.
  • PDF export is now available on the Free tier.

Changed

  • Free tier pattern canvas limit increased to 300×300 cells (was 150×150).

Fixed

  • Save button in the image-to-pattern editor occasionally wouldn't respond to clicks. The "What's new" and crash-reports popups could leave an invisible overlay behind after dismissal that trapped clicks across the page until the next reload.

0.8.5

April 27, 2026

Added

  • "What's new" summary that appears once after each update so you can see what changed without hunting for release notes.

0.8.4

April 27, 2026

Security

  • Security and reliability improvements.

0.8.3

April 27, 2026

Added

  • Optional anonymous crash reporting. You'll see a one-time prompt asking whether to send anonymous error reports. Off until you accept; toggle anytime in Settings → Privacy.

0.8.2

April 27, 2026

Fixed

  • Pairing a phone or tablet on iPhone/iPad now works reliably.

0.8.1

April 27, 2026

Added

  • Share to phone or tablet. Open Needlework Studio on your phone, tablet, or another laptop over your home Wi-Fi. Generate a QR code from the desktop, scan it with the device's camera, and you're paired.
  • Offline pattern viewing. Save patterns for offline access; view and stitch when the server is unreachable; changes sync back when you're online again.
  • Editor save resilience. Autosave keeps trying through brief connection blips. If you close a tab with unsaved edits, a recovery prompt offers them back next time you open the app.
  • Palm rejection in the editor for stylus and touch users.

Fixed

  • A handful of small UI polish issues.

Security

  • Security and reliability improvements.

0.8.0

April 25, 2026

Added

  • Signed and notarized installers for macOS and Windows. No more "unidentified developer" warnings on first launch.
  • Contact Support button in the About box.