Skip to content

Releases: pedrofuentes/github-saver

v0.2.5-beta

24 Mar 03:55

Choose a tag to compare

What's New

⚡ Instant Startup with Cache

  • Screensaver now loads instantly from cached data — no waiting for API fetch
  • Background refresh updates cache for the next launch
  • Validates cached contributions have actual year data before use

🎨 Loading Page

  • New animated loading screen with GitHub-style contribution grid animation
  • Shown on first launch while fetching data (before any cache exists)

🔧 Shared Data Parser Utilities

  • Extracted common date/week alignment logic into \data-parser.js\
  • New shared functions: \�uildDateMap, \�lignDaysToToday, \�lignWeeksToToday, \ ormatDate\
  • All modules refactored to use shared utilities instead of duplicating date logic

🏗️ Architecture Improvements

  • \ScreensaverForm\ supports async \pendingDataTask\ for non-blocking data fetch with 30s timeout
  • \TryLoadCachedData\ provides instant cached data path in \Program.cs\
  • Cleaner early-guard pattern in module navigation logic

🧪 New Tests

  • \ProgramTests\ — \TryLoadCachedData\ validation (cached data, empty contributions, missing files)
  • \data-parser.test.js\ — shared parser utility tests (200 lines)
  • \loading-page.test.js\ — loading page rendering tests
  • \module-fallback.test.js\ — module data fallback tests

Screensaver Modules

  • heatmap-multidata, heatmap-years, rain-days, rain-repos, heatmap-rain-weeks

Installation

  1. Download \GithubSaver.msi\ below
  2. Run the installer
  3. Open Screen Saver Settings and select GithubSaver
  4. Click Settings to configure your GitHub username and personal access token

Requirements

  • Windows 10/11
  • WebView2 Runtime (pre-installed on Windows 11)

Full Changelog

v0.2.4-beta...v0.2.5-beta

v0.2.4-beta

23 Mar 01:47

Choose a tag to compare

v0.2.4-beta Pre-release
Pre-release

What's New

Security Hardening

  • GraphQL injection prevention — use variables instead of string interpolation
  • Path traversal protection — whitelist validation for module names
  • Content Security Policy headers on all HTML files
  • XSS prevention — innerHTML replaced with DOM API in config UI
  • Safe JavaScript injection via JSON.parse() wrapper
  • Input validation on all settings (TTL clamping, URL scheme check, module whitelist)

Architecture Improvements

  • Extracted ILogger interface + FileLogger for dependency injection
  • Extracted WebView2Helper — shared initialization with 10s timeout
  • Extracted FileCacheService + ICacheService from GitHubDataService
  • Extracted shared data-parser.js — removed duplicated code from 4 modules
  • Settings schema versioning with migration support
  • Type-safe PostMessage contract via MessageTypes constants

Bug Fixes

  • Fixed data not loading — restored in-memory data flow
  • Fixed empty API responses being cached
  • Fixed missing token error message
  • Credential error handling — config dialog no longer crashes
  • Logger now includes stack traces and inner exception details
  • Atomic settings write — prevents corruption on disk-full

Performance

  • Pre-sort animation drops by layer (was sorting every frame at 60fps)
  • Logger queue capped at 1000 entries
  • HttpClient properly disposed via IDisposable
  • Fetch timeout increased from 5s to 15s for first-time users

Installer

  • User data cleaned up on uninstall, preserved on upgrade
  • Auto-incrementing build number for reliable MSI upgrades
  • Release build script (build-release.ps1)

Tests

  • 255 C# + 110 JS = 365 total tests

Screensaver Modules

heatmap-multidata, heatmap-years, rain-days, rain-repos, heatmap-rain-weeks

Installation

  1. Download GithubSaver.msi and run the installer
  2. Open Screen Saver Settings and select GithubSaver
  3. Click Settings to configure your GitHub username and token

Requirements

  • Windows 10/11
  • WebView2 Runtime (pre-installed on Windows 11)