Skip to content

Drop the inline composer from the Log - #14

Merged
simonhamp merged 1 commit into
mainfrom
feat/drop-inline-composer
Oct 19, 2026
Merged

simonhamp merged 1 commit into
mainfrom
feat/drop-inline-composer

Conversation

@simonhamp

Copy link
Copy Markdown
Member

Typing fast into the composer at the top of the Log lost letters and put them out of order. The compose sheet and the reply box don't do this.

The inline field sat in the Log's list, and the Log sends every frame in full. So every sync of the draft (debounced at 150ms) redrew the whole log, around 2,000 to 3,000 nodes, while you kept typing, and the field kept being given text that was a few keystrokes old. The sheet and the reply box live outside a list, in much smaller trees.

The nav bar's compose button already opens a composer in a sheet from anywhere in the log, like Twitter's, so the inline composer goes rather than being fixed. Simon decided that while testing on his phone.

What changed

  • The composer row is gone from each Log page, and so is partials/composer.blade.php.
  • Log loses the inline draft and everything that drove it: body, composing, composerKey, draftRestored, commit(), dropStash(), updatedBody(), closeEmptyComposer() and composeSheetClosed(). The sheet's commit still goes on top through showCommitted().
  • OpensCommitSheet no longer hands the sheet's draft back to an inline composer when it closes. The sheet still stashes the web's commit draft and restores it with stash@{0} and drop.
  • The new commits pill is now the first row of the list.
  • Each Log frame is a little smaller, which gives a bit more room under EDGE's frame size limit.

Tests

ComposerTest is deleted, since every test in it was about the inline field. The sheet already covers what still applies: Commit disabled until the draft is long enough, the budget, the error keeping the draft, and the commit going on top. Tests that made a commit through the inline field now use the sheet. The inline-only stash, lane button and staged avatar cases are gone. 812 tests pass, and Pint and PHPStan are clean.

What to check

  • On the Log, the compose button opens the sheet, a commit goes to the top, and a draft survives closing the sheet.
  • The pill sits at the top of the list and still pins under the tabs when scrolled.

🤖 Generated with Claude Code

Typing fast into the composer at the top of the Log lost letters and put them out of order. The field sat in the Log's list, and every sync of the draft redrew the whole log, so the field kept getting text that was a few keystrokes old. The compose sheet and the reply box don't have the problem.

The compose button in the nav bar already opens a composer in a sheet from anywhere in the log, like Twitter's. So the inline field goes, along with its draft, budget, Commit button and staged avatar. The new commits pill is now the first row of the list. The sheet keeps the web's commit draft stash.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@simonhamp
simonhamp merged commit 0ab4a16 into main Oct 19, 2026
1 check passed
@simonhamp
simonhamp deleted the feat/drop-inline-composer branch October 19, 2026 09:24
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