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 -
Fix cache invalidation for multi-month support
Mathias +1: Claude Opus 4.5Cache keys are stored as "{month}:{source}" (e.g., "2026-02:api") but invalidation was looking for exact match of just "{month}". Now uses startswith() to find and clear all cache entries for a given month. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>1a36032 -
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 -
Trigger container rebuild
Mathias9679816 -
Add per-month start_week support for different week numbering
Mathias +1: Claude Opus 4.5- January 2026 starts at week 2 - February 2026 starts at week 6 - Column positions remain the same, only week numbers change Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>2510bf9 -
Fix: include months_config.json in Docker image
Mathias +1: Claude Opus 4.5The config file was missing from the COPY commands. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>d95fbda -
Fix: use absolute path for months_config.json
Mathias +1: Claude Opus 4.5The relative path wasn't resolving correctly in Docker container. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>da8881d -
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 -
Trigger rebuild
Mathiasb521797 -
Fix: make excel_parser import optional for production
Mathias +1: Claude Opus 4.5The excel_parser module is only needed for local testing with Excel files. In production (HuggingFace Spaces), we always use Google Sheets API. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>de7e1ec -
Add February 2026 support with multi-month selection
Mathias +1: Claude Opus 4.5- Add multi-month configuration via months_config.json - Implement per-month caching for Google Sheets data - Add month selector in dashboard UI - Support January 2026 and February 2026 data sources - Add Excel fallback for local development testing Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>d5e4667
-
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 -
Update deployment to ScaleupXQ space
Mathias +1: Claude Opus 4.5Changed deploy target from MathiasAESandnes to ScaleupXQ/big-screen Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>8ed8b4f -
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
-
Clean up repo: remove duplicates and update gitignore
Mathias +1: Claude Opus 4.5- Remove root index.html (outdated duplicate of static/index.html) - Remove skill folders (sdr-feature, sheet-parsing) - Remove .DS_Store and CSV from tracking - Update .gitignore: add __pycache__, .claude/, venv patterns Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>6535865 -
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 -
Fix column mapping: sum daily columns for actual totals
Mathias +1: Claude Opus 4.5- WEEK_CONFIGS now includes daily column range, target col, and percentage col - Actual values calculated by summing daily columns (not from target column) - Weekly targets read directly from sheet (not calculated as monthly/4) - Added sum_daily() and extract_percentage() helper functions Fixes issue where weekly percentages showed 100% because target was being used as actual value. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>8e9f28f -
Fix merged cell parsing with block-based algorithm
Mathias +1: Claude Opus 4.5- Rewrite parse_sheet_data() to group rows into blocks (SQL terminates blocks) - Scan entire block to find Case/GS names (handles merged cells correctly) - Add support for SQL variants like "SQL (offer sent)" - Enhance /api/debug endpoint to show detected blocks - Add sheet-parsing skill documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>db4f0e6 -
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 -
Debug: Search for Bannerflow case rows
Mathias +1: Claude Opus 4.5Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>13e258e -
Debug: Search for Ardit rows in sheet data
Mathias +1: Claude Opus 4.5Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>1a829e7 -
Extend sheet range to A:AH and add debug endpoint
Mathias +1: Claude Opus 4.5- Extended range from A:Z to A:AH to capture Week 5 data (column AD) - Added /api/debug endpoint to inspect raw sheet structure - Updated .gitignore to exclude credentials files Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>1ae41e4 -
Fix parser to handle DAILY sheet structure with activity rows
Mathias2bc6b2a -
Fix: Read from DAILY sheet tab instead of default
Mathiasfe91a8b -
Add webhook endpoint for cache invalidation
Mathias +1: Claude Opus 4.5- Add POST /api/invalidate-cache endpoint for Google Apps Script to call - Add GET /api/cache-status to check cache state - Increase cache TTL to 1 hour (webhook handles invalidation) - Optional WEBHOOK_SECRET for security Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>3692ed3 -
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 -
Update sdr-feature skill with correct git push workflow
Mathias +1: Claude Opus 4.5Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>89245df -
Add .gitignore to exclude data files
Mathias +1: Claude Opus 4.5Removes xlsx/xls/csv from tracking as data is loaded via file upload. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>ef00b02 -
Update sdr-feature skill with browser push workflow
Mathias +1: Claude Opus 4.5Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>5f31fe8 -
Make progress bar text always black + add sdr-feature skill + update metadata
Mathias +1: Claude Opus 4.5- Changed progress bar text color from white/dynamic to always black (#000) - Removed text-shadow from progress text for better readability - Removed unused --progress-text CSS variables - Removed theme-specific progress text color overrides - Added sdr-feature skill for implementing features and deploying to HF - Updated HuggingFace metadata: title and colors to match SDR Status Tracker branding Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>9d8ad88
-
Initial deployment of SDR Status Tracker
Static HTML dashboard for tracking SDR case statuses. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>9f92ded