mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-11 16:57:39 +00:00
Bugs: - Metadata edit could re-root a subgroup or drop its children on a load race: the edit ViewModel snapshotted parent/children at prefill and overrode the Account-level live-read defaults. Children are no longer snapshotted (Account reads the live child list at save time), and the parent is only overridden when the user actually re-parents (parentTouched) — a plain rename can't re-root or orphan children anymore, even if metadata hadn't loaded yet. - Parent selector card cached a null channel via remember() and never refreshed, so the parent's name/picture never loaded and the warm-up never mounted. Now get-or-create + warm + observe the metadata flow. - previousEventRefs could let a note with an unresolved author slip past the self-exclusion and reference the sender's own event. Now requires a resolved author. - Assigning a relay-defined role replaced the member's whole role set while the menu implied additive; now keeps existing roles (entry.roles + role.name). - GroupNAddrInvite now also accepts a bare `invite=<code>` remainder if the `?` is stripped upstream (+ test). Performance: - Subgroups bar mounted a full warm-up (metadata + content) subscription per child chip — up to ~21 relay subscriptions per open group. Replaced with one relay-directory subscription; chips read from cache. - Parent picker recomputed the whole candidate scan on every recomposition (each search keystroke) via a produceState initial-value argument; the scan now lives only in the producer with a cheap empty initial. spotless clean; quartz tests green; amethyst compiles. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011Qst2JsmNYMvXitv2vxo4S