Spaces:
Runtime error
Runtime error
Commit History
-
Fix refresh button to invalidate cache before fetching
Mathias +1: Claude Opus 4.5- Frontend: refreshData() now calls /api/invalidate-cache before fetching - Backend: Added logging to webhook endpoint for debugging This ensures clicking "Refresh Data" fetches fresh data from Google Sheets instead of returning cached data. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>e55761d -
Add dynamic week calculation based on month's start_week
Mathias +1: Claude Opus 4.5- API returns start_week for each month - Frontend calculates current week dynamically - February starts at week 6, January at week 2 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>44a481a -
Add month selector UI for multi-month support
Mathias +1: Claude Opus 4.5- Add dropdown in top-left corner to switch between months - Dynamic subtitle shows current month name - Persist month selection in URL and localStorage - Fetch available months from /api/months endpoint Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>f782c0f
-
Dark theme: make labels and names white for better visibility
Mathias +1: Claude Opus 4.5Use brand-compliant var(--base-100) for leaderboard names, SDR names, case names, and table headers in dark mode. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>6a2acdf
-
Fix font size: set on html element for rem scaling
Mathias +1: Claude Opus 4.5Changed from body font-size to html font-size (20px) so all rem units scale properly (default browser is 16px). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>a28c702 -
Fix monthly scoring capping, increase font to 1.2rem
Mathias +1: Claude Opus 4.5- Font size increased to 1.2rem for better readability - Fixed monthly leaderboard: now uses capping rule where you cannot reach 100% unless ALL individual targets are met - Added calculateScoreFromPercentages() for sheet percentages - Documented capping rule in CLAUDE.md Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>4b47c90 -
Increase base font size for better readability
Mathias +1: Claude Opus 4.5Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>de49437 -
Use sheet percentages from column AI for monthly progress
Mathias +1: Claude Opus 4.5Instead of calculating monthly percentages from actuals/targets, now reads pre-calculated percentages directly from column AI and averages them per activity type (SQL vs Activity). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>979e803 -
Add sound trigger when SQL hits 100% target
Mathias +1: Claude Opus 4.5- Track SQL achievements before/after data refresh - Play targetHit sound when someone newly reaches 100% SQL for the week - Triggered by SSE webhook updates Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>610b1f3 -
Fix dark theme leaderboard colors
Mathias +1: Claude Opus 4.5- Muted gold, silver, bronze for rank badges - Subtle row backgrounds for top 3 - Proper text colors in dark mode Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>0444002 -
Aggregate Discovery with SQL for monthly, fix dark theme headers
Mathias +1: Claude Opus 4.5- Discovery now combines with SQL in monthly totals (pipeline metrics) - Keep Discovery separate for weekly view - Fix dark theme table headers to use consistent colors - Add fullWidth to space config Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>d7164cf -
Fix dark theme: muted progress bar colors
Mathias +1: Claude Opus 4.5- Revert light theme to white background - Add dark theme overrides for progress bars with desaturated colors - White text with shadow on dark progress bars for readability Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>5b22d5e -
Soften light theme background for big screen
Mathias +1: Claude Opus 4.5Replace glaring white with soft gray tones: - Background: #E8E8EC with subtle gradient - Cards: #F2F2F5 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>ea1c5d8 -
Darken background gradient, reduce purple intensity
Mathias +1: Claude Opus 4.5Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>9b39ac4 -
Add SSE for instant updates on webhook trigger
Mathias +1: Claude Opus 4.5- Replace polling with Server-Sent Events - Webhook now notifies all connected browsers instantly - Browser reconnects automatically if connection drops Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>2c441e3 -
Add auto-refresh every 30 seconds for big screen displays
Mathias +1: Claude Opus 4.5Dashboard now polls for new data automatically without manual refresh. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>6cebccc -
Set default sounds to none except SQL target hit
Mathias +1: Claude Opus 4.5- sqlIncrement: none (was chime3) - beyondTarget: none (was bling3) - targetHit: fanfare1 (unchanged) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>0c75c57
-
Add Prospects & Discovery columns + column auto-detection
Mathias +1: Claude Opus 4.5- Add Prospects % and Discovery % columns to dashboard (6 activity columns total) - Show "No target" for missing activity rows - Add column_config.json for dynamic column configuration - Add detect_columns.py script for monthly config updates - Add /api/reload-config and /api/column-config endpoints - Update leaderboard scoring to include all activity types Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>d378246 -
Show "No target" with gray bar for metrics without targets
Mathias +1: Claude Opus 4.5- Added progress-none CSS class with gray styling - Updated getWeeklyProgress and getMonthlyProgress to return null for no-target - Added renderProgressBar helper that displays "No target" for null values - Gray progress bar fills 100% width to indicate the metric exists but has no target Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>965c46f -
Fix scoring: each target's contribution capped at its proportional share
Mathias +1: Claude Opus 4.5SCORING RULES: - Each individual target gets an EQUAL share of the 100% total - Example: 6 targets = each contributes max 16.67% (100/6) - Each target's contribution is CAPPED at its share until ALL targets >= 100% - Only after EVERY target hits 100%, over-performance counts as bonus This ensures no single over-performing target can inflate the score while other targets are still below 100%. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>6b8191a -
Fix leaderboard scoring - properly cap at 100% until all targets met
Mathias +1: Claude Opus 4.5Simplified the scoring logic: - Sum all SQL actuals/targets across cases for each SDR - Sum all Activity actuals/targets across cases for each SDR - Calculate SQL% and Activity% as simple ratios - Score = 60% SQL + 40% Activity - CRITICAL: Both SQL% AND Activity% must be >= 100% before any bonus points are awarded. Until then, each is capped at 100%. This ensures no one can exceed 100% total score until they have hit every single target. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>3817e3b -
Load cases and SDRs dynamically from Google Sheets
Mathias +1: Claude Opus 4.5- Updated backend parser to extract monthly TARGET and ACTUAL from columns AG/AH - Calculate weekly targets from monthly target / 4 - Removed all hardcoded case data from frontend - Frontend now loads entirely from API with localStorage cache - Added loading and error states for better UX - Bumped storage key to v5 to clear old cached data Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>7a400f4 -
Add Google Sheets integration with Python backend
Mathias +1: Claude Opus 4.5- Add FastAPI backend (app.py) to fetch data from Google Sheets - Move index.html to static/ folder - Update dashboard JS to fetch from /api/data endpoint - Add Dockerfile for HuggingFace Spaces - Update README with Docker SDK configuration - Add requirements.txt with dependencies The dashboard now syncs with Google Sheets via service account. Credentials stored as HF secrets (GOOGLE_CREDENTIALS). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>700614a