Spaces:
Runtime error
Runtime error
Commit History
-
Larger sales feed text, fix timezone offset in relative times
Mathias +1: Claude Opus 4.6- Bump sales feed font sizes for better readability - Append Z to server timestamps so browser correctly treats them as UTC Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>29e7b6b -
Require all individual activity targets for Target leaderboard
Mathias +1: Claude Opus 4.6- Activity achievement now requires ALL individual targets >= 100% (calls, emails, linkedin, prospects), not just the combined average - Remove separate first-to-target section — Target leaderboard cards already display this data Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>ff7db91 -
Reorder leaderboards and add sales feed
Mathias +1: Claude Opus 4.6- Leaderboards: monthly row on top, SQL first, rename Overall → Case Progress - Backend: sales_log table, detect_new_sales() diff, GET /api/sales-feed - Frontend: scrolling sales feed below leaderboards with relative timestamps Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b8f7ed5 -
Fix leaderboard spacing: move score to right, name after rank badge
Mathias +1: Claude Opus 4.6Rank badge | Name | Score (right-aligned via margin-left:auto). Removes min-width on score which caused gaps with short numbers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>29ab584 -
Fix ReferenceError: remove leftover isEff reference in lbCard
Mathias +1: Claude Opus 4.6The isEff variable was removed when efficiency cards were replaced but one reference remained, crashing renderLeaderboards entirely. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>cfe47e2 -
Replace efficiency leaderboards with target-hit timing
Mathias +1: Claude Opus 4.6Shows who hit ALL their targets first, ranked by earliest time. Computes from achievements data: SDR must have both activity and SQL achievements; display time = later of the two timestamps. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8abd8d3 -
Show raw numbers for weekly Activity and SQL leaderboards too
Mathias +1: Claude Opus 4.6rankActivityRaw/rankSQLRaw now accept a monthly flag. Weekly sums raw counts from current week data, monthly sums from monthlyTotal. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>0c7dc7a -
Show raw numbers for monthly Activity and SQL leaderboards
Mathias +1: Claude Opus 4.6Monthly Activity and SQL leaderboards now rank by total raw counts (sum across all cases per SDR) instead of percentages. Weekly Activity/SQL and all Overall leaderboards keep showing combined %. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>abf50a0 -
Enlarge leaderboard cards and show top 5 per category
Mathias +1: Claude Opus 4.6- Show 5 places instead of 3 in each leaderboard card - Increase card padding, heading size, item spacing - Larger rank badges (28/26/24/22px), bigger names and scores - Bigger #1 highlight with tiered scaling for high performers Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>73661ed -
Flip layout: table 38%, leaderboards 62% with 4-column grid
Mathias +1: Claude Opus 4.6Table takes ~38% of screen width so columns stay compact. Leaderboards expand to fill remaining space in a 4×2 grid (4 categories across, weekly row + monthly row). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>6c1067f
-
Fix column widths and apply brand colors to progress bars
Mathias +1: Claude Opus 4.6- Add width:1px on .col-pct to shrink percentage columns to content - Restore table width:100% so SDR/Case columns fill remaining space - Replace generic progress bar colors with brand 300-level palette - Use same vibrant colors in dark theme per brand guidelines - Make dark theme rank badges more vibrant (gold/silver/bronze) - Increase font sizes for better TV readability Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5552002 -
Compact UI refresh: tighter layout, SQL-first columns, branded toolbar
Mathias +1: Claude Opus 4.6- Purple gradient toolbar with white controls (ScaleupXQ branded) - Column reorder: SDR, Case, Wk SQL, Wk Act, Mo SQL, Mo Act - Auto-width columns (content-fit, no stretching) - Leaderboard cards with colored left accent strips per category - Base font 16px (down from 20px) — fits at 80% zoom on 1920x1280 - Tighter spacing: smaller padding, 18px progress bars, compact cards - Narrower leaderboard section (440px) with 20px rank badges - Default dark theme for TV display - All elements visible without scroll at 80% zoom Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>31f4dc9 -
Fix ReferenceError: dataLoaded accessed before initialization
Mathias +1: Claude Opus 4.6setTheme() was called during script init which triggered refreshAll() before dataLoaded was declared. Split into applyTheme() (CSS only) and setTheme() (CSS + data refresh) to avoid temporal dead zone. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a98a680 -
Fix current week calculation to use actual week keys from data
Mathias +1: Claude Opus 4.6The frontend was computing currentWeek as start_week + slot (0-3), but the backend uses start_week + column_config week_num (2-5), resulting in a mismatch. Now derives available weeks from the actual data keys after loading. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b40b6f1 -
Redesign dashboard: combined metrics, 8 leaderboards, medals & achievements
Mathias +1: Claude Opus 4.6- Backend: Add SQLite achievement tracking (first-to-target events), /api/achievements endpoint, record_achievements() on fresh data parse - Frontend: Full viewport layout with compact toolbar, 6-column table (SDR+medals, Case, Wk Act%, Wk SQL%, Mo Act%, Mo SQL%), 4x2 leaderboard grid (Overall/Activity/SQL/Efficiency x Weekly/Monthly), first-to-target section, achievers banner, medals and stars - Dockerfile: Add /data dir for persistent SQLite, copy column_config.json - Docs: Update to reflect progress-table architecture Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5dda8e1
-
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