30daa779371744e4b7cd51f18102f9eea9131e5f
5
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
403161283c |
fix(startseite): saubere Skyline links, deutlich grössere Agentenbilder
Runde 7. §1 Hintergrund. Die Häuserzeile auf der linken Seite zeigte verwässerte Doppelstrukturen. Drei Ursachen, alle behoben: - Die Fortsetzung lief mit Massstab 2.45 und war damit gegenüber dem Hauptfoto um das 2.4-fache zu gross. Der Faktor ist jetzt aus den Fotos gemessen (Münsterhöhe über der Wasserlinie) und beträgt 1.06. - Die 320 Pixel breite Überblendung mischte zwei verschiedene Häuserreihen zu halbdurchsichtigen Geisterhäusern. In der Häuserzeile wird jetzt praktisch hart getrennt, in Himmel und Wasser weiterhin weich — dort gibt es nichts zu vermischen. - Die Umschaltlinie lag zwischen den Dächern, sodass die Gauben des Hauptfotos als Reihe schwebender Klötzchen im Himmel stehen blieben. Sie liegt jetzt über allen Dächern beider Aufnahmen. Dazu: Helligkeit zeilenweise statt global angeglichen, Himmel der Fortsetzung spaltenweise entlang der echten Dachkante entfernt, fehlende Bildbereiche über die Zeilenfarbe statt über gestreckte Randzeilen aufgefüllt, Häuserzeile nachgeschärft. §2 Agentenbilder. Alle Kreise deutlich grösser, tiefenlogisch gestaffelt und nur noch knapp über der Tischkante statt frei im Raum schwebend. Gegenüber vorher: Ferdi und Bruno 2.11×, Livia und Nora 2.22×, Sina 2.50×, Thomas 3.18×. Ferdi und Bruno rücken näher an die vordere Tischkante. Radius und Höhe stehen jetzt je Platz in der Sitzordnung; die Werte sind gemeinsam durchgerechnet, sodass sich im Bild kein einziges Kreispaar überschneidet. Nebenbei: waagrechter Bildwinkel nach oben begrenzt, damit flache Fenster den Raum nicht zerren; Sockelleiste vor das Wandpaneel gesetzt gegen die ausgefranste Kante. Geprüft bei 1600×900, 1366×768 und 1280×620: sechs Beschriftungen ohne Überlappung, kein Querbalken, Klick auf Ferdi führt auf seine Seite, Menü bündig am rechten Rand. 422 Tests, Lint und Build sauber. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
9e825c04bf |
feat(agenten): Porträts in 512×512 aus den Originalen der Präsentation
Die Porträts lagen bisher nur als kleine, liegende Zuschnitte aus einem HTML-Konzept vor — Ferdi etwa 215×160 Bildpunkte bei 6 KB. Im 3D-Meetingraum waren sie damit sichtbar unscharf, und Hochskalieren hilft dagegen nicht. Die Originale liegen in `PropertyOn_Engeli_v5.pptx` als quadratische Bilder mit 1200×1200 Bildpunkten. Sie zeigen dieselben fünf Personen: Kleidung, Frisur und Ausschnitt stimmen mit den bisherigen Zuschnitten überein, und die Präsentation nennt Name und Funktion direkt neben jedem Bild. Jede Zuordnung wurde einzeln gegen den alten Zuschnitt geprüft — eine frühere Quelle trug dieselben Vornamen für eine andere Belegschaft, und ein vertauschtes Gesicht wäre schlimmer als ein unscharfes. `scripts/build-agent-portraits.mjs` beschneidet den Folienrand, skaliert auf 512×512 und schreibt die Dateien. Das reicht für jede Darstellung im Programm — im Raum sind die Kreise höchstens rund 100 Bildpunkte gross — und hält das Bündel klein: rund 30 KB je Porträt statt 250 KB im Original. Die Verarbeitung läuft ohne Bildbibliothek auf einem Canvas im vorhandenen Chrome, wie schon beim Basel-Panorama. Keine neue Abhängigkeit. Geprüft: 422 Tests, Typecheck, Build, ESLint, Token-Schwelle (884/925), Szene im Browser ohne Konsolenfehler. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
4349641ee9 |
fix(startseite): durchgehendes Basel-Panorama, Kreise ohne Stühle
Vier Korrekturen aus der Nachprüfung. **Naht in der linken Fensterfront.** Sie stammte von zwei getrennten Fotoflächen — vorne und links. Eine Stossstelle lässt sich nicht wegblenden; sie verschwindet nur, wenn es keine zwei Bilder mehr gibt. Die Kulisse ist jetzt eine gekrümmte Fläche mit einer einzigen Panoramadatei: auf einem durchgehenden Zylinder ist eine Naht geometrisch unmöglich. Das Panorama entsteht einmalig aus den beiden Referenzfotos (`scripts/build-basel-panorama.mjs`), jede Quelle genau einmal — kein Kacheln, kein Spiegeln. Das gute Motiv vom Tischende bleibt in Ausschnitt und Farbe unverändert und steht weiterhin in der Frontscheibe; die Panoramaaufnahme setzt es nach links fort, helligkeitsangeglichen und über 320 Pixel überblendet. Aus der Fortsetzung wird nur der Abschnitt östlich des Münsters verwendet — beide Vorlagen zeigen es, nebeneinander stünde es zweimal im Bild. Himmel und Wasser sind aus den Randzeilen gestreckt, damit oben und unten keine Bildgrenze bleibt. **Stühle und Körper entfernt.** Sitzmöbel, Rümpfe, Schultern, Hälse, Arme und Hinterköpfe sind ersatzlos weg. Die Agenten bestehen nur noch aus ihrem runden Porträt mit weissem Ring. **Positionen neu.** Ferdi und Bruno sind die direkten Nachbarn links und rechts vorne, die übrigen gestaffelt dahinter, Thomas unverändert vis-à-vis. Die Kreise liegen deutlich über der Blickachse: lagen sie auf Augenhöhe, projizierten alle fünf auf fast dieselbe Bildhöhe und die hinteren verschwanden hinter den vorderen — seitliches Auseinanderziehen half dagegen nicht, weil ein tieferer Platz in der Perspektive zur Mitte wandert. Dazu ein echter Fehler, der dabei auffiel: die grosszügigen Trefferquader der vorderen Kreise fingen die Strahlen der hinteren ab, ein Klick auf Livia landete bei Ferdi. Die Trefferfläche ist jetzt eine Kugel knapp um den sichtbaren Kreis. **Bildschärfe.** Die Textur wird auf einen mittigen quadratischen Ausschnitt begrenzt — ohne das zieht die Kreisgeometrie ein liegendes Foto in die Breite, was Gesichter verzerrt und Schärfe kostet. Dazu anisotrope Filterung und Mipmaps. Höher aufgelöste Originale der fünf Agenten waren nicht auffindbar: die Porträts in `Agenten_Verwaltung_Fotos.html` liegen zwar in 256×256 vor, gehören aber zu einer anderen Belegschaft — geprüft und verworfen, statt Gesichter zu vertauschen. **Ortsangabe** unten rechts entfernt. **Menü** liegt bündig an der rechten Fensterkante: der Spalt kam vom Anker am eingerückten Menüsymbol, jetzt ist das Klappmenü an eine Bildschirmstelle gebunden. Geprüft: 422 Tests, Typecheck, Build, ESLint, Token-Schwelle (884/925). Im Browser 1280 und 1600 px: sechs Beschriftungen ohne Überlappung, sechs Kreise ohne Überlappung, alle sechs per Maus auf der richtigen Subpage, Menü bündig ohne waagrechten Scrollbalken, keine Konsolenfehler. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
d200d4e930 |
feat(agenten): Runde 4 — «Meine Agenten» mit fünf digitalen Mitarbeitenden
Setzt das Umsetzungsbriefing Runde 4 im bestehenden Frontend um. Informationsarchitektur - «Teamübersicht» heisst «Meine Agenten»; ihr bisheriger Inhalt (Kreisgrafik, Auswertung, Verbindungszusammenfassung) ist entfallen. - Personalverwaltung, Bearbeitungsverlauf und Kanäle & Systeme sind jetzt Reiter derselben Seite (?section=), gestaltet wie die Auswahl im Bearbeitungsverlauf. Es wird nur der gewählte Bereich gerendert. - Die alten Unterseitenpfade leiten um, damit Lesezeichen nicht brechen. Agentenbestand - Reto und Lea vollständig entfernt — aus Navigation, Dossiers, Protokoll, Verbindungen, Vorgängen und Porträtbestand. - Retos Aufgaben liegen bei Bruno: Nachbereitung, WhatsApp-Anruf, Protokoll und Kundennotiz, Ablage im CRM. - Livia ist «Exposé Master»: Lageberichte, Inserate, Angebotsbroschüren. - Sidebar führt Ferdi, Bruno, Livia, Nora, Sina mit Porträt und Funktion. Agentenseiten - Ein gemeinsamer AgentWorkspaceHero auf allen fünf Seiten. - Ferdi: Auswertungskarten, Priorität und Typfarben entfallen; Fälligkeit nur bei fünf Tagen oder weniger rot; Objektlinks nach «Meine Objekte»; neu die Terminplanung im verbundenen Kalender mit typgerechtem PDF-Ausschnitt. - Sina: reduzierte, filter- und sortierbare Objektübersicht; Detailansicht direkt editierbar, leere Pflichtfelder rot umrandet. - Nora: Signale ohne Prozentsätze und Konfidenzstufen, nur belegbare Angaben; Mehrfachauswahl leitet Objekte an Livia weiter. - Livia: aktive und archivierte Leads, Arbeitsbereich gleitet an den oberen Rand; dreistufiger Exposé-Prozess Hochladen → Exposé → Export. - Bruno: neue Seite mit Auftragsliste und Vor-/Nachbereitungs-Drawer; Glocke warnt bei Besichtigung unter 24 Stunden ohne Bericht. Datenschicht - Neu: Kalender, Exposé-Leads, Exposé-Entwürfe, Besichtigungsaufträge — je Domain, Provider, Service und Hook. - IAIService um generateExposeText erweitert; der Entwurf nutzt ausschliesslich erfasste Objektdaten und meldet Lücken, statt sie zu füllen. - Alle Objektverweise zeigen auf reale Einträge aus «Meine Objekte»; neue Detailroute /supply/properties/:propertyId. Offen: Chat, Kalender, CRM und DMS sind Frontend-Simulation ohne Anbindung. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
7934da7669 |
feat: design token system — DS_TEXT/DS_SURFACE/DS_BORDER + 237 hex migrations
Token infrastructure (src/lib/ds.ts): - DS_TEXT: 16 semantic text color tokens (primary/secondary/muted/success/ warning/error/info/brand/signal + dark variants successDark/warningDark/ signalDark/infoDark for text on tinted surfaces) - DS_BG: page/surface/subtle/muted background tokens - DS_BORDER: default/muted/strong border tokens - DS_SURFACE: 10 bg+border surface pairs (success/warning/error/info/indigo/ purple/orange/blue/neutral/slate) - DS_MATCH_TIER: score-tier surface aliases keyed by strong/moderate/weak - DS_PRE_MARKET / DS_MARKET_SIGNAL: named aliases for futureCard tokens - DS_SHADOW: card/panel/dialog elevation tokens - BADGE_COLORS: 14 semantic presets for GenericBadge (confidenceHigh, riskMedium, preMarket, marketSignal, verified, gold, silver, bronze…) GenericBadge (src/components/shared/GenericBadge.tsx): - New semanticVariant prop (keyof BADGE_COLORS) — preferred over raw hex - color prop becomes optional (fallback), type-documented as escape hatch Priority file migrations — 237 hex literals replaced across 10 files: ScoreBreakdownPanel.tsx −22 PipelineDetailPanel.tsx −22 FutureAvailabilityCard.tsx −26 AICompareSummary.tsx −27 LocationIntelligencePanel −39 AssistantPromptSuggestions −18 UnitStructurePanel.tsx −25 BerichtDialog.tsx −24 PreMarketPanel.tsx −24 PropertyActivityLogPanel −10 ESLint (eslint.config.js): - Updated rule message to reference new tokens (DS_TEXT, DS_SURFACE, etc.) - Added 'stroke' to monitored property names - Remains 'warn' for gradual migration; use check:tokens for CI gate CI script (scripts/check-tokens.js + npm run check:tokens): - Counts hex patterns in components/ + pages/ - Fails if count > THRESHOLD (ratchet: 1958 baseline, lower per sprint) - Reports top 15 offenders for prioritizing next migration batch Results: ESLint targeted sx-prop violations: 1752 → 1030 (−41%) 0 TypeScript errors, 154 tests green Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |