diff --git a/bin/analyze-go b/bin/analyze-go index 6c77620..1abef02 100755 Binary files a/bin/analyze-go and b/bin/analyze-go differ diff --git a/bin/check.sh b/bin/check.sh index 73deeef..044902f 100755 --- a/bin/check.sh +++ b/bin/check.sh @@ -34,10 +34,10 @@ main() { # Run all checks in parallel with spinner if [[ -t 1 ]]; then - echo -ne "${PURPLE}System Check${NC} " + echo -ne "${PURPLE_BOLD}System Check${NC} " start_inline_spinner "Running checks..." else - echo -e "${PURPLE}System Check${NC}" + echo -e "${PURPLE_BOLD}System Check${NC}" echo "" fi diff --git a/bin/clean.sh b/bin/clean.sh index e19ae2b..e098fa2 100755 --- a/bin/clean.sh +++ b/bin/clean.sh @@ -171,7 +171,7 @@ start_section() { TRACK_SECTION=1 SECTION_ACTIVITY=0 echo "" - echo -e "${PURPLE}${ICON_ARROW} $1${NC}" + echo -e "${PURPLE_BOLD}${ICON_ARROW} $1${NC}" } end_section() { @@ -369,7 +369,7 @@ safe_clean() { start_cleanup() { clear printf '\n' - echo -e "${PURPLE}Clean Your Mac${NC}" + echo -e "${PURPLE_BOLD}Clean Your Mac${NC}" echo "" if [[ "$DRY_RUN" != "true" && -t 0 ]]; then diff --git a/bin/optimize.sh b/bin/optimize.sh index ab8a312..c3ff75e 100755 --- a/bin/optimize.sh +++ b/bin/optimize.sh @@ -17,7 +17,7 @@ source "$SCRIPT_DIR/lib/check/all.sh" print_header() { printf '\n' - echo -e "${PURPLE}Optimize and Check${NC}" + echo -e "${PURPLE_BOLD}Optimize and Check${NC}" echo "" } @@ -25,7 +25,7 @@ print_header() { run_system_checks() { unset AUTO_FIX_SUMMARY AUTO_FIX_DETAILS echo "" - echo -e "${PURPLE}System Check${NC}" + echo -e "${PURPLE_BOLD}System Check${NC}" echo "" # Check updates - real-time display diff --git a/bin/status-go b/bin/status-go index 5ce2955..0d851ec 100755 Binary files a/bin/status-go and b/bin/status-go differ diff --git a/cmd/analyze/constants.go b/cmd/analyze/constants.go index dbc6f61..8694854 100644 --- a/cmd/analyze/constants.go +++ b/cmd/analyze/constants.go @@ -223,12 +223,14 @@ var skipExtensions = map[string]bool{ var spinnerFrames = []string{"|", "/", "-", "\\", "|", "/", "-", "\\"} const ( - colorPurple = "\033[0;35m" - colorGray = "\033[0;90m" - colorRed = "\033[0;31m" - colorYellow = "\033[1;33m" - colorGreen = "\033[0;32m" - colorCyan = "\033[0;36m" - colorReset = "\033[0m" - colorBold = "\033[1m" + colorPurple = "\033[0;35m" + colorPurpleBold = "\033[1;35m" + colorGray = "\033[0;90m" + colorRed = "\033[0;31m" + colorYellow = "\033[0;33m" + colorGreen = "\033[0;32m" + colorBlue = "\033[0;34m" + colorCyan = "\033[0;36m" + colorReset = "\033[0m" + colorBold = "\033[1m" ) diff --git a/cmd/analyze/format.go b/cmd/analyze/format.go index a15b835..0c7a41e 100644 --- a/cmd/analyze/format.go +++ b/cmd/analyze/format.go @@ -115,7 +115,7 @@ func coloredProgressBar(value, max int64, percent float64) string { } else if percent >= 20 { barColor = colorYellow } else if percent >= 5 { - barColor = colorCyan + barColor = colorBlue } else { barColor = colorGreen } diff --git a/cmd/analyze/main.go b/cmd/analyze/main.go index 66f74f5..abdf016 100644 --- a/cmd/analyze/main.go +++ b/cmd/analyze/main.go @@ -794,7 +794,7 @@ func (m model) View() string { fmt.Fprintln(&b) if m.inOverviewMode() { - fmt.Fprintf(&b, "%sAnalyze Disk%s\n", colorPurple, colorReset) + fmt.Fprintf(&b, "%sAnalyze Disk%s\n", colorPurpleBold, colorReset) if m.overviewScanning { // Check if we're in initial scan (all entries are pending) allPending := true @@ -834,7 +834,7 @@ func (m model) View() string { } } } else { - fmt.Fprintf(&b, "%sAnalyze Disk%s %s%s%s", colorPurple, colorReset, colorGray, displayPath(m.path), colorReset) + fmt.Fprintf(&b, "%sAnalyze Disk%s %s%s%s", colorPurpleBold, colorReset, colorGray, displayPath(m.path), colorReset) if !m.scanning { fmt.Fprintf(&b, " | Total: %s", humanizeBytes(m.totalSize)) } @@ -962,7 +962,7 @@ func (m model) View() string { case percent >= 20: sizeColor = colorYellow case percent >= 5: - sizeColor = colorCyan + sizeColor = colorBlue default: sizeColor = colorGray } @@ -1050,7 +1050,7 @@ func (m model) View() string { } else if percent >= 20 { sizeColor = colorYellow } else if percent >= 5 { - sizeColor = colorCyan + sizeColor = colorBlue } else { sizeColor = colorGray } diff --git a/cmd/status/view.go b/cmd/status/view.go index b255365..23279a5 100644 --- a/cmd/status/view.go +++ b/cmd/status/view.go @@ -10,12 +10,12 @@ import ( ) var ( - titleStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#5FD7FF")).Bold(true) - subtleStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#6C6C6C")) + titleStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#C79FD7")).Bold(true) + subtleStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#9E9E9E")) warnStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#FFD75F")) - dangerStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#FF5F5F")).Bold(true) + dangerStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#FF6B6B")).Bold(true) okStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#87D787")) - lineStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#4A4A4A")) + lineStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#5A5A5A")) ) const ( @@ -134,11 +134,11 @@ func renderHeader(m MetricsSnapshot, errMsg string, animFrame int, termWidth int func getScoreStyle(score int) lipgloss.Style { if score >= 90 { - // Excellent - Green - return lipgloss.NewStyle().Foreground(lipgloss.Color("#87D787")).Bold(true) + // Excellent - Bright Green + return lipgloss.NewStyle().Foreground(lipgloss.Color("#87FF87")).Bold(true) } else if score >= 75 { - // Good - Light Green - return lipgloss.NewStyle().Foreground(lipgloss.Color("#AFD787")).Bold(true) + // Good - Green + return lipgloss.NewStyle().Foreground(lipgloss.Color("#87D787")).Bold(true) } else if score >= 60 { // Fair - Yellow return lipgloss.NewStyle().Foreground(lipgloss.Color("#FFD75F")).Bold(true) @@ -147,7 +147,7 @@ func getScoreStyle(score int) lipgloss.Style { return lipgloss.NewStyle().Foreground(lipgloss.Color("#FFAF5F")).Bold(true) } else { // Critical - Red - return lipgloss.NewStyle().Foreground(lipgloss.Color("#FF5F5F")).Bold(true) + return lipgloss.NewStyle().Foreground(lipgloss.Color("#FF6B6B")).Bold(true) } } diff --git a/lib/core/common.sh b/lib/core/common.sh index 9f9a5a0..1075bb5 100755 --- a/lib/core/common.sh +++ b/lib/core/common.sh @@ -14,8 +14,10 @@ readonly MOLE_COMMON_LOADED=1 readonly ESC=$'\033' readonly GREEN="${ESC}[0;32m" readonly BLUE="${ESC}[0;34m" -readonly YELLOW="${ESC}[1;33m" +readonly CYAN="${ESC}[0;36m" +readonly YELLOW="${ESC}[0;33m" readonly PURPLE="${ESC}[0;35m" +readonly PURPLE_BOLD="${ESC}[1;35m" readonly RED="${ESC}[0;31m" readonly GRAY="${ESC}[0;90m" readonly NC="${ESC}[0m" @@ -558,7 +560,7 @@ show_menu_option() { local selected="$3" if [[ "$selected" == "true" ]]; then - echo -e "${BLUE}${ICON_ARROW} $number. $text${NC}" + echo -e "${CYAN}${ICON_ARROW} $number. $text${NC}" else echo " $number. $text" fi @@ -1341,7 +1343,7 @@ start_section() { TRACK_SECTION=1 SECTION_ACTIVITY=0 echo "" - echo -e "${PURPLE}${ICON_ARROW} $1${NC}" + echo -e "${PURPLE_BOLD}${ICON_ARROW} $1${NC}" } # End a section (show "Nothing to tidy" if no activity) diff --git a/lib/ui/menu_paginated.sh b/lib/ui/menu_paginated.sh index 37db717..c59b6d6 100755 --- a/lib/ui/menu_paginated.sh +++ b/lib/ui/menu_paginated.sh @@ -366,7 +366,7 @@ paginated_multi_select() { [[ ${selected[real]} == true ]] && checkbox="$ICON_SOLID" if [[ $is_current == true ]]; then - printf "\r\033[2K${BLUE}${ICON_ARROW} %s %s${NC}\n" "$checkbox" "${items[real]}" >&2 + printf "\r\033[2K${CYAN}${ICON_ARROW} %s %s${NC}\n" "$checkbox" "${items[real]}" >&2 else printf "\r\033[2K %s %s\n" "$checkbox" "${items[real]}" >&2 fi @@ -387,7 +387,7 @@ paginated_multi_select() { done # Header only - printf "${clear_line}${PURPLE}%s${NC} ${GRAY}%d/%d selected${NC}\n" "${title}" "$selected_count" "$total_items" >&2 + printf "${clear_line}${PURPLE_BOLD}%s${NC} ${GRAY}%d/%d selected${NC}\n" "${title}" "$selected_count" "$total_items" >&2 # Visible slice local visible_total=${#view_indices[@]} diff --git a/lib/ui/menu_simple.sh b/lib/ui/menu_simple.sh index 4151e82..17fdccb 100755 --- a/lib/ui/menu_simple.sh +++ b/lib/ui/menu_simple.sh @@ -137,7 +137,7 @@ paginated_multi_select() { [[ ${selected[idx]} == true ]] && checkbox="$ICON_SOLID" if [[ $is_current == true ]]; then - printf "\r\033[2K${BLUE}${ICON_ARROW} %s %s${NC}\n" "$checkbox" "${items[idx]}" >&2 + printf "\r\033[2K${CYAN}${ICON_ARROW} %s %s${NC}\n" "$checkbox" "${items[idx]}" >&2 else printf "\r\033[2K %s %s\n" "$checkbox" "${items[idx]}" >&2 fi @@ -161,7 +161,7 @@ paginated_multi_select() { done # Header - printf "${clear_line}${PURPLE}%s${NC} ${GRAY}%d/%d selected${NC}\n" "${title}" "$selected_count" "$total_items" >&2 + printf "${clear_line}${PURPLE_BOLD}%s${NC} ${GRAY}%d/%d selected${NC}\n" "${title}" "$selected_count" "$total_items" >&2 if [[ $total_items -eq 0 ]]; then printf "${clear_line}${GRAY}No items available${NC}\n" >&2 diff --git a/lib/uninstall/batch.sh b/lib/uninstall/batch.sh index 3ebdfd3..9ce0547 100755 --- a/lib/uninstall/batch.sh +++ b/lib/uninstall/batch.sh @@ -156,7 +156,7 @@ batch_uninstall_applications() { # Display detailed file list for each app before confirmation echo "" - echo -e "${PURPLE}Files to be removed:${NC}" + echo -e "${PURPLE_BOLD}Files to be removed:${NC}" echo "" for detail in "${app_details[@]}"; do IFS='|' read -r app_name app_path bundle_id total_kb encoded_files encoded_system_files <<< "$detail" diff --git a/mole-analyze b/mole-analyze new file mode 100755 index 0000000..16a70ab Binary files /dev/null and b/mole-analyze differ