Skip to content

agent: #8 Kontextleiste wird beim Markieren am oberen Rand abgeschnitten - #9

Merged
leonatwork merged 1 commit into
mainfrom
agent/bearbeite-github-issue-8-vollst-ndig-und-1015-2045
Oct 16, 2026
Merged

leonatwork merged 1 commit into
mainfrom
agent/bearbeite-github-issue-8-vollst-ndig-und-1015-2045

Conversation

@leonatwork

@leonatwork leonatwork commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Zusammenfassung

Autonome Umsetzung von #8: Kontextleiste wird beim Markieren am oberen Rand abgeschnitten

Verifikation

  • Coder-/Reviewer-Loop: APPROVE nach 2 Runde(n)

  • Tests und Qualitätsprüfungen: siehe Commit und CI-Checks

  • Kein automatischer Merge oder Produktionsdeploy

  • Modell: azure/gpt-5.3-codex; Decision-1 (active): route gpt-5.3-codex, Risiko medium; QS: npm run build && npm test bestanden

Closes #8


Note

Low Risk
Changes are limited to test files (timeouts and new positioning assertions); no production runtime behavior is modified in this diff.

Overview
Stabilizes integration tests around the writing editor’s selection toolbar (“Blase”) and the full-app browser demo, aligning coverage with issue #8 (toolbar clipped when selecting near the top of the paper).

In Editor.test.tsx, the Blase positioning suite gains a richer geometry stub: fixed assumed bubble width/height via offsetWidth/offsetHeight, paper scrollTop/clientHeight, and separate start/end coordinates for multi-line selections. Two new cases assert that near the top of the visible area the toolbar flips below (pw-s-blase--unten) and stays fully on-screen, and that when the selection starts above the viewport the vertical position clamps to scrollTop + padding.

In app.test.tsx, two findBy* assertions for chapter UI now use a 5s timeout to reduce flakes while the demo project loads.

Reviewed by Cursor Bugbot for commit 13f16ed. Bugbot is set up for automated code reviews on this repo. Configure here.

…are Lösung.

Lies zuerst den vollständigen Issue-Thread inklusive aller Kommentare, CLAUDE.md und die relevanten Repository-Regeln. Prüfe vorhandene PRs und aktuellen Code, bevor du Änderungen machst. Leite die verbindlichen Akzeptanzkriterien aus dem Issue ab und dokumentiere nicht erfüllbare oder widersprüchliche Kriterien klar.

Arbeite testgetrieben: Erzeuge Regressionstests, verifiziere ihr korrektes Fehlschlagen vor dem Fix und führe danach die relevanten Tests sowie die vorgeschriebenen Qualitätsprüfungen aus. Ändere nur, was für das Issue erforderlich ist. Keine Produktionsdeployments, keine Änderungen an Produktionsdaten oder Produktions-Supabase und kein --prod. Merge den PR nicht.

Issue: #8
Titel: Kontextleiste wird beim Markieren am oberen Rand abgeschnitten

Beschreibung:
<!-- hermes-agent-form-v1:start -->
## Ziel und Nutzen
Die kontextuelle Auswahlleiste (Blase) bleibt beim Markieren von Text, besonders bei mehrzeiliger Auswahl nahe am oberen Rand, vollständig sichtbar und bedienbar.

## Ist-Zustand / Problem
Gemeldet: Bei mehrzeiliger Auswahl nahe am oberen Rand wird die Leiste oben abgeschnitten (Rahmen, Rundungen, Symbole, Beschriftungen). Code auf main (Blase.tsx messen): Die Leiste liegt absolut im scrollenden .pw-s-papier. Sie steht über der Auswahl, wenn start.top - r.top >= Höhe + 16 gilt. Beginnt die Auswahl oberhalb des Sichtbereichs, steht sie bei scrollTop+8 mit translateX(-50%). Sonst steht sie unter start.bottom (bei einer Zeile unter ende.bottom). Ein Zweig mit Position außerhalb des Sichtbereichs ist nicht erkennbar. Offen: Reproduktion und Ursache.

## Umfang (In Scope)
- Positionierung der Auswahlleiste bei Textauswahl
- Kollisions-/Flip-Verhalten am oberen Rand des sichtbaren Papierbereichs
- Mehrzeilige Auswahl im Schreibeditor
- Ursachenanalyse, im PR dokumentiert
- Automatisierter Regressionstest für den oberen Randfall in Editor.test.tsx

## Nicht Teil dieses Issues (Out of Scope)
- Änderungen an der Textauswahl selbst
- Redesign der Aktionsleiste
- Änderungen an Manuskriptinhalten
- Neue Produktlogik außerhalb der Auswahlleiste
- Klemmen des Panels (Gewissheit/Ebene) nach unten

## Fachliche und UX-Entscheidungen
- Bevorzugt oberhalb der Auswahl positionieren.
- Bei zu wenig Platz oben automatisch unterhalb anzeigen.
- Die Leiste bleibt vollständig im sichtbaren Editor-/Papierbereich.
- Leon (Folgekommentar): erst Ursache ermitteln und im PR dokumentieren; Regressionstest muss auf main rot sein; ist das Abschneiden nicht reproduzierbar, nur belegte Änderungen vornehmen.
- Offen (technisch): genaue Stub-Koordinaten für mehrzeilige Auswahl.
- Offen: Ob der Bezugsrahmen das Papier oder der gesamte Viewport ist. Der Code nutzt das Papier.

## Prüfbare Akzeptanzkriterien
- AC-1: Bei einer mehrzeiligen Auswahl nahe am oberen Rand ist die Aktionsleiste vollständig sichtbar.
- AC-2: Reicht der Platz oberhalb nicht aus, wird die Aktionsleiste unterhalb der Auswahl positioniert.
- AC-3: Rahmen, Rundungen, Symbole und Beschriftungen werden nicht abgeschnitten.
- AC-4: Das Verhalten wird mit einem automatisierten Regressionstest für die Popover-Positionierung abgesichert.
- AC-5: Der PR dokumentiert die ermittelte Ursache (Zweig und Geometrie) oder hält fest, dass das Abschneiden mit der vorhandenen Logik nicht reproduzierbar war.
- AC-6: Der Regressionstest ist auf main rot (Position außerhalb des Sichtbereichs) und mit dem Fix grün. Ist das nicht herstellbar, nennt der PR den Grund und es gibt keine Änderung an der Positionslogik ohne Beleg.

## QS und Nachweis
- Neuer Regressionstest, der auf main rot und mit Fix grün ist, mit mehrzeiligen Stubs (coordsAtPos, getBoundingClientRect, scrollTop, offsetHeight)
- npm test erfolgreich
- npm run typecheck erfolgreich
- npm run build erfolgreich
- Manuelle Prüfung in der Mac-App bleibt bei Leon

## Offene Fragen
–

_Automatisch nach dem Formular „Agent-Auftrag“ strukturiert (Hermes-Triage). Die ursprüngliche Beschreibung steht unten unverändert._
<!-- hermes-agent-form-v1:end -->

<details><summary>Ursprüngliche Beschreibung</summary>

<!-- hermes-original:start -->
## Ziel und Nutzen
Beim Markieren von Text bleibt die kontextuelle Aktionsleiste vollständig sichtbar und bedienbar.

## Ist-Zustand / Problem
Bei einer mehrzeiligen Textauswahl nahe am oberen Rand wird die helle Kontextleiste nach oben aus dem sichtbaren Editorbereich geschoben und abgeschnitten. Oberer Rahmen, Rundungen, Symbole und Beschriftungen sind teilweise nicht sichtbar.

### Reproduktion
1. Plotwerk öffnen und einen Text im Editor anzeigen.
2. Mehrere Zeilen markieren, sodass die Auswahl nahe am oberen Rand beginnt.
3. Die erscheinende Aktionsleiste beobachten.

Erwartet: Das Popover wird vollständig oberhalb der Auswahl angezeigt oder bei zu wenig Platz unterhalb positioniert.

Tatsächlich: Das Popover ist am oberen Rand abgeschnitten und nur teilweise nutzbar.

## Umfang (In Scope)
- Positionierung der kontextuellen Aktionsleiste bei Textauswahl
- Kollisions-/Flip-Verhalten am oberen Viewport- oder Editor-Rand
- Mehrzeilige Auswahl

## Nicht Teil dieses Issues (Out of Scope)
- Änderungen an der Textauswahl selbst
- Redesign der Aktionsleiste
- Änderungen an Manuskriptinhalten

## Fachliche und UX-Entscheidungen
- Bevorzugt oberhalb der Auswahl positionieren.
- Wenn dort nicht genug Platz ist, automatisch unterhalb anzeigen.
- Die Leiste muss vollständig innerhalb des sichtbaren Editor-/Viewport-Bereichs bleiben.

## Prüfbare Akzeptanzkriterien
AC-1: Bei einer mehrzeiligen Auswahl nahe am oberen Rand ist die Aktionsleiste vollständig sichtbar.
AC-2: Reicht der Platz oberhalb nicht aus, wird die Aktionsleiste unterhalb der Auswahl positioniert.
AC-3: Rahmen, Rundungen, Symbole und Beschriftungen werden nicht abgeschnitten.
AC-4: Das Verhalten wird mit einem automatisierten Regressionstest für die Popover-Positionierung abgesichert.

## QS und Nachweis
- Automatisierter UI-/Komponententest für eine Auswahl nahe am oberen Rand
- Manuelle Prüfung mit mehrzeiliger Auswahl
- `npm run build` und `npm test` müssen erfolgreich sein

## Technischer Kontext und Referenzen
Ein Screenshot liegt dem Agent-Stack lokal als Referenz vor. Darauf ist eine mehrzeilige blaue Textauswahl zu sehen; die darüber erscheinende helle Aktionsleiste mit „Notiz“ und „Ebene“ ist am oberen Fensterrand abgeschnitten. Der Manuskripttext wird nicht öffentlich wiedergegeben.

## Offene Fragen
–
<!-- hermes-original:end -->

</details>

Zusätzliche Repo-Regeln:
Commits tragen ein DCO-Sign-off (das macht dev-loop automatisch). Auf diesem Server gibt es kein Rust/Tauri: nur TypeScript-Teil (core/, src/) mit npm run build und npm test prüfen, src-tauri nicht bauen. Keine Inhalte aus privaten Manuskripten; Beispiele nur aus fixtures/. Farben nur über Tokens in src/theme/tokens.css, UI nach docs/design/screens, core/ bleibt reines TypeScript, core/ki nutzt nur ProjektLeser.

Reviewer verdict: APPROVE after 2 round(s). Generated by dev-loop (not pushed).

Signed-off-by: leonatwork <leon.11@live.de>
@leonatwork
leonatwork marked this pull request as ready for review October 16, 2026 14:55
@leonatwork
leonatwork merged commit f20de68 into main Oct 16, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Kontextleiste wird beim Markieren am oberen Rand abgeschnitten

1 participant