Previously filters were applied to widgets in a quite bespoke way which required a lot of widget-specific logic and UI implementation. The new designs cut this out with a simpler filter tray that attaches widget-specific filters in a standard, simpler, more decoupled way.
Unfortunately implementing this involved a lot of changes, but it cuts out a lot of complexity so while this PR itself was quite painful it should save time in the long run.
Previously filters were applied to widgets in a quite bespoke way which required a lot of widget-specific logic and UI implementation. The new designs cut this out with a simpler filter tray that attaches widget-specific filters in a standard, simpler, more decoupled way.
Unfortunately implementing this involved a lot of changes, but it cuts out a lot of complexity so while this PR itself was quite painful it should save time in the long run.