Home
Projects
Resources
Alternatives
Blog
Sign In
Christianliebel Paint Versions
Save
Open source, Web Components-based remake of MS Paint using modern web capabilities. 🎨🖌
Overview
Versions
Reviews
Resources
v1.3.0
2 weeks ago
1.3.0
(2024-05-16)
Features
add file handler icon (
a817e21
), closes
#568
e2e:
migrate to Cypress 10 (
6d3e99a
)
elements:
add throttledPointerMove method to Canvas class (
0a5cdbd
)
helpers:
bring back Local Font Access API (
63c8f8f
)
index.html:
reference files in public folder (
698e96c
)
tools:
implement ellipse tool (
468166c
), closes
#27
Bug Fixes
custom-elements:
update manifest to match spec (
bf03dd5
)
do not process manifest (
ed04e36
)
edit:
fix copy command for Safari (
13c4d52
)
elements:
update app.ts - fix bug with z-index (
e58e653
)
expose Vite port locally (
9ad8b31
)
menus:
cast to unknown as FileSystemHandle types don’t overlap (
3e96547
)
tools:
fix TypeScript errors after migration to TS 5 (
f2341e0
)
update default ports to Vite’s 5173 (
d942ccd
)
use built-in FileSystemHandle types (
179e6a0
)
v1.2.0
8 months ago
1.2.0
(2023-09-11)
Features
add file handler icon (
a817e21
), closes
#568
e2e:
migrate to Cypress 10 (
6d3e99a
)
helpers:
bring back Local Font Access API (
63c8f8f
)
tools:
implement ellipse tool (
468166c
), closes
#27
Bug Fixes
custom-elements:
update manifest to match spec (
bf03dd5
)
edit:
fix copy command for Safari (
13c4d52
)
elements:
update app.ts - fix bug with z-index (
e58e653
)
menus:
cast to unknown as FileSystemHandle types don’t overlap (
3e96547
)
use built-in FileSystemHandle types (
179e6a0
)
v1.1.1
2 years ago
1.1.1
(2022-02-28)
Bug Fixes
custom-elements:
update manifest to match spec (
bf03dd5
)
v1.1.0
2 years ago
1.1.0
(2021-09-03)
Features
elements:
inline tool images (
dbf8859
), closes
#422
v1.0.1
2 years ago
1.0.1 (2021-09-03)
v1.0.0
2 years ago
1.0.0 (2021-09-03)
Features
action:
add draw opaque action (
47efb87
), closes
#61
action:
preliminary version of View Bitmap (
97a652f
)
actions:
add preliminary file actions (
801916c
)
actions:
add save action (
0d94ef4
)
actions:
clear image with secondary color (
3870b44
)
actions:
fix extensions (
2377fb0
)
actions:
implement clear image action (
369ca7e
)
actions:
implement get/save colors (
51ac6d1
), closes
#59
#60
actions:
implement invert image (
bdbe90b
)
actions:
implement open action (
559b8ca
)
actions:
implement preliminary flip/rotate dialog (
e1e3aaa
)
actions:
implement print action (
481934e
)
actions:
implement tool box, color box, status bar actions (
7fcdebc
), closes
#47
#48
#49
actions:
new action interface (
136119e
)
actions:
preliminary implementation for clear selection (
8a4abe5
)
actions:
remove TODO comment, format (
9404fbb
)
add browser-nativefs (
a58a0dc
)
add canvas (
63703e4
)
add CNAME file (
3d731cd
)
add DevContainer (
43c8296
)
add handles (
09e148f
)
add index.html (
3420d7b
)
add inset container (
1b5b5fd
)
add license (
bd96296
)
add lit-element (
2b6d446
)
add menu bar (
2a51a3b
)
add npm start command (
34ae78b
)
add package.json (
2429832
)
add README (
9c2ae79
)
add ruler (
b65c56f
)
add service worker (
3e6e23e
), closes
#11
add Snowpack (
4d0944a
)
add status bar (
f3373d0
)
add toolbar (
ce426db
)
app:
add basic document context (
955cd7b
)
app:
add selected background style (
97803c4
)
app:
disallow selections and hide text cursor (
7dc190c
)
app:
drop unused selection from app (
29f5d19
)
app:
hide webkit tap highlights (
133e074
)
app:
hotkey support (
b52d324
)
app:
implement dark mode (
8a11e08
), closes
#13
app:
prepare tool communication (
bf275b3
)
app:
update document title only in app context (
3b29530
)
browser-nativefs:
update web_modules (
1922f72
)
build:
automate license file generation (
1ec0f22
)
build:
fix output path (
a868b5a
)
button:
activate buttons via keyboard (
2e6f042
)
button:
add new paint-button (
fa0cee9
)
button:
support mnemonics (
ed95a5d
)
canvas:
prepare preview canvas (
2432b51
)
canvas:
respond to magnifierSize (
41641ce
)
capabilties:
add drag & drop support (
87144f0
)
color-box:
swap colors for pen and touch inputs (
6ed3442
), closes
#264
content if JS is disabled (
16700d9
)
copy:
add selection, copy & cut actions (
1f7cf9c
)
data:
add list of tools (
c23d637
)
define meta theme-color (
80b22ef
)
deps:
migrate to lit (
2cebe7b
)
dialogs:
add About (
7593153
), closes
#52
dialogs:
implement custom zoom dialog (
33147e3
)
dialogs:
introduce message box (
d4ef733
)
drawing-context:
always define previous editing tool (
c8b2c93
)
drawing-context:
define previous magnifier size (
b954aac
)
e2e:
add cypress (
3cf052a
)
elements:
add color box (
7cfe469
)
elements:
add color picker (
90a941c
)
elements:
add color switcher (
1998f64
)
elements:
add customElement decorator to tool box (
fe60317
)
elements:
add first draft of toolbox (
0e8581d
)
elements:
add status bar graphics (
66d9e9d
)
elements:
add tool fill style element (
4568eca
)
elements:
basic drawing support for canvas (
7693ef4
)
elements:
consume colors from outside (
35935a5
)
elements:
desync canvas (
aad283f
)
elements:
disable menus for now (
80cefd9
)
elements:
disable other tools for now (
cdbd49b
)
elements:
don’t overflow status bar panels (
61a9d18
)
elements:
initialize canvas with screen resolution (
7d351de
)
elements:
introduce line width config (
e22ba13
)
elements:
prepare menu bar for selections (
ec5b735
)
elements:
render tools (
0a515c6
)
elements:
show coordinate text in statusbar (
073d6a1
)
elements:
slot for toolbar (
5f9ff9e
)
elements:
tweaking app (
a31e23f
)
elements:
use currentColor instead of setting fill color directly (
74b52c8
)
elements:
use paint-ruler (
d1fe8a6
)
exit:
suppress beforeunload handler when exiting (
63602a8
)
favicon:
add favicon (
2dd17df
)
file-handling:
add support for file handling API (
03e534e
), closes
#131
first color definitions (
d60ad23
)
fs-access:
improve file handling (
e42192e
)
helpers:
add helper method for opening messageb boxes (
7c8ee50
)
helpers:
don’t register service worker on localhost (
d30e6c7
)
helpers:
use createImageBitmap() if present (
43389c4
)
history:
add undo/redo stack (
191401c
)
ignore folders (
734f76d
)
image:
fix showDialog for flip-rotate (
92dbf81
)
image:
introduce attributes window (
585180a
)
index.html:
add apple-touch-icon (
493fce6
)
index.html:
add social images (
f442b06
)
index:
add meta description (
6adc427
)
introduce paint app component (
cf312f1
)
license:
add license text (
2f4e2d4
)
manifest:
add basic manifest (
c56e58a
)
manifest:
explicitly specify start_url and scope (
aa26bb9
)
menu:
add exit action (
fb33aef
)
menu:
add mnemonic for third-party menu entry (
eac1c19
)
menu:
add opener graphic (
c3e766c
)
menu:
add selection graphic (
18efc3b
)
menu:
basic menu and help text implementation (
cd6b63c
)
menu:
display mnemonics (
22e2c84
)
menu:
don’t assign Ctrl+R hotkey (
598e099
)
menu:
link to GItHub repo (
23ad103
)
menus:
add preliminary copy/paste actions (
85c849b
)
menus:
add Send action using Web Share API Level 2 (
913f5ab
), closes
#74
menus:
finalize get colors action (
0cda6fc
), closes
#59
menu:
show mnemonics in menu bar as well (
da87ee6
)
menu:
show submenu (
5603639
)
menus:
implement flip and rotate (
4ea0e1e
)
menus:
implement New action (
28dff21
)
menus:
prepare view menu (
674d90c
)
menus:
show recent file entry (
d015602
)
mobile:
disable overscrolling, respect safe area (
e250acd
)
native-fs origin trial token (
fde0a1e
)
paint:
removed obsolete stuff (
ca3ba39
)
status-bar:
implement support for area text (
393b112
)
styles:
disable overscroll (
ea1bab8
)
sw:
update (
c7c1844
)
text-area:
check if advanced text metrics are available (
613f407
)
text-toolbar:
delay loading local fonts (
6549cff
)
text:
deselect text tool when zoomed in (
ba01797
)
tool:
add draw opaque selection (
0146110
)
tool:
fix flood fill construction (
da7da32
)
tool:
implement brush tool (
a334923
), closes
#20
tool:
implement eraser (
5937a48
), closes
#16
tool:
implement line tool (
06b6f55
), closes
#23
tool:
implement rectangle tool (
44ddbfe
), closes
#25
tool:
press style for tools (
bd4fd20
)
tools:
add basic ellipse tool (
aa055d9
)
tools:
add description texts (
c1a7b9b
)
tools:
add pick tool including preview box (
07aba36
), closes
#18
tools:
add text tool backed by Local Foint Access API (
06e2e89
)
tools:
draw eraser on pointer down (
dddf722
)
tools:
implement airbrush (
4ef550e
)
tools:
implement fill tool (
78cecbe
), closes
#17
tools:
implement new tool abstraction (
63b3c01
)
tools:
preliminary select tool (
7cd2d35
)
tools:
preliminary version of brush tool (
3b76b82
)
tools:
preliminary version of Line tool (
fabdad7
)
tools:
preliminary version of rectangle tool (
232081e
)
tools:
preliminary version of select tool (
3eae15c
)
tools:
prepare airbrush (
e3bff4e
)
tools:
reset to previous editing tool after picker has been used (
9e940c2
)
tools:
use bresenham line algorithm (
ca1a223
), closes
#70
view:
implement custom zoom action (
0fd43e3
)
view:
implement normal and large size actions (
45ac43f
)
window:
allow centering window (
efdfaee
)
window:
clamp dialog to screen bounds (
896b9b0
)
window:
implement floating window (
00fad5f
), closes
#30
window:
implement title bar button (
b9451bf
)
Bug Fixes
action:
fix paste (
c8cf1a3
)
actions:
fix palette file extension (
14c490b
)
actions:
fix write method detection for TS (
3c29a50
)
app:
drop unused checked property (
a68d1db
)
canvas:
allow drawing outside of canvas (
58cace9
)
canvas:
normalize coordinates (
52df5e3
), closes
#9
canvas:
only invoke mouseUp if it was down before (
36f9347
)
canvas:
support drawing on mobile (
55cef2d
), closes
#10
canvas:
upper right handle is disabled (
968f9e3
)
css:
fix width of paint-app (
4efc3ec
)
data:
fix font toolbar defaults (
afa823e
)
data:
text toolbar should be visible by default (
92f13a9
)
dialog:
hyphen in about dialog (
99d8f40
)
docs:
update browser-fs-access link (
be5d450
)
elements:
fix imports (
eb42020
)
elements:
use border-box sizing in inset container (
d0f5bfc
)
linter and import issues (
cfbb3cd
)
menu-bar:
make menus pixel perfect (
d41f51d
)
menus:
fix imports (
7dba959
)
options:
add missing js extension (
72f46eb
)
package.json:
fix production build (
9dd4729
)
styles:
flex body (
3b380a4
)
tool-box:
fix import (
166080f
)
tool-box:
fix tool box behavior (
799b471
)
tool:
make tool buttons pixel-perfect again (
a82ed47
)
tools:
fix ellipse anti-aliasing (
dd69426
)
tools:
fix filename (
f4d593d
)
tools:
fix flood-fill (
48f72ea
)
ts:
fix TS issues (
77c4efd
)
Home
Projects
Resources
Alternatives
Blog
Sign In
Sign In to OSA
I agree with
Terms of Service
and
Privacy Policy
Sign In with Github