685 Commits

Author SHA1 Message Date
Igor Zinken
cad9e49e67 Update package.json
Bump app version
1.2.0
2026-05-02 20:40:07 +02:00
Igor Zinken
3f94cc548b Address issues when filling or stroking out-of-visual-bounds Selections (#99)
When zooming in and panning the Viewport while a Selection is active, if a bucket fill or stroke operation is used, only the visible area of the Selection is filled.

This should be updated to fill the full area, even the out of visual bounds area.

This changeset also fixes an issue where stroke width would be applied differently at different zoom levels.
2026-05-01 21:33:03 +02:00
dependabot[bot]
c8d1a2df95 Bump the npm_and_yarn group across 1 directory with 2 updates (#96)
Bumps the npm_and_yarn group with 2 updates in the / directory: [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and [postcss](https://github.com/postcss/postcss).


Updates `fast-xml-parser` from 5.5.8 to 5.7.1
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.8...v5.7.1)

Updates `postcss` from 8.5.6 to 8.5.10
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.6...8.5.10)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.7.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: postcss
  dependency-version: 8.5.10
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 12:18:08 +02:00
Igor Zinken
057425a1e8 Keeping track of sensible z indices 2026-04-26 12:10:34 +02:00
Igor Zinken
801c8b01c4 Cleanups to touch decorator 2026-04-26 11:53:09 +02:00
Igor Zinken
6584c86633 Add feather and threshold control to smart fill tool 2026-04-26 11:46:29 +02:00
Igor Zinken
fc0e708738 Use popper to position select boxes (#98)
Select boxes are fine to use in desktop / large screen modes, but on mobile the select boxes in the docked bottom panel will extend beyond the visible page range, obscuring their contents.
2026-04-26 11:23:25 +02:00
dependabot[bot]
8e1952f1eb Bump vite in the npm_and_yarn group across 1 directory (#86)
Bumps the npm_and_yarn group with 1 update in the / directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `vite` from 6.4.1 to 6.4.2
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.4.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.4.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.4.2
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-25 10:54:06 +02:00
Igor Zinken
a4a86acb64 Fix issue where drag-to-cut-selection action would move the original Layer on long async operations 2026-04-25 10:45:46 +02:00
Igor Zinken
1277ba49d4 Small quality of life improvements
Fixed issue where shift clicking to select a Layer range was broken
Moved text tool position before transform tools
Fixed issue where corner handles would render in the wrong color
2026-04-25 10:30:41 +02:00
Igor Zinken
7029671a7a Fix issue with low memory mode paint operations 2026-04-24 21:31:52 +02:00
Igor Zinken
68cbf42a45 Address issue with drawing selections on touch screen devices 2026-04-24 19:31:18 +02:00
Igor Zinken
c13cd6812d Add corner handles to rectangular selections to allow pointer based resizing (#95)
Working with selections on touch screen devices (especially phones) is very cumbersome to get right.

This changeset introduces corner handles for rectangular selections. Once a selection is created, each corner has a handle from which the selection can be resized.

This also addresses a state history bug when stepping through changes to selections.
2026-04-24 19:18:11 +02:00
Igor Zinken
9c1388c199 Optimise toolbox display on mobile screens 2026-04-24 18:54:41 +02:00
Igor Zinken
d711cc4e99 Fix issue where conflicting keyboard shortcuts would prevent layer panel navigation (#89)
When the pan or drag tools are selected (or a selection is active) the keyboard shortcuts in the layer panel would not allow navigating the layers list.

When the layer panel is focused no outside keyboard shortcuts should be captured.
2026-04-24 08:11:02 +02:00
Igor Zinken
224c4390a1 Fix issue where cutting a selection by drag using the keyboard would not respect the Layer offset 2026-04-24 08:00:52 +02:00
Igor Zinken
36ee3ba712 Add to-timeline support to grid slicing window 2026-04-22 23:05:54 +02:00
Igor Zinken
601f70716d Improve keyboard accessibility of slider component 2026-04-22 23:02:51 +02:00
Igor Zinken
abc5c7f1a3 When dragging a Layer with an active Selection, the Selection content should be cut and dragged as a new Layer (#94)
When the DRAG tool is active while there is an active selection, when dragging starts, the contents of the selection should be cut from the currently active Layer and be pasted as a new Layer, which will continue the drag.
2026-04-22 18:24:07 +02:00
Igor Zinken
a6f67ad7c5 Image export settings are now stored inside the Document 2026-04-19 21:28:38 +02:00
Igor Zinken
b205a553d9 Restructure document model, factories and actions (#93)
Split `definitions/document.ts` into unique files per actor type.
Create `model` folder to store the above types, their factories and the state changing actions.
2026-04-19 20:34:06 +02:00
Igor Zinken
fe34448cbd Unset carbon copy on first tile 2026-04-19 13:30:49 +02:00
Igor Zinken
10b2ae0d46 Address issue where carbon copy on reshuffled timeline tiles would show wrong content 2026-04-19 13:23:57 +02:00
Igor Zinken
ed03c0b745 Address issue when merging and flattening Layers in a Timeline Document (#92)
When merging a layer down / flattening the layers in a Timeline Document, it is more logical if this is done for the currently active Tile group, instead of the whole Document.
2026-04-19 09:20:25 +02:00
Igor Zinken
638dfb4aac Fix issue where spritesheets exported from timelines would not appear in right tile order 2026-04-18 11:21:58 +02:00
Igor Zinken
e916c9bd4b Allow reorder of timeline tiles using drag (#91)
Tiles in a timeline cannot be reordered after creation, which can be a little cumbersome.
Implement draggable tiles allowing the user to reorder tiles at any moment.
2026-04-18 11:04:28 +02:00
Igor Zinken
d8e3e3957c Fix issues with state history for text value and color 2026-04-18 07:51:29 +02:00
Igor Zinken
da3ae37dbd Add blur filter to Layer filters (#90)
Any good photo editing software should have a gaussian blur filter.
2026-04-12 20:00:55 +02:00
Igor Zinken
6eeed8c2bd Add support for unique state history per Document (#88)
Long overdue.

State history would only work for the active Document. When opening a new Document (without closing the existing one), the state history would be flushed and initiated anew for every change made in the currently focused Document.

This changeset introduces a state history unique to the Document, meaning you can switch between open Documents and maintain the history associated with your changes.
2026-04-11 12:30:57 +02:00
Igor Zinken
6baaaff871 Allow copy/cut/paste operations on multiple selected Layers (#87)
Simple copy/cut/paste operations were not supported for selected Layers. Further more, only a single selected Layer at a time was supported.

We now support multi select using shift + click. Copy pasting content now also works across timeline tiles for easier editing.
2026-04-08 21:39:20 +02:00
Igor Zinken
12bc99687a Fix issue with outside-initiated drag events leaving brush operations in the wrong state 2026-04-07 21:50:21 +02:00
Igor Zinken
6dcb7607e4 Pixel brushes now draw directly on pointer down for single click paint operations 2026-04-07 21:49:31 +02:00
Igor Zinken
1faf450c7c Fixed issue where export to spritesheet was not always available when switching output file types 2026-04-04 13:11:09 +02:00
Igor Zinken
f085e19716 Add support for custom swatches 2026-04-04 12:36:47 +02:00
Igor Zinken
94b6a3c263 Update unit test mocks 2026-04-04 09:13:25 +02:00
Igor Zinken
1c39d482a6 Slight optimization to export window 2026-04-04 09:11:52 +02:00
Igor Zinken
b347321c89 Create new pixel brush, fill and draw operations on pixel art now no longer have aliased edges 2026-04-04 09:08:50 +02:00
Igor Zinken
c42cd0e662 Round selections in pixel art mode for consistency and more clear draw operations 2026-04-03 21:23:07 +02:00
Igor Zinken
aef7e7ad0b Keep selection outline animation speed more consistent across zoom levels 2026-04-03 21:01:01 +02:00
Igor Zinken
ace84b2e5b Adjust menu outline on large screens with single button width toolbox 2026-04-03 20:24:18 +02:00
Igor Zinken
111046f05f Remove rudimentary, conflicting escape listener in keyboard service 2026-03-30 22:59:41 +02:00
dependabot[bot]
b98bb1ab70 Bump the npm_and_yarn group across 1 directory with 2 updates (#85)
Bumps the npm_and_yarn group with 2 updates in the / directory: [picomatch](https://github.com/micromatch/picomatch) and [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser).


Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

Updates `fast-xml-parser` from 5.4.1 to 5.5.8
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.4.1...v5.5.8)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: fast-xml-parser
  dependency-version: 5.5.8
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 21:32:53 +02:00
dependabot[bot]
f8fdb6a8cd Bump flatted in the npm_and_yarn group across 1 directory (#82)
Bumps the npm_and_yarn group with 1 update in the / directory: [flatted](https://github.com/WebReflection/flatted).


Updates `flatted` from 3.3.3 to 3.4.2
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 21:28:51 +02:00
Igor Zinken
b5e62020fb Fixed broken Dropbox integration 2026-03-28 18:46:12 +01:00
Igor Zinken
35e7fa195f Declutter global styles 2026-03-28 18:11:23 +01:00
Igor Zinken
e787663e51 Small quality of life improvements with regards to styling 2026-03-28 15:38:19 +01:00
Igor Zinken
a75ba07556 Catch NPE on selection update 2026-03-28 15:07:33 +01:00
Igor Zinken
40b66bb21f Rebuild all thumbnails when toggling the thumbnail display on 2026-03-28 15:07:14 +01:00
Igor Zinken
075c9f7a0d Rename action to be in line with format 2026-03-28 07:52:33 +01:00
Igor Zinken
e6ea6ea23f Sync tile cache when performing tile add/clone/delete operations 2026-03-28 07:46:44 +01:00