From ac574d6c64eebbc38d5d58e96ba2534c59e742a6 Mon Sep 17 00:00:00 2001
From: DodgyBadger <4453217+DodgyBadger@users.noreply.github.com>
Date: Sun, 20 Sep 2026 17:31:10 +0000
Subject: [PATCH] fix(mobile): compact the compose key
---
src/web/public/keyboard-accessory.js | 14 ++++++++++++--
test/mobile-prompt-composer.test.ts | 15 +++++++++++++++
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/src/web/public/keyboard-accessory.js b/src/web/public/keyboard-accessory.js
index bf0d3cd5..f59ad81c 100644
--- a/src/web/public/keyboard-accessory.js
+++ b/src/web/public/keyboard-accessory.js
@@ -674,7 +674,12 @@ const KeyboardAccessoryBar = {
-
+
-
+
diff --git a/test/mobile-prompt-composer.test.ts b/test/mobile-prompt-composer.test.ts
index 43c1d777..c2ea77e1 100644
--- a/test/mobile-prompt-composer.test.ts
+++ b/test/mobile-prompt-composer.test.ts
@@ -115,6 +115,21 @@ describe('mobile prompt composer', () => {
expect(template('_shellButtons')).not.toContain('data-action="compose"');
});
+ it('uses a compact accessible icon for Compose in both agent layouts', () => {
+ const { bar, document } = loadComposer();
+
+ for (const markup of [bar._simpleButtons, bar._extendedButtons]) {
+ const wrapper = document.createElement('div');
+ wrapper.innerHTML = markup;
+ const button = wrapper.querySelector('[data-action="compose"]') as HTMLButtonElement;
+
+ expect(button.getAttribute('aria-label')).toBe('Compose prompt');
+ expect(button.getAttribute('title')).toBe('Compose prompt');
+ expect(button.querySelector('svg[aria-hidden="true"]')).not.toBeNull();
+ expect(button.textContent?.trim()).toBe('');
+ }
+ });
+
it('uses a native autocorrect-aware textarea and stores replacement text exactly once', () => {
const { app, bar, document } = loadComposer();
bar.composePrompt();