feat: Enhance audio capture and monitoring features

- Added "audioCapture" permission to manifest for microphone access.
- Introduced DeepSeek as a new AI provider option in the side panel.
- Implemented a capture mode selection (tab-only, mic-only, mixed) in the side panel.
- Added options to enable/disable the extension and auto-open the assistant window.
- Integrated a mic monitor feature with live input level visualization.
- Included buttons for requesting microphone permission and granting tab access.
- Updated styles for new sections and mic level visualization.
- Enhanced model fetching logic to support DeepSeek and improved error handling.
This commit is contained in:
2026-01-31 21:55:09 +01:00
parent 246506b177
commit 56d56395ee
11 changed files with 1651 additions and 276 deletions

View File

@@ -16,6 +16,7 @@
<option value="openai">OpenAI (GPT)</option>
<option value="anthropic">Anthropic (Claude)</option>
<option value="google">Google (Gemini)</option>
<option value="deepseek">DeepSeek</option>
<option value="ollama">Ollama (Local)</option>
</select>
</div>
@@ -33,6 +34,50 @@
<div id="apiKeyStatus" class="status-message"></div>
</div>
<div class="capture-mode-section">
<label for="captureModeSelect">Capture mode:</label>
<select id="captureModeSelect">
<option value="tab">Tab-only (default)</option>
<option value="mic">Mic-only</option>
<option value="mixed">Mixed (experimental)</option>
</select>
</div>
<div class="active-state-section">
<label>
<input type="checkbox" id="extensionActiveToggle" checked>
Extension Active
</label>
</div>
<div class="overlay-visibility-section">
<label>
<input type="checkbox" id="autoOpenAssistantWindow">
Auto-open assistant window after Start Listening
</label>
<div class="status-message" id="sidepanelTip">
Tip: You can close this side panel while listening; the in-tab overlay will keep running.
</div>
</div>
<div class="mic-monitor-section">
<h4>🎙️ Mic Monitor</h4>
<label for="inputDeviceSelect">Input device:</label>
<select id="inputDeviceSelect"></select>
<div id="inputDeviceStatus" class="status-message"></div>
<div class="mic-level">
<div class="mic-level-bar" id="micLevelBar"></div>
</div>
<button id="startMicMonitor">Enable Mic Monitor</button>
</div>
<div class="performance-section">
<label>
<input type="checkbox" id="speedModeToggle">
Optimize for speed (faster, shorter answers)
</label>
</div>
<div class="context-section">
<h4>📄 Context Management</h4>
<div class="context-tabs">
@@ -80,9 +125,14 @@
</div>
<button id="toggleListening">Start Listening</button>
<button id="showOverlay">Show Overlay</button>
<button id="requestMicPermission">Request Microphone Permission</button>
<button id="grantTabAccess">Grant Tab Access</button>
<div id="micPermissionStatus" class="status-message"></div>
<div id="tabAccessStatus" class="status-message"></div>
<div id="transcript"></div>
<div id="aiResponse"></div>
</div>
<script src="sidepanel.js"></script>
</body>
</html>
</html>