Remember each floating note's size and position per device

Featurekamo-internal
Shipped
August 14, 2026 at 4:49 PM UTC
Author
kamo
Commit
7bc4745

Reopening a detached note now puts it back exactly where it was left, at the size it was left, on that screen. Placement is per DEVICE, deliberately. Which notes are floating is a property of the member and stays server-side in ui-preferences, so it follows them everywhere; where a note SITS is a property of the screen in front of them, and a layout that suits a 27" desktop is wrong on a laptop. So placements live in localStorage, scoped by member because one browser is one device but can be more than one person. Placements outlive the sticky on purpose — closing a note keeps its geometry, which is the whole point — so the store is capped per member and evicts least-recently-placed first, and a note that is deleted (or 404s on restore) gives its slot up immediately. Two things this had to get right: - logout does a wholesale localStorage.clear(), which would have dropped the layout on every sign-out. It now captures and restores this one key the same way it already does for the deep-link stash. Note ids and coordinates only, never content. - hydration waits for the member id instead of running at mount. Placements are member-scoped, so restoring before we know who this is would silently ignore this device's layout and fall back to the cross-device geometry. Precedence on restore is this device's placement, else whatever the cross-device preference last carried — so a brand-new device still opens to a sane layout rather than a cascade — and either way it is re-clamped to the current viewport.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing