Den Entwurf und das Logo-Original einsortieren
Deploy / check (push) Canceled after 0s
Deploy / deploy (push) Canceled after 0s

Drei Dateien lagen unversioniert im Wurzelverzeichnis herum. Alle drei
gehoeren ins Repo, nur nicht dorthin:

  logo.png                        -> docs/brand/logo.png
  ChatGPT Image 23. Juni 2025 ... -> docs/brand/studie-kopf-2025-06.png
  design_handoff_redesign/        -> docs/redesign/

logo.png ist NICHT irgendein Logo, sondern das Original, von dem
docs/brand/README.md die ganze Zeit spricht: "ein einziges Original, 2048x2048
mit Transparenz". Nachgerechnet statt geraten -- auf den Inhalt beschnitten
ergibt es 1986x1963, exakt die Masse von lockup.png. Es lag also die Quelle
der Marke unversioniert daneben.

Dabei aufgefallen und in der README vermerkt, nicht repariert: build.py liest
das Original ueber einen festen Pfad ausserhalb des Repos
(QUELLE = A:/Users/DAR/logo.png). Jetzt sind das zwei Kopien, die
auseinanderlaufen koennen. Umstellen kann nur, wer weiss, welche der beiden
gepflegt wird.

Das zweite Bild ist eine frueherere Kopf-Studie und nicht die Vorlage der
heutigen Marke -- andere Zeichnung, flacher, ohne Fell und Schulter. Sie wird
nirgends benutzt und liegt als Herkunft.

Vom Entwurfs-Paket ist der assets/-Ordner entfallen: er enthielt Kopien von
mark.png und lockup.png, die zwei Verzeichnisse weiter im Original liegen. Die
.dc.html-Referenzen zeigen jetzt auf ../brand/ und stellen das Logo weiter
dar, statt mit kaputten Bildern zurueckzubleiben. Der Kopf der README sagt
ausserdem, dass der Entwurf umgesetzt ist und wo bewusst abgewichen wurde --
sonst liest sich das Dokument in einem Jahr wie eine offene Aufgabe.

Dazu eine Zeile, die seit dem Redesign nicht mehr stimmte: build.py bezeichnet
(10, 10, 10) als "--bg der Marke". Das ist seit gestern #131316. Wirkt erst,
wenn jemand build.py laufen laesst -- die erzeugten Icons in frontend/public/
tragen bis dahin den alten Grund. Neu bauen konnte ich sie hier nicht, es gibt
weder Python noch Pillow auf dieser Maschine.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-18 15:19:49 +02:00
co-authored by Claude Opus 5
parent 25d36c7269
commit 0d7628f14e
10 changed files with 893 additions and 1 deletions
+112
View File
@@ -0,0 +1,112 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="./support.js"></script>
</head>
<body>
<x-dc>
<helmet>
<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{color-scheme:dark}
body{background:#131316;color:#ececee;font-family:'Chakra Petch',sans-serif;font-size:16px;line-height:1.55;overflow-x:hidden;min-height:100vh}
a{color:inherit;text-decoration:none}
a:hover{color:#ffb340}
button{font-family:inherit;cursor:pointer}
::selection{background:rgba(255,154,31,.35);color:#131316}
@keyframes riseIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
</style>
</helmet>
<div style="min-height:100vh;display:flex;flex-direction:column;position:relative">
<div style="position:fixed;inset:0;pointer-events:none;background:radial-gradient(900px 500px at 78% -10%,rgba(240,120,0,.12),transparent 60%)"></div>
<header style="position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:2rem;padding:.85rem 2.5rem;background:rgba(19,19,22,.88);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.08)">
<a href="#" style="display:inline-flex;align-items:center;gap:.65rem;font-weight:700;font-size:1.12rem;letter-spacing:.06em;color:#ececee">
<img src="../brand/mark.png" alt="" style="width:34px;height:34px;object-fit:contain">
D4RKBOT<span style="color:#ff9a1f">_</span></a>
<nav style="display:flex;gap:1.8rem;flex:1;align-items:center;font-family:'IBM Plex Mono',monospace;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase">
<a href="#" style="color:#9a9aa3" style-hover="color:#ffb340">Funktionen</a>
<a href="#" style="color:#ffb340;border-bottom:2px solid #ff9a1f;padding-bottom:.2rem">Befehle</a>
<a href="#" style="color:#9a9aa3" style-hover="color:#ffb340">Community</a>
</nav>
<span style="font-family:'IBM Plex Mono',monospace;font-size:.64rem;letter-spacing:.14em;color:#66666e">DE / EN</span>
<a href="#" style="font-family:'IBM Plex Mono',monospace;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:#131316;background:linear-gradient(135deg,#ffb340,#f07800);padding:.55rem 1.3rem;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);font-weight:500">Anmelden</a>
</header>
<main style="flex:1;position:relative">
<section style="max-width:1160px;margin:0 auto;padding:4.5rem 2.5rem 2.5rem;animation:riseIn .45s ease both">
<div style="display:inline-flex;align-items:center;gap:.5rem;font-family:'IBM Plex Mono',monospace;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:#ffb340;border:1px solid rgba(255,154,31,.4);padding:.35rem .8rem;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)">Referenz</div>
<h1 style="font-size:3.6rem;font-weight:700;line-height:1.02;text-transform:uppercase;margin:1.1rem 0 .8rem">Be<span style="background:linear-gradient(135deg,#ffb340,#f07800);-webkit-background-clip:text;background-clip:text;color:transparent">fehle</span></h1>
<p style="font-size:1.05rem;color:#9a9aa3;max-width:560px;line-height:1.65">Alle Slash-Befehle im Überblick. Vieles läuft zusätzlich über Knöpfe direkt in den Nachrichten.</p>
</section>
<section style="max-width:1160px;margin:0 auto;padding:1rem 2.5rem 5rem">
<sc-for list="{{ groups }}" as="g" hint-placeholder-count="3">
<div style="margin-bottom:2.6rem">
<div style="display:flex;align-items:center;gap:1rem;margin-bottom:1.1rem">
<span style="width:22px;height:3px;background:linear-gradient(90deg,#ffb340,#f07800)"></span>
<h2 style="font-size:1.35rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;display:inline-flex;align-items:center;gap:.6rem">{{ g.label }}
<sc-if value="{{ g.locked }}" hint-placeholder-val="{{ false }}"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="#ffb340" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg></sc-if>
</h2>
<span style="flex:1;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.15),transparent)"></span>
</div>
<div style="display:flex;flex-direction:column;gap:.55rem">
<sc-for list="{{ g.cmds }}" as="c" hint-placeholder-count="6">
<div style="display:flex;gap:1.2rem;align-items:baseline;flex-wrap:wrap;background:#1b1b20;border:1px solid rgba(255,255,255,.08);padding:.75rem 1.1rem;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)" style-hover="border-color:rgba(255,154,31,.5);background:#1f1f25">
<code style="font-family:'IBM Plex Mono',monospace;font-size:.82rem;color:#ffb340;white-space:nowrap;flex:none;min-width:16rem">{{ c.name }}</code>
<span style="color:#9a9aa3;font-size:.92rem;flex:1;min-width:15rem">{{ c.desc }}</span>
</div>
</sc-for>
</div>
</div>
</sc-for>
<p style="font-family:'IBM Plex Mono',monospace;font-size:.74rem;color:#66666e">Moderations- und Einrichtungs-Befehle sind Mitgliedern mit den passenden Discord-Rechten vorbehalten.</p>
</section>
</main>
<footer style="border-top:1px solid rgba(255,255,255,.08);padding:1.4rem 2.5rem;display:flex;align-items:center;gap:1.2rem;font-family:'IBM Plex Mono',monospace;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:#9a9aa3">
<span style="display:inline-flex;align-items:center;gap:.5rem;font-weight:700;color:#ececee;font-family:'Chakra Petch',sans-serif"><img src="../brand/mark.png" alt="" style="width:20px;height:20px;object-fit:contain">D4RKBOT<span style="color:#ff9a1f">_</span></span>
<a href="#" style-hover="color:#ffb340">Quellcode</a><a href="#" style-hover="color:#ffb340">Status</a>
<span style="margin-left:auto;display:flex;gap:1.2rem"><a href="#" style-hover="color:#ffb340">Impressum</a><a href="#" style-hover="color:#ffb340">Datenschutz</a></span>
</footer>
</div>
</x-dc>
<script type="text/x-dc" data-dc-script>
class Component extends DCLogic {
renderVals() {
const c = (name, desc) => ({ name, desc });
return {
groups: [
{ label: 'Für alle', locked: false, cmds: [
c('/rank', 'Zeigt deinen Rang, deine XP und den Fortschritt zum nächsten Level.'),
c('/wunsch idee:…', 'Reicht einen Feature-Wunsch ein — landet im Voting-Kanal und auf der Roadmap.'),
c('/bug titel:… beschreibung:…', 'Meldet einen Fehler als Issue im Repository. Wird er geschlossen, bekommst du eine Nachricht.'),
c('/geburtstag setzen tag:… monat:…', 'Trägt deinen Geburtstag ein. Der Bot gratuliert morgens und vergibt eine Rolle für den Tag.'),
c('/geburtstag entfernen', 'Trägt ihn wieder aus.'),
c('/remind dauer:… text:…', 'Erinnert dich per Direktnachricht — etwa „2h" oder „30m".'),
c('/tag name:…', 'Ruft einen gespeicherten Textbaustein ab, mit Vorschlägen beim Tippen.'),
c('/ping', 'Lebenszeichen des Bots.'),
c('/umfrage frage:… a:… b:…', 'Startet eine Abstimmung mit bis zu vier Antworten — Discord zählt selbst aus.'),
c('/radio', 'Holt den Bot in deinen Sprachkanal und öffnet die Sender-Auswahl.'),
]},
{ label: 'Moderation', locked: true, cmds: [
c('/warn user:… grund:…', 'Verwarnt jemanden, schickt eine Nachricht und schreibt es ins Protokoll.'),
c('/warns user:…', 'Zeigt die Verwarnungs-Historie.'),
c('/timeout user:… dauer:…', 'Setzt eine Auszeit.'),
c('/purge anzahl:…', 'Löscht mehrere Nachrichten auf einmal.'),
]},
{ label: 'Einrichtung', locked: true, cmds: [
c('/raid status | an | aus', 'Zeigt die Raid-Sperre an, setzt sie von Hand oder hebt sie sofort auf.'),
c('/giveaway preis:… dauer:… gewinner:…', 'Startet eine Verlosung mit Teilnahme-Knopf und automatischer Ziehung.'),
c('/ticket-setup', 'Postet den Knopf, über den Support-Tickets als private Threads entstehen.'),
c('/playtester-setup', 'Postet den Bewerbungs-Knopf für das Playtester-Programm.'),
c('/devlog-backfill', 'Holt ältere Devlog-Nachrichten nachträglich ins Archiv.'),
c('/galerie-backfill', 'Dasselbe für den Screenshot-Kanal.'),
]},
],
};
}
}
</script>
</body>
</html>