diff options
| author | Adam Soltys <[email protected]> | 2026-09-10 23:09:14 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-09-10 23:09:14 -0700 |
| commit | 7539975beed48ed7aa9c35495d34f5b8b547cc93 (patch) | |
| tree | d92aaea48ac7e3f4d0a5a8363602ef22c164e895 /android/app/src/main | |
| parent | 48e8e588f1a3dee26a2497d1a1757f2f294413a3 (diff) | |
| download | coinosv3-7539975beed48ed7aa9c35495d34f5b8b547cc93.tar.gz coinosv3-7539975beed48ed7aa9c35495d34f5b8b547cc93.zip | |
A transient failure shouldn't cost a face its thumbnail for good.
Pinguimdarelva's picture is 52KB on a CDN that answers in 700ms one minute
and times out the next — I measured both from this machine. The thumbnail
attempt hit one of the bad minutes, and `thumbFail` was written as if the
host had refused us: never retried, so that avatar went back to fetching the
original on every boot.
Only a tainted canvas is a real refusal (no CORS header, nothing to be done),
and that is remembered for good. Everything else — a load error, or a host
that won't answer inside twenty seconds — is stamped with the time and tried
again in six hours. The timeout also frees the slot: three thumbnails run at
a time, and a hanging image used to hold one of them indefinitely.
And zap tallies are remembered between sessions. They were asked of the
relays on every boot, which takes seconds, so a room full of zapped messages
painted bare and filled in afterwards. The totals (never the receipts) are
kept locally and painted straight away; the moment the relays answer for a
message, their word replaces it — so a tally that changed, or a receipt that
was deleted, still settles correctly. Opening a DM thread doesn't forget what
the chat had learned, and the store is capped at 400.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_019mrt228Upn9nNCwGixzSLx
Diffstat (limited to 'android/app/src/main')
0 files changed, 0 insertions, 0 deletions
