You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Actually check for updates, and make node comments visible
**Updates.** The updater plugin, its minisign key and a signed `latest.json`
feed have been configured since the Tauri migration, and every release publishes
signed artifacts — but nothing ever called `check()`. The app shipped with a
working auto-updater that had never updated anything. It now asks on startup and
offers to install; the plugin verifies the signature, so a substituted artifact
fails rather than installing.
Installing stays the user's choice: a workflow may be mid-run and restarting
under someone would lose it, so the offer says that and waits. A failed check is
silent — offline or behind a blocking proxy is not something the user can act
on, and an error on every launch would train them to ignore it.
**Comments.** The pin was a 20px badge centred on the node's top-right corner,
so it sat *on* the node and was easy to miss. It now floats clear above the
corner, is 28px with a larger label, and carries a wider shadow so it reads as
hovering rather than stuck on.
Unread comments bounce. That needed a notion of "unread", which did not exist —
only `resolved`, which is a property of the thread rather than the reader: a
resolved thread can hold something you never saw, and an unresolved one can be
entirely your own writing. Read state is per-reader and local to the browser,
since syncing it would write to the collab document every time someone glanced
at a thread. Your own comments never count as unread, and an unparseable
timestamp counts as read so bad data cannot leave a pin bouncing forever. The
animation is skipped under prefers-reduced-motion, which keeps the ring.
The pin is split into an anchor and a badge because one element cannot both be
positioned by `transform` and animate it.
**Placement.** The viewport-centre reader now uses React Flow's own
`screenToFlowPosition` instead of inverting the viewport transform by hand: it
accounts for the container's offset on the page and survives the library
changing how the transform is applied.