diff --git a/CHANGELOG.md b/CHANGELOG.md
index 344051c1..d9667044 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
# aicodeman
+## 0.5.9
+
+### Patch Changes
+
+- Mobile keyboard accessory bar: add configurable "Extended Keyboard Bar" setting (Settings > Display > Input) that toggles between simple mode (up/down arrows, /init, /clear, /compact, paste, dismiss) and extended mode (adds left/right arrows, Tab, Shift+Tab, Ctrl+O, Alt+Enter, Esc). Default is simple mode. Setting is device-specific (not synced to server).
+
+ Restyle dismiss button: muted steel-blue tone, fills remaining bar space via flex, larger tap target. Arrow buttons now blue.
+
+ Fix paste overlay visibility on mobile: dialog repositioned to top of screen (15vh from top) so the virtual keyboard doesn't cover it. Textarea enlarged for better usability.
+
+ (Also includes all v0.5.8 changes: case reorder/delete, XSS sanitization, auto-attach PTY on restart, mobile keyboard buttons, macOS installer fixes, terminal flicker fix, state store collision fix.)
+
## 0.5.8
### Patch Changes
diff --git a/CLAUDE.md b/CLAUDE.md
index 0d515e1c..a582ac52 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -52,7 +52,7 @@ When user says "COM":
4. **Sync CLAUDE.md version**: Update the `**Version**` line below to match the new version from `package.json`
5. **Commit and deploy**: `git add -A && git commit -m "chore: version packages" && git push && npm run build && systemctl --user restart codeman-web`
-**Version**: 0.5.8 (must match `package.json`)
+**Version**: 0.5.9 (must match `package.json`)
## Project Overview
diff --git a/package.json b/package.json
index b3690301..a29f4cec 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "aicodeman",
- "version": "0.5.8",
+ "version": "0.5.9",
"description": "The missing control plane for AI coding agents - run 20 autonomous agents with real-time monitoring and session persistence",
"type": "module",
"main": "dist/index.js",
diff --git a/src/web/public/app.js b/src/web/public/app.js
index 8c9a297f..dac3df42 100644
--- a/src/web/public/app.js
+++ b/src/web/public/app.js
@@ -523,6 +523,9 @@ class CodemanApp {
SwipeHandler.init();
VoiceInput.init();
KeyboardAccessoryBar.init();
+ // Apply keyboard bar mode from settings
+ const _kbSettings = this.loadAppSettingsFromStorage();
+ if (_kbSettings.extendedKeyboardBar) KeyboardAccessoryBar.setMode('extended');
this.applyHeaderVisibilitySettings();
this.applyTabWrapSettings();
this.applyMonitorVisibility();
diff --git a/src/web/public/index.html b/src/web/public/index.html
index 4dc12f27..42f95d3f 100644
--- a/src/web/public/index.html
+++ b/src/web/public/index.html
@@ -892,6 +892,17 @@
+
+
+ Extended Keyboard Bar
+ Extra keys: Tab, Esc, arrows, Ctrl+O
+
+
+
+
diff --git a/src/web/public/keyboard-accessory.js b/src/web/public/keyboard-accessory.js
index 9ae2bee7..e58aebba 100644
--- a/src/web/public/keyboard-accessory.js
+++ b/src/web/public/keyboard-accessory.js
@@ -4,7 +4,7 @@
* Defines two exports:
*
* - KeyboardAccessoryBar (singleton object) — Quick action buttons shown above the virtual
- * keyboard on mobile: Esc, arrow up/down, Tab, Shift+Tab, Ctrl+O, /init, /clear, /compact, paste, and dismiss.
+ * keyboard on mobile: arrow up/down, /init, /clear, /compact, paste, and dismiss.
* Destructive actions (/clear, /compact) require double-tap confirmation (2s amber state).
* Commands are sent as text + Enter separately for Ink compatibility.
* Only initializes on touch devices (MobileDetection.isTouchDevice guard).
@@ -33,16 +33,37 @@
*/
const KeyboardAccessoryBar = {
element: null,
+ _mode: 'simple', // 'simple' or 'extended'
- /** Create and inject the accessory bar */
- init() {
- // Only on mobile
- if (!MobileDetection.isTouchDevice()) return;
+ /** HTML for simple mode: arrows, commands, paste, dismiss */
+ _simpleButtons: `
+
+
+
+
+
+
+
`,
- // Create accessory bar element
- this.element = document.createElement('div');
- this.element.className = 'keyboard-accessory-bar';
- this.element.innerHTML = `
+ /** HTML for extended mode: all keys including arrows, Tab, Esc, etc. */
+ _extendedButtons: `