Skip to content

BioNodulo Desktop desktop-v0.1.0-alpha.7

Choose a tag to compare

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.