What: Flash messages re-render on every action and vanish on the next swap. No auto-dismiss timer; no stacking when multiple actions fire close together.
Why: Operators miss messages or see them pile up oddly. Inconsistent with the toast pattern partly implemented for the "saved" indicator (#66).
Approach: Single flash partial + a small JS helper that registers each message with a timer and stacks them in a fixed container.
What: Flash messages re-render on every action and vanish on the next swap. No auto-dismiss timer; no stacking when multiple actions fire close together.
Why: Operators miss messages or see them pile up oddly. Inconsistent with the toast pattern partly implemented for the "saved" indicator (#66).
Approach: Single flash partial + a small JS helper that registers each message with a timer and stacks them in a fixed container.