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 filesnginx.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
- Multi-arch Docker build (
k8s/swisshd.yaml— Single-file K8s manifest (Deployment + NodePort Service on port 30800)- ArgoCD Application manifest for GitOps sync
Changed
- Secret management —
VITE_*API keys moved from.env.localto GitHub Secrets for production;.env.localretained 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: grafanain config andVITE_GRAFANA_API_KEYin.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: n8nin config andVITE_N8N_API_KEYin.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.memoforServerCardandServiceCardto 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
dashboardServiceAccount 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
ServerMetrictype to include'k3s' - Removed
.env.local.backupfrom 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_AUTHenvironment variables -
Project Structure Refactor — Improved organization for scalability
- Consolidated source files under
src/ - Components in
src/components/, utilities insrc/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