0.267.14
0.267.14
Mostly a performance release, and a mobile one. Covering notes is dramatically
cheaper on a phone, the list no longer flickers when you add a note, and the
Send button is reliable again.
Covered notes stopped making the list stutter
Blurring a note used to promote it to its own compositing layer. With a screen
full of covered notes, a phone has neither the memory nor the fill rate for
that, and it showed:
| typical frame | slowest 10% | worst frame | |
|---|---|---|---|
| before | 17ms | 172ms | 862ms |
| after | 17ms | 18ms | 71ms |
| not covered, for comparison | 17ms | 18ms | 41ms |
The typical frame was identical throughout, which is why this went unnoticed
for so long — the stutter lived entirely in the occasional frame, and only on a
phone. Desktop measured the same either way, both before and after.
Covered text is now blurred while it is drawn, rather than drawn and then
blurred, which needs no compositing layer at all. Scrolling a list of covered
notes now costs essentially what scrolling an uncovered one does.
A solid bar, if you prefer it
Settings → How covered notes look offers Blur or Solid bar. The bar is
cheaper again, and hides more: a blur still leaks word shapes and lengths, and
short text can be guessable from those. Blur remains the default.
The Send button is reliable again
On mobile, Send now acts the moment your finger lifts, rather than waiting for a
click that the platform sometimes never delivered. It had been intermittent
since the composer buttons were reworked — the guard that stops a tap dismissing
the keyboard was also, on iOS, suppressing the tap itself.
Less flicker
- Adding a note repaints the list once when everything settles, instead of
three or four times as the write, the index and the parent link each land. The
new note still appears instantly, including when you add several in a row. - Background tabs no longer re-render while you cannot see them. A Stashpad
holding several hundred notes was rebuilding its whole list on every change,
competing with the tab you were actually looking at. It renders the moment you
switch to it, so nothing is stale.
Diagnostics
Four commands, so they are reachable while reproducing something rather than
four taps into Settings:
- Copy debug trace to clipboard
- Clear debug trace
- Turn the debug trace on / off
- Measure scroll performance — scrolls the list and records real frame
times, which is what produced the table above.
The trace itself is more useful too: repeated identical lines collapse to a
count, so more history fits in the buffer and there is less to copy; it reports
Obsidian's version correctly; and it names your device when Obsidian Sync has
one, since a phone cannot otherwise be told apart from another phone.
Also
- The two global cover commands are worded as a pair.
- Obsidian's version is read from the plugin API rather than the browser, which
is a community-plugin requirement.