Fixed
- Settings › Generative AI keeps a key you Check. The Account card's Check button asked fal.ai about a freshly typed key and then threw it away, and the only Save button sat at the bottom of the Spending card, so a key typed and checked read as "no key" on the next visit and every widget that paints stayed waiting. Check now saves a new key that fal.ai accepts (the note says "Saved."), a refused key is not kept, and the Account card has its own Save button.
Added
- Background paintings in the status pop-up. A send waiting for a page's pictures and a page run ahead of its scheduled send each show a card in the job tray while they run: whose page, how many pictures are still painting and when they look again.
[0.466.0], 2026-10-18
Added
- Battery tile words a
power_pluggedheartbeat field as "plugged in" or "on battery", for a UPS on a mains device such as a PiSugar on a Pi. The Pi clients gained a[battery]config table that reads a PiSugar 3 over I²C or via pisugar-server.
[0.465.0], 2026-10-18
Added
app.commons: free pictures from Wikimedia Commons for every widget that
paints. A file by title, a category's files, the best portrait of a
subject in a category (ranked by name: an identifier first, then the
subject's name, never a plaque, a cabin or a visit), the picture's bytes
for the painter, and one wording for the credit with the author and
licence read off the file. One cache under<data root>/commons/, one
User-Agent with the contact set under Settings › Generative AI, requests
one at a time with a small gap as Commons asks. Underway, Orbit and
Overhead carried a copy each; they use the host's when it is there.- Settings › Generative AI has the contact field and shows the size of the
Commons cache. - The artwork page says when a picture is an impression, painted from a
description rather than a picture (meta["impression"]).
Fixed
- Setup text now gives the server's own address (#344). The access-token
pop-up for the Bloomin8 Canvas and TRMNL kinds built its URL from the
browser's address, which through Home Assistant ingress is HA's host and
port 8123, so a Canvas set up from it called Home Assistant instead of
Tesserae. It now uses the detected LAN address and bind port the frame
URLs already use. The Canvas pop-up and quickstart also carry a Windows
PowerShell form of the pull-settings command; the previous one only ran in
a Unix shell. - Add device lists kinds alphabetically by their display name (#344).
- Docker: the data directory's owner bits are restored on start (#372).
A NAS that keeps share permissions in its own ACL layer (Ugreen OS,
Synology) can leave the bind mount's real mode at 000, which its own tools
show as rwx; the container then failed at start with a permission error on
data/pluginseven though the listing looked right. The entrypoint now
adds the owner's read, write and search bits after the chown.
[0.464.1], 2026-10-18
Fixed
- The cell id hash is marked as not for security, which the CI security scan
flagged on 0.463.0 and 0.464.0 (bandit B324); nothing else changes.
[0.464.0], 2026-10-18
Added
- Settings › Generative AI: the fal.ai key every painting widget shares (a
widget's own key still comes first), a Check that asks fal.ai about the
key without painting anything, and two spending ceilings, US dollars a
day and a month, over every widget together; a widget's own budget
applies inside them. The page shows to-day and the month, a strip of the
last thirty days, who is painting with a link to each widget's pictures,
and the month by widget and model, from a ledger every charge is written
to (<data root>/artwork/ledger.jsonl). - A send waits for the page's paintings: a push of a page with a widget
that asks to be run ahead first runs the page and, while it still asks
for a refresh, runs it again after that wait, up to five minutes, so the
panel paints the finished page once. Manual sends wait too; follow-ups
and warms do not. History says how long a send waited.
Fixed
- The host version the
tesserae_mingate compares against is the
checkout's pyproject.toml when there is one, not the installed package's
metadata, which goes stale on a source install run after a bump and
turned current widgets away as too new.