Repository navigation
Conversation
The composer card gets a seam along its top edge. Dragging it writes the field's height on every pointer move and republishes --lift in the same handler, so the transcript reserve and the sheets stacked above the card travel with the pointer. A dragged height overrides the content fit and is kept for the page's lifetime; the floor is the field's resting min-height, the ceiling is half the window, recomputed on every pass so a resize re-clamps it. The automatic fit now shares that ceiling instead of a separate 36vh cap. The handle takes keyboard steps like the pane grips, and its label is a new catalogue key whose TUI copy is regenerated.
gloryfromca
left a comment
There was a problem hiding this comment.
No blockers; this can merge as far as I am concerned.
Reviewed the full github/main...HEAD diff and surrounding composer, dock-lift, resize-grip, lifecycle, and generated-i18n code. I also checked the change against AGENTS.md, the Web UI context vocabulary and architecture, callers, relevant history, backward behavior, and the tests for weakening; I found no concrete regression.
Verification:
npm test: 262 files, 4518 tests passed- focused composer/dock tests: 3 files, 49 tests passed
npm run type-check: passednpm run lint: 0 errors; 4 pre-existing warnings in untouched filesnpm run buildanduv run python ui-web/build.py: passed; both boot snapshots match- page, CSS, and class-namespace checks: passed
- source-language and large-file checks for
github/main..HEAD: passed
|
Windows compatibility review — PR #1150 @ Scope: the full diff at this head against base Result: no Windows-specific defect found by reading. The feature is pointer-event and layout logic — Verification: no executable check was possible for the UI — the shared Coverage gaps: by the same token, the goldens and the generated i18n catalogue were not regenerated or diffed here; the review of this PR rests on code reading. |
|
Not a blocker (acceptance on Severity of this one finding, not a verdict on the pull request. Any blocking findings from this pass are review threads on the changed files; GitHub renders those collapsed, as a file name with no text. Once the grip has been dragged even once, the composer stops growing with its content for the rest of the page's life. Checked on the merged tree: type-check and lint clean, vitest 263 files / 4529 tests passed, |
Summary
Make the chat composer's height adjustable: a seam along the top edge of the card can be dragged (or moved with ArrowUp/ArrowDown) to set the writing field between its resting height and half the window.
min-heightpage.css already gives it (52px, two lines), so the composer can never be made shorter than it opens today.window.innerHeightat the moment it is needed and re-clamped on every fit, so a resized window moves the cap instead of leaving a stale pixel value behind.dockLift()in the same handler, so--lift, the transcript reserve and the sheets stacked above the card follow the pointer rather than a frame behind it. The sheets ride the dock's normal flow, so they move with the card automatically.min(286px, 36vh)cap. The handle is a focusable separator with the same 10/40px keyboard step as the pane grips, and its label is a new catalogue key.i18n/messages.jsongainedgui.composer.resize; the TUI copy (ui-tui/src/i18n/messages.generated.ts) was regenerated with its own script. The region and boot DOM goldens gained the one new node, and nothing else moved.Type
Verification
npx vitest run src/features/composer src/chrome/Dock.test.tsx src/chrome/behaviour/panes.test.ts src/state/globalListeners.test.ts src/test/regions.test.ts --maxWorkers=2- 14 files, 298 tests passed.npx vitest run src/chrome src/test src/state/lang --maxWorkers=2- 15 files, 217 tests passed.npx vitest run --no-file-parallelism scripts/gates- 54 files, 257 tests passed.npx tsc --noEmit -p tsconfig.json- no errors.npx eslint src/features/composer src/chrome/Dock.tsx src/chrome/Dock.test.tsx- no issues.python ui-web/build.py- page assembled; both boot DOM snapshots match.node ui-tui/scripts/gen-i18n.mjs --check- generated catalogue is up to date.Mutation checks on the new test file: dropping the in-move
dockLift()fails the lift test; replacing the half-window ceiling with a constant fails the four cap tests; deleting the manual-height branch fails the two persistence tests. Each restored to green afterwards.Repo gates:
scripts/check_commit_messages.py origin/main...HEAD,scripts/check_source_language.py origin/main...HEAD,scripts/check_large_files.py origin/main...HEAD, andcommitlint --from origin/main --to HEADall pass.Relevant tests pass locally
Relevant lint / type checks pass locally
User-facing docs or screenshots are updated when needed
No docs page describes the composer height, and no screenshot was required for this change.
Risk
User-visible changes: the composer now has a drag seam, and the automatic fit may grow to half the window before scrolling instead of stopping at 36vh. Nothing is persisted, so rollback is reverting the squash commit; the next page load returns to the old behavior.
Related Issues
N/A