diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 6cb9cd7..850b87d 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -19,7 +19,7 @@ reverse. ## 2026-08-27 -- Creating Taiga tickets from nodes recorded as planned: a story per node from the node window, sub-packages as tasks picked in a dialog, through a backend proxy — the ticket ref comes back as the node id +- Creating Taiga tickets from nodes recorded as planned: a story per node from the node window, sub-packages as tasks picked in a dialog, through a backend proxy — the ref lands in the line as `#US-123`/`#T-1234`, beside the node id - The unassigned pill in the people bar shows each language's short form now — German `N.N.`, English `TBD` — with the long wording in the tooltip - `pull-doc --open` opens the fetched document in IntelliJ IDEA afterwards — also when nothing changed - A dead live session now reconnects by itself — unsent text stays in the editor and goes out as a diff once the server answers again diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index 9540c20..cd5d3eb 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -7926,3 +7926,33 @@ OIDC-Anpassung ist ein eigener, kleiner Schritt am Login-Endpunkt. Offen bleibt nur noch das **Ref-Muster** (`#123` vs. `#US-123`) — das braucht einen eingeloggten Blick in ein echtes Projekt und liegt beim Bauen. + +**Nachtrag 2 — die Ref kommt ZUSÄTZLICH zur Knoten-ID, mit Typ-Präfix +(2026-08-27).** Der Haupttext sagte „die Ticket-Ref wird als Knoten-ID +zurückgeschrieben" — korrigiert auf Nutzer-Vorgabe: Die vergebenen IDs +(`#bereich.task`, D48) bleiben stehen, die Taiga-Nummer kommt **dazu**. +Zwei Festlegungen: + +- **Präfixe `US-`/`T-` schreibt Werkbaum selbst:** `#US-123` für die Story, + `#T-1234` für die Task. Taigas eigene Refs sind nackte Nummern, **je + Projekt fortlaufend und über alle Typen gemeinsam** (Story `#123` und + Task `#123` gibt es im selben Projekt nie zugleich — derselbe Zähler). + Das Präfix ist also unsere Konvention, und sie trägt genau das, was die + spätere Auflösung (`#trk.resolve`) braucht: den **Typ** — Stories und + Tasks haben getrennte `by_ref`-Endpunkte, ohne Präfix müsste der Resolver + beide probieren. Damit ist die letzte offene Messfrage aus dem Haupttext + (Ref-Muster) durch Festlegung erledigt: `US-\d+` / `T-\d+` (SPEC §11 + nachgezogen). +- **Eine Schreibregel, kein Sonderfall:** Die Ref wird als eigenes Token an + die Zeile angehängt. Die §1-Semantik erledigt den Rest von selbst — nur + das **erste** `#`-Token ist die Knoten-ID, jedes weitere bleibt im Label + („dort liegt die reservierte Ticket-Referenz", D36 wörtlich): Mit + vorhandener ID steht die Ref also als Referenz im Label, ohne ID wird + sie die ID. Der Idempotenz-Marker aus dem Haupttext wechselt damit von + „hat eine ID" auf „die Zeile trägt ein Token nach dem Tracker-Muster". + +**Benannte Grenze:** Weil das Projekt bei jeder Anlage gewählt wird, kann +ein Dokument theoretisch Refs aus **mehreren** Projekten mischen — und +`#US-123` ist nur je Projekt eindeutig. Der spätere Resolver braucht darum +eine Projekt-Zuordnung; praktisch gehört ein Plan zu einem Projekt, und die +Frage stellt sich erst bei `#trk.resolve`. diff --git a/docs/SPEC.md b/docs/SPEC.md index 2bd7101..55f06c7 100644 --- a/docs/SPEC.md +++ b/docs/SPEC.md @@ -1304,8 +1304,14 @@ das auch. Begründung und Zusammenhang: D34. Beide Rollen vertragen sich: Oft **ist** die Ticket-Kennung die natürliche Knoten-ID. Als Ticket-Link behandelt wird ein Token **nicht an seiner Form** (die frühere Heuristik „rein numerisch" trägt bei alphanumerischen Kennungen -nicht), sondern am **Muster des angebundenen Trackers** — konfigurierbar, -z. B. `US-\d+`/`\d+` bei Taiga; festzulegen im Taiga-Spike (D34-Nachtrag). +nicht), sondern am **Muster des angebundenen Trackers**. Für Taiga ist es +festgelegt: **`US-\d+`** (User Story) und **`T-\d+`** (Task) — die Präfixe +schreibt Werkbaum beim Anlegen selbst (Taiga zeigt nur `#123`; seine Nummern +laufen **je Projekt** fortlaufend über alle Typen, das Präfix trägt den Typ, +den die Auflösung braucht). Die Ref wird **zusätzlich zur Knoten-ID** als +eigenes Token an die Zeile geschrieben: Mit vorhandener ID bleibt sie +Ticket-Referenz im Label (§1: nur das erste `#`-Token ist die ID), ohne ID +wird sie von selbst die ID. Siehe D91-Nachtrag 2. Freie Schlagworte liegen **nicht** mehr auf `#` — siehe `&tag` unten; damit ist die frühere Dreifach-Rolle von `#` aufgelöst (D34). diff --git a/docs/examples/werkbaum.werkbaum b/docs/examples/werkbaum.werkbaum index 0417d71..a8d8a5e 100644 --- a/docs/examples/werkbaum.werkbaum +++ b/docs/examples/werkbaum.werkbaum @@ -200,7 +200,7 @@ | [?] #idea.drift.js: Run the one JS parser inside the IDE (M) - [?] #trk: Tracker integration (XL) %% exactly one of these, hence = = [?] #trk.taiga: Taiga (XL) https://taiga.io - - [ ] #trk.resolve: Resolve "#123" over the REST API (M) + - [ ] #trk.resolve: Resolve "#US-123" over the REST API (M) - [ ] #trk.resolve.read: Read title, link and status (S) - [ ] #trk.resolve.map: Map the workflow onto the states (S) - [?] #trk.write: Write the status back (M) :#trk.resolve @@ -209,7 +209,7 @@ - [ ] #trk.create.login: Log in to Taiga, token stays in the browser (S) :#trk.create.proxy - [ ] #trk.create.story: A "create story" action in the node window (S) :#trk.create.login - [ ] #trk.create.tasks: Sub-packages become tasks, picked in a dialog (M) :#trk.create.story - - [ ] #trk.create.ref: The ticket ref becomes the node id (S) :#trk.create.story + - [ ] #trk.create.ref: The ref lands in the line beside the id (S) :#trk.create.story - [-] #trk.plugin: A plugin inside Taiga itself (L) %% legacy frontend, self-hosted only = [?] #trk.tenzu: Tenzu, the successor (XXL) https://tenzu.net = [ ] #trk.none: No tracker, plain text is enough (XS) @@ -1180,9 +1180,12 @@ never appear, finished ones start unchecked. #trk.create.ref - The returned ref (#123, #US-123) is written back into the line as the node - id, undoable — the reserved ticket reference of SPEC §11, and the marker - that keeps a second click from creating the ticket twice. + The returned ref is appended to the line as an extra token — #US-123 for + stories, #T-1234 for tasks, prefixes written by Werkbaum since Taiga's own + numbers are just per-project counters shared across all types. It never + replaces a node id (only the first # token is the id, §1); on a node + without one it simply becomes the id. Undoable, and the marker that keeps + a second click from creating the ticket twice. #trk.plugin Rejected: a plugin inside Taiga means its legacy frontend and works only in