Skip to content

Changelog

All notable changes to Swiss-HD are documented in this file.

The format is based on Keep a Changelog.


[1.5.0] - 2026-02-28

Added

  • K3s + ArgoCD Production Deployment — Full GitOps CI/CD pipeline
  • Dockerfile — Multi-stage build: Node 20 compiles app → Nginx Alpine serves static files
  • nginx.conf — Nginx reverse proxy replacing Vite dev proxy for all /api/* routes (Proxmox, K3s, qBittorrent, ArgoCD, Longhorn, Grafana, n8n)
  • .github/workflows/deploy.yml — GitHub Actions workflow:
    • Multi-arch Docker build (linux/amd64 + linux/arm64) for ARM K3s nodes
    • Bakes VITE_* secrets into JS bundle at build time via --build-arg
    • Pushes image to ghcr.io/onthecouch/swisshd:SHA
    • Auto-commits new image tag to k3s-repo/apps/services/swisshd.yaml
  • k8s/swisshd.yaml — Single-file K8s manifest (Deployment + NodePort Service on port 30800)
  • ArgoCD Application manifest for GitOps sync

Changed

  • Secret managementVITE_* API keys moved from .env.local to GitHub Secrets for production; .env.local retained for local development only
  • Proxy layer — Vite dev proxy replaced by Nginx in production container

[1.4.0] - 2026-02-21

Added

  • Grafana Integration — Real-time dashboard and alert metrics
  • Displays total dashboard count and firing alerts
  • Requires appType: grafana in config and VITE_GRAFANA_API_KEY in .env.local
  • Display format: ONLINE | dashboards: 15 | alerts: 3
  • API: Service account token with viewer access sufficient

  • n8n Integration — Workflow automation metrics

  • Displays total workflows and active (enabled) workflow count
  • Requires appType: n8n in config and VITE_N8N_API_KEY in .env.local
  • Display format: ONLINE | workflows: 12 | active: 8
  • API: Settings → n8n API → Create API Key

Changed

  • Longhorn Integration — Improved API reliability
  • Switched to REST API approach matching Homepage dashboard
  • Added proper Content-Type header preservation
  • Enhanced error handling with response logging for debugging

[1.3.0] - 2026-02-17

Added

  • Google Calendar Integration — Live calendar events alongside static/external events
  • ICS parser with quoted-printable encoding and line unfolding support
  • Google Calendar API v3 integration with public ICS fallback
  • 30-minute auto-refresh interval for live updates
  • Graceful error handling with user-friendly indicators
  • Environment configuration via VITE_GOOGLE_CALENDAR_* variables

Changed

  • Calendar UI — Fixed cell heights for lighter, balanced appearance
  • Mobile: 40px (h-10)
  • Desktop: 56px (h-14)

[1.2.0] - 2026-02-15

Added

  • Swiss Style 2026 — Complete dashboard redesign following International Typographic Style principles
  • Services Component: Borderless design with systematic numbering, pure typography
    • Removed icons, replaced with Bricolage Grotesque + Inter fonts
    • Cyan hover effects, horizontal line separator with draw animation
    • Status text in functional colors (mint/pink/gray)
  • QuickLinks: Transformed to numbered list format in right column
    • Removed URLs for cleaner presentation
    • Orange titles (text-accent-orange) with underline draw animation
  • Section Titles: Upgraded to 36px (text-4xl) for bold hierarchy
  • Background: B&W architectural photo with asymmetric composition
    • 35% width, 15% opacity, gradient fade to solid background
  • CommandPalette: Clickable ESC, numbered results, sharp corners (rounded-none)
  • Mathematical Spacing: 4-based scale (8px, 16px, 32px, 64px) throughout

[1.1.0] - 2026-02-14

Added

  • Performance Optimizations
  • 60fps cursor trail via direct DOM manipulation (no React state updates)
  • React.memo for ServerCard and ServiceCard to reduce re-renders
  • Throttled mouse position updates (16ms ~60fps)
  • Debounced text fit calculations (100ms) on window resize

  • Interactive Animations

  • Cursor line trail — Mint-colored SVG following cursor movement
  • 3D card tilt — Metric cards tilt toward cursor with perspective
  • Animated counters — CPU/RAM/Storage percentages animate from 0 on load
  • Staggered entrance — Service icons fade in sequentially
  • Magnetic icons — Icons subtly pull toward cursor on hover
  • Underline draw — QuickLinks animate from left to right on hover
  • Character stagger — Header letters animate one by one on load

  • Dynamic Header — Auto-fitting font sizes using HTML5 Canvas measurement

  • Binary search algorithm for optimal performance
  • Re-calculates on resize and title changes

  • K3s Metrics Integration — Real-time Kubernetes node monitoring

  • Vite proxy for K3s API (/api/k3s)
  • CPU parser supporting nanocores, millicores, microcores
  • Dedicated dashboard ServiceAccount with minimal RBAC
  • Auto-detection of K3s format in MetricsPanel

Changed

  • Online status color: Grey → Mint green (text-accent-mint)
  • Service icons now open in new tab (consistent with QuickLinks)
  • Extended ServerMetric type to include 'k3s'
  • Removed .env.local.backup from git tracking

Fixed

  • K3s CPU calculation for different unit formats (n, m, u, plain)
  • Removed duplicate QuickLinks underline effect

[1.0.0] - 2026-02-11

Added

  • Proxmox Integration — Real-time server metrics (CPU, RAM, Storage)
  • Vite proxy to bypass CORS/SSL (/api/proxmox)
  • Auto-detection for Proxmox data structures
  • Hardware spec auto-detection (CPU cores, RAM, storage size)
  • Secure authentication via VITE_METRIC_x_AUTH environment variables

  • Project Structure Refactor — Improved organization for scalability

  • Consolidated source files under src/
  • Components in src/components/, utilities in src/utils/
  • Environment files moved to project root

Fixed

  • 401 Unauthorized errors — Auth injection moved to proxy layer
  • 0% statistics issue — Improved JSON parsing logic
  • Status label coloring in MetricsPanel

Legend

  • Added — New features
  • Changed — Changes to existing functionality
  • Deprecated — Soon-to-be removed features
  • Removed — Removed features
  • Fixed — Bug fixes
  • Security — Security improvements