diff --git a/.papercuts/troubleshooting.md b/.papercuts/troubleshooting.md index 57ff5f79..c4e413b8 100644 --- a/.papercuts/troubleshooting.md +++ b/.papercuts/troubleshooting.md @@ -1,5 +1,7 @@ # Troubleshooting +- `.papercuts/` is ignored even when its troubleshooting file is present in the PR branch, so persisting a required update needs an explicit `git add -f`. +- Layout stabilization must race `animation.finished` against a short timeout because paused or infinite document animations never settle; keep geometry polling as the authoritative E2E readiness check. - Pi 0.80.10 can choose the oldest oversized user turn as `firstKeptEntryId`, leaving both summary inputs empty and producing a no-op checkpoint. When the journal has a newer turn, retry `prepareCompaction` with a minimal retained-tail budget; still refuse the checkpoint if both summary inputs remain empty. - `Session.getEntries()` includes abandoned branches. Synchronization markers must be read from `Session.getBranch()` or a rolled-back partial write can still look committed. - Child-runtime unit tests load outside Electron. Keep usage accounting behind an injected callback (with a production-only dynamic import) instead of statically importing the Electron-backed singleton into the reusable child registry. diff --git a/docs/settings-design-system.md b/docs/settings-design-system.md index ad2d1161..78af6074 100644 --- a/docs/settings-design-system.md +++ b/docs/settings-design-system.md @@ -15,7 +15,7 @@ The `.settings-responsive` container defines `--settings-card-radius`, `--settin Rows respond to their allocated content width, not the whole window. Below 540px complex controls stack under descriptions, while switches remain on the right. Grid groups must use `minmax(0, 1fr)` / `grid-cols-1` so long provider names or endpoints cannot force horizontal overflow. Controls and text must stay reachable without horizontal page scrolling. -Model Pad measures the actual scrollport, wrapped toolbar, labels, and legend. Its square is constrained by both remaining height and column width. On very short or highly zoomed windows, it retains a usable 160px square and the Settings page scrolls; the Pad and its labels remain reachable. Ordinary window allocations show the full canvas and legend together. Opening model or benchmark panels uses the same measurement. +Model Pad measures the actual scrollport and remaining column. Axis captions and the legend use a reserved height so the square outline stays put while surrounding copy, marker labels, and catalog text change. The square is constrained by remaining height, column width, and the visible scrollport. On very short or highly zoomed windows, it keeps a usable canvas (160px when the scrollport allows) and the Settings page scrolls; the Pad and its labels remain reachable. Ordinary window allocations show the full canvas and legend together. Opening model or benchmark panels uses the same measurement. ## Workspace labels diff --git a/renderer/components/composer.test.tsx b/renderer/components/composer.test.tsx index fa3ed992..53c3651e 100644 --- a/renderer/components/composer.test.tsx +++ b/renderer/components/composer.test.tsx @@ -285,7 +285,7 @@ test("model picker details sit beside the menu without overlapping the pad", () ); assert.match( modelPicker, - /className="pointer-events-none w-56 shrink-0 rounded-popover bg-popover p-3 text-primary shadow-popover"/u, + /className="pointer-events-auto flex h-\[min\(22\.5rem,70vh\)\] w-56 shrink-0 flex-col overflow-hidden rounded-popover bg-popover p-3 text-primary shadow-popover"/u, ); assert.doesNotMatch(modelPicker, /left-\[calc\(100%\+0\.5rem\)\]/u); assert.doesNotMatch(modelPicker, /right: showExternalDetails/u); diff --git a/renderer/components/git-push-dialog.tsx b/renderer/components/git-push-dialog.tsx index ce28e90b..3ebbabfa 100644 --- a/renderer/components/git-push-dialog.tsx +++ b/renderer/components/git-push-dialog.tsx @@ -214,7 +214,7 @@ export function GitPushDialog({ -