Reported issues for ris
Pod holds 19 of 22 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to ris.
Most discussed
fix(ui): chatgpt — pagination aus dem widget + csp-badge
Zwei Befunde aus der Live-Messung des Trefferlisten-Widgets (2026-08-02, ChatGPT Developer Mode, PR #59):
- Pagination aus dem Widget wirkt in ChatGPT nicht. Klick auf „Weiter ›" ließ die Liste unverändert (claude.ai: funktioniert einwandfrei, Seite 2 lädt live). Hypothesen, in Prüf-Reihenfolge: (a) ChatGPT erlaubt Widget-initiierte
tools/callnur für Tools mitopenai/widgetAccessiblebzw._meta.ui.visibility-Freigabe → Registrierung prüfen; (b) ChatGPT liefert auch im `callServerToo
Read the thread · 2026-08-02 · closed · 3 comments
spike(ui): rendering gate claude.ai/chatgpt
WP0 · Gate für die gesamte MCP-Apps-Initiative (Follow-up zu #23, Research-Update 2026-08-01)
Ziel
Beweisen (oder widerlegen), dass ein Custom-Connector-Widget in unserem Setup stabil rendert — bevor Produktiv-Code entsteht. Wegwerf-Code auf einem Spike-Branch, keine Build-Pipeline.
Hintergrund: Der Blank-Widget-Bug für Custom-Connector-UIs in claude.ai ist offen und launisch (kanonischer Tracker: [anthropics/claude-ai-mcp#165](https://github.com/anthropics/claude-ai-mcp/issues/165
Read the thread · 2026-08-01 · closed · 3 comments
feat(ui): dokument-viewer-widget
WP7 · Das zweite Widget: Dokument-Viewer mit §-Navigation (Release 2) (MCP-Apps-Initiative, siehe #23)
Ziel
§-Outline links, Dokumenttext rechts, Nachladen beim Scrollen — auf dem ui/shared/-Fundament aus dem Trefferlisten-Widget.
Scope
- Zweites Widget
ui/viewer/mit eigenerui://ris-mcp/viewer-Resource (Build-Pipeline trägt es ohne Umbau);_meta.ui.resourceUrianris_dokument. - Erst-Render aus dem normalen Tool-Result (der Text-Block bis 25k ist ja da), dann Outline +
Read the thread · 2026-08-01 · closed · 2 comments
chore(release): v1.6.0 live-pass + release
Abschluss des v1.6.0-Milestones (Muster: #50). Implementierung komplett — #83 (PR #85), #84 (PR #86), #53 (PR #87) gemerged. Vor dem Tag steht der manuelle Live-Pass (Tunnel + Dev-Connector; iframes nehmen keine Automation-Klicks).
Live-Pass-Checkliste (claude.ai + ChatGPT)
Datumswahl (#84):
- Datum setzen/ändern/leeren bei
ris_bundesrecht/ris_landesrecht— Re-Issue korrekt, Liste rendert - Mid-Edit-Verhalten: feuert Chrome
changemit''beim segmentweisen Löschen eines
Read the thread · 2026-08-04 · closed · 1 comment
feat(viewer): fullscreen display mode — chatgpt-höhe ist host-diktiert
Follow-up aus dem v1.5.0-Live-Pass (2026-08-02): Der Viewer übernimmt in ChatGPT die vom Host gemeldete Container-Höhe (geclamped 320–1200px) — funktional korrekt, aber auf großen Monitoren wirkt das Lesefeld klein (Autor-Feedback). Der saubere Hebel ist der fullscreen-Display-Mode aus der ext-apps-Spec (availableDisplayModes, Design-Doc §3.6 — bewusst nicht in v1.5.0 gebaut, §9-Q5 unbeantwortet: ob einer der Hosts ihn anbietet, ist ungemessen).
Scope-Skizze: Feature-Detection auf `availabl
Read the thread · 2026-08-02 · closed · 1 comment
refactor(formatting): tabellen- und br-gerechte separatoren in htmlToText
Follow-up aus dem #64-Review (nicht im v1.4.1-Patch): Die Block-Boundary-Separierung behandelt <br>, <td>, <th> wie Absätze — <br> wird zur Leerzeile, jede Tabellenzelle zum eigenen Absatz (Zeilengruppierung geht verloren; relevant für BGBl-Gebühren-/Satztabellen). Kein Regress (vorher klebten die Zellen — das war Bug #64), aber Informationsverlust bei Tabellenstruktur.
Vom Reviewer skizzierte Ziel-Form: $('td, th').after(' ') (Space statt Absatz), tr trägt den Break, `$('br').repla
Read the thread · 2026-08-02 · closed · 1 comment
feat(ui): trefferlisten-widget v1
WP4 · Das erste Widget: paginierte Trefferliste für alle 11 Suchtools (MCP-Apps-Initiative, siehe #23)
Ziel
Interaktive Trefferliste (Vanilla TypeScript, kein Framework — kleinstes Bundle) auf Basis des structuredContent aus WP2. Ein Widget bedient alle 11 Suchtools.
Scope
App.connect()+ontoolresult: Liste ausstructuredContentrendern — Titel,citation_display, Applikations-Badge, aufklappbare Zeile mit Aktionen.- Pagination: „Weiter/Zurück“ → `app.callServerTool(qu
Read the thread · 2026-08-01 · closed · 1 comment
feat(ui): register mcp app resource + tool meta
WP3 · Server-Seite der MCP-Apps-Integration (MCP-Apps-Initiative, siehe #23)
Ziel
Widget-Resource registrieren und die 11 Suchtools UI-fähig machen — ris_dokument bleibt in diesem Schritt unangetastet.
Scope
- Dependency
@modelcontextprotocol/ext-apps(^1.7.5; Peersdk ^1.29.0— unser ^1.30.0 erfüllt das, Kompilierung unter NodeNext verifiziert; der bekannte .d.ts-Bug ext-apps#704 betrifft nur denapp-bridge-Subpath, den nur Hosts brauchen). registerAppResourcefür `ui:
Read the thread · 2026-08-01 · closed · 1 comment
Most recent
perf(dokument): includes-prefilter vor scopeRisContent gegen den vierten cheerio-parse
Follow-up aus dem #94-Final-Review (2026-08-06): scopeRisContent parst jedes Dokument-HTML einmal zusätzlich (der vierte cheerio-Parse pro Load, ~33 % Parse-Mehrkosten, worst case ~600-KB-Statute) — auch auf dem Pass-through-Pfad, den die überwältigende Mehrheit der Calls nimmt.
Fix (beweisbar sicher): if (!html.includes('documentContent')) return { html, pageTitle: null }; als erste Zeile in scopeRisContent (formatting.ts) — ein Klassen-Attribut kann ohne den Substring nicht matchen.
Read the thread · 2026-08-07 · open · 0 comments
feat(viewer): rail-aria-current folgt dem scrollen, nicht nur spruengen
Follow-up aus dem #80-Review (2026-08-06): aria-current auf den Gliederungs-Einträgen wird nur von focusAfterJump gesetzt — also bei Rail-Klicks und Re-Anchor-Renders. Scrollt der Leser in eine andere Sektion, highlightet die Rail weiterhin die zuletzt geklickte. Der onScroll-Handler aktualisiert anchorOffset bereits (debounced, für den Snapshot), rendert aber bewusst nicht.
Fix-Skizze: beim debounced Anchor-Update das aria-current gezielt umsetzen (targeted DOM-Update, kein vol
Read the thread · 2026-08-07 · open · 0 comments
a11y(viewer): persistente live-region statt best-effort role=status
Follow-up aus dem #92/#93-Review (2026-08-06): Das Lade-Feedback („Abschnitt lädt …", .ris-doc-loading) und das Replace-Skeleton tragen role="status", werden aber als Knoten mit bereits gesetztem Text eingefügt — Live-Regions werden von Screenreadern nur zuverlässig angesagt, wenn die Region vor der Inhaltsänderung im DOM steht. Sehende Nutzer sehen das Feedback, SR-Nutzer vermutlich nicht.
Fix-Skizze: eine persistente, leere Live-Region in der Viewer-Shell (view.ts/index.html), i
Read the thread · 2026-08-07 · open · 0 comments
feat(viewer): prefetch-margin erhöhen + sichtbares abschnitt-lädt-feedback
Live-Pass-Befund (#88): Zwischen Scroll-Ans-Ende und erscheinendem Abschnitt liegen in claude.ai 10–15s Host-Call-Latenz — ohne sichtbares Feedback wirkt das wie Stillstand.
- Prefetch-Margin des IntersectionObservers von 600px auf einen Wert erhöhen, der die Latenz beim normalen Lesen versteckt (z. B. 2.000px; messen statt raten — Harness-Szenario mit delayMs).
- Lade-Zustand am Sentinel sichtbar machen („Abschnitt lädt …“, deutscher Copy-Stil aus
states.ts/copy.ts), damit Warten a
Read the thread · 2026-08-05 · closed · 0 comments
feat(viewer): outline eager beim mount laden statt scroll-gated
Größter UX-Hebel aus dem v1.6-Live-Pass (#88, 2026-08-05): Bei Dokumenten, deren Outline das Mount-Budget sprengt (konsolidierte Gesetze — DSG: 157k Text, 22k Outline), erscheint die Gliederungsleiste erst, nachdem der Leser durch die kompletten ~25k Mount-Zeichen gescrollt hat (Sentinel sitzt am Textende) plus Host-Call-Latenz (claude.ai: 10–15s). Genau bei den Dokumenten, wo die Rail am wertvollsten wäre, ist sie praktisch unsichtbar.
Fix-Skizze: Den ersten Abschnitts-Call (Offset 0 —
Read the thread · 2026-08-05 · closed · 0 comments
feat(ui): „Rechtslage am …“-datumswahl für bundesrecht/landesrecht
WP2 des v1.6.0-Milestones (Design lokal: .superpowers/sdd/v160-plan/v160-design-facetten.md, von Phil abgenommen 2026-08-04). Herausgelöst aus #53.
Natives <input type="date"> mit Label „Rechtslage am“ im Trefferlisten-Header, sichtbar nur wenn query.tool ris_bundesrecht oder ris_landesrecht ist. Datum ändern → Re-Issue des Query-Echos mit neuem fassung_vom und seite-Reset auf 1; Datum leeren → Re-Issue ohne fassung_vom (RIS-Default = geltende Fassung). Während eines laufend
Read the thread · 2026-08-04 · closed · 0 comments
fix(ui): reopen-restore — 'Unerwartete Daten'-Notice bei nutzlosem host-global toolOutput unterdrücken
Live-Befund aus dem #60-Pass (2026-08-02): Beim Reopen einer ChatGPT-Conversation stellt das Widget die letzte Seite korrekt aus widgetState wieder her, zeigt aber zusätzlich „Unerwartete Daten erhalten. Die angezeigte Seite bleibt unverändert." — ChatGPT replayed ein nicht-parsebares toolOutput (source: 'host-global'), und presentFromHost unterdrückt bei aktivem Restore nur source === 'missing'.
Im #69-Review exakt so als parked minor vorhergesagt. Fix-Skizze: bei restored === true
Read the thread · 2026-08-02 · closed · 0 comments
fix(dokument): RIS Vorlese-Dubletten (sr-only) verdoppeln jeden Gliederungsmarker im Volltext
Live-Befund von Phil (2026-08-02, Prompt «Zeig mir § 1295 ABGB in der geltenden Fassung»): ris_dokument reicht die RIS-Barrierefreiheits-Duplikate ungefiltert durch — jede Gliederungseinheit erscheint doppelt («(1)Absatz eins,», «§ 1295.Paragraph 1295,»), und Metadaten kleben ohne Trenner aneinander («KurztitelAllgemeines bürgerliches Gesetzbuch»).
Ursache (am echten NOR12019037-HTML verifiziert): RIS markiert die Vorlesefassung mit <span class="sr-only">…</span> neben den sichtbaren `<
Read the thread · 2026-08-02 · closed · 0 comments
docs(tools): Agents zu titel/paragraph statt suchworte leiten; ABGB-Querverweis bei Gewährleistungs-Suchen fehlt
Zwei Produkt-Findings aus den Live-Tests am 2026-08-01 (claude.ai + ChatGPT über Custom Connector, Query «Gewährleistung»):
- Volltextsuche ertrinkt:
suchworte="Gewährleistung"liefert 3.337 Treffer, von der RIS-API alphabetisch nach Gesetzestitel sortiert statt nach Relevanz — oben stehen Beschußverordnung und Zinsertrags-Abkommen. Beide Modelle (Opus in claude.ai, GPT in ChatGPT) griffen reflexhaft zuerst zusuchworte. Vorschlag: Tool-Description vonris_bundesrecht/`ris_landesrech
Read the thread · 2026-08-01 · closed · 0 comments
feat(ui): facetten-chips + fassung-datum
WP8 · Backlog: Ausbaustufe der Trefferliste — unabhängig, kann vor oder nach dem Viewer laufen (MCP-Apps-Initiative, siehe #23)
Scope (Grobschnitt, wird beim Anpacken verfeinert)
- Judikatur-Facetten-Chips über der Trefferliste (Gerichtsbarkeit, Gericht, Rechtssatz/Entscheidungstext, Rechtsgebiet): Chip setzen/entfernen → verfeinerter Aufruf desselben Suchtools über das Query-Echo. Reine Widget-Erweiterung, kein Server-Umbau.
- „Rechtslage am …“-Datumswahl im Widget-Header für `
Read the thread · 2026-08-01 · closed · 0 comments
feat(dokument): chunk-api + document cache
WP6 · Server-Fundament für den Dokument-Viewer (Release 2) (MCP-Apps-Initiative, siehe #23)
Ziel
Große Dokumente in Abschnitten ausliefern, ohne pro Abschnitt einen vollen RIS-Fetch zu bezahlen — und ohne den bestehenden ris_dokument-Textpfad anzufassen.
Hintergrund: Heute stirbt der geholte Volltext im Handler-Scope (kein Cache, nirgends); truncateResponse() gibt nur den gekürzten String zurück (keine Offsets, keine Gesamtlänge, CHARACTER_LIMIT nicht exportiert). Ein naiver Chun
Read the thread · 2026-08-01 · closed · 0 comments
The remaining reports are on the project's issue tracker.