Root cause: Wagtail's w-messages Stimulus controller only auto-clears
messages added dynamically via JavaScript (the add() method). Server-
rendered messages — the <li> elements produced by Django's messages
framework after a redirect — have no connect() lifecycle handler and
sit in the DOM indefinitely.
PR #64 added data-w-messages-auto-clear-value="8000" which correctly
handles dynamic messages, but server-rendered ones were unaffected.
PR #64 also added {% ifchanged %} for de-duplication, which doesn't
address persistence.
Fix: mark server-rendered <li> elements with data-server-rendered and
add an inline script that removes them after 8 seconds (matching the
auto-clear timeout for dynamic messages). Also remove the ineffective
{% ifchanged %} de-duplication.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Admin messages now auto-clear after 8 seconds via the w-messages
Stimulus controller's autoClear value, preventing message pile-up.
Category model gains verbose_name_plural so Wagtail shows "Categories"
instead of "Categorys" in the snippets menu.
Closes#62
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>