From 7b931a35d0f372117c935789bcecdec55289c47a Mon Sep 17 00:00:00 2001 From: arkon Date: Wed, 25 Feb 2026 00:32:45 +0100 Subject: [PATCH] chore: bump version to 0.1634 --- CLAUDE.md | 2 +- package.json | 2 +- src/web/public/app.js | 43 +++++++++++++++++++++++++++++++- src/web/public/index.html | 11 +++++++++ src/web/public/mobile.css | 26 ++++++++++++++++++++ src/web/public/styles.css | 52 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 133 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 5a4ec316..764ffd03 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -35,7 +35,7 @@ When user says "COM": 1. Increment version in BOTH `package.json` AND `CLAUDE.md` (verify they match with `grep version package.json && grep Version CLAUDE.md`) 2. Run: `git add -A && git commit -m "chore: bump version to X.XXXX" && git push && npm run build && systemctl --user restart claudeman-web` -**Version**: 0.1633 (must match `package.json`) +**Version**: 0.1634 (must match `package.json`) ## Project Overview diff --git a/package.json b/package.json index d899a3a3..7342aed5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claudeman", - "version": "0.1633", + "version": "0.1634", "description": "The missing control plane for Claude Code - 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 f973e71f..c8df1a24 100644 --- a/src/web/public/app.js +++ b/src/web/public/app.js @@ -861,6 +861,16 @@ const KeyboardAccessoryBar = { + @@ -382,6 +392,7 @@
Ctrl++
Increase Font
Ctrl+-
Decrease Font
Ctrl+?
Show Help
+
Ctrl+Shift+V
Voice Input
Escape
Close Panels
diff --git a/src/web/public/mobile.css b/src/web/public/mobile.css index 8ba6c908..2fffb3ab 100644 --- a/src/web/public/mobile.css +++ b/src/web/public/mobile.css @@ -746,6 +746,32 @@ html.mobile-init .file-browser-panel { background: #3a3a3a; } + /* Voice input button */ + .accessory-btn-voice { + background: #1a2a3f; + border-color: rgba(59, 130, 246, 0.25); + color: #93c5fd; + } + + .accessory-btn-voice:active { + background: #2a3a5f; + } + + .accessory-btn-voice.recording { + background: rgba(239, 68, 68, 0.2); + border-color: rgba(239, 68, 68, 0.5); + color: #ef4444; + animation: voice-pulse 1.5s ease-in-out infinite; + } + + /* Voice preview — positioned above accessory bar on mobile */ + .voice-preview { + bottom: calc(var(--safe-area-bottom) + 94px); + font-size: 0.8rem; + max-width: 90%; + padding: 6px 14px; + } + /* Add case button - compact (keeping for when shown via menu) */ .btn-case-add { display: none !important; diff --git a/src/web/public/styles.css b/src/web/public/styles.css index fb4e4788..0ba06b00 100644 --- a/src/web/public/styles.css +++ b/src/web/public/styles.css @@ -1977,6 +1977,58 @@ body { border-color: var(--red); } +/* Voice Input Button */ +.btn-toolbar.btn-voice { + padding: 0.3rem 0.5rem; +} + +.btn-toolbar.btn-voice:hover { + color: var(--text); + border-color: rgba(59, 130, 246, 0.4); +} + +.btn-toolbar.btn-voice.recording { + background: rgba(239, 68, 68, 0.15); + border-color: rgba(239, 68, 68, 0.5); + color: #ef4444; + animation: voice-pulse 1.5s ease-in-out infinite; +} + +.btn-toolbar.btn-voice.recording:hover { + background: rgba(239, 68, 68, 0.25); + border-color: rgba(239, 68, 68, 0.7); + color: #f87171; +} + +@keyframes voice-pulse { + 0%, 100% { transform: scale(1); opacity: 1; } + 50% { transform: scale(1.1); opacity: 0.75; } +} + +/* Voice preview overlay — shows interim transcription */ +.voice-preview { + position: fixed; + bottom: 48px; + left: 50%; + transform: translateX(-50%); + background: rgba(0, 0, 0, 0.88); + color: rgba(255, 255, 255, 0.7); + font-style: italic; + font-family: var(--font-mono, monospace); + padding: 8px 20px; + border-radius: 8px; + border: 1px solid rgba(255, 255, 255, 0.1); + font-size: 0.85rem; + max-width: 80%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + z-index: 100; + pointer-events: none; + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); +} + .btn-icon-only { display: flex; align-items: center;