fix: salvage dashboard and canary-watch PRs (#1915)

Salvage focused changes from #1910 and #1911 on a maintainer-owned branch after full CI.

- enrich canary-watch discovery terms for post-deploy verification prompts
- narrow dashboard bare except handlers, add debug logging, and avoid double-configuring widgets

Co-authored-by: EunCHanPark <93873648+EunCHanPark@users.noreply.github.com>
Co-authored-by: shenchangmin <503228482@qq.com>
This commit is contained in:
Affaan Mustafa
2026-05-15 01:57:21 -04:00
committed by GitHub
parent 8cfadfea28
commit 4546a2c144
2 changed files with 19 additions and 26 deletions

View File

@@ -10,10 +10,13 @@ import os
import json import json
from pathlib import Path from pathlib import Path
from typing import Dict, List, Optional from typing import Dict, List, Optional
import logging
import webbrowser import webbrowser
from scripts.lib.ecc_dashboard_runtime import launch_terminal, maximize_window from scripts.lib.ecc_dashboard_runtime import launch_terminal, maximize_window
logger = logging.getLogger(__name__)
# ============================================================================ # ============================================================================
# DATA LOADERS - Load ECC data from the project # DATA LOADERS - Load ECC data from the project
# ============================================================================ # ============================================================================
@@ -112,9 +115,9 @@ def load_skills(project_path: str) -> List[Dict]:
if line.startswith('# '): if line.startswith('# '):
description = line[2:].strip()[:100] description = line[2:].strip()[:100]
break break
except: except Exception:
pass logger.debug("Failed to parse skill file %s", skill_file, exc_info=True)
# Determine category # Determine category
category = "General" category = "General"
item_lower = item.lower() item_lower = item.lower()
@@ -186,9 +189,9 @@ def load_commands(project_path: str) -> List[Dict]:
if line.startswith('# '): if line.startswith('# '):
description = line[2:].strip() description = line[2:].strip()
break break
except: except Exception:
pass logger.debug("Failed to parse command file %s", item, exc_info=True)
commands.append({ commands.append({
'name': cmd_name, 'name': cmd_name,
'description': description or cmd_name.replace('-', ' ').title() 'description': description or cmd_name.replace('-', ' ').title()
@@ -280,8 +283,8 @@ class ECCDashboard(tk.Tk):
try: try:
self.icon_image = tk.PhotoImage(file='assets/images/ecc-logo.png') self.icon_image = tk.PhotoImage(file='assets/images/ecc-logo.png')
self.iconphoto(True, self.icon_image) self.iconphoto(True, self.icon_image)
except: except Exception:
pass logger.debug("Failed to load window icon", exc_info=True)
self.minsize(800, 600) self.minsize(800, 600)
@@ -344,8 +347,8 @@ class ECCDashboard(tk.Tk):
self.logo_image = tk.PhotoImage(file='assets/images/ecc-logo.png') self.logo_image = tk.PhotoImage(file='assets/images/ecc-logo.png')
self.logo_image = self.logo_image.subsample(2, 2) self.logo_image = self.logo_image.subsample(2, 2)
ttk.Label(header_frame, image=self.logo_image).pack(side=tk.LEFT, padx=(0, 10)) ttk.Label(header_frame, image=self.logo_image).pack(side=tk.LEFT, padx=(0, 10))
except: except Exception:
pass logger.debug("Failed to load header logo", exc_info=True)
self.title_label = ttk.Label(header_frame, text="ECC Dashboard", font=('Open Sans', 18, 'bold')) self.title_label = ttk.Label(header_frame, text="ECC Dashboard", font=('Open Sans', 18, 'bold'))
self.title_label.pack(side=tk.LEFT) self.title_label.pack(side=tk.LEFT)
@@ -897,22 +900,12 @@ Project: github.com/affaan-m/everything-claude-code"""
def update_widget_colors(widget): def update_widget_colors(widget):
try: try:
widget.configure(background=bg_color) widget.configure(background=bg_color)
except: except Exception:
pass logger.debug("Cannot set background on %s", widget.__class__.__name__, exc_info=True)
for child in widget.winfo_children(): for child in widget.winfo_children():
try: update_widget_colors(child)
child.configure(background=bg_color)
except: update_widget_colors(self)
pass
try:
update_widget_colors(child)
except:
pass
try:
update_widget_colors(self)
except:
pass
self.update() self.update()

View File

@@ -1,6 +1,6 @@
--- ---
name: canary-watch name: canary-watch
description: Use this skill to monitor a deployed URL for regressions after deploys, merges, or dependency upgrades. description: Use this skill to monitor and verify a deployed URL after releases — checks HTTP endpoints, SSE streams, static assets, console errors, and performance regressions after deploys, merges, or dependency upgrades. Smoke / canary / post-deploy verification.
origin: ECC origin: ECC
--- ---