feat(gui): Ordner-Ebene eines Projekts umbenennbar
Der erste Reiter hieß fest "Ordner" und trägt jetzt einen frei wählbaren Namen. Er steht in der neuen Spalte projects.root_tab_name (NULL = "Ordner") statt als Zeile in project_tabs: die Ordner-Ebene ist kein echter Reiter -- es gibt sie immer, sie hat keine eigene id und ist nicht löschbar. Eine eigene Zeile hätte eine id gebraucht, die in project_pins.tab_id landen müsste, womit die "0 = Ordner-Ebene"-Regel und damit der UNIQUE-Index gefallen wären. PATCH /api/projects/:id/tabs/0 fängt die 0 ab und schreibt ins Projekt; leerer Name setzt auf "Ordner" zurück. Ebenen-Auswahl im Pin-Dialog und die Liste bestehender Anheftungen zeigen den Namen mit. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
772385713e
commit
d0e02eb976
@@ -23,12 +23,18 @@ flowchart TD
|
||||
Zwei Ebenen, mehr nicht: Ordner und darin Unterreiter. Auf **beiden** kann angeheftet werden — der Ordner
|
||||
selbst ist also nicht nur ein Behälter für Reiter.
|
||||
|
||||
Die Ordner-Ebene ist genauso benennbar wie ein Unterreiter (Vorgabe: „Ordner"). Ihr Name steht aber in
|
||||
`projects.root_tab_name` und nicht als Zeile in `project_tabs`, weil sie kein echter Reiter ist: es gibt
|
||||
sie immer, sie hat keine eigene id und lässt sich nicht löschen. `PATCH …/tabs/0` schreibt deshalb ins
|
||||
Projekt; ein leerer Name setzt auf „Ordner" zurück.
|
||||
|
||||
## Datenbank
|
||||
|
||||
```sql
|
||||
CREATE TABLE projects (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(190) NOT NULL,
|
||||
root_tab_name VARCHAR(190) NULL, -- Beschriftung der Ordner-Ebene, NULL = „Ordner"
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
|
||||
|
||||
CREATE TABLE project_tabs (
|
||||
@@ -98,7 +104,7 @@ Zeitmarke).
|
||||
| `PATCH /api/projects/:id` | Ordner umbenennen |
|
||||
| `DELETE /api/projects/:id` | Ordner löschen (Reiter + Anheftungen mit) |
|
||||
| `POST /api/projects/:id/tabs` | Unterreiter anlegen `{name}` |
|
||||
| `PATCH /api/projects/:id/tabs/:tid` | Unterreiter umbenennen |
|
||||
| `PATCH /api/projects/:id/tabs/:tid` | Unterreiter umbenennen; `:tid = 0` benennt die Ordner-Ebene um (leerer Name = zurück auf „Ordner") |
|
||||
| `DELETE /api/projects/:id/tabs/:tid` | Unterreiter löschen |
|
||||
| `POST /api/projects/:id/pins` | anheften `{recording_id, tab_id}` (`tab_id` fehlt/0 = Ordner-Ebene) |
|
||||
| `DELETE /api/projects/:id/pins/:pinId` | Anheftung lösen |
|
||||
|
||||
Reference in New Issue
Block a user