feat: Push-to-talk on voice FAB button

- Hold FAB to open panel and start recording immediately
- Release to stop recording and send after 1s buffer
- Orange pulsing animation when PTT active
- PTT also works on record button inside modal
- Added stopRecordingAndSend exposed method
This commit is contained in:
2026-02-14 04:51:50 -06:00
parent 12a95c6206
commit f9b5ad3db6
4 changed files with 263 additions and 71 deletions

View File

@@ -1,4 +1,67 @@
{
"permissions": {
"allow": [
"Skill(playwright-cli)",
"Bash(playwright-cli close:*)",
"Bash(playwright-cli open:*)",
"Bash(playwright-cli screenshot:*)",
"WebFetch(domain:github.com)",
"Bash(playwright-cli goto:*)",
"Bash(playwright-cli snapshot:*)",
"Bash(playwright-cli mousewheel:*)",
"Bash(playwright-cli eval:*)",
"Bash(playwright-cli tab-list:*)",
"Bash(playwright-cli tab-select:*)",
"Bash(playwright-cli click:*)",
"Bash(playwright-cli press:*)",
"WebFetch(domain:gitea.nucleoriofrio.com)",
"Bash(dir \"C:\\\\Users\\\\jodar\\\\agent-ui\")",
"WebSearch",
"Bash(cmd /c \"bun --version\")",
"Bash(powershell -Command \"bun --version\")",
"Bash(C:Usersjodar.bunbinbun.exe create vite . --template vue-ts)",
"mcp__agent-ui___webmcp_get-token",
"mcp__agent-ui___webmcp_quitar-tool",
"mcp__agent-ui__localhost_3000-render_html",
"mcp__agent-ui__localhost_4100-navigate_to",
"mcp__agent-ui__localhost_4100-get_design_tokens",
"mcp__agent-ui__localhost_4100-set_theme_variable",
"mcp__agent-ui__localhost_4100-list_available_tools",
"mcp__agent-ui__localhost_4100-switch_theme",
"mcp__agent-ui__localhost_4100-set_default_theme",
"mcp__agent-ui__localhost_4100-save_theme",
"mcp__agent-ui___webmcp_browser-info",
"mcp__agent-ui__localhost_4100-render_vue_component",
"Bash(bun remove:*)",
"Bash(bun add:*)",
"mcp__agent-ui__localhost_4100-confetti",
"mcp__agent-ui__localhost_4100-get_current_page",
"mcp__agent-ui___webmcp_server-info",
"mcp__agent-ui__localhost_4100-toggle_pin_tool",
"mcp__agent-ui__localhost_4100-pin_tool",
"Bash(npx vue-tsc:*)",
"mcp__agent-ui__localhost_4100-activate_tool",
"mcp__agent-ui__localhost_4100-terminal_open",
"mcp__agent-ui__localhost_4100-terminal_move",
"mcp__agent-ui__localhost_4100-terminal_resize",
"mcp__agent-ui__localhost_4100-terminal_toggle",
"mcp__agent-ui__localhost_4100-terminal_close",
"mcp__agent-ui__localhost_4100-bubbleResponse",
"mcp__agent-ui__localhost_4100-notificar",
"mcp__agent-ui__localhost_4100-enviar_al_panel",
"mcp__agent-ui__localhost_4100-render_html",
"mcp__agent-ui__localhost_4100-load_vue_component",
"mcp__agent-ui__localhost_4100-page_refresh",
"WebFetch(domain:docs.anthropic.com)",
"mcp__agent-ui__z590_nucleoriofrio_com-bubbleResponse",
"Bash(git add:*)",
"Bash(git commit:*)"
]
},
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": [
"agent-ui"
],
"hooks": {
"UserPromptSubmit": [
{
@@ -125,65 +188,5 @@
]
}
]
},
"permissions": {
"allow": [
"Skill(playwright-cli)",
"Bash(playwright-cli close:*)",
"Bash(playwright-cli open:*)",
"Bash(playwright-cli screenshot:*)",
"WebFetch(domain:github.com)",
"Bash(playwright-cli goto:*)",
"Bash(playwright-cli snapshot:*)",
"Bash(playwright-cli mousewheel:*)",
"Bash(playwright-cli eval:*)",
"Bash(playwright-cli tab-list:*)",
"Bash(playwright-cli tab-select:*)",
"Bash(playwright-cli click:*)",
"Bash(playwright-cli press:*)",
"WebFetch(domain:gitea.nucleoriofrio.com)",
"Bash(dir \"C:\\\\Users\\\\jodar\\\\agent-ui\")",
"WebSearch",
"Bash(cmd /c \"bun --version\")",
"Bash(powershell -Command \"bun --version\")",
"Bash(C:Usersjodar.bunbinbun.exe create vite . --template vue-ts)",
"mcp__agent-ui___webmcp_get-token",
"mcp__agent-ui___webmcp_quitar-tool",
"mcp__agent-ui__localhost_3000-render_html",
"mcp__agent-ui__localhost_4100-navigate_to",
"mcp__agent-ui__localhost_4100-get_design_tokens",
"mcp__agent-ui__localhost_4100-set_theme_variable",
"mcp__agent-ui__localhost_4100-list_available_tools",
"mcp__agent-ui__localhost_4100-switch_theme",
"mcp__agent-ui__localhost_4100-set_default_theme",
"mcp__agent-ui__localhost_4100-save_theme",
"mcp__agent-ui___webmcp_browser-info",
"mcp__agent-ui__localhost_4100-render_vue_component",
"Bash(bun remove:*)",
"Bash(bun add:*)",
"mcp__agent-ui__localhost_4100-confetti",
"mcp__agent-ui__localhost_4100-get_current_page",
"mcp__agent-ui___webmcp_server-info",
"mcp__agent-ui__localhost_4100-toggle_pin_tool",
"mcp__agent-ui__localhost_4100-pin_tool",
"Bash(npx vue-tsc:*)",
"mcp__agent-ui__localhost_4100-activate_tool",
"mcp__agent-ui__localhost_4100-terminal_open",
"mcp__agent-ui__localhost_4100-terminal_move",
"mcp__agent-ui__localhost_4100-terminal_resize",
"mcp__agent-ui__localhost_4100-terminal_toggle",
"mcp__agent-ui__localhost_4100-terminal_close",
"mcp__agent-ui__localhost_4100-bubbleResponse",
"mcp__agent-ui__localhost_4100-notificar",
"mcp__agent-ui__localhost_4100-enviar_al_panel",
"mcp__agent-ui__localhost_4100-render_html",
"mcp__agent-ui__localhost_4100-load_vue_component",
"mcp__agent-ui__localhost_4100-page_refresh",
"WebFetch(domain:docs.anthropic.com)"
]
},
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": [
"agent-ui"
]
}
}