build(deps): bump express from 5.1.0 to 5.2.0 in /raspberrypi-master/frontend#161
Open
dependabot[bot] wants to merge 278 commits intomasterfrom
Open
build(deps): bump express from 5.1.0 to 5.2.0 in /raspberrypi-master/frontend#161dependabot[bot] wants to merge 278 commits intomasterfrom
dependabot[bot] wants to merge 278 commits intomasterfrom
Conversation
Fix markdownlint issues in flux and MetalLB guides. Add symlinks and README links. Closes #1.
Update README link description for Ollama guide. refs #2
Grafana remains on Longhorn. Update monitoring guide and Helm values. Refs issue 'Use local storage for Prometheus'.
Expanded monitoring-guide with full setup instructions for Prometheus and Grafana on k3s with Proxmox. Updated README link to point to the guide. Refs #123
Add service-server.yaml for ollama-server and update kustomization. Document the service in a new guide linked from the README. Refs: Add Flux-managed service for Ollama
- deploy kube-prometheus-stack via Flux - update cluster kustomization to include monitoring - document how monitoring is managed by Flux - note in README that monitoring stack is deployed via Flux ------ https://chatgpt.com/codex/tasks/task_e_684f6d535af88327b15374b4c914b157
Add a guide describing how docs are published to gh-pages and link it from the README. References issue #N/A.
Creates k3s VM using direct qm commands via SSH to bypass Proxmox API SSL issues. Calculates resources based on actual hardware: 3 cores and 25GB RAM.
- Add VMHealthChecker class for VM health status detection - Detect running/stopped/paused/unknown VM states - Mark stopped and paused VMs for deletion/recreation - Add network bridge validation to verify required bridges exist - Return structured VMHealthStatus with reason - Add .flake8 config for consistent code style (120 char lines) - 100% test coverage with 12 comprehensive tests Implementation follows TDD approach with tests written first. refs #159
- Detect SSL errors in ProxmoxAPI connection - Fall back to pvesh CLI commands via SSH - Add use_cli_fallback parameter (default True) - Implement get_node_status with CLI support - Add _exec_ssh_command helper for SSH execution - Update tests to handle .maas suffix behavior - Fix pyproject.toml: remove invalid asyncio_mode config TDD approach: wrote tests first, achieved 91% coverage refs #159
- Add get_cluster_token() to retrieve token from existing node - Add node_in_cluster() to check cluster membership - Use SSH to ubuntu@<ip> for token retrieval - Full test coverage with mocked subprocess calls refs #159
- Add install_k3s() method for cluster join - Use curl | sh pattern with K3S_TOKEN and K3S_URL - 5 minute timeout for installation - SSH to ubuntu@<hostname> for installation - Full test coverage including timeout and failure cases refs #159
- Remove unused Optional import - Apply black formatting - All tests still passing with 100% coverage refs #159
- Add delete_vm() method to stop and delete VMs - Handle running VMs (stop first, then delete) - Return False when VM doesn't exist - 30 second timeout for stop operation - 100% test coverage of new functionality Tests added: - test_delete_vm_when_exists_and_running - test_delete_vm_when_exists_and_stopped - test_delete_vm_when_not_exists - test_delete_vm_stop_timeout refs #159
- Check VM health before skipping existing VMs - Delete and recreate unhealthy VMs automatically - Use VMHealthChecker for health status - Log health check results and actions - 100% test coverage of new functionality Tests added: - test_create_or_update_vm_deletes_unhealthy_vm - test_create_or_update_vm_keeps_healthy_vm - test_create_or_update_vm_unhealthy_but_no_delete Behavior changes: - Stopped VMs are now deleted and recreated (was: skipped) - Paused VMs are now deleted and recreated (was: skipped) - Running VMs continue to be skipped (no change) - Unknown state VMs are skipped without deletion (safe default) refs #159
- Add join_vms_to_k3s() function for cluster join phase - Call k3s join after VM provisioning in main() - Skip nodes already in cluster (idempotent) - Reuse cluster token for all nodes - Gracefully handle missing K3S_EXISTING_NODE_IP - Add comprehensive test coverage (100%) - Create .env.example with K3S_EXISTING_NODE_IP documentation - Structured workflow output with phase labels Main workflow now executes three phases: 1. ISO Management - Ensure ISOs present 2. VM Provisioning - Ensure VMs healthy (create/recreate as needed) 3. K3s Cluster Join - Ensure VMs in k3s cluster Tests verify: - Successful cluster join for new nodes - Skipping nodes already in cluster - Graceful degradation when K3S_EXISTING_NODE_IP not set - Error handling for token retrieval failures - Continued processing when individual nodes fail - Correct phase execution order refs #159
Add comprehensive documentation for the new idempotent VM provisioning system: 1. **README.md** - New "Fully Idempotent Provisioning" section - One-command setup guide - Three-phase workflow explanation - Configuration requirements - Idempotent behavior details - Recovery procedures 2. **idempotent-vm-provisioning.md** - Operational runbook - Common scenario walkthroughs - Troubleshooting guide - Implementation notes - Code references 3. **k3s-node-reprovisioning-workarounds-still-fawn.md** - Lessons learned - Original problem analysis - Manual workaround procedures - Root cause deep dive 4. **IMPLEMENTATION_SUMMARY.md** - Technical implementation overview - Before/after comparison - Module details and test coverage - Commit history - Success metrics fixes #159
- Add VALIDATION_REPORT.md with validation scenarios - Add implementation plan from Opus agent - Include delete_vm.py workaround script for reference refs #159
Implements declarative, GitOps-style infrastructure management with single command for all components (like terraform apply). Key Features: - Single config file (config/homelab.yaml) for all infrastructure - Unified CLI: `poetry run homelab apply` - Dependency-ordered reconciliation (DNS → PBS → Storage → VMs) - Comprehensive validation with DNS and connectivity checks - Rich terminal UI with tables and progress indicators - Dry-run mode for safe previews Components Implemented: - PBS Storage Management (declarative, with DNS validation) - DNS Resources (placeholder for MAAS/OPNsense integration) - Unified Infrastructure Manager (orchestrates all components) Files Added: - config/homelab.yaml - Unified infrastructure config - config/pbs-storage.yaml - PBS-specific config (legacy, prefer homelab.yaml) - src/homelab/unified_infrastructure_manager.py - Main orchestrator - src/homelab/homelab_cli.py - Unified CLI (apply/validate/status) - src/homelab/pbs_storage_manager.py - PBS reconciliation logic - src/homelab/pbs_cli.py - PBS-specific CLI (optional) - tests/test_pbs_storage_manager.py - 25 unit tests, 74% coverage - docs/PBS_STORAGE_MANAGEMENT.md - Complete documentation Testing: - ✅ 25 unit tests passing - ✅ 74% code coverage for PBS manager - ✅ End-to-end tested with actual Proxmox API - ✅ DNS validation working (detects missing DNS entries) - ✅ Idempotent reconciliation verified Usage: poetry run homelab validate # Validate configuration poetry run homelab status # Show current state poetry run homelab apply # Apply all infrastructure poetry run homelab apply --dry-run # Preview changes Fixes: DNS resolution issue for proxmox-backup-server.maas - Created MAAS DNS entry via web GUI (permanent) - Disabled old misconfigured PBS storage entry - homelab-backup storage now active (20.9 TB) 🤖 Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Port 22 was intercepting SSH connections to K3s VMs, preventing direct SSH access to the nodes. Changed webtop service to expose SSH on port 2222 instead, freeing up port 22 for VM SSH access. Fixes SSH authentication issues where connections were being routed to webtop pod instead of reaching the VM's SSH daemon.
Webtop service was using port 22 which interfered with SSH access to K3s VMs. Removing webtop to free up port 22 for VM SSH access.
- Changed PBS server from proxmox-backup-server.maas to 192.168.4.218 - PBS container (LXC 103) configured with static IP 192.168.4.218 - Static IP is in MAAS reserved range (200-250) outside DHCP pool - Resolves recurring 'grey' status issue caused by DNS entry deletion - PBS storage now shows active status with 3.15% usage (658MB/20.9GB) Root Cause: DNS entry for proxmox-backup-server.maas kept disappearing, causing Proxmox to fail connecting to PBS. Using static IP bypasses DNS entirely. Tested: - PBS web UI accessible at https://192.168.4.218:8007 - pvesm status shows homelab-backup as active - pvesm list shows all backup snapshots accessible 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Documents the Nov 18-29 incident where still-fawn became unresponsive to SSH. Root cause partially unknown - rpool storage misconfiguration was a contributing factor but not the sole cause. Includes timeline, fix applied (nodes restriction on local-zfs), and action items. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Traefik ingress: 192.168.4.80 (all *.app.homelab traffic) - Ollama: 192.168.4.81 - Stable Diffusion: 192.168.4.82 - Samba: 192.168.4.120 (already configured) This ensures DNS entries remain valid after cluster restarts. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
RCA documents the 2025-11-29 incident where Traefik got a different IP after cluster restart, causing ingress to fail. Runbook provides diagnostic steps and fixes for common MetalLB LoadBalancer IP issues. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Fixes denial of service vulnerability when url encoding is used. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Implement complete Pomodoro timer application for ESP32-S3 with 1.28" round display and WS2812B LED ring: Core Features: - 25/5 minute work/break timer with configurable durations - LED ring comet animation providing visual progress feedback - Touch gesture controls (tap to start/pause, swipe for mode) - LVGL-based circular UI with arc progress indicator - Persistent state management across power cycles Hardware Integration: - ESP32-S3 DevKitC-1 with 8MB flash - 1.28" GC9A01 round IPS display (240x240) - 16-LED WS2812B addressable ring - CST816D capacitive touch controller - Rotary encoder for navigation (planned) Security: - WiFi credentials stored in config.h (gitignored) - config.h.example template provided for setup - Demo mode available for testing without network Technical Details: - PlatformIO build environment with Poetry - LovyanGFX display driver for GC9A01 - Adafruit NeoPixel library for LED control - ArduinoJson for API communication (future) - Unit tests for core state management Documentation: - Complete architecture and design docs - LED integration guide with wiring diagrams - BDD feature specifications - Mock API servers for development Build verified: 631KB flash (9.6%), 22KB RAM (6.9%) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add lightweight function-pointer based app framework - Implement app menu (long press to open, encoder to navigate) - Create Status app with Claude Code and Home Assistant views - Add alert overlay system with priority-based LED colors - Refactor Pomodoro into app wrapper functions - Route all input through framework for proper app isolation Apps can now be switched via long-press menu. Status app shows: - Claude Code: session count, git dirty status, last task - Home Assistant: CPU temp arc, K8s health, alert count 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Bumps [express](https://github.com/expressjs/express) from 5.1.0 to 5.2.0. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](expressjs/express@v5.1.0...v5.2.0) --- updated-dependencies: - dependency-name: express dependency-version: 5.2.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
d143b92 to
3b3601e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps express from 5.1.0 to 5.2.0.
Release notes
Sourced from express's releases.
... (truncated)
Changelog
Sourced from express's changelog.
Commits
4007ad1Release: 5.2.0 (#6920)2f64f68sec: security patch for CVE-2024-51999ed0ba3fbuild(deps): bump actions/checkout from 5.0.0 to 6.0.0 (#6928)8eace46build(deps): bump github/codeql-action from 4.31.2 to 4.31.6 (#6929)30bae81build(deps): bump coverallsapp/github-action from 2.3.6 to 2.3.7 (#6930)758d435deps: body-parser@^2.2.1 (#6922)77bcd52docs: update emeritus triagers (#6890)f33caf1Nominate to@efekrsklfor triage team (#6888)54af593refactor: use cached slice in app.listen (#6897)2551a7ddocs: switch badges from badgen.net to shields.io (#6900)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.