# Package Manager Badges Enhancement ## Current Implementation Issues ### 1. **Incorrect Detection on Fedora** - **Problem**: Fedora machine incorrectly shows as using APT - **Root Cause**: Detection logic is not properly identifying the correct package manager for the OS - **Expected**: Fedora should show DNF as active, APT as inactive/greyed out ### 2. **Incomplete Package Manager Display** - **Problem**: Only shows package managers detected as available - **Desired**: Show ALL supported package manager types with visual indication of which are active - **Supported types**: APT, DNF, Windows Update, Winget, Docker ### 3. **Visual Design Issues** - **Problem**: Badges are positioned next to the description rather than inline with text - **Desired**: Badges should be integrated inline with the description text - **Example**: "Package managers: [APT] [DNF] [Docker]" where active ones are colored and inactive are grey ### 4. **Color Consistency** - **Problem**: Color scheme not consistent - **Desired**: - Active package managers: Use consistent color scheme (e.g., blue for all active) - Inactive package managers: Greyed out - Specific colors can be: blue, purple, green but should be consistent across active ones ## Implementation Requirements ### Backend Changes 1. **Enhanced OS Detection** in `aggregator-agent/internal/scanner/registry.go` - Improve `IsAvailable()` methods to correctly identify OS-appropriate package managers - Add OS detection logic to prevent false positives (e.g., APT on Fedora) 2. **API Endpoint Enhancement** - Current: `/api/v1/agents/{id}/scanners` returns only available scanners - Enhanced: Return all supported scanner types with `available: true/false` flag ### Frontend Changes 1. **Badge Component Restructuring** in `AgentHealth.tsx` ```typescript // Current: Only shows available scanners const enabledScanners = agentScanners.filter(s => s.enabled); // Desired: Show all supported scanners with availability status const allScanners = [ { type: 'apt', name: 'APT', available: false, enabled: false }, { type: 'dnf', name: 'DNF', available: true, enabled: true }, // ... etc ]; ``` 2. **Inline Badge Display** ```typescript // Current: Badges next to description
Package Managers:
{badges}
// Desired: Inline with text
Package Managers: APT DNF {/* ... etc */}
``` ## Priority: Medium This is a UX improvement that also fixes a functional bug (incorrect detection on Fedora). ## Related Files - `aggregator-web/src/components/AgentHealth.tsx` - Badge display logic - `aggregator-agent/internal/scanner/registry.go` - Scanner detection logic - `aggregator-agent/internal/scanner/apt.go` - APT availability detection - `aggregator-agent/internal/scanner/dnf.go` - DNF availability detection - `aggregator-server/internal/api/handlers/scanner_config.go` - API endpoint