setCookie() JSON-encodes arrays, so the Monitor/Notes/Group filter cookies are
stored as JSON while simple_widget() read them with explode(','), breaking
round-trips (montagereview already writes JSON). Add Filter::decode_multi()
which json_decodes first and falls back to explode(',') for legacy comma
values, and route the Monitor and Notes term/cookie reads through it. Also add
the missing cookie-default handling to the Group term so a persisted group
selection is applied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>