feat(ui): Rebalance color palette to proper rainbow distribution
Rainbow Distribution (ROYGBIV - 2 modules per color): - RED (2): Inspect (#F44336), Compare (#E91E63 Pink) - ORANGE (2): Author (#FF5722), Rip (#FF9800) - YELLOW (2): Audio (#FFC107 Amber), Trim (#FFEB3B) - GREEN (2): Merge (#4CAF50), Subtitles (#8BC34A Light Green) - CYAN (2): Filters (#00BCD4), Thumb (#00ACC1 Dark Cyan) - BLUE (2): Blu-Ray (#2196F3), Player (#3F51B5 Indigo) - PURPLE (2): Convert (#673AB7 Deep Purple), Upscale (#9C27B0) Fixed Issues: - Previous Memphis palette had 9 blue-ish modules (too much blue) - User requested balanced rainbow spectrum across all modules - Perfect distribution: 14 modules ÷ 7 colors = 2 per color - Convert module back to deep purple (user preference) Files Updated: - main.go: Module color definitions - internal/ui/queueview.go: Queue job type colors - internal/ui/components.go: Badge colors Tested: Build successful (v0.1.0-dev20) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
1546b5f5d1
commit
b3e448f2fe
|
|
@ -738,34 +738,34 @@ func BuildModuleBadge(jobType queue.JobType) fyne.CanvasObject {
|
|||
|
||||
switch jobType {
|
||||
case queue.JobTypeConvert:
|
||||
badgeColor = utils.MustHex("#4A90E2")
|
||||
badgeColor = utils.MustHex("#673AB7") // Deep Purple
|
||||
badgeText = "CONVERT"
|
||||
case queue.JobTypeMerge:
|
||||
badgeColor = utils.MustHex("#4488FF")
|
||||
badgeColor = utils.MustHex("#4CAF50") // Green
|
||||
badgeText = "MERGE"
|
||||
case queue.JobTypeTrim:
|
||||
badgeColor = utils.MustHex("#90E24A")
|
||||
badgeColor = utils.MustHex("#FFEB3B") // Yellow
|
||||
badgeText = "TRIM"
|
||||
case queue.JobTypeFilter:
|
||||
badgeColor = utils.MustHex("#E2904A")
|
||||
badgeColor = utils.MustHex("#00BCD4") // Cyan
|
||||
badgeText = "FILTER"
|
||||
case queue.JobTypeUpscale:
|
||||
badgeColor = utils.MustHex("#9A4AE2")
|
||||
badgeColor = utils.MustHex("#9C27B0") // Purple
|
||||
badgeText = "UPSCALE"
|
||||
case queue.JobTypeAudio:
|
||||
badgeColor = utils.MustHex("#4AE290")
|
||||
badgeColor = utils.MustHex("#FFC107") // Amber
|
||||
badgeText = "AUDIO"
|
||||
case queue.JobTypeThumb:
|
||||
badgeColor = utils.MustHex("#E2E24A")
|
||||
badgeColor = utils.MustHex("#00ACC1") // Dark Cyan
|
||||
badgeText = "THUMB"
|
||||
case queue.JobTypeSnippet:
|
||||
badgeColor = utils.MustHex("#4AE2E2")
|
||||
badgeColor = utils.MustHex("#00BCD4") // Cyan (same as Convert)
|
||||
badgeText = "SNIPPET"
|
||||
case queue.JobTypeAuthor:
|
||||
badgeColor = utils.MustHex("#EC4899")
|
||||
badgeColor = utils.MustHex("#FF5722") // Deep Orange
|
||||
badgeText = "AUTHOR"
|
||||
case queue.JobTypeRip:
|
||||
badgeColor = utils.MustHex("#F59E0B")
|
||||
badgeColor = utils.MustHex("#FF9800") // Orange
|
||||
badgeText = "RIP"
|
||||
default:
|
||||
badgeColor = utils.MustHex("#808080")
|
||||
|
|
|
|||
|
|
@ -476,29 +476,27 @@ func getStatusText(job *queue.Job, queuePositions map[string]int) string {
|
|||
}
|
||||
}
|
||||
|
||||
// moduleColor maps job types to distinct colors matching the main module colors
|
||||
// ModuleColor returns the color for a given job type
|
||||
// ModuleColor returns Memphis-inspired colors matching main module palette
|
||||
// ModuleColor returns rainbow ROYGBIV colors matching main module palette
|
||||
func ModuleColor(t queue.JobType) color.Color {
|
||||
switch t {
|
||||
case queue.JobTypeConvert:
|
||||
return color.RGBA{R: 0, G: 206, B: 209, A: 255} // Turquoise (#00CED1)
|
||||
return color.RGBA{R: 103, G: 58, B: 183, A: 255} // Deep Purple (#673AB7)
|
||||
case queue.JobTypeMerge:
|
||||
return color.RGBA{R: 78, G: 205, B: 196, A: 255} // Medium Turquoise (#4ECDC4)
|
||||
return color.RGBA{R: 76, G: 175, B: 80, A: 255} // Green (#4CAF50)
|
||||
case queue.JobTypeTrim:
|
||||
return color.RGBA{R: 93, G: 173, B: 226, A: 255} // Sky Blue (#5DADE2)
|
||||
return color.RGBA{R: 255, G: 235, B: 59, A: 255} // Yellow (#FFEB3B)
|
||||
case queue.JobTypeFilter:
|
||||
return color.RGBA{R: 139, G: 92, B: 246, A: 255} // Vivid Violet (#8B5CF6)
|
||||
return color.RGBA{R: 0, G: 188, B: 212, A: 255} // Cyan (#00BCD4)
|
||||
case queue.JobTypeUpscale:
|
||||
return color.RGBA{R: 168, G: 85, B: 247, A: 255} // Purple (#A855F7)
|
||||
return color.RGBA{R: 156, G: 39, B: 176, A: 255} // Purple (#9C27B0)
|
||||
case queue.JobTypeAudio:
|
||||
return color.RGBA{R: 251, G: 191, B: 36, A: 255} // Warm Yellow (#FBBF24)
|
||||
return color.RGBA{R: 255, G: 193, B: 7, A: 255} // Amber (#FFC107)
|
||||
case queue.JobTypeThumb:
|
||||
return color.RGBA{R: 6, G: 182, B: 212, A: 255} // Cyan (#06B6D4)
|
||||
return color.RGBA{R: 0, G: 172, B: 193, A: 255} // Dark Cyan (#00ACC1)
|
||||
case queue.JobTypeAuthor:
|
||||
return color.RGBA{R: 236, G: 72, B: 153, A: 255} // Hot Pink (#EC4899)
|
||||
return color.RGBA{R: 255, G: 87, B: 34, A: 255} // Deep Orange (#FF5722)
|
||||
case queue.JobTypeRip:
|
||||
return color.RGBA{R: 245, G: 158, B: 11, A: 255} // Amber Orange (#F59E0B)
|
||||
return color.RGBA{R: 255, G: 152, B: 0, A: 255} // Orange (#FF9800)
|
||||
default:
|
||||
return color.Gray{Y: 180}
|
||||
}
|
||||
|
|
|
|||
32
main.go
32
main.go
|
|
@ -79,23 +79,23 @@ var (
|
|||
nvencRuntimeOnce sync.Once
|
||||
nvencRuntimeOK bool
|
||||
|
||||
// Memphis-inspired color palette: bright, geometric, highly navigable
|
||||
// Balanced color distribution with no orange overload
|
||||
// Rainbow color palette: balanced ROYGBIV distribution (2 modules per color)
|
||||
// Bright, vibrant, highly navigable with perfect spectrum balance
|
||||
modulesList = []Module{
|
||||
{"convert", "Convert", utils.MustHex("#00CED1"), "Convert", modules.HandleConvert}, // Turquoise (Memphis primary)
|
||||
{"merge", "Merge", utils.MustHex("#4ECDC4"), "Convert", modules.HandleMerge}, // Medium Turquoise (combining)
|
||||
{"trim", "Trim", utils.MustHex("#5DADE2"), "Convert", modules.HandleTrim}, // Sky Blue (precision)
|
||||
{"filters", "Filters", utils.MustHex("#8B5CF6"), "Convert", modules.HandleFilters}, // Vivid Violet (enhancement)
|
||||
{"upscale", "Upscale", utils.MustHex("#A855F7"), "Advanced", modules.HandleUpscale}, // Purple (AI/tech)
|
||||
{"audio", "Audio", utils.MustHex("#FBBF24"), "Convert", modules.HandleAudio}, // Warm Yellow (Memphis accent)
|
||||
{"author", "Author", utils.MustHex("#EC4899"), "Disc", modules.HandleAuthor}, // Hot Pink (Memphis creative)
|
||||
{"rip", "Rip", utils.MustHex("#F59E0B"), "Disc", modules.HandleRip}, // Amber Orange (warm extraction)
|
||||
{"bluray", "Blu-Ray", utils.MustHex("#3B82F6"), "Disc", modules.HandleBluRay}, // Royal Blue (clean blue)
|
||||
{"subtitles", "Subtitles", utils.MustHex("#10B981"), "Convert", modules.HandleSubtitles}, // Emerald Green (fresh)
|
||||
{"thumb", "Thumb", utils.MustHex("#06B6D4"), "Screenshots", modules.HandleThumb}, // Cyan (screenshot pop)
|
||||
{"compare", "Compare", utils.MustHex("#F43F5E"), "Inspect", modules.HandleCompare}, // Rose Red (bold comparison)
|
||||
{"inspect", "Inspect", utils.MustHex("#EF4444"), "Inspect", modules.HandleInspect}, // Red (analysis focus)
|
||||
{"player", "Player", utils.MustHex("#6366F1"), "Playback", modules.HandlePlayer}, // Indigo (immersive)
|
||||
{"convert", "Convert", utils.MustHex("#673AB7"), "Convert", modules.HandleConvert}, // Deep Purple (primary conversion)
|
||||
{"merge", "Merge", utils.MustHex("#4CAF50"), "Convert", modules.HandleMerge}, // Green (combining)
|
||||
{"trim", "Trim", utils.MustHex("#FFEB3B"), "Convert", modules.HandleTrim}, // Yellow (precision cut)
|
||||
{"filters", "Filters", utils.MustHex("#00BCD4"), "Convert", modules.HandleFilters}, // Cyan (creative filters)
|
||||
{"upscale", "Upscale", utils.MustHex("#9C27B0"), "Advanced", modules.HandleUpscale}, // Purple (AI/advanced)
|
||||
{"audio", "Audio", utils.MustHex("#FFC107"), "Convert", modules.HandleAudio}, // Amber (sound waves)
|
||||
{"author", "Author", utils.MustHex("#FF5722"), "Disc", modules.HandleAuthor}, // Deep Orange (authoring)
|
||||
{"rip", "Rip", utils.MustHex("#FF9800"), "Disc", modules.HandleRip}, // Orange (extraction)
|
||||
{"bluray", "Blu-Ray", utils.MustHex("#2196F3"), "Disc", modules.HandleBluRay}, // Blue (Blu-ray brand)
|
||||
{"subtitles", "Subtitles", utils.MustHex("#8BC34A"), "Convert", modules.HandleSubtitles}, // Light Green (text)
|
||||
{"thumb", "Thumb", utils.MustHex("#00ACC1"), "Screenshots", modules.HandleThumb}, // Dark Cyan (capture)
|
||||
{"compare", "Compare", utils.MustHex("#E91E63"), "Inspect", modules.HandleCompare}, // Pink (comparison)
|
||||
{"inspect", "Inspect", utils.MustHex("#F44336"), "Inspect", modules.HandleInspect}, // Red (analysis)
|
||||
{"player", "Player", utils.MustHex("#3F51B5"), "Playback", modules.HandlePlayer}, // Indigo (playback)
|
||||
}
|
||||
|
||||
// Platform-specific configuration
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user