SIGN IN SIGN UP

notification: Add configurable width and per-notification placement (#2707)

https://github.com/user-attachments/assets/3131bf7a-43a4-4a45-94b5-b78e352c1522

## Description

Notification sizing and placement were both global-only. This makes the
width configurable and lets a single notification pick its own
placement.

- `NotificationSettings::width` sets the stack width, default `382px`
(was a private `356px` constant).
- `Notification::placement` overrides the global placement for one
notification. Notifications are grouped by their effective placement,
and each placement gets its own stack with independent collapse/expand
state.
- `Root::render_notification_layer` is now a full-size overlay; each
stack positions itself from `NotificationSettings::margins`, so
`LeftCenter` and `RightCenter` are placed correctly instead of falling
back to bottom center.
- Each stack is keyed by its `Anchor`. Keying it by position among the
mounted stacks meant that dismissing one placement changed the element
id of the others, dropping their element state and replaying every enter
animation in them, visible as a flicker on the remaining notifications.

The story lists all eight anchors, both for the global setting and for
the per-notification override.

The implementation was written with Claude Code and reviewed by hand.
F
Floyd Wang committed
03b331ca9c45530c05ef7a07a91dd2c091fd27af
Parent: b71acf5
Committed by GitHub <noreply@github.com> on 8/14/2026, 8:23:29 AM