Commit Graph

14 Commits

Author SHA1 Message Date
89566627b5 Merge pull request 'Tailwind und die npm-Toolchain entfernen' (#9) from chore/tailwind-entfernen into main
Reviewed-on: #9
2026-08-28 07:29:27 +00:00
c2247faed4 Merge pull request 'Branch- und PR-Workflow dokumentieren' (#10) from docs/branch-workflow into main
Reviewed-on: #10
2026-08-28 07:29:15 +00:00
50ffab0252 docs: Branch- und PR-Workflow im Tracker-Doc festhalten
Ab jetzt laufen Aenderungen ueber eigene Branches und Pull Requests statt
direkt auf main, damit die logische Trennung sichtbar bleibt. Das gehoert
neben die tea-Kommandos, sonst kennt es nur die Sitzung, in der es vereinbart
wurde.

Festgehalten ist auch die Faustregel fuer den Zuschnitt: Wenn die
Commit-Nachricht "und ausserdem" braucht, sind es zwei Branches. Und dass das
Mergen dem Menschen gehoert, nicht der Umsetzung.
2026-08-28 09:24:00 +02:00
ea902b9d7e chore: generierte assets/tailwind.css aus dem Repo nehmen
Nachtrag zum Tailwind-Rauswurf: dx legt die Datei bei jedem vollen Build neu
an - auch nachdem die Eingabedatei geloescht wurde und main.rs sie nicht mehr
verlinkt. Offenbar aus einem eigenen Cache; ein Schalter dagegen war nicht zu
finden.

Statt dagegen anzukaempfen wandert sie in die .gitignore. Sie ist ein lokales
Nebenprodukt ohne Leser, und so taucht sie nicht bei jedem Build als
vermeintliche Aenderung auf.
2026-08-28 09:21:02 +02:00
a7d0ac15ee chore: Tailwind und die npm-Toolchain entfernen
Die App hat nie eine Tailwind-Utility benutzt - saemtliche Klassen im Code
sind eigene (btn, files-bar, empty-state, ...), und den Reset liefert
base.css selbst. Damit standen package.json, node_modules und ein
Build-Schritt fuer eine Stylesheet-Datei, die nichts beigetragen hat.

Aufgefallen ist es, weil der letzte Commit ungefragt zwoelf Zeilen in
assets/tailwind.css mitbrachte: Der Generator scannt auch docs/ und erzeugte
Utilities fuer Woerter, die er in Prosa fand.

Die npm-Abhaengigkeit war ohnehin wirkungslos - Dioxus 0.7 bringt Tailwind
selbst mit (erzeugt wurde 4.1.5, nicht die in package.json deklarierte 4.3.3).
Ohne die Eingabedatei tailwind.css im Projektwurzelverzeichnis erzeugt dx
nichts mehr; verifiziert durch einen vollstaendigen Build.

Das --dn-Praefix der Tokens bleibt: Es war urspruenglich Schutz vor Tailwinds
eigenen :root-Variablen, taugt aber weiterhin als Namensraum.

README auf den tatsaechlichen Projektstand gebracht - er beschrieb noch die
Dioxus-Vorlage mit einer einzelnen main.rs.
2026-08-28 09:19:36 +02:00
91fd351d59 refactor: Router zusammenfuehren und offenen Workspace im Context fuehren
Die App hatte zwei Routable-Enums, zwischen denen ein Signal<bool> umschaltete.
Der Schalter wurde nie gesetzt - beim ersten Umlegen waere aufgefallen, dass
sich beide Router dieselbe History teilen und beide "/" belegen: Wer im
Selector auf "Open Workspace" klickt, steht auf /ws_open, und der
Editor-Router kennt nur / und /editor.

Jetzt ein Enum, der Editor-Teil unter #[nest("/workspace")]. An die Stelle des
bool tritt Signal<Option<Workspace>> in einem Context-Provider - Props
scheiden aus, weil sich durch ein Outlet keine durchreichen lassen. Fehlt der
Workspace, schickt ein Guard im EditorShell-Layout zurueck zum Selector; der
Fall tritt real bei Hot-Reload auf, wo der Context faellt und die Route bleibt.

Der Selector verliert seine Reiter und wird eine einzige Route. Das folgt aus
dem UI-Prototyp in Issue #8: Oeffnen ist der Alltagsfall, Hinzufuegen passiert
pro Workspace einmal - zwei gleichrangige Reiter verlangten bei jedem Start
eine Entscheidung, die fast immer dieselbe ist. Damit entfallen der leere
Stub create_new_workspace.rs, die Tab-Konstante fuer den Selector und die
zugehoerigen CSS-Klassen.

Weil EnumIter nicht mehr gebraucht wird, faellt strum_macros als direkte
Abhaengigkeit weg; strum re-exportiert die Derives bereits.

Entscheidungen dazu in den Issues #5, #6 und #8.
2026-08-28 08:57:19 +02:00
d2f5316a52 docs: Domaenenglossar fuer die Workspace-Begriffe anlegen
Waehrend der Workspace-Planung sind die Begriffe scharf geworden: Workspace,
Marker, Workspace-Liste, Notiz, Selector, Editor. docs/agents/domain.md sieht
CONTEXT.md als Ort dafuer vor, und die Skills lesen es, bevor sie den Code
erkunden.

Ausserdem festgehalten, dass dieses Projekt seine Entscheidungen im Tracker
fuehrt statt in docs/adr/ - sonst sucht die naechste Session an der falschen
Stelle.
2026-08-27 15:58:37 +02:00
8eb0e3325b docs: Rechercheergebnisse zu Ordner-Dialog und Konfigurationsablage uebernehmen
Beide Recherchen lagen bisher nur auf lokalen Wegwerf-Branches. Die
Kurzfassung steht an den Tickets #2 und #3, die Langfassungen sind mit
Quellenangaben und einer Trennung zwischen Belegtem und Vermutetem aber das,
worauf man zurueckkommt, wenn spaeter jemand fragt, warum unter Windows Local
statt Roaming gewaehlt wurde.

Damit sind research/ordner-dialog und research/config-ablageort ueberfluessig
und koennen geloescht werden.
2026-08-27 15:28:28 +02:00
c2ea1cc410 docs: kaputtes Assign-Kommando im Tracker-Doc ersetzen
tea issues edit --add-assignees ruft POST /issues/<index>/assignees auf, den
Gitea nicht kennt - der Aufruf endet in einem nackten 404, ohne dass tea das
als Fehlbedienung kenntlich macht. Assignees werden stattdessen per PATCH auf
das Issue gesetzt.

Betrifft direkt den Claim-Schritt jeder Wayfinder-Session, deshalb an beiden
Stellen korrigiert.
2026-08-27 14:42:17 +02:00
6afea83cdd docs: Gitea-Dependency-Aufruf nach Verifikation korrigieren
Der Endpoint war als ungeprueft markiert. Beim Verdrahten der ersten
Wayfinder-Map hat sich gezeigt: owner und repo muessen im Body wiederholt
werden, der Pfad allein reicht nicht. Ohne sie schlaegt der Aufruf mit
"repository does not exist [owner_name: ]" fehl, was in eine falsche Richtung
zeigt. Die von tea dokumentierten {owner}/{repo}-Platzhalter werden hier
ebenfalls nicht ersetzt.
2026-08-27 14:36:48 +02:00
01e02b30b0 docs: Agent-Skills-Konfiguration fuer den Gitea-Tracker hinterlegen
Die Engineering-Skills (wayfinder, triage, to-tickets, to-spec) erwarten pro
Repo eine Tracker-Beschreibung. Hier ist das Gitea, nicht GitHub oder GitLab -
der Host heisst zwar gitlab.hive-brain.de, spricht aber die Gitea-API, also
tea statt glab.

Issue-Dependencies und Sub-Issues kann tea 0.15 nicht abbilden; beides ist in
der Doku als ungeprueft bzw. mit Body-Konvention als Fallback vermerkt, damit
keine Session sich auf ungetestete Kommandos verlaesst.
2026-08-27 14:17:06 +02:00
0379969458 feat(components): Button, Input, Dropdown, Multi- und Single-Select ergaenzen
Fuenf Formular-Komponenten nach dem Muster von CustomLink: eigene
Props-Struct plus Komponentenfunktion, controlled - der Zustand bleibt beim
Aufrufer, die Komponente meldet Aenderungen per Callback.

Bewusst native HTML-Elemente statt eigener Popups und Listen: <select> fuers
Dropdown, <input type=checkbox|radio> fuer Multi- und Single-Select. Damit
kommen Tastaturbedienung, Screenreader-Support und die Auswahldialoge auf
Mobilgeraeten ohne eigenen Code.

CustomMultiSelect liefert dem Callback die vollstaendige neue Auswahl statt
nur der angeklickten Option, sonst muesste jede Aufrufstelle die
Umschaltlogik nachbauen. Diese Logik steckt in toggled() und ist getestet.
2026-08-27 14:01:12 +02:00
fe1d736a2d feat: Routing fuer Workspace-Auswahl und Editor aufbauen
Zwei Router: WorkspaceRoute (Workspace anlegen/oeffnen) und EditorRoute
(Home/Editor), umgeschaltet ueber ein Signal in App.

Die Navigationslinks werden nicht mehr einzeln ausgeschrieben, sondern aus
dem Routen-Enum erzeugt (strum EnumIter). Die Beschriftung haengt per
#[strum(message = "...")] an der Variante selbst, damit eine neue Route nur
an einer Stelle gepflegt werden muss.

CustomLink kapselt Link und markiert den aktiven Eintrag ueber active_class
statt ueber eigenen Klick-Zustand - das funktioniert auch bei Deep-Links und
dem Zurueck-Button.
2026-08-27 14:00:27 +02:00
2a1d5528cd chore: Dioxus-0.7-Projekt mit Tailwind-Setup aufsetzen
Cargo-, Dioxus- und Tailwind-Konfiguration, Clippy-Regeln, Assets und
Stylesheets (tokens/base/layout/components). Cargo.lock wird eingecheckt,
da es sich um ein Binary-Crate handelt.

node_modules/ und .idea/ per .gitignore ausgeschlossen.
2026-08-27 14:00:05 +02:00