feat(story-mode): the turn picker and the composer are one prompt bar

The owner asked to merge the turn picker with the new input field. The prompts you already sent
(the picker and its arrows) now sit on the left of the bottom bar, the next message beside them,
the hint under the field; on a narrow screen the turns get their own row above it. The top bar
keeps the title, the reading levels, Save image and close, so a phone's bar is two rows. On a
touch screen the ready hint (Enter and Shift+Enter) is hidden: it means nothing on a touch
keyboard, and the hints that matter still show.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer committed 2026-10-19 06:04:16 +02:00
1 parent acf0567c1a
commit 4e937c44b4
3 files changed
+66 -22

No files matched your search

+16
View File
@@ -1638,6 +1638,22 @@ describe('story-mode.js composer', () => {
expect($('.story-page')!.contains($('.story-compose'))).toBe(false);
expect($('.story-main')!.contains($('.story-compose'))).toBe(false);
});
it('the turn picker sits in the prompt bar beside the field, not in the top bar', async () => {
boot(done());
app.openStoryMode(SID);
await settle();
const row = $('.story-compose-row')!;
expect($('.story-bar .story-turns')).toBeNull();
expect([...row.children].map((n) => n.className)).toEqual([
'story-nav',
'story-compose-field',
'story-compose-send',
'story-compose-hint',
]);
expect(row.querySelector('.story-prev')).not.toBeNull();
expect(row.querySelector('.story-next')).not.toBeNull();
});
});
describe('story-mode.js scenes', () => {