ENOGU

← All the investigations

Research

Friction

After refilling the brush turned out to be the wrong idea (Refilling), the owner asked which other points of friction the app has, then: "Fix what we can and keep a list of what we did and didn't fix." This is that list. It comes from reading the code and the owner's reports, not yet from watching a first-time painter, which is still the real test (Reviews).

Roughly worst first when it was written.

Fixed

Friction What happened What changed
Refilling the brush A stroke went faint and you had to remember to tap the colour well for more. Every stroke starts with fresh paint; a long stroke still runs dry along its length. The tap on the colour well opens the colour rings. (Refilling)
A blank canvas after the phone takes back the GPU's memory iOS can take back the GPU's memory under memory pressure or in the background. The canvas stayed blank; it looked like a crash. The stress test confirmed it. The canvas rebuilds itself from the paint the page still holds: shaders, textures and the whole painting uploaded again. The stress test now passes it.
One error froze the canvas A single script error inside a frame stopped the drawing loop for good; the menus still opened, the painting didn't change. The error is reported once, the stroke in progress is dropped, and drawing carries on. The stress test throws inside a frame to check it.
A wrong part in a mix couldn't be taken back Each tap on a colour adds a part to the selected mix, and there was no "one part less": a wrong tap meant clearing the mix and starting again. Undo (and the two-finger tap) takes back changes to a mix as well as strokes: an added part, a cleared mix, a colour picked with the eyedropper. Redo puts it back. The touch test checks it.
Shared images piling up Every image shared was left in the app's temporary storage. Only the image being shared is kept.

Not fixed yet

Friction Why it isn't fixed What it would take
Choosing a colour and adding to a mix are the same tap With a mix selected, tapping yellow adds yellow to that mix; someone expecting a colour picker spoils a saved mix. It is how mixing by parts works, so changing it is a design choice, the owner's. Undo now makes a mistake cheap. A conversation like the one on refilling: for example, tapping a colour on an empty mix picks it; a mix only grows once you've started it.
The paint doesn't land under the finger By design: it lands past the fingertip so you can see it (The covering finger). Now always straight up and the same distance, so it's predictable, with no hand setting; the cost is a bottom strip that needs zooming in to reach. A first-time test on the phone, to see whether the distance feels right.
Hidden gestures Turning a ring's pages by swiping along it, the two-finger tap to undo, press-and-slide to open a menu. Hints name some of them once; the ring pages show dots only, at the owner's request. A first-time test on the phone, to see which ones people actually miss.
The launch always waits The launch screen holds at least 2.4 s even when the canvas is ready sooner. Kept on purpose: the owner asked for the 2 s hold. Only the owner's say-so.
Wet paint muddies colours; Dry is out of reach True to oil, and part of the brief. But newcomers get mud, and Dry sits in the top-left column. A design choice: Dry closer to hand, or a hint the first time colours turn to mud.
Brush size is set three ways The size arc, dragging the rings' centre, and how flat you press. It's hard to predict a stroke's width. A design choice about which one leads.
The knife, finger and rag are on a third page Of the brush ring, where they're easy to miss. A design choice about the brush ring's pages.
A saved image is flat The share is a flat picture, so the raised paint doesn't come across. A relightable share and a height export; a large feature.
The rest of the stability plan The page can't answer iOS's memory warnings, protect a save when the app goes to the background, or share without large base64 strings; each needs native work, which is only tested with Xcode and on the phone. A brand-new painting interrupted within its first seconds of saving can open empty. The stability plan: the rest of P0 (memory warnings, background saves, sharing through the app's own scheme, a session record) and transactional saves (P2).

Keeping it current

A fix moves its row up to Fixed with what changed; a new friction is added to Not fixed with why.

Written 2026-09-28. Kept as it was written; the app may have moved on since.