diff --git a/.gitignore b/.gitignore index 65a6a549..e7271330 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,7 @@ node_modules/ .env eng.traineddata dist/ -.DS_Store \ No newline at end of file +.DS_Store +roots.sst +tmp_silence.wav +test-azure-speech.js \ No newline at end of file diff --git a/chat.html b/chat.html index d986477e..afdef1b6 100644 --- a/chat.html +++ b/chat.html @@ -45,7 +45,7 @@ -webkit-app-region: drag; background: rgba(0, 0, 0, 0.2); backdrop-filter: blur(10px); - cursor: move; + cursor: default; flex-shrink: 0; } .header-title { @@ -70,7 +70,7 @@ color: rgba(255, 255, 255, 0.9); border-radius: 6px; padding: 6px 10px; - cursor: pointer; + cursor: default; transition: all 0.2s ease; } .icon-button:hover { @@ -110,7 +110,7 @@ /* Removed max-height restriction */ } .message { - margin-bottom: 16px; + margin-bottom: 6px; padding: 12px 16px; background: rgba(255, 255, 255, 0.08); border-radius: 8px; @@ -288,7 +288,7 @@ padding: 4px 8px; font-size: 11px; border-radius: 4px; - cursor: pointer; + cursor: default; -webkit-app-region: no-drag; transition: background 0.2s ease, border-color 0.2s ease, transform 0.12s ease; } @@ -450,7 +450,7 @@ border-radius: 6px; padding: 6px 10px; color: rgba(255, 255, 255, 0.9); - cursor: pointer; + cursor: default; transition: all 0.2s; -webkit-app-region: no-drag; } @@ -479,7 +479,7 @@ border-radius: 6px; padding: 6px 10px; color: rgba(255, 255, 255, 0.9); - cursor: pointer; + cursor: default; transition: all 0.2s; -webkit-app-region: no-drag; } @@ -527,15 +527,10 @@ } .non-interactive .input-container { pointer-events: none; - opacity: 0.5; - } - .non-interactive .mic-button { - pointer-events: none; - opacity: 0.5; + opacity: 0; } - .non-interactive .send-button { - pointer-events: none; - opacity: 0.5; + .non-interactive .icon-button { + display: none; } /* Minimalist Listening Animation */ @@ -665,6 +660,155 @@ transform: translateY(0); } } + + /* Custom dropdown to avoid native OS select (which leaks through setContentProtection) */ + .custom-dropdown { + position: relative; + display: inline-block; + margin-right: 8px; + -webkit-app-region: no-drag; + } + .custom-dropdown-btn { + background: rgba(255, 255, 255, 0.1); + color: rgba(255, 255, 255, 0.8); + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 4px; + padding: 4px 8px; + font-size: 12px; + outline: none; + cursor: default; + font-family: inherit; + transition: all 0.2s ease; + display: flex; + align-items: center; + gap: 4px; + user-select: none; + } + .custom-dropdown-btn:hover { + background: rgba(255, 255, 255, 0.15); + } + .custom-dropdown-btn .arrow { + font-size: 8px; + transition: transform 0.2s ease; + } + .custom-dropdown.open .custom-dropdown-btn .arrow { + transform: rotate(180deg); + } + .custom-dropdown-menu { + display: none; + position: absolute; + top: 100%; + left: 0; + margin-top: 2px; + background: rgba(30, 30, 30, 0.95); + backdrop-filter: blur(15px); + border: 1px solid rgba(255, 255, 255, 0.15); + border-radius: 6px; + min-width: 130px; + z-index: 9999; + overflow: hidden; + box-shadow: 0 4px 16px rgba(0,0,0,0.4); + } + .custom-dropdown.open .custom-dropdown-menu { + display: block; + animation: dropIn 0.15s ease-out; + } + @keyframes dropIn { + from { opacity: 0; transform: translateY(-4px); } + to { opacity: 1; transform: translateY(0); } + } + .custom-dropdown-item { + padding: 6px 12px; + font-size: 12px; + color: rgba(255,255,255,0.8); + cursor: default; + transition: background 0.15s ease; + } + .custom-dropdown-item:hover { + background: rgba(255,255,255,0.1); + } + .custom-dropdown-item.selected { + background: rgba(33, 150, 243, 0.3); + color: #fff; + } + .non-interactive .custom-dropdown { + display: none; + } + + /* Shortcut Help Overlay */ + .shortcut-overlay { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.85); + backdrop-filter: blur(20px); + z-index: 10000; + justify-content: center; + align-items: center; + -webkit-app-region: no-drag; + } + .shortcut-overlay.visible { + display: flex; + animation: fadeIn 0.2s ease-out; + } + @keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } + } + .shortcut-card { + background: rgba(30, 30, 30, 0.95); + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 12px; + padding: 24px 28px; + max-width: 380px; + width: 90%; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5); + } + .shortcut-card h2 { + margin: 0 0 16px 0; + font-size: 15px; + font-weight: 600; + color: rgba(255, 255, 255, 0.95); + text-align: center; + } + .shortcut-row { + display: flex; + justify-content: space-between; + align-items: center; + padding: 6px 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.06); + } + .shortcut-row:last-child { + border-bottom: none; + } + .shortcut-label { + font-size: 12px; + color: rgba(255, 255, 255, 0.7); + } + .shortcut-key { + font-size: 11px; + color: rgba(255, 255, 255, 0.9); + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 4px; + padding: 2px 8px; + font-family: monospace; + } + .shortcut-mode-indicator { + text-align: center; + margin-top: 12px; + padding-top: 12px; + border-top: 1px solid rgba(255, 255, 255, 0.1); + font-size: 11px; + color: rgba(255, 255, 255, 0.5); + } + .shortcut-mode-indicator span { + color: #64b5f6; + font-weight: 600; + } @@ -676,6 +820,30 @@
+
+ +
+
Auto-Detect Lang
+
C++
+
Python
+
Java
+
JavaScript
+
+
+
+ +
+
Simple
+
Medium
+
Complex
+
+
@@ -703,6 +871,25 @@
+ + + +
+
+

⌨ Keyboard Shortcuts

+
Screenshot & AnalyzeCtrl+S
+
Screenshot (Alt)Ctrl+Shift+S
+
Cycle Response ModeCtrl+Shift+X
+
Toggle RecordingAlt+R
+
Toggle Stealth ModeAlt+A
+
Show/Hide WindowCtrl+Shift+V
+
Open ChatCtrl+Shift+C
+
Clear SessionCtrl+Shift+\
+
SettingsCtrl+,
+
This MenuCtrl+Shift+Z
+
Current mode: Complex
+
+
@@ -726,6 +913,95 @@ const listeningDuration = document.getElementById('listeningDuration'); const interimOverlay = document.getElementById('interimOverlay'); const clearHistoryBtn = document.getElementById('clearHistoryBtn'); + // Custom dropdown logic (replaces native