Gitea läuft seit 2026-11-11 auf hivegrid-control (git.hg-int.dev);
git.tool-ctrl.de wird abgeschaltet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 24s
- Favicon aus Emblem neu in 96x96 generiert (Google-SERP braucht min. 48x48),
Favicon-Links versioniert
- /gamejam-games/: X-Robots-Tag noindex + robots.txt Disallow (Fremdcontent)
- og:image:width/height/alt auf Start, TechDay und GameJam
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 21s
Neue Section zwischen Organisation und Events: positioniert ToolCTRL
als deutsch gehostete, dem deutschen Recht unterstellte Alternative zu
US-Software. Grau hinterlegt, hält den Grau/Weiss-Wechsel intakt.
Grosses, blasses Paragraf-Zeichen als Wasserzeichen im Freiraum oben
rechts (analog zum CTRL-Schriftzug im Hero).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 21s
Form
- Name in Vorname + Nachname gesplittet (beide Pflicht), 2-Spalten-Grid
- Neues Feld Branche neben Firmenname (optional, 2-Spalten-Grid)
- Telefon-Label auf 'Telefonnummer' vereinheitlicht
- Placeholder ohne Em-Dash
script.js
- Validierung jetzt auf vorname/nachname/email/nachricht
- Payload sendet neue Einzelfelder (vorname, nachname, firmenname,
branche) PLUS zusammengesetzte Backward-Compat-Felder (name, firma
mit Branche-Suffix in Klammern), damit server.js/Inbox-Schema
unverändert bleibt
Hero
- 'Leistungen ansehen' Ghost-Button entfernt, nur noch der schwarze
'Kontakt aufnehmen' CTA
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 22s
UI / Layout
- Subtiler 72px-Grid auf html (rgba(10,10,10,.032)), body transparent
- Neue Events-Sektion vor #kontakt: TechDay-Card + AI-GameJam-Card mit
3px-Border + 7px-Offset-Shadow, ganze Card klickbar via stretched-link
- Form mit scharfen Ecken und 12px-Offset-Shadow (raffael-Stil),
Section-Dark-Button-Schatten, monochromer Form-Status
Navigation
- Nur noch Start / TechDay / GameJam + Kontakt-Button (Anchor-Links
zur Landingpage raus, da sie ohnehin direkt darunter erscheinen)
- Größere Hover-Fläche pro Nav-Link via padding, Unterstreichung
via ::after fest positioniert
- Mobile-Nav synchron, TechDay-Page synchron
Copy
- Hero: CTA 'Projekt besprechen' -> 'Kontakt aufnehmen'
- Leistungen: neuer Intro + alle sechs Card-Texte (Hands-Off, Anzug,
Kommandozentrale, Tools-aneinander-vorbei, zerstueckelte Teil-
loesungen, waechst-mit-Ihrem-Betrieb)
- Vorgehen -> 'Konzept' / 'Das ToolCTRL Konzept.' mit vier Schritten
(Situationsanalyse, Grundkonzepte, Umsetzung, Betrieb & Wartung)
- Kontakt-Intro umgeschrieben, Form-Label 'Worum geht es Ihnen?'
Kontakt
- E-Mail global admin@ -> info@ (5 Dateien inkl. script.js Fallback)
- Telefon +49 1523 7750939 in Footer-Kontaktspalte (index + techday),
klickbar via tel:
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 22s
handleLead forwards to LEAD_INBOX_URL/v1/leads (DE field aliases map
server-side); local ndjson/csv stays as fallback. No-op until
LEAD_INBOX_URL/LEAD_INBOX_KEY are set, so safe to deploy.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 21s
Richtige Reihenfolge: Platz 1 Banana Bandit, Platz 2 Ship IT,
Platz 3 Firestarter. Gewinner-Section von oben (unter Hero) ans
Seitenende verschoben (zwischen Galerie und Footer).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 21s
Nach dem Event: Podium direkt unter dem Hero im Preise-Stil.
Platz 1 Firestarter (hervorgehoben, Pokal), Platz 2 Ship IT,
Platz 3 Banana Bandit, jeweils mit Gutschein-Betrag.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 21s
Klick-Platzhalter zurückgenommen. Stattdessen am iframe
allow="autoplay 'none'" gesetzt: das Spiel lädt sichtbar, der Browser
blockiert automatischen Ton (auch via AudioContext). Erst eine
User-Geste im Spiel (Reinklicken) erlaubt den Ton.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 20s
Statt jedes eingereichte Spiel sofort in ein iframe zu laden (wodurch
mehrere Spiele gleichzeitig Ton abspielten), zeigt die Galerie jetzt
einen "Spiel starten"-Platzhalter. Das iframe (und damit Ton) wird
erst beim Klick erzeugt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 21s
server.js: handleGamejamUpload lehnt nach UPLOAD_DEADLINE mit HTTP 410
und Klartext-Hinweis ab. gamejam.html: Formular wird nach Ablauf
clientseitig gesperrt und ein roter Status zeigt den abgelaufenen
Termin. Doppelschicht (Server + UI), Server ist verbindlich.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 20s
Zwischen "So läuft's" und "Bewertung": ein Satz, dass Teilnehmer ihr
eigenes Gerät (am besten Laptop) mitbringen und sonst nur Lust auf
ein KI-Spiel brauchen.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 20s
Solange in der Coolify-Umgebung kein clamd erreichbar ist, würden
GameJam-Uploads sonst mit 503 (fail-closed) abgelehnt. Für den
TechDay morgen schalten wir den Scan im Container-ENV ab; Uploads
laufen unverändert, nur ohne Virenprüfung. Lokal bleibt der Default
true (Scan aktiv, wenn clamd läuft).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 33s
Dockerfile installiert clamav-daemon + clamav-freshclam und konfiguriert
clamd auf TCP 127.0.0.1:3310 mit DB-Verzeichnis auf der persistenten
Coolify-Volume (/app/data/clamav-db).
entrypoint.sh startet clamd und freshclam vor dem Node-Server, wartet
auf clamd-PING und exec't dann node als unprivilegierter Nutzer. tini
übernimmt PID 1 für Signal-Forwarding.
Folge: GameJam-Uploads werden in Produktion automatisch per ClamAV
geprüft, ohne dass Coolify manuell angepasst werden muss. Erster
Deploy lädt einmalig ~300 MB Virendefinitionen auf die Volume,
Folge-Starts in ~30 s. RAM-Bedarf des Containers ~1.5 GB.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy / build-and-deploy (push) Successful in 21s
Platz 1: 50 EUR Amazon-Gutschein
Platz 2: 25 EUR Amazon-Gutschein
Platz 3: 25 EUR Amazon-Gutschein
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Footer-Signatur und Seitentitel: "from vision to version" durch die
Tagline "Die Software, die eure Branche längst verdient hat" ersetzt
- Hero-Mobil-Padding auf 140 px erhöht (mehr Luft zum Header)
- Stylesheet-Link mit Versions-Parameter, damit Browser zuverlässig
frische CSS laden
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Hero-Headline auf die offizielle Underline gesetzt (moderne, durch-
dachte All-in-One-Software für übersehene Branchen), Untertext aus
One-Liner und Elevator-Pitch mit UI/UX-USP. Headline-Größe und
Meta-Description entsprechend angepasst.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Gezeichnete ctrl-Taste im Workflow-Schema durch das echte
Marken-Emblem (emblem-black.svg) ersetzt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Hausschrift auf Space Grotesk umgestellt (Schrift der GameJam-Seite),
für kohärente Typografie über alle Seiten. Lokal gehostet.
Schibsted-Grotesk-Dateien bleiben als Fallback erhalten.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Icon-Flächen in den Leistungs-Kacheln zu zweischichtigen Tasten
umgebaut: grauer Tastenkörper mit erhöhter, gewölbter Oberfläche,
Glanzkante und weichem Bodenschatten.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Platzhalter durch drei mITapp-Screenshots ersetzt (Dashboard,
Event-Roadmap, Networking per QR-Code), je auf 1100px skaliert
und mit Beschriftung im 3-Spalten-Raster.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Der-TechDay-Abschnitt zweispaltig mit offiziellem Event-Keyvisual
- GameJam-Abschnitt: Hero-Element der GameJam-Seite als HTML nachgebaut
(Kicker, "Human in the Loop", Subline, Raster-Hintergrund)
- Event-Infos: breitere Label-Spalte, sauberer Abstand bei "Veranstalter"
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Rundes Profilbild von David Bertram in der Speaker-Karte (wie in
der mITapp), Bild auf 320px skaliert
- Rolle: "Co-Founder & Head of Product, ToolCTRL" (Heidelberg entfernt)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- public/techday.html: Eventseite im Landingpage-Stil mit Hero,
Event-Beschreibung, Vortrag (Speaker David Bertram), mITapp-Abschnitt
mit Platzhaltern, GameJam-Verweis und Event-Infos
- styles.css: Styles für TechDay-Seite (Hero, Talk-Split, Speaker-Karte,
Screenshot-Platzhalter)
- index.html: Navigations-Verweis "TechDay" in Header, Mobilmenü und
Footer; GameJam zusätzlich im Footer
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- public/gamejam.html: teilnehmerseitige AI-GameJam-Seite (TechDay
Bruchsal, 27.05.) mit eigenem Schwarz-Weiß-Styling, Zurück-Link zur
Landingpage
- server.js: abhängigkeitsfreier Multipart-Parser plus Endpunkte
POST /api/gamejam/upload und GET /api/gamejam/games
- index.html: Navigations-Verweis "GameJam" in Header und Mobilmenü
- .gitignore: hochgeladene Spiele und Einreichungen ausgeschlossen
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Statische Landing Page mit Lead-Formular, Impressum und
Datenschutzerklärung, ausgeliefert von einem abhängigkeitsfreien
Node-Server mit lokaler Lead-Erfassung.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>