From 7917fa08cc6afd66469b6b70025ca68d155766a7 Mon Sep 17 00:00:00 2001 From: MDietermann Date: Fri, 28 Aug 2026 10:49:15 +0200 Subject: [PATCH] feat: Notiz-Baum in der Datei-Leiste Setzt Issue #7 um und schliesst damit die Workspace-Map ab. Die files-bar zeigt nicht mehr zwei Platzhalter-Routen, sondern den rekursiv eingelesenen Inhalt des offenen Workspace. TreeNode ist ein verschachteltes Enum mit einer einzigen File-Variante fuer alle Dateitypen - wer wissen will, ob es eine Notiz ist, fragt path.extension(). Aufgebaut wird ueber std::fs::read_dir mit eigener Rekursion; walkdir liegt zwar im Graph, iteriert aber flach, woraus einen Baum zu bauen mehr Code waere. Eingesammelt wird alles ausser Namen mit fuehrendem Punkt - Dateien wie Ordner, womit .dionotes und .git ohne Ausnahmeliste wegfallen - und ausser Symlinks, deren Verfolgung einen Zyklusschutz erfordern wuerde. Leere Ordner werden angezeigt, sortiert wird Ordner-vor-Dateien und alphabetisch ohne Ruecksicht auf Gross-/Kleinschreibung. Der Aufklapp-Zustand liegt als HashSet neben dem Baum, nicht darin: Es gibt keinen Filewatcher, der Nutzer liest bei Bedarf neu ein - steckte expanded im Knoten, klappte jeder Refresh saemtliche Ordner zu. Persistiert wird er nicht. Mit dem Baum entfaellt die Tab-Leiste im Editor und damit EDITOR_TABS, der letzte Rest des in #5 dokumentierten Pflegepunkts. strum wird dadurch nirgends mehr gebraucht und faellt samt strum_macros aus dem Graph. Ausserdem entfernt: der Dioxus-Vorlagentext Hero samt header.svg, der nach dem Oeffnen eines Workspace die rechte Haelfte mit ungestylten Werbelinks fuellte. Home ist jetzt ein Empty-State. --- Cargo.lock | 22 ---- Cargo.toml | 1 - assets/css/components.css | 33 ++++- assets/css/layout.css | 16 +++ assets/header.svg | 20 --- src/main.rs | 1 + src/route.rs | 14 +- src/tree.rs | 194 ++++++++++++++++++++++++++++ src/views/editor/dionotes_editor.rs | 129 +++++++++++++----- 9 files changed, 338 insertions(+), 92 deletions(-) delete mode 100644 assets/header.svg create mode 100644 src/tree.rs diff --git a/Cargo.lock b/Cargo.lock index 9144dc6..60e3ce2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2333,7 +2333,6 @@ dependencies = [ "rfd", "ron", "serde", - "strum", "tokio", ] @@ -6414,27 +6413,6 @@ dependencies = [ "quote", ] -[[package]] -name = "strum" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.119", -] - [[package]] name = "subsecond" version = "0.7.10" diff --git a/Cargo.toml b/Cargo.toml index 3e02918..9b01ecb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,6 @@ dirs = "6.0.0" rfd = { version = "0.17.2", default-features = false, features = ["xdg-portal"] } ron = "0.12.2" serde = { version = "1.0.229", features = ["derive"] } -strum = { version = "0.28.0", features = ["derive"] } tokio = { version = "1.53.1", features = ["rt"] } [features] diff --git a/assets/css/components.css b/assets/css/components.css index a47eeaa..fcf885a 100644 --- a/assets/css/components.css +++ b/assets/css/components.css @@ -9,8 +9,18 @@ .file-selector { position: relative; - display: block; - padding: var(--dn-space-1) var(--dn-space-2) var(--dn-space-1) var(--dn-space-3); + display: flex; + align-items: center; + gap: var(--dn-space-1); + /* Einrückung pro Baumebene — --depth setzt die Komponente je Knoten. */ + padding: var(--dn-space-1) var(--dn-space-2) var(--dn-space-1) + calc(var(--dn-space-3) + var(--depth, 0) * var(--dn-space-4)); + /* Als