Skip to content

Releases: fangzhangmnm/weebpaint

v0.14.32

Choose a tag to compare

@fangzhangmnm fangzhangmnm released this 16 Oct 23:30

Single-file offline build. Download the .html and open it in a browser. Same build as the itch.io upload.

v0.14.29

Choose a tag to compare

@fangzhangmnm fangzhangmnm released this 13 Oct 22:41

Clipping masks now work on top of a layer group

A layer clipped to a group now clips to everything in that group, the way it always did for a single
layer (and the way the design said it should). Groups in any blend mode or opacity work as a base; the
mask uses the group's own content, not the group's opacity. If an old painting had a clipped layer sitting
on a group, it will now look clipped
— that is the intended look, which the GPU renderer had been skipping.

The selection follows a transform

Moving, scaling or rotating a selection no longer throws the selection away. While the content floats there
is no selection; when you apply, the selection comes back in the new place and shape, and if you cancel it
comes back where it was. The deselect button no longer disappears after a transform.

Undo bookkeeping, fixed at the root

The earlier fix for "undo wipes the history after Split colors" treated one symptom. The pixel history is now
tracked by the identity of each layer's pixel store rather than by its position in the layer tree, so creating,
writing and deleting layers inside one undo step can no longer disagree about order. A randomized test over
layer operations guards it.

Smaller things

  • The layer ⋯ menu's Split colors and Clear items no longer stay greyed out after importing an image and
    applying the transform.
  • Cloud sync library update: saving while a sync push is still in flight can no longer leave the file marked as
    synced when it is not.

v0.14.25

Choose a tag to compare

@fangzhangmnm fangzhangmnm released this 13 Oct 21:21

Undo no longer loses its history after "Split colors" or "Merge group to layer"

Undoing right after Split colors to layers or Merge group to layer used to throw the whole
undo history away (the painting itself was never lost — only the ability to undo and redo). Fixed, with
a randomized stress test over layer operations guarding it.

One-finger drawing is on by default

Drawing with a finger is now on out of the box. The first time the app sees a stylus it turns the
setting off for that device, once, and tells you. If you ever touch the switch yourself, the app keeps
your choice from then on and stops guessing.

Reference window

The reference window moved into a shared component and gained a text card: pasting (Ctrl/Cmd+V) now
goes to whichever window has focus, and plain text or Markdown pasted into the reference window becomes
a card you can read next to your painting. Reference cards are saved in the file under their own
folder (.weebpaint/references/) with their file names, so the jump list can show them.

Smaller things

  • The layer + menu no longer stretches to the bottom of the screen.
  • The clipping-mask items in the layer menu use the standard Chinese term (剪贴蒙版).
  • Timelapse metadata is covered by the file-format migration table, so very old files load cleanly.

v0.14.20

Choose a tag to compare

@fangzhangmnm fangzhangmnm released this 20 Sep 17:17

A smudge tool

The top bar now has a Smudge verb next to Pen, Eraser and Lasso. It comes in three flavours,
picked from a labelled dropdown in the context bar:

  • Finger (smear) drags the paint that is already there.
  • Blend (dull) softens and evens out what is under the brush. A Dull knob slides continuously
    between smearing and blending, so the two are really one tool with a dial.
  • Wet finger (paint) carries your current colour into the stroke, with Dilution and Memory
    controls for how much colour it brings and how long it remembers what it picked up.

Mixing happens in your choice of colour space — Plain mix, Vivid mix (keeps saturation) or
Pigment mix (spectral, closer to real paint). Smudge has its own strength dial, its own brush rack,
and its default is a soft 32 px brush at half strength. Its settings, including dilution and memory,
persist with the app.

The Blur and Sharpen brushes were tuned in the same round: their dab spacing now follows the
brush like every other brush (it had been stuck at a hard-coded value since an old build), with a
floor of 10 % so a blur stroke stays smooth.

Smudge, blur, sharpen and liquify now run on the GPU

All four were CPU tools. They now run as GPU region programs, translated dab for dab from the CPU
originals and checked against them pixel by pixel. The visible change is in Liquify: the stall on
every pen-down that testers reported is gone — the old engine copied the whole content box and
allocated a full-size buffer at the start of each stroke; the new one grows a displacement field only
as far as the stroke reaches.

Shader compilation for these programs happens in idle time after your document is already on screen,
never as a wait at startup. Devices whose WebGL cannot provide floating-point render targets get a
message instead of a broken tool.

Pressure

  • A Pressure sensitivity setting in the menu with four levels, for pens that report too much or
    too little.
  • Each brush now has a Pressure curve — the same keyframe curve editor as the Curves filter, with
    draggable handles and weighted tangents.
  • Holding the pen still at the start of a stroke no longer builds up into an ink blot.

Curves and Gradient map

The Curves filter was rebuilt on a keyframe curve editor: drag handles, add and delete points with
real buttons, choose tangent modes per point, and pull handles to different lengths on each side
(weighted tangents, as in Unity or Blender). The window can be dragged larger from any edge.

A new Gradient map filter maps luminance through an editable colour ramp; colour stops connect to
the current colour target, so you edit a stop with the same picker you use everywhere else.

Top bar: verbs, with the details in the context bar

The top bar is now a row of verbs — Pen, Eraser, Smudge, Lasso, Shape brush — and each verb's sub-tools
(which kind of pen, which kind of selection, which kind of smudge) live in the left segment of the
context bar below it. Long-press a verb to call that bar up. Rows of unlabelled icons were replaced with
labelled dropdowns.

The eyedropper moved: there is now a one-shot pick button in the left column between the two
sliders (tap for one sample, hold to keep sampling), plus an eyedropper on the palette. After a pick you
are returned to the tool you were using. The old top-bar eyedropper is gone.

Smaller things in the same pass: the layer adjustments drawer became a popup that closes itself when
you switch layers; the blend-mode dropdown shows its text again; the reference window has a close
button; the main-menu button toggles the menu; dropdowns are sized to their own widest entry.

Shape brush is back as its own button

The Shape brush (S) returns as a separate top-bar verb with its own context bar, behaving as it did
before the 0.14 experiments. The vanishing-point editor got a ✓ to return to the shape brush, the grid
stepper is more compact, and one-point perspective no longer swaps rows and columns.

Selection belongs to the document, not the tool

Switching from Lasso to the fill bucket carries your current selection into fill automatically.
Switching back drops the fill preview but keeps the selection.

Gallery and sync

  • If the gallery gets stuck, it now offers Diagnostic log and Reload app on the spot.
  • A hung IndexedDB no longer takes the gallery down with it; the app detects the hang and recovers.
  • When your cloud sign-in expires overnight, the gallery keeps showing the full cloud list rather than
    silently dropping to local files only. Only an explicit sign-out switches you to local-only.
  • Closing the tab mid-read no longer leaves a lock behind.
  • The update notice and the reload after an update wait for sign-in to finish (up to 8 s), so a
    reload no longer lands in the middle of a Microsoft login round-trip.
  • The diagnostic log can be copied reliably again, and can be shared as a .txt file.

Also

Eight new icons (blend, blur, sharpen, liquify, chevrons, 1:1, help) replace the placeholder glyphs
that had been standing in for them.


Single-file offline build attached: download the .html and open it in a browser. Same build as the
itch.io upload.

v0.12.31

Choose a tag to compare

@fangzhangmnm fangzhangmnm released this 05 Sep 16:38

Keep drawing while your work uploads

Saving to OneDrive used to put up a full-screen "busy" overlay for a few seconds every time a
save was pushed to the cloud, and again when a file was renamed. During that window you could not draw.

This build routes those two background operations to a quiet notice instead. The upload still happens,
the sync badge in the top bar still shows the saving state, and you keep drawing the whole time.
Encrypting, emptying the trash, and folder operations still show the overlay — those need the document
held still.

Apple Pencil pressure — a fallback for browsers that drop it

A tester on a 2023 iPad reported flat lines in WeebPaint while Procreate showed full pressure. WeebPaint
reads pressure from the high-frequency sample list Safari delivers with each pointer event; on that
device those samples appear to carry no pressure at all, so the whole stroke stayed at the pen-down value.

Now, when a sample has no pressure but the pointer event itself does, WeebPaint uses the event's
pressure. On browsers that report pressure correctly nothing changes. If your Pencil still draws flat
lines after this build, please tell us — that would mean the browser reports no pressure anywhere.

Offline start is reliable again after a long idle

Browsers shut down an idle service worker after about half a minute and restart it on the next request.
After such a restart WeebPaint's worker had lost track of its own cache name, so every request opened a
fresh, empty cache and the precached files were never hit — whether the app could open offline came
down to luck. The worker now finds its cache again after a restart. It also no longer intercepts
requests that fall outside WeebPaint's own path.


Single-file offline build attached: download the .html and open it in a browser. Same build as the
itch.io upload.

v0.12.28

Choose a tag to compare

@fangzhangmnm fangzhangmnm released this 02 Sep 21:33

Pen pressure on Windows — read this if your lines come out flat

Browsers can only receive pen pressure through Windows Ink. If your tablet driver is set up for
WinTab only, the browser just sees a plain mouse — constant pressure, constant line width — and there
is no web API that lets an app tell you that directly.

This build adds a self-diagnosis. When WeebPaint sees evidence that pressure is missing, it shows a
one-time notice — "No pressure? Please enable Windows Ink in your tablet driver" — with a Details
button that opens the new built-in help page carrying the full fix.

The fix, in short:

  1. Open your tablet driver panel (Huion / XP-Pen / Wacom) and enable Windows Ink in its pen settings.
  2. Close every browser window, then reopen it and come back to WeebPaint.
  3. Try a pressure-sensitive brush — brushes whose names say "fixed" ignore pressure by design.

Enabling Windows Ink does not break Clip Studio Paint or Photoshop; they can keep using WinTab. If
Windows Ink brings back the ink ripple or the long-press right-click menu, turn those off in Windows
Settings → Pen & Windows Ink.

Also in this build

  • Built-in help panel — in-app documentation in your app language (English / 日本語 / 中文).
  • UI rebuild — floating windows, popup menus, modal sheets, notices and dropdowns now all run on
    shared components: fewer stuck panels, fewer stray menus, consistent dismissal everywhere.
  • Gallery robustness — first-frame watchdog, a visible loading state, and a timeout on the
    storage-usage readout, after a case where the gallery could come back blank following a long session
    with the screen locked.

Single-file offline build attached: download the .html and open it in a browser. Same build as the
itch.io upload.

v0.12.15

Choose a tag to compare

@fangzhangmnm fangzhangmnm released this 30 Aug 23:19

Single-file offline build. Download the .html and open it in a browser. Same build as the itch.io upload.

v0.11.46

Choose a tag to compare

@fangzhangmnm fangzhangmnm released this 29 Aug 21:54

Single-file offline build. Download the .html and open it in a browser. Same build as the itch.io upload.

v0.11.45

Choose a tag to compare

@fangzhangmnm fangzhangmnm released this 29 Aug 02:56

Single-file offline build. Download the .html and open it in a browser. Same build as the itch.io upload.