Design-Refresh: Themes (Iris/Graphit/Papier), Light/Dark, Liquid Glass #261
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/Iris#261
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Warum
Das Design ist funktional, aber austauschbar: Alle Farben in
DS.Colorssind feste Hex-Werte (nur Dark), Akzent ist Tailwind-Blue-600, Eckenradien streuen (4/5/6/7/8/10/12), 357 Stellen umgehenDSFontmit.font(.system(size:)), 22 Dateien tragen Farbliterale. Es gibt kein Light/Dark und keine Themes.Entscheidungen (grill-me, 2026-10-31)
#availablemit Material-Fallback.iris/IrisDesign, per SPM in Mac und iOS;DS.Colorswird dünne Fassade.IrisCanvasColorTokens). Linux-Client und iris-web bleiben außen vor.Etappen
status/zu-testen; Mac #262/#263/#264, iOS 2ndbrain-ios#65, Package iris/IrisDesign#1): Package, dynamische Tokens, Moduswahl, WebViews, Plugin-Tokens, Literale/Fonts/Radien aufräumen. Palette-Vorschau abgenommen. Radien: drei Stufen 6 / 8 / 12; Schriftstufen laufen unter #217.status/zu-testen; Package iris/IrisDesign#2, Mac Remote-Fenster, iOS-Einstellungen).iOS-Teil: iris/2ndbrain-ios (eigenes Issue).
PR #1 gemergt: feat(palette): Package IrisDesign mit Iris-Palette, Theme und Modus (iris/Iris#261)
http://docker:3000/iris/IrisDesign/pulls/1
Commits:
Stand: Package IrisDesign angelegt (Etappe 1, Schritt 1)
Befund: Die Tokens liegen bisher nur im Mac-Target (
DS.Colors, feste Hex-Werte, nur Dunkel); iOS hat einen eigenen Shim.Geändert: Neues Repo
iris/IrisDesign(main geschützt, Merge „Rebase“) mit dem Swift Package:Palette(Iris-Palette, Indigo mit kühlen Neutralen, Hell und Dunkel),Theme/ThemeMode(UserDefaultsuiTheme,uiThemeMode),IrisColors(dynamische Colors für AppKit und UIKit),ThemeMode.applyToApp().Geprüft:
swift testauf macOS: Hex-Parser, Fallback auf Standardwerte, und der Kontrast aller Palette-Token in Hell und Dunkel (Text 4,5:1, Tertiärtext und Statusfarben 3:1, Text auf Akzent 4,5:1). Der Test hat einen Fehler der Vorschau gefunden: weißer Text auf dem dunklen Akzent#6C6CF0kam nur auf 4,17:1; der dunkle Akzent ist jetzt#6262EA(4,71:1), Hover#5656DA.Nicht geprüft: Der UIKit-Zweig (
UIColor-Provider,applyToApp()auf iOS) ist noch nicht kompiliert. Die Einbindung in Iris.app und IrisRemote folgt im nächsten Schritt.Offen: Einbinden in Iris.app/IrisClient.app (
DS.Colorsals Fassade), WebViews, Plugin-Tokens, Einstellungs-UI, Aufräumen der Farbliterale, danach iOS (iris/2ndbrain-ios#64).PR #262 gemergt: feat(design): IrisDesign einbinden, DS.Colors als Fassade, Darstellung System/Hell/Dunkel (#261)
http://docker:3000/iris/Iris/pulls/262
Commits:
Stand: Mac-App auf IrisDesign umgestellt, Hell/Dunkel wählbar (Etappe 1, Schritt 2)
Befund:
DS.Colorswaren feste Dunkel-Hex-Werte; 54 Überlagerungen nutztenColor.white.opacity(…)(im Hellmodus unsichtbar), die Git-Diff-Ansichten hatten feste helle Textfarben auf festem dunklem Grund.Geändert:
iris/IrisDesign(branchmain) als Abhängigkeit von Iris und IrisClient eingetragen.DS.Colorsist jetzt eine Fassade überIrisColors(Iris-Palette, dynamisch Hell/Dunkel). Die Namen bleiben, die rund 2000 Aufrufstellen sind unverändert. Das Tailwind-Blau (blue…) bleibt für die wenigen direkten Nutzer.ThemeMode.applyToApp()), beim Start gesetzt inIrisAppundIrisClientApp.Color.white.opacity(x)→DS.Colors.textPrimary.opacity(x); Git-Diff-Ansichten (lokal und remote) auf Tokens umgestellt.Localizable.xcstrings.Geprüft: Iris.xcodeproj baut (Scheme Iris, per Xcode), Binary-Zeitstempel kontrolliert; das Package löst sich auf (Package.resolved nennt
irisdesign@ 637b2ab). Plugin-Blöcke bekommenDS-Farben und folgen damit dem Modus; Markdown ist natives SwiftUI mitDS-Tokens.Nicht geprüft: Nichts davon wurde gestartet oder angesehen, weder Hell noch Dunkel. IrisClient wurde nicht gebaut (nur das Scheme Iris). Moduswechsel bei geöffneten Fenstern, KaTeX-Formeln (werden als Bild in der Farbe zum Renderzeitpunkt erzeugt, wechseln erst beim nächsten Rendern), WKWebView-Plugins mit festen Dunkelfarben (liegen bei den Plugins), die übrigen Farbliterale (Marken- und Statusfarben wie Hermes-Violett bleiben bewusst).
Grenzen: Das dunkle Aussehen ändert sich gegenüber vorher (neue Palette: Indigo statt Grün-Grau/Tailwind-Blau). Theme-Wechsel (Graphit, Papier) gibt es erst in Etappe 2.
Offen: Schriftstufen (357×
.font(.system(size:))) und Eckenradien vereinheitlichen; Anschauen in Hell und Dunkel durch dich; iOS (iris/2ndbrain-ios#64).PR #137 gemergt: chore(repos): frontend/iris-design in Repo-Landkarte, Vertrag und gitignore (iris/Iris#261)
http://docker:3000/alf/2ndbrain/pulls/137
Commits:
PR #138 gemergt: docs(repos): frontend/iris-design in Repo-Landkarte und Projekttabelle (iris/Iris#261)
http://docker:3000/alf/2ndbrain/pulls/138
Commits:
PR #263 gemergt: fix(design): Darstellung im Einstellungen-Menü des Remote-Fensters statt im Companion-Panel (#261)
http://docker:3000/iris/Iris/pulls/263
Commits:
Stand: Darstellung gehört ins Einstellungen-Menü des Remote-Fensters (Korrektur zu PR #262)
Befund: Die Auswahl System/Hell/Dunkel stand im Companion-Panel. Das Companion-Panel zeigt die Einstellungen der Server-Funktion des Macs; der Client (Remote-Fenster, auch IrisClient) konfiguriert dagegen Client und verbundenen Server. Darstellung ist eine Client-Einstellung und war dort nicht auffindbar.
Geändert: Die Zeile aus
CompanionPanelViewentfernt. Im Menü „Einstellungen“ vonRemoteClientView(Zahnrad in der Werkzeugleiste) gibt es jetzt den Untermenüpunkt „Darstellung“ mit System / Hell / Dunkel (Häkchen an der aktiven Wahl); die Wahl gilt sofort und ist nicht an eine Verbindung gebunden. Dieselbe Ansicht nutzt IrisClient.Geprüft: Iris.xcodeproj baut (Xcode, Binary-Zeitstempel nach Buildstart kontrolliert).
Nicht geprüft: Nicht gestartet, das Menü und der Wechsel wurden nicht bedient. IrisClient nicht gebaut.
Offen: Die Schriftgröße (#217) liegt noch im Companion-Panel; nach demselben Prinzip wäre sie eine Client-Einstellung. Das gehört zu #217 und wurde hier nicht angefasst.
PR #264 gemergt: refactor(design): Eckenradien auf drei Stufen DS.CornerRadius (#261)
http://docker:3000/iris/Iris/pulls/264
Commits:
Stand: Eckenradien auf drei Stufen (Etappe 1, Abschluss Mac)
Befund: Rund 400 Stellen nutzten Radius-Literale mit sieben verschiedenen Werten (4, 5, 6, 7, 8, 9, 10, 12);
DS.CornerRadiuswurde nur 31-mal benutzt.Geändert:
DS.CornerRadiushat drei Stufen:small6,medium8,large12 (extraLargebleibt als Alias vonlarge,pillunverändert). 407 Literale in 73 Dateien (Iris/ und IrisClient/) auf die Tokens umgestellt: 4–7 → small, 8–9 → medium, 10 und 12 → large. Nicht angefasst: 1,5 / 2 / 3 (Hairlines) und 18 (je 1–2 Stellen),IrisPluginKit.Geprüft: Iris.xcodeproj baut (Xcode, Binary-Zeitstempel nach Buildstart kontrolliert). Alf hat zuvor Hell/Dunkel und das Menü „Darstellung“ im Remote-Fenster angesehen („passt soweit alles“).
Nicht geprüft: Die Radien selbst wurden nicht angesehen; die Änderung ist optisch klein (10 → 12 bei 54 Stellen, 4/5/7 → 6 bei 83 Stellen, sehr kleine Elemente könnten runder wirken). IrisClient nicht gebaut.
Offen: Etappe 2 (Graphit, Papier, Theme-Auswahl), Etappe 3 (Glass, Palette-Flächen auf iOS, Chat-Layout, Animationen, Leerzustände). Radien auf iOS bleiben bei den System-Stilen.
PR #2 gemergt: feat(themes): Graphit und Papier, Theme-Wechsel zur Laufzeit (iris/Iris#261)
http://docker:3000/iris/IrisDesign/pulls/2
Commits:
Stand: Themes Graphit und Papier im Package, Wechsel zur Laufzeit (Etappe 2, Schritt 1)
Befund:
IrisColorslas das Theme einmalig beim ersten Zugriff; ein Wechsel wäre erst nach einem Neustart sichtbar gewesen.Geändert:
Palette.graphit(neutrale Graustufen, Akzent Petrol) undPalette.papier(warmes Papier, Akzent Füllfederblau) in Hell und Dunkel, abgenommen anhand der Vorschau.Themehat drei Fälle;Theme.activate()speichert die Wahl, setzt das aktive Theme (gesperrter Zugriff) und zeichnet die App neu (ThemeMode.refreshApp(): kurz der gegenteilige Modus, im nächsten Durchlauf der gewählte). Dynamische Farben lesen das aktive Theme bei jedem Auflösen; die Farbkomponenten werden pro Token einmal vorgerechnet.Geprüft:
swift test: der Kontrast-Test läuft über alle drei Themes in beiden Modi (Text 4,5:1, Tertiärtext und Status 3:1, Text auf Akzent und Hover 4,5:1). Das Package kompiliert für macOS und für den iOS-Simulator.Nicht geprüft: Dass das Neuzeichnen nach dem Wechsel in der echten App alle Fenster erfasst (Mac, iOS) und ob es flackert. Das folgt beim Einbinden.
Offen: Auswahl in Mac-Remote-Fenster und iOS-Einstellungen, danach Anschauen durch Alf.
PR #265 gemergt: feat(themes): Theme-Auswahl Iris/Graphit/Papier im Remote-Fenster (#261)
http://docker:3000/iris/Iris/pulls/265
Commits:
Stand: Theme-Auswahl im Remote-Fenster (Etappe 2, Mac)
Geändert: Im Einstellungen-Menü des Remote-Fensters (Zahnrad) gibt es neben „Darstellung“ den Punkt „Theme“ mit Iris / Graphit / Papier (
Theme.activate(): speichern, aktives Theme setzen, App neu zeichnen). Package-Pin auf IrisDesign1688e76angehoben (Themes, Wechsel zur Laufzeit).Geprüft: Iris.xcodeproj baut gegen das neue Package (Checkout
1688e76bestätigt, Binary-Zeitstempel nach Buildstart kontrolliert). Das Package selbst: Kontrast-Test über alle Themes in beiden Modi.Nicht geprüft: Der Wechsel wurde nicht bedient. Ob das Neuzeichnen (kurz gegenteiliger Modus, dann der gewählte) alle Fenster und die Seitenpanels erfasst, ob es flackert und wie Papier und Graphit in den Ansichten wirken, die eigene Farben mitbringen (Plugin-WebViews, KaTeX-Bilder), ist offen. IrisClient nicht gebaut.
Offen: Alf probiert die Themes aus; danach Etappe 3 (Glass, Feinschliff).
PR #3 gemergt: feat(glass): irisGlass-Modifier mit Material-Fallback (iris/Iris#261)
http://docker:3000/iris/IrisDesign/pulls/3
Commits:
Stand: Glas-Modifier im Package (Etappe 3, Schritt 1)
Geändert:
View.irisGlass(in:tint:interactive:). Ab macOS/iOS 26glassEffectmit zartem Theme-Ton (surface1bei 25 %, überschreibbar); darunter.ultraThinMaterialmit feiner Kante inborderSubtle.interactivewirkt nur auf iOS. Einsatz nur für schwebende Bedienelemente, nicht für Inhaltsflächen.Geprüft: Package kompiliert für macOS und den iOS-Simulator (SDK mit Glass-API, Verfügbarkeitsprüfung
#available).Nicht geprüft: Aussehen und Lesbarkeit in den drei Themes, Verhalten auf Systemen unter 26 (Fallback).
Offen: Einsatz in Mac und iOS (nächste Schritte), Palette-Flächen auf iOS, Chat-Layout, Animationen, Leerzustände.
PR #266 gemergt: feat(glass): SysMonitor-Widget als Glas (#261)
http://docker:3000/iris/Iris/pulls/266
Commits:
Stand: Glas für das SysMonitor-Widget (Etappe 3, Mac)
Geändert: Das schwebende SysMonitor-Widget nutzt
irisGlass(ab macOS 26 Liquid Glass mit zartem Theme-Ton, darunter Material mit feiner Kante) statt eigenem Material plus Rand. Package-Pin auf IrisDesign8d025dd. Fenster-Chrome (Toolbar, Sidebar) bekommt unter macOS 26 das System-Glas ohnehin, dort wurde nichts geändert. Die Eingabeleiste im Chat bleibt vorerst eine flache, angedockte Fläche: sie zu einem schwebenden Glas-Pill umzubauen wäre ein Layout-Eingriff und liegt bei Alf.Geprüft: Iris.xcodeproj baut gegen IrisDesign
8d025dd(Checkout bestätigt, Binary-Zeitstempel nach Buildstart kontrolliert).Nicht geprüft: Aussehen des Widgets in den drei Themes und auf Systemen unter 26. Nicht gestartet.
PR #4 gemergt: feat(chat): IrisBubble.userShape für die Nutzerblase (iris/Iris#261)
http://docker:3000/iris/IrisDesign/pulls/4
Commits:
Stand: Form der Nutzerblase im Package (Etappe 3, Chat-Layout)
Geändert:
IrisBubble.userShape(radius:tail:): großer Radius mit kleiner Ecke unten zum Sprecher (UnevenRoundedRectangle,.continuous). Mac und iOS nutzen dieselbe Form. Assistenten-Antworten bekommen keine Blase.Geprüft: Package kompiliert für macOS und den iOS-Simulator.
Nicht geprüft: Aussehen im Chat; folgt mit den Mac- und iOS-Änderungen.
PR #267 gemergt: feat(chat): Nutzerblase in Akzentfarbe, Antworten ohne Blase (#261)
http://docker:3000/iris/Iris/pulls/267
Commits:
Stand: Chat-Layout auf dem Mac (Etappe 3)
Geändert:
ChatBubbleView: Die Nutzerblase hat die FormIrisBubble.userShape(kleine Ecke unten zum Sprecher) in der Akzentfarbe, etwas mehr Innenabstand (12/8). Antworten des Assistenten stehen ohne Blase (ohnesurface2-Fläche) mit knappem Rand auf der Fläche. Package-Pin auf IrisDesign42c775e.Geprüft: Iris.xcodeproj baut gegen
42c775e(Checkout bestätigt, Binary-Zeitstempel kontrolliert).Nicht geprüft: Aussehen im Chat. Nicht gesehen: Tabellen, Codeblöcke, Bilder und Memory-Pills ohne Blase, Anhänge unter Nutzernachrichten, Suchtreffer-Markierung, lange Antworten, die drei Themes in Hell und Dunkel. Die Zwischenschritte (aufklappbare, graue Pillen) und Denk-Blöcke haben weiter ihre Fläche. Codeblock-Karte mit Kopfzeile und Kopieren-Knopf sowie einklappbare Tool-Aufrufe sind nicht Teil dieses Schritts.
Offen: Alf sieht den Chat an; danach Codeblöcke und Tool-Aufrufe, Animationen, Leerzustände.
PR #268 gemergt: feat(chat): Codeblock als Karte mit Sprache und Kopieren-Knopf (#261)
http://docker:3000/iris/Iris/pulls/268
Commits:
Stand: Codeblock als Karte mit Kopfzeile und Kopieren (Etappe 3, Mac)
Geändert: Im gemeinsamen Markdown-Theme (
MarkdownTheme.swift; Chat, Notiz-Vorschau, Hilfe-Chat) ist der Codeblock eine Karte: Kopfzeile mit Sprache (oder „Code“) und einem Kopieren-Knopf („Kopiert“ mit Häkchen für 1,5 s), darunter der Code horizontal scrollbar. Flächesurface1, Kopfzeilesurface2, RandborderSubtle, Radiusmedium. Kopiert wird ohne abschließenden Zeilenumbruch.Geprüft: Iris.xcodeproj baut (Xcode, Binary-Zeitstempel nach Buildstart kontrolliert).
Nicht geprüft: Aussehen und Verhalten des Knopfes (nicht gestartet). Nicht gesehen: lange Zeilen, leere Sprache, sehr kurze Blöcke, die drei Themes.
InlineRichMarkdownView(Chat-Antworten) wurde nicht gegengeprüft: ob dort ein Codeblock das Theme nutzt oder selbst zeichnet, ist nicht verifiziert; falls selbst gezeichnet, bleibt der Chat beim alten Aussehen.Offen: Tool-Aufrufe einklappbar und gedämpft, Animationen, Leerzustände.
Nachtrag zum Stand „Codeblock als Karte“ (PR #268): Die dort offene Frage ist im Code geklärt.
InlineRichMarkdownViewreicht Codeblöcke (Fences) unverändert anMarkdown(…).markdownTheme(.iris(fontScale:))weiter (Zeilen 189, 240, 256 und der Fence-Puffer ab Zeile 415), die Karte ausMarkdownTheme.swiftgilt also auch für Chat-Antworten. Gesehen wurde sie weiterhin nicht.PR #5 gemergt: feat(chat): irisQuietDetail für gedämpfte Zwischenschritte (iris/Iris#261)
http://docker:3000/iris/IrisDesign/pulls/5
Commits:
Stand: Modifier für gedämpfte Details (Etappe 3, Chat)
Geändert:
View.irisQuietDetail(): rückt aufgeklappten Inhalt ein und setzt eine feine Linie (borderStrong, 2 pt) an die linke Kante, ohne Fläche. Gedacht für Zwischenschritte und Denkprozess im Chat, damit sie zu den flachen Antworten passen.Geprüft: Package kompiliert für macOS.
Nicht geprüft: Aussehen; folgt mit dem Einsatz in Mac und iOS.
PR #269 gemergt: feat(chat): Zwischenschritte und Reasoning gedämpft ohne Fläche (#261)
http://docker:3000/iris/Iris/pulls/269
Commits:
Stand: Zwischenschritte und Reasoning gedämpft (Etappe 3, Mac)
Geändert:
ChatBubbleView: Die aufklappbaren Zwischenschritte (Hermes-Zwischenantworten) und der Reasoning-Block haben keine Fläche mehr; der Pfeil ist intextTertiarygetönt, der aufgeklappte Inhalt ist eingerückt mit feiner Linie links (irisQuietDetail). Dadurch passen sie zu den flachen Antworten. Package-Pin auf IrisDesign9121fba.Geprüft: Iris.xcodeproj baut gegen
9121fba(Checkout bestätigt, Binary-Zeitstempel kontrolliert).Nicht geprüft: Aussehen (nicht gestartet). Ob die zugeklappte Zeile ohne Fläche noch als anklickbar erkennbar ist (nur Pfeil und Text in Tertiärfarbe), wurde nicht beurteilt. Bewusst nicht geändert: der Ablauf der Tool-Aufrufe selbst; es gibt keine eigene Tool-Aufruf-Darstellung, nur diese Zwischenantworten.
PR #6 gemergt: fix(chat): IrisDisclosure als eigene Aufklapp-Zeile mit voller Tippfläche (iris/Iris#261)
http://docker:3000/iris/IrisDesign/pulls/6
Commits:
Stand: IrisDisclosure, eigene Aufklapp-Zeile (Etappe 3, Chat)
Befund: Alf meldete auf dem iPhone, dass der Denkprozess (vorher
DisclosureGroup) nach dem gedämpften Umbau nicht mehr einklappt. Warum genau, ist nicht nachgewiesen (kein Tippen im Simulator möglich); der Umbau hatte Fläche und Innenabstand der Zeile entfernt.Geändert:
IrisDisclosure(isExpanded:content:label:): die ganze Zeile ist ein Button mitcontentShape(Rectangle()), der Pfeil dreht sich (Mac links, iOS rechts), der Inhalt blendet ein (easeInOut0,2 s), Inhalt mitirisQuietDetail; Zugänglichkeitswert „aufgeklappt/zugeklappt“. Doku-Kommentar inQuietDetailaufborderStrongkorrigiert.Geprüft: Package kompiliert für macOS und den iOS-Simulator.
Nicht geprüft: Tippen und Animation (folgt mit dem Einsatz in den Apps).
PR #270 gemergt: fix(chat): Reasoning und Zwischenschritte als IrisDisclosure (#261)
http://docker:3000/iris/Iris/pulls/270
Commits:
Stand: Reasoning und Zwischenschritte als IrisDisclosure (Mac)
Geändert: Wie auf iOS:
ChatBubbleViewnutzt für Zwischenantworten und ReasoningIrisDisclosurestattDisclosureGroup(Pfeil links, Zeile ganz anklickbar, Inhalt eingerückt mit Linie). Package-Pin aufd796020. Auf dem Mac wurde das Einklapp-Problem nicht gemeldet; die Änderung gleicht beide Apps an, weil der gedämpfte Umbau dort dieselbe Struktur hatte.Geprüft: Iris.xcodeproj baut gegen
d796020(Checkout bestätigt, Binary-Zeitstempel kontrolliert).Nicht geprüft: Anklicken, Animation, Aussehen (nicht gestartet).
PR #7 gemergt: feat(ui): IrisEmptyState für Leerzustände (iris/Iris#261)
http://docker:3000/iris/IrisDesign/pulls/7
Commits:
Stand: IrisEmptyState (Etappe 3, Leerzustände)
Geändert:
IrisEmptyState(symbol:title:message:emphasized:): Symbol (26 pt, leicht) in einem 60-pt-Kreis, Titel, optionaler Text; neutral (Flächesurface2) oder mit Akzent (emphasized). Titel und Text sindLocalizedStringKey, vorhandene Übersetzungen greifen. Feste Schriftgrößen (folgen dem Schriftfaktor des Macs nicht).Geprüft: Package kompiliert für macOS und den iOS-Simulator.
Nicht geprüft: Aussehen; folgt mit dem Einsatz auf dem Mac.
PR #271 gemergt: feat(ui): Leerzustände der Jobliste und Seitenpanels mit IrisEmptyState (#261)
http://docker:3000/iris/Iris/pulls/271
Commits:
Stand: Leerzustände auf dem Mac (Etappe 3)
Geändert: Die Jobliste des Remote-Fensters (keine Treffer, keine Jobs auf dem Server, nicht verbunden, Bereich leer, Archiv leer) und die drei Seitenpanels ohne Chat („Kein Chat ausgewählt“: Notiz, Plugin, Browser) nutzen
IrisEmptyStateaus dem Package: Symbol (Lupe, Sprechblasen, WLAN durchgestrichen, Ordner, Archiv) in einem Kreis, darunter der bisherige Text. Statt grauer Textzeile also ein erkennbarer Leerzustand. Texte unverändert. Package-Pin auf IrisDesignfa3fd1b.Geprüft: Iris.xcodeproj baut (Xcode, Binary-Zeitstempel kontrolliert, nach Neuladen des Projekts in Xcode; siehe unten).
Nicht geprüft: Aussehen, nicht gestartet. Die Schrift des Leerzustands folgt dem Schriftfaktor (#217) nicht (feste Größen im Package). Eine Handlung („Neuer Job“) gibt es auf dem Mac noch nicht, dafür fehlt mir ein sicherer Einstiegspunkt im Remote-Fenster.
Anmerkung zum Build: Nach dem Anheben des Pins meldete Xcode viermal „Cannot find 'IrisEmptyState' in scope“, obwohl der Checkout die neue Datei enthielt: Die laufende Xcode-Sitzung hatte die Dateiliste des Packages zwischengespeichert. „Resolve Package Versions“ und ein separates
-resolvePackageDependencieshalfen nicht; erst Schließen und erneutes Öffnen von Iris.xcodeproj. Bei neuen Dateien im Package künftig gleich so vorgehen.PR #8 gemergt: feat(web): Theme-Brücke irisFollowTheme für WebViews (iris/Iris#261)
http://docker:3000/iris/IrisDesign/pulls/8
Commits:
Stand: Theme-Brücke für WebViews (WebViews, Schritt 1)
Befund: Plugin-Seiten (30 Seiten in rund 25 Plugins) sind fest dunkel (
color-scheme: darkmit Hex-Werten der iOS-Dunkelpalette) und bleiben im Hellmodus und in Papier/Graphit dunkel (Screenshot von Alf, Plugin-Panel „ComfyUI Workflows“). Die Handbuch-Seiten haben keine Hell/Dunkel-Regeln.Geändert:
IrisWebTheme.css(theme:isDark:)erzeugt:root{--iris-color-scheme:…;--iris-bg:…;…}mit 22 Variablen (bg, surface1–4, border, border-strong, text, text-secondary, text-tertiary, on-accent, accent, accent-hover, accent-text, accent-subtle, success, warning, destructive, destructive-hover, destructive-text, info, code-text).WKWebView.irisFollowTheme()setzt ein Start-Skript (<style id="iris-theme">,window.__irisSetTheme) und zieht die Variablen live nach, wenn sich Modus (effectiveAppearance/ Trait Collection) oder Theme (Notification.irisThemeDidChange, gesendet vonTheme.activate()) ändern; andere Start-Skripte der WebView bleiben unberührt. Seiten schreibenvar(--iris-bg, #1c1c1e): ohne Variablen gilt der Rückfallwert, ältere Apps ändern sich nicht.Geprüft:
swift test(6 Tests: Variablen vollständig in allen Themes und Modi, Werte aus der Palette, JS-Maskierung); Package kompiliert für macOS und den iOS-Simulator; die Skriptlogik (genau ein Style-Element, zweiter Aufruf aktualisiert) in Node mit Attrappe geprüft.Nicht geprüft: In einer echten WKWebView (Start-Skript greift vor dem ersten Rendern, Live-Update, Ersetzen des Start-Skripts bei laufender WebView); das folgt mit dem Einbau in Mac und iOS.
Offen: Einbau in die WebViews (Mac, iOS), Umstellung der Plugin-Seiten, Handbuch.
PR #272 gemergt: feat(web): Theme-Variablen in Plugin- und Handbuch-WebViews (#261)
http://docker:3000/iris/Iris/pulls/272
Commits:
Stand: Theme-Brücke in den Mac-WebViews (WebViews, Schritt 2)
Geändert:
irisFollowTheme()(Package IrisDesignbb405a9) anPinnedWebView(Plugin-Seitenpanel, Workflow-Block, HTML-Vorschau),CanvasPluginWebBlockView(Canvas-Plugin-Blöcke) und die Handbuch-WebView. Jede Seite bekommt beim Start--iris-*-Variablen für Theme und Modus und wird bei Wechsel live nachgezogen. Ohne Seite, die die Variablen nutzt, ändert sich nichts Sichtbares.Geprüft: Iris.xcodeproj baut gegen
bb405a9(Checkout bestätigt, Binary-Zeitstempel kontrolliert, nach Neuladen des Projekts in Xcode).Nicht geprüft: Dass die Variablen in einer echten WebView vor dem ersten Rendern ankommen und beim Wechsel aktualisiert werden (nicht gestartet). Das GitServer-Fenster und das Hermes-Web-GUI bleiben unberührt (fremde bzw. eigene Seiten ohne Variablen).
Offen: Umstellung der Plugin-Seiten auf
var(--iris-…, <bisheriger Hex>)und Veröffentlichung; Handbuch-CSS.PR #273 gemergt: docs(handbuch): Darstellung und Themes, Chat-Aussehen, Font Size (#261)
http://docker:3000/iris/Iris/pulls/273
Commits:
Stand: Benutzerhandbuch aktualisiert (Darstellung, Themes, Chat)
Geändert (Kapitel im Vault, Build per
deployment/handbuch/build_handbuch.py):style.css): Farben alsvar(--iris-…, <alter Wert>); das Handbuch folgt in der App Hell/Dunkel und dem Theme, die gehostete Version ohne App bleibt unverändert.BENUTZERHANDBUCH.md(Iris-Hilfe-Wissensbasis) inIris/Resources/nachgezogen; die HTML-Site in beide Apps kopiert (Handbuch/, per.gitignorenicht im Repo, kommt beim App-Build ins Bundle).Geprüft: Build ohne Fehler (29 Kapitel), neues Kapitel als HTML erzeugt, Variablen im CSS vorhanden, Diff der
BENUTZERHANDBUCH.mdenthält nur diese Änderungen.Nicht geprüft: Das Handbuch in der laufenden App in Hell/Dunkel und mit Themes (nicht gestartet); ob die Aussagen zum Marktplatz-Update und zu älteren App-Versionen im Alltag stimmen (aus dem Verhalten der Brücke abgeleitet). Die Kapitel Remote-Panel und Companion-Panel sind insgesamt veraltet (z. B. nennt das Remote-Panel nur zwei Header-Buttons); ich habe nur die Stellen zu diesem Thema geändert.
Offen: Gesamtüberarbeitung des Handbuchs (Alf, 2026-09-19: erst nach Stabilisierung); Screenshots der neuen Darstellung.
PR #139 gemergt: docs(handbuch): Handbuch-CSS folgt den Theme-Variablen (iris/Iris#261)
http://docker:3000/alf/2ndbrain/pulls/139
Commits: