From 10e4e9ef79ea5888f0f5e3df74ad60c076029afa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Rolf?= Date: Fri, 2 Oct 2026 13:44:32 +0200 Subject: [PATCH] =?UTF-8?q?chore:=20Cleanup=20aus=20dem=20Framework-Review?= =?UTF-8?q?=20=E2=80=94=20CapabilitiesView=20raus,=20=5F=5Fversion=5F=5F?= =?UTF-8?q?=20aus=20Metadaten,=20CHANGELOG=20konsolidiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit basicbar-integrations 0.3.0: CapabilitiesView/`capabilities/` entfernt (kein Tool hat den Endpunkt je aufgerufen); stattdessen capabilities.capabilities_payload() mit den drei Schlüsseln, die alle vier Tools heute von Hand in ihr whoami mischen. Alle Django-Pakete (auth 0.2.1, lti 0.1.5, integrations 0.3.0): __version__ via importlib.metadata statt eines zweiten handgepflegten Strings. CHANGELOG: 17 längst getaggte Releases standen unter "[Unreleased] (→ wird …)" — jetzt je ein datierter Abschnitt pro Tag (Daten aus den Tags). README-Paket-Tabelle ohne veraltete Versionsspalte; Doku-Drift zum Capabilities-Endpunkt in CLAUDE.md und EXTRAKTIONSPLAN bereinigt. Co-Authored-By: Claude Fable 5.1 --- CHANGELOG.md | 99 +++++++++++++++---- CLAUDE.md | 3 +- README.md | 18 ++-- docs/EXTRAKTIONSPLAN.md | 17 ++-- .../basicbar-auth/basicbar_auth/__init__.py | 9 +- packages/django/basicbar-auth/pyproject.toml | 2 +- .../django/basicbar-integrations/README.md | 18 +++- .../basicbar_integrations/__init__.py | 9 +- .../basicbar_integrations/capabilities.py | 30 ++++++ .../basicbar_integrations/tests/test_views.py | 38 +++++-- .../basicbar_integrations/urls.py | 3 +- .../basicbar_integrations/views.py | 25 +---- .../basicbar-integrations/pyproject.toml | 4 +- .../basicbar-lti/basicbar_lti/__init__.py | 9 +- packages/django/basicbar-lti/pyproject.toml | 2 +- 15 files changed, 206 insertions(+), 80 deletions(-) create mode 100644 packages/django/basicbar-integrations/basicbar_integrations/capabilities.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 5027e6e..7741157 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,40 @@ Changelog ist die Upgrade-Anleitung für die Tools. ## [Unreleased] -### basicbar-auth (→ wird `auth/v0.2.0`) +### basicbar-integrations (→ wird `integrations/v0.3.0`) + +**`CapabilitiesView` entfernt** (Framework-Review: kein Tool hat +`GET /api/capabilities/` je aufgerufen — alle vier mischen die Flags in ihr +`whoami`). An seine Stelle tritt `capabilities.capabilities_payload()` mit +genau den drei Schlüsseln, die die Tools heute von Hand zusammensetzen +(`ai_enabled`, `content_default_language`, `content_translation_enabled`). +`basicbar_integrations.urls` enthält nur noch `translate/`. + +Migration: Version heben. Wer `basicbar_integrations.urls` einbindet, +verliert den unbenutzten Endpunkt — sonst nichts. Empfohlen: in +`accounts/views.py` `whoami` als +`{**whoami_payload(request), **capabilities_payload(), …}` schreiben und die +drei Inline-Flags löschen. + +### Alle Django-Pakete (→ werden `auth/v0.2.1`, `lti/v0.1.5`, `integrations/v0.3.0`) + +`__version__` kommt aus den Paket-Metadaten (`importlib.metadata`) statt aus +einem zweiten handgepflegten String — die Versionen drifteten im Review +auseinander. Ein nicht installierter Checkout meldet `0.0.0.dev0`. Keine +Migration. + +### Repo + +- CHANGELOG: alle Releases seit Juli standen unter „[Unreleased] (→ wird …)“, + obwohl längst getaggt — jetzt je ein datierter Abschnitt pro Tag. +- README: die Paket-Tabelle nennt keine Versionsnummern mehr (sie waren vom + Juli); aktuelle Stände stehen in den Tags und hier. +- Doku-Drift zum Capabilities-Endpunkt in CLAUDE.md und EXTRAKTIONSPLAN + bereinigt. + +## auth/v0.2.0 — 2026-10-01 + +### basicbar-auth **Session-Endpunkte und Routen im Paket** (Framework-Review; die vier Tools trugen identische Kopien): `basicbar_auth.views` mit `whoami_payload` / @@ -55,7 +88,9 @@ Fallback. Gruppen-Verlust *jede* Admin-Rolle entzieht, muss lokale Beförderungen jetzt selbst zurücknehmen (Nutzerverwaltung / Django-Admin). -### @basicbar/ui (→ wird `ui/v0.7.0`) +## ui/v0.7.0 — 2026-10-01 + +### @basicbar/ui **TipTap raus aus den Bundles, die keinen Editor rendern** (Framework-Review): `RichTextEditor` liegt jetzt in einem eigenen Entry @@ -110,7 +145,9 @@ Außerdem: Provider ersetzen. 4. Katalog: keine neuen Keys. -### basicbar-lti (→ wird `lti/v0.1.4`) +## lti/v0.1.4 — 2026-10-01 + +### basicbar-lti **Sicherheit: Reflected XSS im LTI-Login behoben.** Die 400er-Antworten von `lti_login` spiegelten `iss`/`client_id` aus GET-Parametern in eine @@ -118,7 +155,9 @@ HTML-Antwort (Django-Default-Content-Type) — eine präparierte URL konnte so Skript auf der Tool-Origin ausführen. Alle Fehlerantworten des Endpunkts sind jetzt `text/plain`. Migration: Version heben, sonst nichts. -### basicbar-auth (→ wird `auth/v0.1.1`) +## auth/v0.1.1 — 2026-10-01 + +### basicbar-auth **Sicherheit: Back-Channel-Logout-Tokens werden auf Frische geprüft.** Bisher prüfte der Endpunkt nur Signatur, Nonce-Verbot und iss/aud/events/sub — ein @@ -128,7 +167,9 @@ Logout als DoS). Jetzt ist `iat` Pflicht und darf höchstens `exp` wird respektiert. Migration: Version heben; bei stark abweichenden Uhren zwischen IdP und Tool ggf. `OIDC_BACKCHANNEL_MAX_AGE` erhöhen. -### basicbar-integrations (→ wird `integrations/v0.2.2`) +## integrations/v0.2.2 — 2026-10-01 + +### basicbar-integrations - `ai.chat_json` und `translation_service.translate` fangen jetzt alle Transportfehler (`ConnectionResetError`, `IncompleteRead`, …) als @@ -140,7 +181,9 @@ Uhren zwischen IdP und Tool ggf. `OIDC_BACKCHANNEL_MAX_AGE` erhöhen. - Migration: Version heben; wer `str(exc)` an Nutzer durchreicht, zeigt jetzt aussagekräftigere Texte. -### Template +## Template — 2026-10-01 + +### Template (basicbar#13, #14, #17) - **Pins:** basicbar-auth `auth/v0.2.0`, @basicbar/ui `ui/v0.7.0`. - `config/urls.py` nutzt `include("basicbar_auth.urls")` (OIDC-Routen inkl. @@ -186,7 +229,9 @@ Uhren zwischen IdP und Tool ggf. `OIDC_BACKCHANNEL_MAX_AGE` erhöhen. Konflikte sind in Gerüst-Dateien (compose, Dockerfiles, settings, api.ts) zu erwarten — Diff lesen; die Identitätsdateien bleiben unberührt. -### @basicbar/ui (→ wird `ui/v0.6.0`) +## ui/v0.6.0 — 2026-10-01 + +### @basicbar/ui **Geteilte Einstellungs-Bausteine** (ausleihbar#35): `LanguageOptions`, `AppearanceControl` und `PreferencesMenu`. Die ersten beiden sind Menüzeilen @@ -203,7 +248,9 @@ Migration: additiv, nichts zu tun. Die Tools ergänzen in ihren Katalogen den Schlüssel „Preferences“ (die übrigen — Appearance, Auto, „(follows your system)“, Light, Dark, Language — existieren meist schon). -### @basicbar/ui (→ wird `ui/v0.5.1`) +## ui/v0.5.1 — 2026-09-30 + +### @basicbar/ui **CSP-tauglicher `RichTextEditor`** (basicbar#9): TipTap hängte beim Mounten ein `