mirror of
https://github.com/ipnet-mesh/meshcore-hub.git
synced 2026-06-16 08:04:44 +02:00
9af90efee4
- Add observer multi-select (<select multiple size=2>) to Advertisements and Messages filter bars, populated from /api/v1/nodes?observer=true - Make all filter sections collapsible via <details> on Nodes, Advertisements, and Messages pages; collapsed by default, auto-expands when active filters exist, preserves open state across auto-refresh ticks - Add backend observer=true|false query param to GET /api/v1/nodes for observer-only or non-observer-only node filtering via subquery - Change observed_by in Advertisements/Messages API from single public_key to list[str] with .in_() for multi-select support - Fix router.js and api.js to handle array query params (duplicate keys promoted to arrays, .append() per element) - Fix createFilterHandler to use FormData.getAll() for multi-value support - Replace DaisyUI form-control/label/label-text classes with Tailwind-native equivalents (flex flex-col gap-1, flex items-center py-1, opacity-80 text-sm) since DaisyUI CSS is tree-shaken from the build output - Thicker collapsible border (border-2 border-base-content/25) visible in both light and dark themes - Bottom-align Filter/Clear buttons via two-row form layout - Move Observer filter to last position on Advertisements page - Add filter_observer_label i18n key - Add tests for observer=true node filtering and multi observer params