Commit Graph
100 Commits
Author SHA1 Message Date
Moritz Graf 945d80b232 chore(k8s,dns): decommission corona workloads and prune DNS records 2026-09-26 11:50:46 +02:00
Moritz Graf c91ab16b9b feat(sasch40): add printable medieval retro A4 proclamation flyer PDF with story and QR code 2026-09-25 10:07:03 +02:00
Moritz Graf bf15c2e9cb feat(sasch40): deliver schankraum v6 and zero-occlusion hotspot positions
- Replace schankraum with v6: exactly one Queen Verena with tiara on upper gallery, Lutz in hot tub, Armend at forge, rustic beer taps, no crowns at patron tables, seamless secret oak trapdoor without text
- Rename Papa Markus button to 'Markus (Vater)' and place above his head in stall window to avoid facial/body occlusion
- Relocate character hotspot badges across all tavern scenes (Verena, Lutz, Armend, Amy, Mane, Viktor, Pü) onto railings, table rims, and lower body levels to guarantee zero occlusion of faces or bodies
2026-09-25 09:46:45 +02:00
Moritz Graf 109d47d8d3 feat(sasch40): authentic 3 sisters portraits, 9:16 responsive stage with medieval ornaments, and hotspot fixes
- Recreate 16-bit LucasArts portraits for Saskia, Maja, and Miriam matching real-life source photos
- Add 3 sisters showcase in Act II intro modal and golden portrait badges on goal platforms
- Fix Act III background scaling: lock scene to 9:16 aspect ratio with medieval ornamental side borders and corner brackets
- Ensure 100% full background visibility with zero cropping and lock hotspot buttons to image features across all screen sizes
- Fix cache issue by referencing schankraum_v5.jpg with cache buster query
- Re-position NAT button to feet (top: 70%) and Mario button to knees (top: 79%) to eliminate face occlusion
2026-09-25 09:23:31 +02:00
Moritz Graf 07fef4547c feat(sasch40): overhaul Act III tavern schankraum and canonical papa markus scene
- Generate and integrate authentic 16-bit LucasArts taproom scene with Theke, brass taps, bartender, drinking patrons, and bunker trapdoor
- Realign Schankraum hotspots for Verena, Lutz in hot tub, Armend at forge, room transitions, and centered bunker trapdoor
- Update Papa Markus canonical portrait and Taiwan street dining scene to be bald and clean-shaven with glasses and modern attire
- Enforce hotspot zero-occlusion rules for signposts, characters, and mobile room navigation bars
- Document Papa Markus specifications, tavern invariants, and layout guidelines in AGENTS.md
- Add automated sister capture and playthrough recording scripts
2026-09-25 08:36:39 +02:00
Moritz Graf b61cf84082 fix(sasch40): bald Markus portrait & scene, authentic Schankraum taproom, and cleaned up Hinterland navigation 2026-09-24 22:15:08 +02:00
Moritz Graf fbc4158016 feat(sasch40): v4.0 full-screen mobile conversion, Hinter den Bergen room with Liars Dice, beat-only concert audio, and updated art 2026-09-24 21:11:12 +02:00
Moritz Graf 8a0b65c3fa feat(sasch40): major overhaul with doodle jump, party bunker, and guitar hero
- Add global settings & pause modal (gear icon) with mute and reset, removing obsolete bag button
- Extend Prologue with Flo Maier (castle fire game over & Löschzug restart) and Viktor (vampire bite game over & Knoblauch restart)
- Rebuild Akt II as 3-level vertical Doodle Jump climber to rescue sisters Saskia, Maja, and Miriam with custom pixel portraits
- Update Akt III Schankraum with seamless oak floor, double-tap 'Luke zum Party Bunker', duel intro modals, and Hansi's departure in Hinterland
- Rebuild Akt IV as 3-lane medieval Guitar Hero rock concert with live crowd meter, combo multipliers, and Hansi duo
- Update AGENTS.md architectural documentation and playtest test suite
2026-09-24 18:22:28 +02:00
Moritz Graf 6374ba9e8a feat(sasch40): add Nebenraum, Marktplatz minigame & trapdoor to Hinterzimmer
- Split GameBoy chassis brand header: 'AKT III' on clean dedicated second line
- Add 5-room tavern architecture: Schankraum, Nebenraum, Marktplatz, Hinterland, Hinterzimmer
- Introduce Nebenraum (Kemenate/Atelier) with Amy at her easel painting the neon banner and Zuluman magic mirror
- Update Marktplatz scene with Mario juggling chainsaws/hops and NAT on the festival stage
- Implement Wildschwein-Schnick-Schnack-Schnuck minigame against NAT (Best of 3, Keiler > Dickicht > Lanze > Keiler)
- Replace secret tap with cellar floor trapdoor ('Luke zum Hinterraum') initially invisible
- Update automated playtest covering all 25 screens with zero console/network errors
- Document all architectural decisions in projects/sasch40/AGENTS.md
2026-09-24 12:37:56 +02:00
Moritz Graf bbae8a8c78 docs(sasch40): document cache busting, easter egg invisibility, and localStorage persistence 2026-09-24 11:10:09 +02:00
Moritz Graf e45dbc2e19 feat(sasch40): improve Act III, add state persistence and fix portraits
- Fix character portrait crops and version assets to portrait_v2, ensuring correct identities (resolving Nat/Verena mismatch)
- Update Schankraum scene image and configure Nginx cache-control to prevent stale asset caching
- Make secret beer tap completely invisible in tavern until clicked
- Reposition room hotspots in Act III to eliminate overlapping click targets
- Add exit button [✕] to Bavarian Gstanzl duel minigame
- Implement localStorage persistence in gameStore to maintain progress across page reloads
- Enable clean game state and storage reset when clicking "Nochmal spielen"
- Expand automated playtest script to cover Nat dialogue, duel exit, reload persistence, and game restart
2026-09-24 11:03:22 +02:00
Moritz Graf 7a7038e2c2 feat(sasch40): multi-room tavern, authentic character portraits, pre-level start screens & bollerwagen redesign 2026-09-24 10:02:57 +02:00
Moritz Graf 4488749d6f docs(sasch40): document architecture decisions, agent rules, and character system in AGENTS.md 2026-09-24 07:59:01 +02:00
Moritz Graf f6d39f01da feat(sasch40): polish retro game layout, clean tavern scene, and improve mobile HUD
- Hide GameBoy D-Pad and action buttons during RPG and dialogue modes
- Add prequel intro landing screen for QR code arrivals with Haumdaucher lore
- Clean baked-in text from tavern scene background and streamline navigation bar
- Add safe-zone margins and HTML HUD in platformer and party express acts
- Optimize Certificate modal layout and scoring breakdown for mobile screens
- Add automated end-to-end browser playtest script with Puppeteer
- Accelerate Docker build via native pre-compilation
2026-09-24 07:55:42 +02:00
Moritz Graf 5852479c21 feat(sasch40): add retro birthday game subproject and k8s deployment
- Add Vue 3 + Vite + TypeScript retro game: 'Saschas Kronkorken Kreuzzug: 40 Jahre Bass & Gerstensaft'
- Add dynamic GameBoy layout: controls visible only during arcade modes, fullscreen during dialogue and tavern
- Add QR code welcome & prequel screen with lore, feature preview, and audio hints
- Add competitive party highscore and ranking breakdown on royal certificate
- Add dedicated individual 1:1 character portraits for Sascha, Verena, NAT, Hansi, Mop, Lutz, Armend, Amy, Mane, Pü, and Mario
- Add Dockerfile, Makefile, and K8s deployment at sasch40.haumdaucher.de
- Update openclaw timeout configuration
2026-09-23 21:56:34 +02:00
Moritz Graf d11a84a0d3 fix(openclaw): use base64 patch for garmin_mcp workouts normalization in init script 2026-09-20 08:09:58 +02:00
Moritz Graf f2ef5a8834 fix(openclaw): enforce sportType integrity on Garmin workout uploads 2026-09-20 08:06:06 +02:00
Moritz Graf 80a056f720 docs(bootstrap): document single-node cluster upgrade procedures and modernize init.sh
- Update init.sh with smart checkout, patch application, sync-inventory alias, and runbook output
- Rewrite bootstrap/README.md with step-by-step upgrade guide, architectural invariants, and troubleshooting
- Update bootstrap/AGENTS.md with single-node operational rules and OS constraints
2026-09-19 22:58:22 +02:00
Moritz Graf 87649e6e22 chore(bootstrap): upgrade kubespray to release-2.28 and kubernetes to v1.32.13
- Bump Kubespray baseline to release-2.28 (last release supporting Ubuntu 20.04)
- Upgrade Kubernetes control plane and node to v1.32.13
- Configure single-node cluster settings (drain_nodes: false)
- Add patch for Kubespray v1beta4 kubeadm preflight error handling
- Update init.sh, AGENTS.md, and README.md with two-phase upgrade instructions
2026-09-19 22:57:19 +02:00
Moritz Graf c9e21c082d chore(wiki): update knowledge-wiki submodule pointer 2026-09-19 21:06:42 +02:00
Moritz Graf a7b93ca34a feat(openclaw): add chart-to-chat skill to prompt and update PATH for dct 2026-09-19 21:06:07 +02:00
Moritz Graf 18a7292844 fix(dns,k8s): add moritzgraf.de apex A record, modernize ingress, and resolve cluster alerts
- terraform: add ovh_domain_zone_record.moritzgraf_domain pointing to cluster IP
- k8s/web: modernize Ingress to networking.k8s.io/v1 with traefik class and auto-renew TLS certificate
- k8s/backup: set activeDeadlineSeconds and backoffLimit: 3 on gdrive-to-gphotos, clean dead pods
- k8s/openclaw: set failedJobsHistoryLimit: 1 on wiki backup cronjob and purge stale failed job
- k8s/coder: increase postgresql CPU limit to 500m to eliminate CFS CPU throttling
2026-09-19 18:19:54 +02:00
Moritz Graf 79fa817480 feat(openclaw): enable itguy autonomous weekly health audit and 3-repo architecture 2026-09-19 16:58:23 +02:00
Moritz Graf 474af29c4d feat(openclaw): integrate YouTube and Google Maps Platform MCP skills and GCP infrastructure 2026-09-18 11:46:10 +02:00
Moritz Graf bdfd5f5057 feat(calendar): update OpenClaw calendar prompt with RRULE, transparency, reminders, free slots, and move capabilities 2026-09-18 11:29:49 +02:00
Moritz Graf 0282b82c7a fix(openclaw): increase timeout, bind heartbeat to main, add shared hardlinks, cleanup cron, and enrich subagent topic prompts 2026-09-18 07:57:46 +02:00
Moritz Graf 87b09ed55d feat(openclaw): add doktor, itguy, merged grabengasse_media and pin 10 telegram topics 2026-09-17 14:12:49 +02:00
Moritz Graf e9376c6552 fix(openclaw): configure timeout and provider order for glm-5.3-flash 2026-09-17 13:38:54 +02:00
Moritz Graf 10a94c3512 feat(openclaw): enable grill-me skill in skills.entries 2026-09-17 13:34:53 +02:00
Moritz Graf c1cd638039 feat(openclaw): add read-only github mcp server with tool search 2026-09-17 11:09:08 +02:00
Moritz Graf a93c1e3510 chore(wiki): update knowledge-wiki pointer to 20e8556 2026-09-17 09:47:39 +02:00
Moritz Graf e5fa7c6ff3 feat(openclaw): optimize Garmin tool calling with parameter signatures and fast-path 2026-09-17 09:42:20 +02:00
Moritz Graf ea8ce29574 chore(wiki): update knowledge-wiki pointer to dc273a3 2026-09-17 09:30:34 +02:00
Moritz Graf 2747e07148 fix(openclaw): preserve live garmin tokens on PVC and add garmin-auth MFA instructions 2026-09-17 09:28:13 +02:00
Moritz Graf 3e0922c5fa fix(openclaw): enforce dynamic chat/thread routing and single ask_user prompt for brother printer 2026-09-17 09:05:23 +02:00
Moritz Graf aad2dc874d feat(openclaw): integrate Brother HL-L8240CDW duplex laser printer with interactive Telegram options 2026-09-17 08:14:26 +02:00
Moritz Graf d8c95940a1 chore(openclaw): update garmin oauth tokens 2026-09-16 11:23:55 +02:00
Moritz Graf fd0633dace feat: add public hosting ingress, minio credentials, and skills for openclaw 2026-09-16 09:06:16 +02:00
Moritz Graf 707a1b02ef feat(openclaw): implement 9-agent specialist architecture and agents-as-code (ADR 0001) 2026-09-16 08:29:29 +02:00
Moritz Graf bcff777228 feat(openclaw): configure calendar-id-regensburg for HaumdaucherEvent Calendar 2026-09-15 22:42:33 +02:00
Moritz Graf ce025f4842 fix(openclaw): set bootstrapMaxChars to 60000 for agent defaults 2026-09-15 22:35:02 +02:00
Moritz Graf 5c3ff03124 feat(openclaw): update prompt with calendar color coding, conflict guard, and prep checklists 2026-09-15 22:28:30 +02:00
Moritz Graf 115ca3c80e feat(openclaw): add Bring! shopping lists MCP integration and multi-list support 2026-09-15 22:16:58 +02:00
Moritz Graf c7d0d471b6 feat(openclaw): add GrafFamily calendar ID to openclaw-secrets 2026-09-15 22:05:09 +02:00
Moritz Graf 668f8da112 chore: update knowledge-wiki submodule pointer 2026-09-15 21:47:38 +02:00
Moritz Graf 0184fc9527 feat(openclaw): provision google calendar service account and configure calendar MCP server 2026-09-15 21:46:48 +02:00
Moritz Graf 97ead7943c feat(openclaw): allow FamilyHub supergroup without mention gating 2026-09-15 21:11:17 +02:00
Moritz Graf 4df5c2c3d6 fix(openclaw): bypass local attachment allowlist to support all files (.zwo, .json, etc.) 2026-09-15 13:23:40 +02:00
Moritz Graf feca5ccd3c fix(openclaw): ensure .config sentinel exists on PVC during init to guard subPath mounts 2026-09-14 08:28:34 +02:00
Moritz Graf 6bf3bb1348 feat(openclaw): assign glm-5.3-flash as primary conductor with prompt guardrail in adr 0002 2026-09-14 08:12:54 +02:00
Moritz Graf 4ae16b2640 docs(adr): update ADR 0002 open questions following DeepSeek conductor promotion 2026-09-14 07:35:32 +02:00
Moritz Graf c4297d42aa fix(openclaw,docs): promote deepseek v4.1 flash to primary conductor to resolve tool_call XML leakage 2026-09-14 07:28:49 +02:00
Moritz Graf edf124e88c feat(openclaw,docs): expand ADR 0002 to full multimodal spectrum and upgrade to Gemini 3.1 2026-09-13 22:46:33 +02:00
Moritz Graf c4c00416af feat(openclaw,docs): restore gemini flash image generation and propose ADR 0002 for model selection 2026-09-13 22:45:13 +02:00
Moritz Graf ea6fa7344d feat(openclaw,infra): optimize token usage with GLM-5.3-Flash and add Garmin MCP integration
- Migrate OpenClaw primary model to z-ai/glm-5.3-flash across conductor, heartbeat, subagents, and vision
- Configure deepseek-v4.1-flash and qwen3.8-flash as fallback models; retire claude-3.7-sonnet and deepseek-v4-pro
- Decouple heartbeat target to prevent active session context amplification and token bleed
- Add Garmin Connect MCP integration, secret unpacking, and Elite Strength Coach SOUL protocol
- Add ADR 0001 documenting hybrid tool search and subagent architecture
- Update Authentik configuration, theme styles, and Terraform state
- Add Grafana dashboard for Taupi fan monitoring and update Velero secrets
- Bump knowledge-wiki submodule pointer
2026-09-13 22:21:17 +02:00
Moritz Graf 02ad8f0050 chore(knowledge-wiki): update submodule pointer 2026-09-11 21:41:51 +02:00
Moritz Graf 95d8da9169 fix(openclaw): use run_spotify_mcp python launcher for spotify mcp 2026-09-11 21:15:49 +02:00
Moritz Graf 0e891098f9 feat(openclaw): integrate spotify mcp server and developer credentials 2026-09-11 21:12:50 +02:00
Moritz Graf 1e81cdbead feat(openclaw): add shopping, supermarket deals, geizhals, and ebay MCP tools 2026-09-10 21:32:22 +02:00
Moritz Graf 2f2f597a67 feat(openclaw): add jellyfin and jellyseerr MCP server integration and credentials 2026-09-10 10:34:28 +02:00
Moritz Graf dc062cb1a7 feat(openclaw): configure text-to-audio skill with Gemini 3.1 Flash TTS and solo default 2026-09-08 19:33:10 +02:00
Moritz Graf 4968ec2f49 feat(openclaw): configure context pruning, auto-compaction with memory flush, and nightly compaction cron 2026-09-08 16:39:20 +02:00
Moritz Graf 879eb9be10 fix(openclaw): configure subagents model to deepseek-v4-pro for Strategy B 2026-09-05 11:39:53 +02:00
Moritz Graf 0e2b59ee3f feat(openclaw): implement Karpathy LLM Wiki architecture, routines, and vault schema 2026-09-05 11:32:49 +02:00
Moritz Graf 52731e8b60 chore(submodule): update knowledge-wiki pointer 2026-09-04 18:52:28 +02:00
Moritz Graf 22d1973faf feat(wiki): configure knowledge-wiki as root Git submodule and revert monorepo embedding 2026-09-04 18:32:31 +02:00
Moritz Graf 4e4da29c78 feat(wiki): migrate knowledge wiki into infrapuzzle monorepo subfolder 2026-09-04 17:37:15 +02:00
Moritz Graf 00058eeab0 fix(backup): update job backoffLimit to 100 and refine verify_migration parsing 2026-07-23 20:07:35 +02:00
Moritz Graf c03463b750 feat(zigbee): add Sonoff S60 plug as code and tune shelly humidity buffer 2026-07-21 21:09:21 +02:00
Moritz Graf 2b0575364b feat: enable Google Photos Library API in Terraform and create gdrive-to-gphotos sync Job 2026-07-18 21:41:33 +02:00
Moritz Graf b4cf4c0961 chore(k8s): migrate Zigbee2MQTT to helm in zigbee namespace 2026-07-18 09:42:15 +02:00
Moritz Graf 44508e865c feat(monitoring): restructure dashboards into Grabengasse7 folder and add Z2M alerting 2026-07-15 22:04:47 +02:00
Moritz Graf ead3e99876 chore(monitoring): enable device availability monitoring in Zigbee2MQTT 2026-07-14 20:40:35 +02:00
Moritz Graf 9560e59374 fix(monitoring): upgrade zigbee2mqtt to latest, restore home-assistant config entries JSON, and correct localized Grafana queries 2026-07-14 20:27:32 +02:00
Moritz Graf e3bca38dfd Create Grafana dashboard ConfigMap for Shelly WS90 weather console 2026-07-12 08:04:48 +02:00
Moritz Graf f012a3e049 Update Zigbee2MQTT readme with LED blink disable instructions and verified metrics 2026-07-11 20:28:11 +02:00
Moritz Graf 6fbbf61d23 Adding explicitly the correct namespace. 2026-07-11 20:20:34 +02:00
Moritz Graf bdabc56afe monitoring: optimize alerts and mitigate fritzbox-exporter timeouts 2026-07-11 07:40:06 +02:00
Moritz Graf c5458821a7 monitoring: change TaupiFanOffline alert threshold to 8 hours 2026-07-09 07:24:19 +02:00
Moritz Graf 494892709d Deploy Zigbee2MQTT in monitoring namespace and integrate Shelly weather station 2026-07-07 21:38:10 +02:00
Moritz Graf f613721662 chore(monitoring): migrate heating gas dashboard to prometheus regex 2026-07-07 21:03:09 +02:00
Moritz Graf 26a68a8962 Adding esphome display 2026-07-07 21:01:46 +02:00
Moritz Graf 1501d7562e Adding recent k8s changes 2026-07-07 21:01:20 +02:00
Moritz Graf d163416758 Changing required diff to external taupunkt to 2 2026-07-07 21:00:09 +02:00
Moritz Graf d3cc3b896a feat(wireguard): add status timeline graph and uptime timer to grafana dashboard 2026-07-06 22:11:30 +02:00
Moritz Graf ecdc27b155 feat(wireguard): add prometheus monitoring, alerts, and grafana dashboard 2026-07-06 22:09:37 +02:00
Moritz Graf db9ce2b538 feat(shelly): raise taupunktschwelle and add Terraform output for script status 2026-07-05 08:03:05 +02:00
Moritz Graf 4082a155a4 feat(shelly): auto-start script after successful upload in upload.py 2026-07-05 07:55:41 +02:00
Moritz Graf f64540a8f5 Reducing buffer for humidity from 15 to 5 % 2026-07-05 07:45:56 +02:00
Moritz Graf e6556e5eb2 Recent fixes to the TAUPI script + upload logic 2026-07-05 07:45:37 +02:00
Moritz Graf a623ec7b85 refactor(monitoring): rearchitect taupi-fan dashboard & clean up docs
Dashboard changes:
- Merge 3 separate correlation graphs into one full-width panel
- Left Y axis: temperatures + dewpoints (°C)
- Right Y axis: humidity + mold threshold (%)
- Boolean signals (fan/mold/activation) as colored fill bands
- graphTooltip: 2 for shared crosshair + tooltip
- Add collapsed Deep Dive row with delta graphs
- Collapse BLE diagnostics row

Documentation changes:
- DASHBOARD_CREATION.md: remove content now covered by Grafana skills
  (dashboarding, grafana-oss, promql), eliminate duplicated pitfalls
  section, add Prometheus dashboard guidance, add Grafana unit codes
- AGENTS.md: add skills prerequisite table, update folder structure
  (add taupi-fan.yaml), add Prometheus data flow, remove duplicated
  InfluxDB/Flux/pitfalls sections (canonical in DASHBOARD_CREATION.md)
2026-07-03 13:06:25 +02:00
Moritz Graf 304ca52cca feat: add grafana dashboarding and promql agent skills 2026-07-03 12:48:42 +02:00
Moritz Graf 3f7c501340 fix(shelly): fix BLE variable overwriting bug in checkBlu 2026-07-03 11:54:23 +02:00
Moritz Graf be7dcc97bc backup: migrate backup cronjobs from dropbox to gdrive 2026-07-03 11:50:18 +02:00
Moritz Graf 6627372ec0 feat(monitoring): add prometheus metrics, alerts, and dashboard for taupi fan 2026-07-03 11:28:36 +02:00
Moritz Graf 1ad356a7b4 feat(shelly): add intelligent mold-risk check based on Sedlbauer LIM I curve and document in AGENTS.md 2026-07-03 10:56:33 +02:00
Moritz Graf 85bfabd387 feat(shelly): add terraform_shelly workspace for Taupi-4.0 dew point ventilation 2026-07-03 09:07:08 +02:00
Moritz Graf 768f7c83f7 fix(monitoring): correct n8n event loop lag metric name to match prefix 2026-07-03 07:22:24 +02:00
Moritz Graf 05e79a5098 feat(monitoring): add prometheus-operator monitoring & alerts for n8n, influxdb, and home-assistant
- Enable Prometheus metrics endpoint in n8n, InfluxDB, and Home Assistant.
- Add ServiceMonitor configs for scraping metrics, including token authentication for Home Assistant.
- Define native PrometheusRules for health checks, restarts, volume capacities, and n8n event loop lag to prevent login freezes.
- Deploy AlertmanagerConfigs to route alerts from the new namespaces to Telegram.
2026-07-03 07:19:29 +02:00
Moritz Graf e64aa64c73 velero: implement three-tier backup retention policy
Replace single daily schedule (240h TTL) with three tiered schedules:
- daily-backup:   02:00 nightly,  192h TTL  → keeps last 7 daily backups
- weekly-backup:  03:00 Sundays, 1032h TTL  → keeps last 6 weekly backups
- monthly-backup: 04:00 on 1st,  4392h TTL  → keeps last 6 monthly backups

Kopia handles incremental deduplication at the block level automatically,
so each Velero backup only stores changed data despite being a full logical
snapshot. No additional incremental configuration required.

Update README with retention policy table and updated backup commands.
2026-07-01 17:28:11 +02:00