BUG FIXES:
1. HTTPClient '_generate_cache_key' AttributeError:
- The method definition was missing, only had docstring and body
- Added proper method signature: def _generate_cache_key(self, url, params)
2. Dashboard 'bg_dark' KeyError:
- EU_COLORS doesn't have 'bg_dark'
- Changed to 'bg_secondary' which is the correct color
3. Log Parser 'maximum recursion depth exceeded':
- read_log() was calling itself instead of parent method
- Changed to super().read_log() to call BasePlugin's method
These fixes resolve:
- Universal Search not working
- API errors
- Dashboard customize dialog crash
- Log Parser infinite recursion
BUG 1: Sidebar buttons clicked wrong plugin
- Lambda captured idx by reference, always using last value
- Fixed by using functools.partial to capture by value
BUG 2: Dashboard plugin KeyError 'border_subtle'
- Changed to 'border_default' which exists in EU_COLORS
The sidebar should now correctly switch to the clicked plugin.
BUG: 'bg_panel' KeyError in Dashboard plugin.
The EU_COLORS dictionary doesn't have 'bg_panel'. Changed to use
'bg_secondary' which is the correct background color for panels.