Changelog
0.53.0
Minor Changes
- Patterns on coloured fabric get a button to preview the canvas in the fabric colour and switch back to white to keep designing
Patch Changes
- Undo takes back a whole pencil or eraser stroke at once, not one stitch at a time
0.52.0
Minor Changes
- Sprite import spots pixel art that was enlarged for sharing and imports it at one stitch per art pixel, with a pixel size control to adjust it
Patch Changes
- Bump
webfrom 1.1.1 to 1.1.2
0.51.0
Minor Changes
- Both side panels now close from a chevron in the outer top corner of their header, the same spot the pull tab sits in when the panel is closed, so opening and closing are one tap in one place. The tab no longer hangs off the open panel's inner edge. On the layers and colours panel, pattern notices like symbol issues now sit below the tabs so the chevron stays in the corner. The workspace panel's narrowest width grows a little to fit its chevron.
- The running timer reads the same everywhere and no longer changes width as it ticks:
05m07sin a narrow app bar,00h12m03swith the pattern's name in a wide one and in the stitch bar. In stitch mode it shows only in the stitch bar. Tapping it always offers Open, which goes to stitch mode. Opening an S3 or Drive pattern from the timer now stays connected to its storage: before, stitches marked after opening it that way stayed on this device and never synced. - The edit toolbar stacks into the phone's two rows whenever the window is narrower than 800, on any device: an iPad mini in portrait and a narrow Mac window now get the fixed bottom row of modes instead of a crowded single row whose colour picker ran over the tools. On an iPad the single-row toolbar is also tighter, like the phone's.
Patch Changes
- StitchOps' Clear all progress now shows for a pattern with only time logged, and clears the time as well as the marked stitches. Undo brings both back, and the clear holds when the pattern syncs with another device.
- The colours and layers panel stays open or closed as you left it when the window or screen changes size. Closing it in a wide window and then narrowing the window used to pop it back open, and on an iPad in split view it could hide and reappear as the split moved.
- The workspace panel can no longer be dragged so narrow that its header buttons shrink: its narrowest is now the width they need at full size.
0.50.1
Patch Changes
- Opening a pattern from the workspace panel no longer hangs on the loading spinner if the panel closes while it loads. On a phone that was every time, since the panel closes on its own as a pattern starts opening; on a tablet or computer it was when you closed the panel yourself. The pattern never opened, and the one already open stayed on screen behind the spinner.
0.50.0
Minor Changes
- While a pattern opens, its thread list shows the page last stitched in it, from any device. On a phone the folder panel closes as soon as a pattern starts opening, and the colours panel opens
Patch Changes
- The colours panel closes from the same pull tab on every platform and width, as the workspace panel does, and View mode's Current Page / All threads switch stays on one line
0.49.0
Minor Changes
- StitchOps can hold a finish-by date for a pattern and shows the stitches per day it takes, beside your recent pace
- Settings can reopen the last workspace, or the pattern last stitched in it on any device, when the app starts
- The StitchOps timelapse moves from its own card to a play button beside Share
- View mode's thread list can show the current page, with what is left of each thread, as stitch mode does
Patch Changes
- Bump
googleapis_authfrom 2.3.4 to 2.3.5 - Opening a cloud folder retries a failed listing twice before showing an error
0.48.0
Minor Changes
- Settings lists the open source licences of everything the app is built from, including its fonts and PDF engine
Patch Changes
- Grouped dependency updates
0.47.0
Minor Changes
- Bump
cupertino_iconsfrom 1.0.9 to 2.0.0
Patch Changes
- Grouped dependency updates
0.46.1
Patch Changes
- Anchor threads now show Anchor's own colours and names. The colour picker has a brand selector (DMC by default, or Anchor), and picking an Anchor shade adds it as an Anchor thread. Anchor threads in patterns imported earlier switch to Anchor's colours when the pattern opens
- Threads with no known colour (black and white charts, brands without a colour table) now show as their symbols instead of grey blocks, on the canvas and in PDF and PNG exports. In stitch mode, worked cells get a yellow highlighter behind the symbol. A new Symbols only option in Layout shows every thread this way. The colours list marks colourless threads and can assign colours to them all at once or one at a time
- Pattern Maker PDFs whose pages are cropped to their content, like Fairy and Bird, now import with each page in the right place instead of almost every cell wrong. Blend rows in their legends no longer add a stray thread
- Saving a pattern in a shared local folder right after opening it now always compares against the version you opened, so another computer's save made in that moment is merged rather than taken for your own
0.46.0
Minor Changes
- Try Stitches on the web without an account: the home screen has three pattern slots kept in this browser. Tap an empty one to start a pattern in it, and a filled one to open it straight into the editor, where every save goes back to the slot. The home screen says plainly that they live in this browser only, and each can be exported to a file or moved to Google Drive. On web the Open button now reads Open from Google Drive
- When two devices both change a pattern's design, their edits now merge cell by cell, layer by layer and field by field, so drawing in different places on each device no longer asks you to pick one. Only what both changed differently is left for you to decide
-
Free up space on this device from an iCloud pattern's menu with Remove Download. The pattern stays in iCloud and downloads again when you open it. On the open pattern it closes the pattern first, unless it has changes not yet saved or synced
Download… in the file menu is now called Save a Copy…, since for iCloud "download" already means bringing the file onto this device
-
Make a pattern from a photo or picture: open the menu on an image in a workspace and choose Make Pattern From Image…
Pick how many stitches across and how many threads to use at most, and the preview updates as you go. The colours are chosen from the picture and matched to DMC threads, and the new pattern is saved next to the image
-
Open Pattern Maker (.xsd) and PC Stitch (.pat) charts as patterns, from a workspace or Open File
Stitches, threads and symbols come across as the designer charted them, and PC Stitch charts bring their backstitches, knots and quarter stitches too. Saving writes a .stitches copy beside the chart and leaves the original untouched
- StitchOps can play a timelapse of your piece appearing, replayed from the stitches you have marked, with play, pause, scrubbing and speeds from half to four times. Stitching from before this history was recorded is already there at the start
- On a circle or oval canvas, every-tenth grid lines now run out past the edge to their row and column numbers
- In stitch mode, long-press or right-click inside a selection to open a menu of what you can do to it: Done, Half, Frog, Add to this page or Remove from this page, and Demo when it is switched on. Demo leaves the stitch bar for this menu. A long-press anywhere outside a selection still parks
- Saving into a workspace folder that another computer also writes (a network share, or a Dropbox, OneDrive or Syncthing folder) now merges in the other computer's changes instead of overwriting them, and saves a conflict copy beside the file when the two can't be merged
- The stitch help sheet now explains the stitch-mode controls as well as the gestures: pages, overview, Cross/Back focus, one colour at a time, parking, the timer and progress undo
- StitchOps now records how much you stitched and how much you frogged each day, not only where the day ended up. The daily chart shows stitching above the line and frogging below it, the activity heatmap shades by everything you did, and new Frogged, Frog rate and gross stitches-per-hour figures sit beside the net ones. Days from before this update show their net change as before
Patch Changes
- Bump
pdfrxfrom 2.6.1 to 2.6.5 - PDF import reads thread legends of any brand, not only DMC. Gentle Art, Weeks Dye Works, Classic Colorworks, Crescent Colours, Anchor, Cosmo, Madeira, Caron, Rainbow Gallery and Kreinik rows import as those threads, and brands the app doesn't know yet import under the name the chart gives. A thread takes its colour from the chart's legend swatch or the DMC substitute the chart suggests, and has no colour when neither exists
- A new pattern opens ready to draw on, instead of in View mode where you had to press Edit first
- Page boundaries follow the design again after editing: drawing or erasing in page mode re-paginates once when you go back to stitching, keeping the pattern's algorithm version and your manual page assignments
- Cancel on the PDF import progress card now stops the automatic scan instead of letting it run on in the background, and nothing opens afterwards: no pattern preview, no page picker
- Printed circle and oval charts now run a light grey line from each row and column number to the every-tenth grid line it names
- PDF import reads more ways of stating a chart's size ("Count Size: 112 x 140", "140sts x 140sts", "75 stitches wide x 70 stitches tall", "Stitches: 125 x 102"), so those charts no longer come in as wrong-shaped strips
- On a phone the workspace panel opens wider, up to 320 points, so file names are no longer cut short. A width you have dragged the panel to still wins, and the panel always leaves a strip of canvas beside it to tap
- Threads can now belong to a brand other than DMC inside a pattern file, ready for charts that use Anchor, Gentle Art and other threads. Nothing changes on screen yet, and files that use only DMC save exactly as before
- The timelapse can be exported as a looping GIF from the player's GIF button: about 25 seconds of the piece appearing, the date along the bottom, ending on the finished piece. It opens the share sheet on a phone or tablet, a save dialog on desktop, and downloads in the browser
- In the browser, the page picker and pattern size steps of a manual PDF import take clicks and taps again, instead of passing them to the PDF behind
- Importing a scanned PDF chart in the browser no longer freezes the tab: the progress message and spinner keep moving while the chart is read
0.45.0
Minor Changes
- Get files into a workspace from a phone or iPad: folders gain Import files…, which opens the Files app or Android's file picker. Stitches also now appears in the share sheet and Open in for patterns (.stitches, .oxs) and PDFs, and several files shared at once are imported together. On Android, Stitches is no longer offered for every kind of file
0.44.0
Minor Changes
- Backstitch shapes can use half-cell points: turn on Half-cell points in the backstitch menu and ellipses and freehand curves land between the holes as well, with shorter stitches, so small curves come out rounder
0.43.0
Minor Changes
- Backstitch can draw shapes: pick line, freehand, ellipse or rectangle from the backstitch button, drag, and the shape becomes the closest run of backstitches, previewed as you drag and undone in one step
- Snippets save as you edit, like the pattern does: a new snippet is added as soon as you create it, there is no Save button or unsaved-changes prompt, and one undo on the canvas takes back a whole snippet session. Closing a new snippet you never touched (default name and size, nothing stitched) removes it again, with Undo. The new-snippet form asks for width and height, 16×16 by default, instead of offering preset sizes
0.42.0
Minor Changes
- Size dialogs show how big the piece stitches up on 14, 16 and 18 count
- Patterns can be round: pick a circle or oval canvas for hoop pieces when creating or resizing a pattern, and only the cells inside it can be stitched, drawn, paginated or exported
0.41.1
Patch Changes
- Stitch mode: All in the colour list is the whole pattern. No page dimming, outline or arrows, and anywhere can be marked; Page goes back to the page you were on
- Stitch mode: a focused thread's backstitches and knots lose the orange halo, and draw in full colour on top of every other thread's
- Stitch mode: the Page colour list includes backstitch and French knot threads, and a focused thread's backstitches and knots draw at full strength
0.41.0
Minor Changes
- Auto-fix has 45 more symbols to choose from, so palettes of up to about 166 colours get a distinct symbol each
- Patterns using design colours get a Design view in the colours panel: pick a design colour to draw with, or add one by hex
- Patterns can opt in to design colours, and the canvas can show a blend's true colour instead of the thread it is stitched in
- Shift+L and Shift+C show the Layers and Colours panels, opening the sidebar if it is shut; the same key again closes it
- PDF import on web, for deployments that turn it on with
STITCHES_PDF_IMPORT_ON_WEB=true(off by default) - A web deployment can turn S3 on for itself with STITCHES_S3_ON_WEB=true; it stays off by default, and the S3 settings say plainly that the keys are kept in the browser
- Stamping a sprite snippet keeps its original colours as design colours, and offers to turn design colours on; the eyedropper picks them up too
- Press T on the canvas to choose a thread by typing its code or name
Patch Changes
- Crosses only hides every backstitch and knot again when a colour is focused
- Design colours: a colour picker, a thread you can set per colour or back to auto, the brush's colour in the toolbar swatch, and #RRGGBB in the T prompt
- A save that finishes after the editor closes no longer reports an error
- Layers can knock out what is below them, ready for correcting read-only patterns
- A new snippet asks for its name and size first, and N on the canvas starts one
- OXS export writes what the canvas shows: hidden layers, covered and knocked-out stitches are left out, and each cell is in its shown thread
- OXS files from WinStitch, MacStitch and XSPro import with their three-quarter stitches, quarters and french knots, and exports write them the way those apps read them
- The "Pattern crafted with Stitches" link in exported PDFs goes to stitches.info instead of a dead GitHub page
- PDF import reads from a file or from memory, a step towards importing on the web
- On a phone in stitch mode, the app bar no longer repeats the open pattern's timer, so the title fits
- On a phone the edit toolbar keeps its height in every mode, so switching to Pick colour no longer moves the canvas
- Shift+R renames the active layer, or the active palette in the snippet editor; rename prompts no longer misbehave as they close
- Renaming a file to a name already used in its folder is refused, instead of replacing the other file
- R renames the pattern, and its file with it; a pattern's name and file name now move together everywhere
- S3: renaming or moving a file with + in its name no longer looks for the wrong key
- The keyboard shortcuts reference now lists every canvas shortcut, including tools 8, 9 and 0 and the flip and rotate keys
- T opens the thread prompt in the snippet editor too, over the active palette
- Stitches can carry a base colour in the file, kept through moves, flips, rotation and resizing
- Sync no longer reloads the pattern or shows a conflict in the middle of a stroke; it waits for the pointer to lift
0.40.0
Minor Changes
-
Backstitch and French knots keep their thread colour while you stitch
An unworked backstitch shows as a broken line and an unworked knot as an open ring, both filling in solid once you have stitched them.
Patch Changes
- Colours used only for backstitch or French knots now appear in the colour list
- Cross and Back stitch focus now narrow the colour list to the threads they apply to
- A partial stitch over a filled layer no longer leaves the rest of the cell as bare cloth
0.39.2
Patch Changes
- The eraser takes one backstitch at a time
- Custom snippet sizes can be typed again
- A new snippet no longer keeps the colour you did not use
- Fractional stitches sharing a cell all show up
0.39.1
Patch Changes
- The grid stays countable over pale thread
- Realistic PNG and PDF exports look stitched
0.39.0
Minor Changes
- Bump
file_pickerfrom 12.2.0 to 13.1.0
Patch Changes
- Grouped dependency updates
- Leaving the editor saves your work again
0.38.1
Patch Changes
- iCloud Drive as an import source and export destination
- Simultaneous saves in iCloud no longer lose one side
- Open patterns from iCloud Drive
- An iCloud pattern's row updates as soon as it has downloaded
- iCloud patterns update when another device saves them
- Draw your own stitch demos, and export them as a GIF
- Marking stitches on two devices merges again instead of asking which copy to keep
- Changes made on two devices at once are merged, not overwritten
0.38.0
Minor Changes
-
Import a file from anywhere in your Google Drive
Stitches can only see the files it made or you have shown it, so a pattern sitting elsewhere in your Drive could not be brought in at all. Right-click a folder and choose "Import from Google Drive". Web app only for now.
-
Thin last pages merge into their neighbours
A pattern 105 stitches wide at 50 per page used to end with a sliver: 50, 50 and 5. It is now 50 and 55. Patterns that already have pages keep their layout until you choose Recalculate, which keeps your progress.
- S3 settings move into an Advanced section in Settings
- S3 opens your folder prefix directly instead of asking every time
-
The cloud icon says when a pattern may be out of date
It turns orange once this device has been out of touch with the cloud for more than five minutes, and its tooltip says when the last check was. Red still means the opposite: your own work has not been pushed.
Patch Changes
- Internal: one rule now decides which storage each platform offers
- Choosing a colour on a phone closes the colours panel
- Groundwork: the app can find its iCloud folder
- Groundwork: the iCloud entitlement, so the app's folder appears in Files and Finder
- "Keep screen on" lets go when you leave stitch mode
- Groundwork: a file can be listed without being downloaded to this device yet
- The layers and colours sidebar closes to the same pull tab at every screen size
- A pattern edited on another device is up to date when you open it
0.37.0
Minor Changes
-
On a phone, the edit toolbar keeps its main controls in one place
The bottom row always holds draw, erase, pick colour and select, then snippets, the current thread and undo/redo. The row above shows only the options for the tool you have picked, and disappears when there are none.
-
Side panels open and close with a tab on their edge
Pull the tab and the panel slides out; tap the tab again to put it away. The close buttons in the panel headers are gone, since the tab does their job.
Patch Changes
- The edit toolbar takes about 30 points less of a phone screen
- The running timer fits the top bar on a phone
- The compact timer counts seconds for its first ten minutes
- Opening a workspace shows its file panel again
- The workspace panel can be closed on a phone again
- The workspace panel's tab only shows in view mode, where the panel can actually open
0.36.0
Minor Changes
-
A day spent frogging still counts toward your streak
A day now counts if your stitch count moved in either direction or you logged time. Days that end down show in red on the bar chart and the heatmap.
0.35.0
Minor Changes
- See where a blended colour falls on the canvas, from a show button in the Blends list
- A colour a layer merges away can be given its own thread
-
A mixing layer lists its blended colours, and you can give each one its own thread
The Colours panel gains a Blends view for that layer. Colours sharing a thread are flagged and listed first; tap one to choose a different thread, or go back to automatic. A colour you have merged still wins.
- Picking a colour that has been merged away now warns you, with a "!" saying what it draws as
Patch Changes
- Setting a thread for a blended colour no longer blanks those cells
- A cell whose colour has gone missing no longer lingers on the canvas
- Blended cells keep their symbols when a layer is hidden, shown or faded
- The "Start a timer?" prompt has a "Not now" button, so it can be dismissed without changing anything
- The palette slot list shows an arrow instead of an empty box
0.34.0
Minor Changes
-
Patterns in Google Drive now have a web address
While a Drive pattern is open in the web app, the address bar shows where it lives. Refreshing, bookmarking or opening that address in a new tab opens the same pattern again.
Patch Changes
- Test builds say which pull request and commit they came from
- Bump
pdfrxfrom 2.5.0 to 2.6.1 - Selections can start just off the edge of the pattern
- Opening a Google Drive pattern's web address while signed in opens the pattern
- Tapping a Google Drive recent while signed out signs you in and opens it
- Signing in to Google Drive on the web takes you where you were going
- Editing an .oxs file opened on its own no longer destroys it
- Creating a pattern behaves the same from the file tree, the empty state and a PDF scan
- New files never replace or duplicate one already in the folder, they are saved as "Name copy"
- Opening a pattern from recents also closes any PDF or image still open
- The colours sidebar shows stitches done, and the page button shows a percentage
- Page percentages show at most two decimal places
- The selection tooltip stays up, keeps out from under your finger, and says how much is done
- Internal: repeated pieces of code now have one definition each
- Workspace StitchOps moved into the folder sidebar, and every folder has its own
- Finger selections no longer leave a grey square behind or jump when you lift
- View mode no longer shows stitching progress in the colours sidebar
- The web app no longer contacts Google until you connect Google Drive
0.33.7
Patch Changes
- The pattern no longer shows a grid over every cell when you zoom out
- Context menus open instantly, and can show a file in Finder or open it in Drive
- Drag a folder to a different storage, and sort the tree by name, date or size
- Folders can be copied, cut and pasted, on their own or alongside files
- Delete prompts say what each storage actually does, and files on this device go to the Trash
- The file tree works from the keyboard
- Choosing a different sort order in the file tree now actually sorts it
- On the web, the file tree and dialogs work again while a PDF is open
- How you like a workspace set up now follows it between devices
0.33.6
Patch Changes
- Workspace StitchOps counts every pattern in the workspace, however deeply nested
- Internal: the editor's top bar is one definition rather than two near-copies
- Export offers your connected cloud storage even for patterns saved on this device
- Guide images and sprite sheets can come from your connected cloud storage
- An already-open pattern can be copied into a workspace
- Opening a pattern from Finder or the Files app can put a copy in your workspace
- The file tree picks up files added elsewhere while the app is open
- Workspace StitchOps loads several patterns at once instead of one after another
- Background guide images now travel with the pattern
- Exporting and sharing behave the same however you opened the pattern
- Keyboard shortcuts behave the same in the snippet editor as in the main one
- Internal: the four canvas modes share their hover handling
- Internal: the two StitchOps screens share their stat tiles and number formatting
- Workspace stats no longer go stale when a pattern is edited on another device
- Internal: removed a file-open path on web that nothing could reach
- The web version no longer re-downloads every pattern each time you open workspace StitchOps
0.33.5
Patch Changes
- A symbol on the chart is always drawn in the colour of the thread it resolves to
- New Pattern is gone from the web app, where it had nowhere to save to
- Workspace stats no longer re-fetch the pattern you already have open
- Reconnecting to Google Drive on the web is one tap instead of four
0.33.4
Patch Changes
- The pattern toolbar now fits on a phone
0.33.3
Patch Changes
- Sign in with Google works in Android builds, which are now signed with a stable key
0.33.2
Patch Changes
- Removed the hidden space-bar pan mode, which made the tools stop responding for no visible reason
- In the browser, scrolling pans, ctrl+scroll zooms, and a trackpad pinch zooms
0.33.1
Patch Changes
- Stay connected to Google Drive when you open Stitches in a new tab
0.33.0
Minor Changes
-
Choose where Stitches keeps your patterns in Google Drive
Show the folder in Drive, move it into any folder you own, or move it back to the top. It moves with your patterns inside it. Web only for now.
-
Google Drive now asks only for the folder it creates, not your whole Drive
You will be asked to sign in to Drive again, once. A second device finds the same folder by name. A pattern dropped into that folder from the Drive website stays invisible to the app, which can only see its own files.
Patch Changes
- Desktop shows the signed-in Google account instead of just "Connected"
- S3 storage is no longer offered in the web app, where the keys would sit in browser storage
- The web app no longer serves a stale build to anyone who had visited before
- Google Drive sign-in on the web no longer returns you to the app signed out
0.32.0
Minor Changes
- Both StitchOps charts carry a scale you can read without hovering, which matters in a shared export
- Internal: build and release tooling updates
Patch Changes
- Internal: build and release tooling updates
- Grouped dependency updates
0.31.1
Patch Changes
- The shared progress image follows your theme, so stitching in dark mode gives a dark image
- StitchOps puts its stat cards back into two columns wherever there is room
0.31.0
Minor Changes
- Sharing your progress now produces the full StitchOps panel instead of a short summary card
- Sharing on an iPad opens the share sheet properly instead of flashing and vanishing
0.30.0
Minor Changes
-
StitchOps has a Sessions card: sittings, their average length, your longest, and how much you have frogged
A sitting is a run of stitching with no half-hour pause in it. It reads the event log started in 0.29.1, so stitching from before that is not in these numbers.
- StitchOps opens with the four numbers worth knowing, and a new Rhythm card says when the stitching happens
- Unstitched cells carry a faint dot in view and edit modes, so pale threads read as stitched
- The controls list is now a "?" button on the stitch bar, beside the canvas it applies to
- StitchOps can share your progress as an image
- StitchOps uses the whole of a big screen, laying out in three columns
0.29.1
Patch Changes
- Groundwork: every progress mark is recorded as a dated event, for session history and frogging counts
0.29.0
Minor Changes
-
The colour panel pins itself open when there is room, and slides over when there is not
It goes on how wide the window actually is, not what kind of device it is, so an iPad pins in landscape and slides over in portrait.
-
The timer moves to the stitch bar, and Demo becomes an experimental setting
The timer is now a stopwatch icon and the day's running total, beside the rest of the stitching controls, instead of hiding in the side panel. Demo is off by default — if you used it, turn it back on under Experimental in Settings.
Patch Changes
- Pages with nothing on them no longer count as pages to stitch
- The keyboard appears again when editing time entries on an iPad
- Stopping at last activity no longer leaves time on a day you did not stitch
- The page button says how many stitches are left on the page you are working
0.28.0
Minor Changes
- Internal: build and release tooling updates
Patch Changes
- Bump
pdfrxfrom 2.4.7 to 2.5.0
0.27.1
Patch Changes
- Restored the Android and web builds, which 0.27.0 shipped without
0.27.0
Minor Changes
- Internal: build and release tooling updates
- Bump
googleapisfrom 16.0.0 to 17.0.0 - Build on Flutter 3.47.2
Patch Changes
- Bump
desktop_dropfrom 0.8.0 to 0.8.2 - Merged-away pages stop showing up as pages
- Every-tenth grid lines stay visible when you zoom in
- Cut, copy and paste whole selections, in any direction between storages
- A page can only take cells from pages next to it
- Opening a cloud folder before the app has finished starting no longer shows it as empty
- S3 files open from cache, and a recent on a disconnected storage says which connection is missing
- Pattern previews and a per-source icon for S3 files and folders on the home screen
- Shift-click selects the range you drew, not just the row you landed on
0.26.0
Minor Changes
- One consistent fade for anything you are not stitching right now
-
Overview: step back and see the whole pattern without editing it
It lifts the shading from the other pages and keeps the outline of the page you were on. Nothing can be marked while it is on, and it never changes the file — unlike switching pagination off, which was the old way to get the same look.
-
Assign stitches to a page by hand
Pin cells that fall on the next page to the one you are stitching, so a run that bleeds over the boundary can be finished now. Assignments are saved with the pattern, and reset if the page size or fuzzy tolerance changes.
- The cloud icon shows when your work has not reached the cloud yet
Patch Changes
- Fixed the Android release build
- Logged time is no longer lost when a pattern reaches a new device
- Stitching time from both devices is kept when they have been used on the same day
- Smoother panning and zooming in page mode
- Page navigation keeps the zoom and position you chose
- Stitching time is saved as you go, instead of only when you stop the timer
- The timer button no longer shows yesterday's total
0.25.0
Minor Changes
- Internal: build and release tooling updates
- Page mode dims off-page cells instead of hiding them
-
A pattern keeps the pagination algorithm it was made with, for life
A future change to the algorithm cannot re-paginate work already in progress. Moving a pattern onto a newer one is an explicit, confirmed action in the Layout dialog.
Patch Changes
- Internal: build and release tooling updates
- Bump
file_pickerfrom 12.0.0-beta.7 to 12.0.0 - Grouped dependency updates
- Page navigation repaints the page outline and dimming reliably
0.24.0
Minor Changes
- Bump
flutter_secure_storagefrom 10.3.1 to 11.0.0
Patch Changes
- Internal: build and release tooling updates
- Internal: patched the
js-yamladvisories in the release tooling - Raised the minimum to iOS 15 and macOS 12
0.23.2
Patch Changes
- Bump
flutter_riverpodfrom 3.4.1 to 3.4.2
0.23.1
Patch Changes
- Frog appears for any selection with marks in it, not only a fully marked one
0.23.0
Minor Changes
-
Open patterns sync with their cloud copy on any storage, not just Google Drive
Coming back to the app checks the cloud and pulls down what another device changed. Edits made in two places are merged rather than lost; only genuinely overlapping changes stop to ask, offering to keep yours, take theirs, or save yours as a dated copy.
- The Frog button no longer swallows the whole Done/Half pill
Patch Changes
- Grouped dependency updates
- Internal: README rewritten as working notes, and
./runstarts the app on any desktop platform
0.22.1
Patch Changes
- S3 sync works against endpoints that carry a routing path prefix, such as
rclone serve s3 --baseurl
0.22.0
Minor Changes
- Dragging in files that already exist prompts before overwriting, the same on every storage
- Create, rename and delete folders on every storage
-
S3-compatible storage: MinIO, Garage, rclone serve s3, AWS
Connect a bucket from Settings with a test-connection check. Credentials are stored in the platform keychain. Browse it from Open, and create, rename, delete and export as usual. Google Drive is unchanged.
- Open a single file straight from S3, instead of only being able to pick a folder
- S3 workspaces appear in Recents
- Folders can be dragged into other folders, and touch devices can long-press-drag
- Drag files between folders to move them, within a storage or across storages
- Multi-select files in the tree, then move, download or delete the whole selection
- Drag files or whole folders in from your computer to upload them
Patch Changes
- PDF import: pages line up vertically instead of drifting a row out of registration
- Dragging a selection to move it removes the originals, and undo history survives auto-save
- Dropping a file while a workspace is open no longer both uploads it and opens it separately
- Internal: a scenario test suite driving the real editor with genuine pointer events
- PDF import: two-character symbols no longer vanish from charts
- Dragging several folders in from the OS no longer fails silently when one cannot be read
- Internal: PDF import's two band assemblers are now one
- PDF import: ruler digits and legend fragments no longer break page assembly
- S3: dropped folders no longer write folder-marker objects that block writes beneath them
- PDF import: visual symbol resolution is off pending a proper colour-accuracy measure
- The S3 option appears in the Open dialog immediately after launch
- S3 folder move and rename no longer carry forward legacy folder-marker objects
- PDF import: the footer-text guard no longer discards genuine chart rows
- PDF import: a chart's rightmost column is no longer eaten by an over-matched seam
- PDF import: charts that state their design size assemble through the stated-size machinery
- Groundwork: storage is backend-generic, with Google Drive the first adapter
- Groundwork: the editor's cloud identity is backend-generic
- Groundwork: uploads and the sync indicator route through the storage registry
- PDF import: the raster channel accepts an optional design-size hint
- PDF import: titles, copyright lines and footer words no longer leak stitches into chart edges
- Drag-uploads list each file that failed and why, and no longer follow symlinks into sync clients
- PDF import: symbols are re-identified by their glyph when a chart's font scrambles character codes
0.21.2
Patch Changes
- Dragging a selection anchors to the cell you grabbed instead of jumping to the canvas corner
- Click-and-drag erasing keeps erasing when backstitch was the last tool selected
- The hover highlight shows the exact shape a partial stitch will take
0.21.1
Patch Changes
- PDF import: pages you pick by hand feed the automatic import first
- PDF import: symbol clustering no longer snowballs one cluster over most of the chart
- Press Esc to abandon a half-drawn backstitch, or the ✕ button on touch
- A "don't overwrite" toggle, so drawing only lands in empty space
- Dragging a selection keeps the ghost anchored to the spot you grabbed
- Drawing over a stitch with a different colour replaces it, and a new flood-fill colour renders immediately
- PDF import: faint noise no longer becomes stitches
- Backstitches and knots buried under an opaque layer above no longer render
- PDF import: dense non-grid ink no longer drags the window off the drawn grid
- PDF import: a legend table printed beside the chart no longer poisons the chart's grid
- PDF import: empty border rings are recovered instead of cropped
- Pasting a stitch onto a different stitch type replaces it instead of stacking invisibly
- French knots can be erased, and multi-layer thread work draws in the right order
- Backstitch and knot tools show a circle at the grid point the stitch will land on
- Scanning a PDF inside a local workspace shows the new pattern in the sidebar immediately
- PDF import: page overlap is decided by consensus across bands, so content no longer shifts
- PDF import: repeated alignment rows at a band boundary are no longer imported twice
- Internal: an import measure for stitches landing where the chart is empty
- PDF import: a stated design size with no width and height markers picks the right orientation
0.21.0
Minor Changes
- French knots: place them on grid intersections, with progress tracking like backstitch
Patch Changes
- French knots get the orange focus highlight in stitch mode
0.20.4
Patch Changes
- PDF import: legend assignment no longer locks sibling threads in the wrong order
- PDF import: gridlines and backstitch strokes no longer smudge the symbols underneath
- PDF import: a chart drawn one empty ring larger than its stated size captures the full grid
- Two complementary 3/4 stitches can share a cell, and the tool takes its diagonal from the corner you tap
- PDF import: on tinted charts, cells cluster only when symbol shape and fill colour agree
- PDF import: legend symbols are found by their ink rather than fixed windows that clipped them
- PDF import: the looser legend-attachment cap applies to shape-only charts too
- PDF import: a cell whose fill matches a different thread is re-coded after clustering
- Internal: import scoring tries all four rotations of the imported grid
- PDF import: ruler digits and page furniture no longer shift a page's origin
- PDF import: tinted-chart matching separates threads within one hue family
- PDF import: tint handling only applies to genuinely tinted charts
- PDF import: dark threads no longer collapse into one family
- PDF import: tinted charts use the cell fill colour as an assignment signal
0.20.3
Patch Changes
- Completed the Anchor↔DMC conversion data, so Anchor-branded legends can be read
- Internal: the import eval harness accepts gzip-compressed ground truth
- macOS: workspace folders reopen across app launches instead of failing with "Operation not permitted"
- PDF import: read Servotron-style legends, and reject a parse that contradicts the PDF's stated size
- PDF import: charts whose pages span both directions assemble properly instead of flattening into a strip
- PDF import: column-flow text charts are supported
- PDF import: a chart's stated design size is read from its text and used to snap the assembled grid
- PDF import: charts with no usable text layer are read directly from the page image
- Groundwork: per-cell feature extraction for rasterised chart pages
- PDF import: symbol clustering is quality-scored and supervised by the legend's row count
- PDF import: legends are read from the page image without OCR
- Groundwork: unsupervised symbol clustering for rasterised charts
- PDF import: the detected grid is repaired against the chart's stated design size
- An imported PDF pattern saves into a Google Drive workspace instead of the download cache
- PDF import: read table-style legends, the Anchor-branded chart shape
0.20.2
Patch Changes
- Internal: the import eval harness supports the grouped fixtures layout
- Internal: an import eval harness that scores an import against ground truth
- Internal: the PDF import flow moves out of the workspace screen
- PDF import: pages are classified, so a legend page no longer imports as a tiny "pattern"
0.20.1
Patch Changes
- Grouped dependency updates
- Stitches near fuzzy page corners can be marked by tap and drag again
0.20.0
Minor Changes
- Bump
xmlfrom 6.6.1 to 7.0.1
Patch Changes
- Bump
file_pickerfrom 12.0.0-beta.5 to 12.0.0-beta.7 - Bump
path_providerfrom 2.1.5 to 2.1.6 - Pinch-to-zoom no longer freezes or jumps on iPad after a cancelled gesture
- Locked layers block pasting, moving, deleting, flipping and rotating, not just drawing
- The page indicator moves into the floating mark bar, which used to cover it
- A double-tap flood fill no longer squashes the wrong undo entry
- Undo history survives switching between edit and stitch mode, and structural layer changes
0.19.4
Patch Changes
- The Demo stitch path flows like a real stitcher, working along a line and dipping into its branches
- Bump
flutter_riverpodfrom 3.3.1 to 3.3.2 - Bump
googleapis_authfrom 2.3.1 to 2.3.2 - Bump
pdfrxfrom 2.4.3 to 2.4.4 - A pattern's Google Drive copy is stored in the same format as the local copy
0.19.3
Patch Changes
- A single Drive file opened on its own auto-saves while stitching
0.19.2
Patch Changes
- The focused thread survives a background Google Drive sync in stitch mode
0.19.1
Patch Changes
- Google Drive sign-in works on sandboxed macOS builds
0.19.0
Minor Changes
-
Stitch progress has four states: done, half, parked and not done
Long-press a stitch to park it — one parked cell per colour, like having one needle per colour — and jump back to any of them from the Parked list. A half stitch counts as 0.5 towards completion. Old files load unchanged.
- The Colours panel's symbol issues banner becomes a Review dialog, where nothing changes until you press Confirm
Patch Changes
- A tap that dismisses a selection no longer also marks a stitch
0.18.0
Minor Changes
- Import from pattern: copy a snippet between patterns without needing a keyboard
-
Merge rare colours, to stop a big palette eating the symbol pool
Each colour is offered its five closest neighbours. Merges are stored as a map on the pattern rather than rewriting stitches, so any of them can be reversed later, even after saving and reopening.
Patch Changes
- Fixed the
/iosand/macosPR build commands never running - A snap toggle on the paste toolbar, so edge snapping works on touch
- "Save as snippet" over all visible layers no longer drops stitches
- The Colours panel's Auto-fix now actually clears symbol issues
0.17.4
Patch Changes
- Build the Android release on an x86_64 runner, so the native build step can run
0.17.3
Patch Changes
- Re-enabled all platform builds in the release pipeline
0.17.2
Patch Changes
- Fixed CI runner issues, and added /ios and /macos PR comment commands for TestFlight builds
- Fixed the macOS CI checkout failure
0.17.1
Patch Changes
- Fixed CI runner issues, and added /ios and /macos PR comment commands for TestFlight builds
0.17.0
Minor Changes
- Palette colour management in the snippet editor: unused slots are dimmed, colours can be removed, and duplicates merge
- Canvas flips, rotates, recolours, symbol changes and resize are all undoable, and the transform shortcuts work again
-
Stitches runs in the browser, with Google Drive as its storage
Sign in with Google and open or save
.stitchesfiles straight from Drive. The web build needs no local file access.
Patch Changes
- Flipping or rotating a selection refreshes the canvas instead of showing the old positions
0.16.0
Minor Changes
- Sprite import: adjust DMC colours in the preview even with no palette strip drawn
Patch Changes
- Discontinued DMC threads no longer appear in the colour pickers
- The DMC palette is resynced to more colour-accurate values, and discontinued codes show their replacement thread's colour
- The page grid sheet lays pages out in their real positions and shows each page's completion
0.15.1
Patch Changes
- Updated gradle properties to Flutter's generated values
0.15.0
Minor Changes
- The timer button shows today's total, ticking up from where earlier sessions left off
Patch Changes
- Moved iOS and macOS from CocoaPods to Swift Package Manager
- Opening a standalone file opens its workspace, if it lives in one you have used
- Tool shortcuts no longer fire while you are typing in a text field
- Four fixes for sprite-imported snippets, including an empty canvas in the snippet editor
- Dropped the redundant "DMC" prefix in the StitchOps thread list, so codes are not cut off on mobile
- Internal: one shared helper for classifying a pointer device
0.14.0
Minor Changes
- Duplicate and Flatten in the snippet long-press menu
- Sprite-imported snippets carry a read-only source palette beside their DMC mapping
- A warning when the palette strip has two colours that map to the same DMC code
- DMC slots in the sprite import preview are tappable, to pick a nearer alternative
Patch Changes
- Bump
file_pickerfrom 12.0.0-beta.3 to 12.0.0-beta.5 - Bump
pdfrxfrom 2.4.1 to 2.4.3 - A Drive pattern refreshes on app resume and device unlock, so another device's progress appears
- Fixed exports failing to save on desktop
- The keyboard appears when opening the Resize Aida dialog on iPad
- The snippet editor's colour picker applies to the snippet's palette on mobile
- The canvas repaints immediately after changing a colour in the snippet editor palette
- Sprite import no longer produces misaligned secondary palettes on duplicate DMC codes
- Sprite import keeps secondary palette mappings when two strip colours share a DMC code
- Undo restores a displaced stitch of a different type
0.13.1
Patch Changes
- Raised the minimum iOS version to 14.0
0.13.0
Minor Changes
- Drag from a selection to copy-stamp stitches in edit mode
Patch Changes
- Bump
googleapis_authfrom 2.3.0 to 2.3.1 - Bump
wakelock_plus,package_info_plus,share_plusandfile_picker - Bump
pdfrxfrom 2.2.24 to 2.4.1 - The canvas refreshes after flood fill, resize and undo, and flood fill no longer freezes on large patterns
- Updated the pdfrx cache directory API after the 2.4.x bump
0.12.1
Patch Changes
- Internal: a lint for debug markers, and two debug values removed from the timer and PDF scanner
0.12.0
Minor Changes
-
Settings are reachable from anywhere, and signing out of Google Drive closes what it opened
A token revoked mid-session now shows a dialog over the workspace with "Sign in again", rather than failing quietly.
Patch Changes
- Stitch mode opens on the first unfinished page, and middle-click no longer marks stitches
- Dragging inside a selection starts a new one, and page-filtered done counts are per page
0.11.0
Minor Changes
-
Page boundaries follow the shapes on the pattern instead of cutting straight through them
A motif that straddles a boundary is kept whole on one side. The tolerance slider becomes a "Fuzzy edges" on/off switch.
Patch Changes
- Tapping a completed stitch on another page no longer unmarks it
0.10.0
Minor Changes
- Internal: the pattern canvas is rebuilt as one widget owning the viewport, render cache and mode controllers
- Internal: drawing uses command-based undo, so each draw is its own exact reversal rather than a whole-pattern snapshot
- Internal: edit and stitch mode each get their own controller and undo stack
- Internal: the snippet editor gets its own controller, with undo isolated from the parent pattern
- Faster thread and cell lookups on large patterns
- Undo in stitch mode covers progress marks, and delete, flip and rotate are undoable everywhere
-
Three-quarter stitches, and the six partial-stitch buttons become one with a dropdown
Non-overlapping partial stitches can share a cell. The single-diagonal quarter stitch is gone, and old entries are dropped when a pattern loads; petit point stays.
- Internal: edit, stitch and snippet editing each become their own view
Patch Changes
- Internal: layer compositing is cached and updated incrementally instead of rebuilt each time
- Internal: each mode controller owns its gesture handlers
- Internal: drawing, selection, paste, progress, page nav and hover move out of the canvas into handlers
- Focusing a thread in stitch mode leaves the other stitches pale but recognisable, instead of flat grey
- Fixed various bugs with progress tracking
- Internal: the painter is handed pre-resolved data, rebuilt when the pattern changes rather than on pan and zoom
- Internal: keyboard shortcuts route through one dispatcher, so an app bar or dialog cannot steal them
- Internal: zoom and pan move into their own handler
- Faster drawing and layer toggling on large patterns, and dead code removed
- Drawing, pasting and layer toggles stay fast on large patterns
- Internal: the editor's state is grouped into view, stitch, edit and snippet value classes
- The canvas no longer goes blank after a layer change, the opacity slider stops flashing, focus mode respects blended cells, and the aida colour moves to Pattern Info
- Internal: stitch geometry consolidated into one extension
0.9.0
Minor Changes
- More accurate DMC colour matching, using CIEDE2000 instead of a plain colour distance
Patch Changes
- Updated the DMC colour list from a community source
- Updated the DMC colour list from the KXStitch source
- The canvas repaints immediately after every draw, fill, paste, move and delete
- The DMC update tool uses KXStitch as its only source, which covers the newer 01–35 range
- Threads in old files pick up the current DMC hex, so old and new stitches match
- A duplicate colour in a primary palette no longer breaks the secondary palettes
- Windows registers the
.stitchesfile association, and a file can be dropped onto the home screen
0.8.0
Minor Changes
-
Pattern Keeper PDF import and export
Opening a PDF now tries reading its text layer before falling back to a raster scan, which covers most PDFs from Pattern Keeper, MacStitch, WinStitch and PCStitch. Export gains an "Also export PatternKeeper PDF" option.
Patch Changes
- Bump
googleapis_authfrom 2.0.0 to 2.3.0 - Bump
wakelock_plusfrom 1.5.1 to 1.5.2 - Internal: a CI job that parses real Pattern Keeper PDFs to catch regressions
0.7.0
Minor Changes
- Pass explicit stitches when generating a GIF
- Smarter fuzzy page edges, so colour islands are not stranded
-
Time tracking in StitchOps
A Timer button in the stitch sidebar counts a session and saves it to the day's log. It survives sleep and the app being killed. A Time card shows the total, today, this week and stitches per hour, and every day can be corrected by hand.
Patch Changes
- Fixed copying a selection with "select from all visible layers" on
- A tooltip while dragging shows the selection size and its from and to cells
- An All/Page toggle in the Colours panel while page mode is on
- Internal: 350 unit and widget tests, four end-to-end flows, and a CI test workflow
- "Select all visible layers" copies one stitch per cell instead of hidden duplicates
0.6.0
Minor Changes
- A distinct icon for the B&W toggle in stitch mode, which now defaults to B&W
- Sort the colour list by code or stitch count, and push finished colours to the bottom
- Clearer navigation: x quits to home with a warning, a back arrow leaves stitch or edit mode
- Internal: large files split up, and the pan and zoom maths moved into one value type
- Internal: shared confirm, input and DMC picker dialogs replace the copies
- The canvas always renders blocks, and realistic stitches become a PDF and PNG export option
-
StitchOps: progress analytics per pattern and across a whole workspace
Counts and a progress bar, velocity by day, week, month and year, an estimated finish date, daily and cumulative charts, an activity heatmap and a per-thread breakdown. The workspace view aggregates every pattern, with streaks and a per-pattern filter. Your stitching history is stripped when a pattern is exported or shared.
- Block mode is gone from stitch mode, and focus mode colouring is tidied up
Patch Changes
- Grid lines fade out smoothly at low zoom, auto-save no longer blocks stitch marking, and backstitch chain mode arrives
- Clicking to deselect no longer also marks a stitch
- Fixed copy and paste between view mode and other documents
- Bump
file_pickerfrom 11.0.1 to 11.0.2 - Layers merge correctly after changing layer and group visibility
- "Frog" replaces "Unmark", the term stitchers actually use
- Pan and zoom gestures no longer mark stitches in stitch mode
- Internal: shared colour-space, dashed-line and stitch-geometry helpers replace the copies
- Fixed the remaining stitch counts when marking stitches done
- The Drive option is always available from Open, even when signed out
- The snippet editor opens as an editor rather than a viewer, and palettes share their slot symbols
0.5.0
Minor Changes
- Bump
file_pickerfrom 10.3.10 to 11.0.1 - Open
.stitchesfiles straight from Finder, the Files app and Android file managers - Open folders with the app on macOS, iOS and Android
- Version 2 of the
.stitchesformat, with v1 files upgraded silently on read - Home screen uplift: recents with thumbnails, and one unified picker for local and Drive
- Page mode: split a pattern into pages, with optional fuzzy edges that snap to colour changes
-
Stitch progress tracking: tap to mark one, drag for a region, double-tap to flood fill
Progress is saved with the pattern, has its own undo, and shows done, percentage, pages done and colours finished. Exporting can strip it out.
- Share and Export unified, covering
.stitches,.oxs,.pdfand.pngfrom one place -
Three modes instead of two: View, Edit and Stitch
Files always open in View, so nothing is edited or marked by accident.
Patch Changes
- The monthly DMC sync retires discontinued colours automatically, for review before merging
- The materials list shows skeins as fractions, and two errors in the formula are fixed
- Internal: one compositor for layer blending, fixing stitch double-counting in PDF exports
0.4.0
Minor Changes
- Google Drive sign-in overhaul, and the screen lock button becomes a proper toggle
Patch Changes
- Fixed Google Sign-In on Android
- Fixed the Windows app icon, and confirmed Google Drive works on Windows
- Phone layout polish: a two-row editor toolbar, and quick swatches that stop losing threads
0.3.0
Minor Changes
- Focus mode outlines focused cells when the thread colour is hard to see against the grey
- Finalised the name change from stitchx to Stitches
- Renamed to Stitches, with view position persistence and focus mode colour fixes
- A materials list and skein calculator, with a shareable plain-text checklist
- PDF export improvements: symbol visibility filtering, blended cell colours and pattern metadata
0.2.1
Patch Changes
- Fixed the Android gradle configuration for CI
0.2.0
Minor Changes
- iPad and polish: layer group locking, file compression, Apple Pencil opt-in paste, bigger touch targets
0.1.3
Patch Changes
- Fixed Google Drive sign-in on Android
0.1.2
Patch Changes
- Fixed the macOS build
0.1.1
Patch Changes
- Fixed builds for all platforms
0.1.0
Minor Changes
- A GitHub Actions build pipeline
0.0.1
Pattern editing
- Full stitches, half stitches, quarter stitches, petit point and backstitches on a scalable grid
- Named layers with visibility, opacity and drag-to-reorder, in collapsible groups
- DMC and Anchor palette, with threads entering on first stitch and pruned when erased
- A unique symbol per thread from a curated pool, reassignable to any character you like
- Undo and redo up to 200 steps, covering stitches and palette assignments
- Pinch, scroll and drag to zoom and pan, from 0.1× to 20×
- Resize the canvas after creation
- A semi-transparent reference image to trace over
Tools and selection
- An eraser sized 1 to 10 cells, with a flood-erase option for connected same-colour stitches
- A colour picker that samples the topmost visible stitch
- Rubber-band selection with copy, paste, delete, flip and rotate
- A canvas mode that works across all visible layers rather than only the active one
- Flood fill across connected same-colour or empty cells
- Block mode, rendering every stitch type as a solid rectangle for an at-a-glance read
Snippets
- A per-pattern snippet library kept inside the
.stitchesfile - A full snippet editor, for drawing one from scratch
- Multi-palette snippets, where a colour drawn on the canvas reaches every palette
- A sprite sheet importer: crop a region, match pixels to the nearest DMC, save it as a snippet
Files and workspace
- The
.stitchesfile format - A folder workspace with a resizable file tree, and PDF and image filters that persist
- Google Drive sync, with patterns saving and syncing in the background
- A recent files list, Drive items included
View and platform
- A collapsible right sidebar with Layers and Colours tabs, and stitch counts per thread
- Zoom-adaptive rendering, switching to blocks and fading the grid as you zoom away
- Stitch mode: a simplified read-only view for stitching from a finished pattern
- Apple Pencil hover preview, and double-tap to switch between drawing and erasing
- A full keyboard shortcut set on desktop, with
?for the reference - A PDF viewer and an image viewer, inline in the workspace
PDF pattern scanner (beta)
- Turn a printed chart PDF into an editable pattern, with no AI and no internet connection
- Guided symbol sampling, with flagged cells to review and correct by hand
Stitch demonstration (beta)
- An animated stitch-order demo per thread, at a speed you set
- Path planning that respects front and back alternation, and GIF export