Skip to content

feat(chat): composer grows to two thirds of the pane, Enter continues lists; drop the fullscreen editor - #521

Merged
Leo310 merged 7 commits into
mainfrom
feat/composer-grow-no-fullscreen
Sep 27, 2026
Merged

Leo310 merged 7 commits into
mainfrom
feat/composer-grow-no-fullscreen

Conversation

@Leo310

@Leo310 Leo310 commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

What

Removes the desktop-only fullscreen chat editor. The composer now grows with its content up to two thirds of the chat pane; past that, only the editor scrolls. The fullscreen toggle only existed because the editor stopped growing at max-h-[200px].

  • Desktop: .chat-root becomes a size container, and the in-flow composer is capped at calc(100cqh * 2 / 3).
  • Mobile: the composer is portaled out of the pane, where cqh would fall back to the full viewport and ignore the keyboard. So the portaled rule restates the cap against the pane's own height formula (100vh − view top − keyboard/toolbar band).
  • Only the input card shrinks under the cap. The provider banner, pending-changes bar and editing bar keep their size.
  • Enter sends and Shift+Enter inserts a newline, as before when not in fullscreen. The fullscreen-only "Enter = newline, Mod+Enter sends" mode goes away, as does the tray row's 2.5rem right-hand reservation for the toggle.

Lists (added in this PR): before, Enter on desktop always sent, so a list could never get a second item (Shift+Enter is Obsidian's plain line break and adds no marker). On a list line (-, *, +, 1., 1), - [ ], indented or quoted), Enter now falls through to Obsidian's own handler. That continues the list, and Enter on an empty item ends it; the next Enter sends. Mod+Enter sends from anywhere, and the send tooltip mentions it. Mobile is unchanged (Enter was already a newline there).

How I tested it

bun run check, format, lint and test pass. Desktop, WT3 slot vault: with a 200-line draft the card stops at 2/3 of the pane (858px of 1287px), the editor scrolls and the send row stays visible. Lists, live in the chat input: - one + Enter gives - ; Enter on the empty bullet removes it; 1. a + Enter gives 2. . isMarkdownListLine has unit tests. The pending-bar and mobile paths are untested live; that is pending the maintainer's own desktop and iOS test (type a long draft, confirm the composer stops at about 2/3 of the pane and the editor scrolls, also with the keyboard open on mobile and with a pending-changes bar showing).

AI assistance: Claude Code wrote the change from Leo's brief ("remove fullscreen chat input, let the input grow to ~2/3 of the chat height", then "Enter should continue Markdown lists"); Leo reviews and tests it live.

Checklist

  • bun run check, bun run format, bun run lint, and bun run test pass locally
  • I tried the change in a real Obsidian vault (or explained above why that isn't applicable)
  • I read CONTRIBUTING.md, including the section on AI assistance
  • If this adds a provider, a bundled skill, a built-in tool, or changes manifest.json: I noted that the docs site needs updating (see "Documentation" in CONTRIBUTING.md)

…reen editor

The desktop-only fullscreen toggle existed because the editor stopped
growing at 200px. Let the composer grow with its content up to two thirds
of the chat pane instead (a cqh cap on desktop, the pane's own height
formula on mobile where the composer is portaled), with only the editor
scrolling past that. Enter/Shift+Enter behave as before outside fullscreen.

Co-Authored-By: Claude <noreply@anthropic.com>
@greptile-apps

greptile-apps Bot commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Medium risk] Chat composer layout and list-handling behavior changes.

No new finding blocks merging, and the earlier findings have been manually resolved.

Summary

The PR removes the fullscreen chat editor, lets the composer grow within the chat pane, and delegates Enter on Markdown list lines to the editor.

  • The latest change closes a fence opened in a blockquote when the quote ends and adds tests for that case.

Reviews (7) · Last reviewed commit: "fix(chat): a fence opened in a blockquot..."

Comment thread src/views/chat/Chat.svelte Outdated
Comment thread src/components/chat/Input.svelte Outdated
…the portaled composer

The two-thirds cap now applies to the input card, which never shrinks, so
its send row can't be squeezed out by a long pending-changes list; the
composer as a whole is capped at the pane and the list (its own scroller)
gives way instead. On mobile, --s2b-view-top is now also set on the
portaled composer, which no longer inherits it from .chat-root.

Co-Authored-By: Claude <noreply@anthropic.com>
Comment thread src/components/chat/Input.svelte
Under the composer's pane cap the bar gives way to the input card, but
overflow: hidden zeroed its flex minimum, so a short pane could clip the
Accept/Reject All row. Floor it at the measured summary height.

Co-Authored-By: Claude <noreply@anthropic.com>
Comment thread src/components/chat/PendingChangesBar.svelte
Leo310 and others added 2 commits September 26, 2026 14:58
In a very short pane, a full-height card plus the pending summary and
banner could overflow the pane cap. The card may now shrink too, after
the pending list (far larger shrink factor), down to its controls plus
one editor line.

Co-Authored-By: Claude <noreply@anthropic.com>
On desktop Enter always sent, so a list could never get a second item
(Shift+Enter is Obsidian's plain line break, which adds no marker). On a
list line, Enter now falls through to Obsidian's own handler, which
continues bullets, numbers and checkboxes and ends the list on an empty
item; the next Enter sends. Mod+Enter sends from anywhere, and the send
tooltip says so.

Co-Authored-By: Claude <noreply@anthropic.com>
@Leo310 Leo310 changed the title feat(chat): composer grows to two thirds of the pane; drop the fullscreen editor feat(chat): composer grows to two thirds of the pane, Enter continues lists; drop the fullscreen editor Sep 27, 2026
Comment thread src/components/chat/Input.svelte Outdated
Replay the fences above the cursor so a line like `- example` in a
fenced code block is not treated as a list item; Enter sends there as
elsewhere.

Co-Authored-By: Claude <noreply@anthropic.com>
Comment thread src/utils/markdownList.ts Outdated
Co-Authored-By: Claude <noreply@anthropic.com>
@Leo310
Leo310 merged commit 7aa0568 into main Sep 27, 2026
3 checks passed
@Leo310
Leo310 deleted the feat/composer-grow-no-fullscreen branch September 27, 2026 08:46
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.

1 participant