diff --git a/internal/ui/components.go b/internal/ui/components.go index d269357..99a0f23 100644 --- a/internal/ui/components.go +++ b/internal/ui/components.go @@ -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") diff --git a/internal/ui/queueview.go b/internal/ui/queueview.go index 9add451..3fd3315 100644 --- a/internal/ui/queueview.go +++ b/internal/ui/queueview.go @@ -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} } diff --git a/main.go b/main.go index 01e6300..2b2ab33 100644 --- a/main.go +++ b/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