mirror of
https://github.com/rishikanthc/Scriberr.git
synced 2026-06-28 06:46:25 +00:00
refactor: restrict system audio to Chromium browsers only
Removed Firefox/Safari support as only Chromium browsers (Chrome, Edge, Brave) reliably support tab audio capture via getDisplayMedia API. Changes: - Added Chromium browser detection (Chrome, Edge, Brave, Chromium) - Show compatibility error dialog for non-Chromium browsers - Removed all Firefox-specific code and constraints - Simplified UI instructions (tab selection only) - Cleaner error messages focused on tab audio Tested working on: Chrome, Edge, Brave Not supported: Firefox, Safari, other browsers
This commit is contained in:
committed by
Rishikanth Chandrasekaran
parent
f5379464f6
commit
eb6192960f
1
.serena/.gitignore
vendored
Normal file
1
.serena/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/cache
|
||||
84
.serena/project.yml
Normal file
84
.serena/project.yml
Normal file
@@ -0,0 +1,84 @@
|
||||
# list of languages for which language servers are started; choose from:
|
||||
# al bash clojure cpp csharp csharp_omnisharp
|
||||
# dart elixir elm erlang fortran go
|
||||
# haskell java julia kotlin lua markdown
|
||||
# nix perl php python python_jedi r
|
||||
# rego ruby ruby_solargraph rust scala swift
|
||||
# terraform typescript typescript_vts yaml zig
|
||||
# Note:
|
||||
# - For C, use cpp
|
||||
# - For JavaScript, use typescript
|
||||
# Special requirements:
|
||||
# - csharp: Requires the presence of a .sln file in the project folder.
|
||||
# When using multiple languages, the first language server that supports a given file will be used for that file.
|
||||
# The first language is the default language and the respective language server will be used as a fallback.
|
||||
# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
|
||||
languages:
|
||||
- typescript
|
||||
|
||||
# the encoding used by text files in the project
|
||||
# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings
|
||||
encoding: "utf-8"
|
||||
|
||||
# whether to use the project's gitignore file to ignore files
|
||||
# Added on 2025-04-07
|
||||
ignore_all_files_in_gitignore: true
|
||||
|
||||
# list of additional paths to ignore
|
||||
# same syntax as gitignore, so you can use * and **
|
||||
# Was previously called `ignored_dirs`, please update your config if you are using that.
|
||||
# Added (renamed) on 2025-04-07
|
||||
ignored_paths: []
|
||||
|
||||
# whether the project is in read-only mode
|
||||
# If set to true, all editing tools will be disabled and attempts to use them will result in an error
|
||||
# Added on 2025-04-18
|
||||
read_only: false
|
||||
|
||||
# list of tool names to exclude. We recommend not excluding any tools, see the readme for more details.
|
||||
# Below is the complete list of tools for convenience.
|
||||
# To make sure you have the latest list of tools, and to view their descriptions,
|
||||
# execute `uv run scripts/print_tool_overview.py`.
|
||||
#
|
||||
# * `activate_project`: Activates a project by name.
|
||||
# * `check_onboarding_performed`: Checks whether project onboarding was already performed.
|
||||
# * `create_text_file`: Creates/overwrites a file in the project directory.
|
||||
# * `delete_lines`: Deletes a range of lines within a file.
|
||||
# * `delete_memory`: Deletes a memory from Serena's project-specific memory store.
|
||||
# * `execute_shell_command`: Executes a shell command.
|
||||
# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced.
|
||||
# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type).
|
||||
# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type).
|
||||
# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes.
|
||||
# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file.
|
||||
# * `initial_instructions`: Gets the initial instructions for the current project.
|
||||
# Should only be used in settings where the system prompt cannot be set,
|
||||
# e.g. in clients you have no control over, like Claude Desktop.
|
||||
# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol.
|
||||
# * `insert_at_line`: Inserts content at a given line in a file.
|
||||
# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol.
|
||||
# * `list_dir`: Lists files and directories in the given directory (optionally with recursion).
|
||||
# * `list_memories`: Lists memories in Serena's project-specific memory store.
|
||||
# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building).
|
||||
# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context).
|
||||
# * `read_file`: Reads a file within the project directory.
|
||||
# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store.
|
||||
# * `remove_project`: Removes a project from the Serena configuration.
|
||||
# * `replace_lines`: Replaces a range of lines within a file with new content.
|
||||
# * `replace_symbol_body`: Replaces the full definition of a symbol.
|
||||
# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen.
|
||||
# * `search_for_pattern`: Performs a search for a pattern in the project.
|
||||
# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase.
|
||||
# * `switch_modes`: Activates modes by providing a list of their names
|
||||
# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information.
|
||||
# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task.
|
||||
# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed.
|
||||
# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store.
|
||||
excluded_tools: []
|
||||
|
||||
# initial prompt for the project. It will always be given to the LLM upon activating the project
|
||||
# (contrary to the memories, which are loaded on demand).
|
||||
initial_prompt: ""
|
||||
|
||||
project_name: "Scriberr"
|
||||
included_optional_tools: []
|
||||
25
scriberr-icon-dark.svg
Normal file
25
scriberr-icon-dark.svg
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
id="svg"
|
||||
version="1.1"
|
||||
width="206.37398"
|
||||
height="159.8615"
|
||||
viewBox="0 0 206.37398 159.8615"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" /><defs>
|
||||
<linearGradient id="electricEmberGradient" x1="0%" y1="0%" x2="0%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFAB40" /> <stop offset="100%" stop-color="#FF3D00" /> </linearGradient>
|
||||
</defs>
|
||||
<g
|
||||
id="svgg"
|
||||
transform="translate(-107.36888,-120.07438)">
|
||||
<path
|
||||
id="path0"
|
||||
d="m 187.901,120.407 c -1.556,0.562 -2.927,2.21 -3.305,3.972 -0.385,1.797 -0.309,150.688 0.078,151.807 1.586,4.584 8.032,5.1 10.012,0.801 l 0.511,-1.108 -0.018,-75.488 c -0.021,-85.827 0.178,-76.914 -1.757,-78.818 -1.455,-1.432 -3.556,-1.876 -5.521,-1.166 m -27.043,10.013 c -1.845,6.84 -4.704,9.801 -11.102,11.499 -1.689,0.449 -1.694,0.441 0.769,1.225 4.994,1.59 7.181,3.361 8.831,7.149 0.141,0.322 0.368,0.85 0.506,1.172 0.138,0.322 0.486,1.377 0.775,2.344 0.288,0.966 0.551,1.845 0.585,1.953 0.033,0.107 0.102,0.063 0.153,-0.098 0.051,-0.161 0.252,-0.82 0.447,-1.465 2.163,-7.162 4.684,-9.731 11.142,-11.353 1.651,-0.415 1.598,-0.508 -0.65,-1.144 -5.915,-1.673 -8.628,-4.433 -10.338,-10.516 -0.619,-2.203 -0.713,-2.268 -1.118,-0.766 m 44.377,22.197 c -1.981,0.533 -3.437,2.074 -3.87,4.097 -0.153,0.716 -0.197,15.78 -0.155,52.954 l 0.06,51.953 0.516,0.977 c 2.187,4.139 8.399,3.58 9.749,-0.878 0.38,-1.253 0.385,-2.015 0.333,-53.126 l -0.052,-51.856 -0.541,-1.102 c -1.241,-2.527 -3.56,-3.686 -6.04,-3.019 m -59.803,1.909 c -0.472,1.577 -0.808,2.353 -1.596,3.69 -0.632,1.074 -2.597,2.288 -5.066,3.13 -0.752,0.257 -1.404,0.49 -1.449,0.518 -0.176,0.109 0.195,0.29 1.508,0.734 4.115,1.392 5.73,3.197 6.879,7.691 0.256,1.001 0.414,0.898 0.864,-0.562 1.314,-4.265 2.546,-5.569 6.677,-7.063 1.874,-0.678 1.873,-0.725 -0.026,-1.339 -3.895,-1.259 -5.201,-2.594 -6.542,-6.686 -0.749,-2.287 -0.602,-2.274 -1.249,-0.113 m 25.692,11.972 c -1.258,0.57 -2.155,1.464 -2.81,2.803 l -0.638,1.304 v 35.743 35.742 l 0.64,1.309 c 1.726,3.528 6.941,4.004 9.163,0.835 1.099,-1.568 1.048,0.386 0.991,-38.193 l -0.052,-35.436 -0.506,-1.074 c -1.301,-2.761 -4.364,-4.13 -6.788,-3.033 m 50.626,12.219 c -1.351,0.417 -2.455,1.415 -3.233,2.922 l -0.744,1.439 v 25.711 c 0,28.211 -0.058,26.786 1.169,28.48 2.244,3.098 7.148,2.738 8.89,-0.652 l 0.586,-1.14 0.052,-26.122 c 0.057,-29.218 0.151,-27.138 -1.297,-28.893 -1.197,-1.451 -3.733,-2.267 -5.423,-1.745 m -67.355,1.775 c -1.19,0.479 -2.281,1.502 -2.876,2.697 l -0.445,0.893 v 23.145 c 0,21.89 0.019,23.194 0.355,24.063 1.333,3.456 6.647,4.08 9.214,1.081 1.131,-1.321 1.096,-0.46 1.035,-25.437 l -0.057,-23.047 -0.584,-1.055 c -1.327,-2.395 -4.087,-3.368 -6.642,-2.34 m 126.855,5.866 c -3.938,1.899 -7.314,3.079 -13.086,4.572 -1.712,0.443 -6.264,1.174 -8.105,1.301 l -0.782,0.054 -0.05,10.797 c -0.04,8.542 0.001,10.811 0.195,10.868 0.135,0.039 1.52,0.217 3.078,0.395 3.108,0.356 7.363,1.308 10.547,2.361 1.128,0.373 2.358,0.777 2.734,0.897 0.946,0.301 4.032,1.611 6.224,2.641 1.517,0.713 1.884,0.819 2.148,0.619 0.176,-0.132 0.891,-0.733 1.589,-1.334 3.319,-2.859 7.347,-5.58 11.621,-7.848 1.594,-0.846 8.566,-3.868 8.924,-3.868 0.108,0 0.474,-0.127 0.812,-0.282 0.339,-0.154 1.802,-0.684 3.253,-1.176 5.637,-1.914 5.777,-1.892 -11.604,-1.821 l -13.654,0.056 -0.433,0.781 c -1.349,2.44 -4.922,2.644 -6.896,0.395 -0.339,-0.386 -0.617,-0.869 -0.617,-1.074 0,-0.205 -0.087,-0.426 -0.195,-0.493 -0.777,-0.48 0.149,-3.236 1.435,-4.27 2.242,-1.806 4.852,-1.319 6.407,1.194 l 0.393,0.635 h 14.023 c 16.607,0 16.348,0.037 11.531,-1.651 -1.128,-0.395 -2.562,-0.932 -3.187,-1.194 -0.624,-0.261 -1.255,-0.475 -1.401,-0.475 -0.146,0 -0.932,-0.308 -1.746,-0.684 -0.814,-0.376 -1.537,-0.684 -1.607,-0.684 -0.315,0 -7.333,-3.463 -8.536,-4.212 -4.515,-2.812 -5.666,-3.631 -7.824,-5.563 -2.596,-2.325 -2.39,-2.288 -5.191,-0.937 m -42.203,3.093 c -1.865,0.324 -3.176,1.361 -4.103,3.245 l -0.471,0.956 -0.058,11.621 c -0.062,12.636 -0.007,13.52 0.945,15.187 2.1,3.676 7.463,3.425 9.431,-0.44 l 0.497,-0.977 0.04,-12.598 c 0.044,-13.548 0.07,-13.144 -0.961,-14.84 -0.489,-0.804 -2.459,-2.151 -3.152,-2.155 -0.271,-10e-4 -0.668,-0.036 -0.883,-0.078 -0.215,-0.042 -0.793,-0.007 -1.285,0.079 m 12.172,13.625 0.051,12.842 h 2.343 2.344 l 0.05,-12.842 0.05,-12.842 h -2.444 -2.444 l 0.05,12.842 M 138.281,191.784 c -1.653,0.334 -3.035,1.559 -3.691,3.273 -0.558,1.458 -0.64,17.959 -0.098,19.8 1.283,4.364 7.836,4.672 10.105,0.475 0.669,-1.236 0.766,-18.371 0.115,-20.112 -1.035,-2.765 -3.425,-4.042 -6.431,-3.436 m -30.101,12.49 c -1.301,1.301 -0.992,3.503 0.605,4.318 1.011,0.515 18.367,0.62 19.059,0.115 0.483,-0.354 0.574,-4.311 0.111,-4.868 -0.243,-0.293 -1.161,-0.323 -9.643,-0.323 h -9.374 l -0.758,0.758"
|
||||
stroke="none"
|
||||
fill="url(#electricEmberGradient)"
|
||||
fill-rule="evenodd" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
25
scriberr-icon-light.svg
Normal file
25
scriberr-icon-light.svg
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
id="svg"
|
||||
version="1.1"
|
||||
width="206.37398"
|
||||
height="159.8615"
|
||||
viewBox="0 0 206.37398 159.8615"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" /><defs>
|
||||
<linearGradient id="electricLightGradient" x1="0%" y1="0%" x2="0%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FF6D00" /> <stop offset="100%" stop-color="#C62828" /> </linearGradient>
|
||||
</defs>
|
||||
<g
|
||||
id="svgg"
|
||||
transform="translate(-107.36888,-120.07438)">
|
||||
<path
|
||||
id="path0"
|
||||
d="m 187.901,120.407 c -1.556,0.562 -2.927,2.21 -3.305,3.972 -0.385,1.797 -0.309,150.688 0.078,151.807 1.586,4.584 8.032,5.1 10.012,0.801 l 0.511,-1.108 -0.018,-75.488 c -0.021,-85.827 0.178,-76.914 -1.757,-78.818 -1.455,-1.432 -3.556,-1.876 -5.521,-1.166 m -27.043,10.013 c -1.845,6.84 -4.704,9.801 -11.102,11.499 -1.689,0.449 -1.694,0.441 0.769,1.225 4.994,1.59 7.181,3.361 8.831,7.149 0.141,0.322 0.368,0.85 0.506,1.172 0.138,0.322 0.486,1.377 0.775,2.344 0.288,0.966 0.551,1.845 0.585,1.953 0.033,0.107 0.102,0.063 0.153,-0.098 0.051,-0.161 0.252,-0.82 0.447,-1.465 2.163,-7.162 4.684,-9.731 11.142,-11.353 1.651,-0.415 1.598,-0.508 -0.65,-1.144 -5.915,-1.673 -8.628,-4.433 -10.338,-10.516 -0.619,-2.203 -0.713,-2.268 -1.118,-0.766 m 44.377,22.197 c -1.981,0.533 -3.437,2.074 -3.87,4.097 -0.153,0.716 -0.197,15.78 -0.155,52.954 l 0.06,51.953 0.516,0.977 c 2.187,4.139 8.399,3.58 9.749,-0.878 0.38,-1.253 0.385,-2.015 0.333,-53.126 l -0.052,-51.856 -0.541,-1.102 c -1.241,-2.527 -3.56,-3.686 -6.04,-3.019 m -59.803,1.909 c -0.472,1.577 -0.808,2.353 -1.596,3.69 -0.632,1.074 -2.597,2.288 -5.066,3.13 -0.752,0.257 -1.404,0.49 -1.449,0.518 -0.176,0.109 0.195,0.29 1.508,0.734 4.115,1.392 5.73,3.197 6.879,7.691 0.256,1.001 0.414,0.898 0.864,-0.562 1.314,-4.265 2.546,-5.569 6.677,-7.063 1.874,-0.678 1.873,-0.725 -0.026,-1.339 -3.895,-1.259 -5.201,-2.594 -6.542,-6.686 -0.749,-2.287 -0.602,-2.274 -1.249,-0.113 m 25.692,11.972 c -1.258,0.57 -2.155,1.464 -2.81,2.803 l -0.638,1.304 v 35.743 35.742 l 0.64,1.309 c 1.726,3.528 6.941,4.004 9.163,0.835 1.099,-1.568 1.048,0.386 0.991,-38.193 l -0.052,-35.436 -0.506,-1.074 c -1.301,-2.761 -4.364,-4.13 -6.788,-3.033 m 50.626,12.219 c -1.351,0.417 -2.455,1.415 -3.233,2.922 l -0.744,1.439 v 25.711 c 0,28.211 -0.058,26.786 1.169,28.48 2.244,3.098 7.148,2.738 8.89,-0.652 l 0.586,-1.14 0.052,-26.122 c 0.057,-29.218 0.151,-27.138 -1.297,-28.893 -1.197,-1.451 -3.733,-2.267 -5.423,-1.745 m -67.355,1.775 c -1.19,0.479 -2.281,1.502 -2.876,2.697 l -0.445,0.893 v 23.145 c 0,21.89 0.019,23.194 0.355,24.063 1.333,3.456 6.647,4.08 9.214,1.081 1.131,-1.321 1.096,-0.46 1.035,-25.437 l -0.057,-23.047 -0.584,-1.055 c -1.327,-2.395 -4.087,-3.368 -6.642,-2.34 m 126.855,5.866 c -3.938,1.899 -7.314,3.079 -13.086,4.572 -1.712,0.443 -6.264,1.174 -8.105,1.301 l -0.782,0.054 -0.05,10.797 c -0.04,8.542 0.001,10.811 0.195,10.868 0.135,0.039 1.52,0.217 3.078,0.395 3.108,0.356 7.363,1.308 10.547,2.361 1.128,0.373 2.358,0.777 2.734,0.897 0.946,0.301 4.032,1.611 6.224,2.641 1.517,0.713 1.884,0.819 2.148,0.619 0.176,-0.132 0.891,-0.733 1.589,-1.334 3.319,-2.859 7.347,-5.58 11.621,-7.848 1.594,-0.846 8.566,-3.868 8.924,-3.868 0.108,0 0.474,-0.127 0.812,-0.282 0.339,-0.154 1.802,-0.684 3.253,-1.176 5.637,-1.914 5.777,-1.892 -11.604,-1.821 l -13.654,0.056 -0.433,0.781 c -1.349,2.44 -4.922,2.644 -6.896,0.395 -0.339,-0.386 -0.617,-0.869 -0.617,-1.074 0,-0.205 -0.087,-0.426 -0.195,-0.493 -0.777,-0.48 0.149,-3.236 1.435,-4.27 2.242,-1.806 4.852,-1.319 6.407,1.194 l 0.393,0.635 h 14.023 c 16.607,0 16.348,0.037 11.531,-1.651 -1.128,-0.395 -2.562,-0.932 -3.187,-1.194 -0.624,-0.261 -1.255,-0.475 -1.401,-0.475 -0.146,0 -0.932,-0.308 -1.746,-0.684 -0.814,-0.376 -1.537,-0.684 -1.607,-0.684 -0.315,0 -7.333,-3.463 -8.536,-4.212 -4.515,-2.812 -5.666,-3.631 -7.824,-5.563 -2.596,-2.325 -2.39,-2.288 -5.191,-0.937 m -42.203,3.093 c -1.865,0.324 -3.176,1.361 -4.103,3.245 l -0.471,0.956 -0.058,11.621 c -0.062,12.636 -0.007,13.52 0.945,15.187 2.1,3.676 7.463,3.425 9.431,-0.44 l 0.497,-0.977 0.04,-12.598 c 0.044,-13.548 0.07,-13.144 -0.961,-14.84 -0.489,-0.804 -2.459,-2.151 -3.152,-2.155 -0.271,-10e-4 -0.668,-0.036 -0.883,-0.078 -0.215,-0.042 -0.793,-0.007 -1.285,0.079 m 12.172,13.625 0.051,12.842 h 2.343 2.344 l 0.05,-12.842 0.05,-12.842 h -2.444 -2.444 l 0.05,12.842 M 138.281,191.784 c -1.653,0.334 -3.035,1.559 -3.691,3.273 -0.558,1.458 -0.64,17.959 -0.098,19.8 1.283,4.364 7.836,4.672 10.105,0.475 0.669,-1.236 0.766,-18.371 0.115,-20.112 -1.035,-2.765 -3.425,-4.042 -6.431,-3.436 m -30.101,12.49 c -1.301,1.301 -0.992,3.503 0.605,4.318 1.011,0.515 18.367,0.62 19.059,0.115 0.483,-0.354 0.574,-4.311 0.111,-4.868 -0.243,-0.293 -1.161,-0.323 -9.643,-0.323 h -9.374 l -0.758,0.758"
|
||||
stroke="none"
|
||||
fill="url(#electricLightGradient)"
|
||||
fill-rule="evenodd" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
52
scriberr_text_logo.svg
Normal file
52
scriberr_text_logo.svg
Normal file
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.0"
|
||||
width="2269.6284pt"
|
||||
height="424.95316pt"
|
||||
viewBox="0 0 2269.6284 424.95316"
|
||||
preserveAspectRatio="xMidYMid"
|
||||
id="svg11"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs11" />
|
||||
<g
|
||||
transform="matrix(0.1,0,0,-0.1,-3,1001)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g11">
|
||||
<path
|
||||
d="m 10720,9989 c -52,-22 -82,-61 -110,-142 -20,-56 -20,-82 -18,-1985 l 3,-1929 30,-48 c 43,-70 98,-96 191,-93 92,4 140,34 178,109 25,51 26,60 26,228 l 1,176 26,-35 c 49,-65 218,-226 281,-269 82,-55 239,-133 322,-159 153,-49 267,-65 445,-66 256,0 458,42 661,139 369,177 647,541 740,970 80,364 38,792 -103,1070 -14,28 -35,68 -46,90 -61,119 -203,292 -325,394 -284,237 -652,348 -1044,313 -238,-22 -420,-84 -618,-214 -77,-50 -212,-173 -282,-255 l -27,-32 -3,792 c -3,671 -5,797 -18,822 -55,113 -100,145 -202,145 -41,-1 -79,-8 -108,-21 z m 1506,-1640 c 136,-24 342,-107 433,-176 62,-46 162,-146 194,-193 17,-25 37,-51 44,-59 34,-34 124,-242 148,-341 50,-201 45,-485 -11,-683 -92,-329 -359,-594 -690,-685 -238,-66 -519,-44 -740,58 -156,72 -267,161 -367,295 -137,184 -205,392 -214,656 -6,169 10,291 58,432 73,213 168,360 309,480 115,96 332,192 500,220 53,9 279,7 336,-4 z"
|
||||
id="path1" />
|
||||
<path
|
||||
d="m 9230,9947 c -100,-35 -172,-94 -211,-175 -19,-38 -23,-64 -23,-137 0,-78 4,-98 28,-146 36,-75 78,-116 156,-153 57,-27 75,-31 145,-30 242,2 385,207 315,448 -16,53 -100,140 -168,173 -63,31 -183,41 -242,20 z"
|
||||
id="path2" />
|
||||
<path
|
||||
d="M 1355,9764 C 827,9702 488,9526 286,9208 89,8897 84,8460 276,8170 c 93,-141 236,-261 419,-353 195,-98 516,-198 975,-303 55,-12 318,-100 377,-125 83,-35 229,-128 277,-176 114,-113 158,-219 157,-384 0,-165 -41,-268 -155,-388 -107,-111 -275,-194 -485,-238 -113,-24 -147,-26 -326,-26 -216,0 -341,15 -506,58 -215,56 -422,151 -588,270 -57,41 -120,80 -139,86 -119,39 -251,-60 -252,-189 0,-124 94,-227 324,-354 378,-208 747,-289 1251,-275 347,10 551,57 793,184 122,63 191,113 279,201 126,123 193,240 250,432 35,117 43,326 18,455 -37,196 -115,344 -247,471 -194,186 -430,297 -868,410 -576,148 -695,183 -824,244 -119,55 -193,105 -259,174 -95,98 -137,209 -137,365 0,107 12,158 62,259 69,138 171,222 383,313 36,15 170,49 256,64 127,23 414,20 564,-5 219,-36 433,-114 617,-226 73,-45 113,-54 174,-43 60,11 106,42 141,94 39,57 38,142 -1,209 -34,58 -82,93 -236,174 -283,149 -625,224 -1010,220 -96,0 -188,-3 -205,-4 z"
|
||||
id="path3" />
|
||||
<path
|
||||
d="m 22440,9310 c -82,-26 -136,-87 -180,-203 -56,-145 -97,-195 -217,-265 -168,-98 -307,-122 -590,-102 -354,25 -604,-28 -833,-177 -289,-189 -483,-516 -568,-958 -67,-353 -74,-463 -70,-1125 4,-556 4,-554 67,-617 48,-48 85,-65 158,-71 80,-6 158,18 195,61 59,68 60,77 63,796 2,384 8,695 15,751 39,346 112,552 242,690 165,175 410,258 687,231 479,-45 843,49 1081,280 63,61 150,173 150,193 0,6 6,22 13,36 74,144 95,305 49,379 -55,89 -167,132 -262,101 z"
|
||||
id="path4" />
|
||||
<path
|
||||
d="m 20311,8814 c -63,-17 -184,-72 -236,-107 -61,-42 -160,-141 -216,-217 -71,-98 -147,-256 -196,-410 -26,-84 -69,-286 -83,-400 -6,-40 -15,-79 -20,-84 -6,-6 -10,-39 -10,-74 0,-56 -5,-72 -37,-126 -53,-88 -94,-137 -186,-218 -85,-75 -90,-84 -75,-148 38,-168 52,-637 22,-756 -12,-48 -14,-68 -6,-76 13,-13 10,-24 57,152 20,74 47,171 60,215 13,44 40,134 59,199 20,65 36,123 36,128 0,6 -9,21 -20,35 -27,35 -26,78 5,108 29,30 64,32 97,5 39,-30 42,-78 7,-112 -15,-15 -34,-28 -43,-28 -9,0 -18,-12 -22,-27 -9,-40 -32,-120 -51,-178 -9,-27 -21,-72 -28,-100 -7,-27 -18,-63 -24,-80 -34,-97 -92,-308 -87,-321 8,-20 35,-18 43,4 7,20 151,241 169,259 7,7 33,43 58,80 25,38 79,115 121,172 l 75,105 v 230 c 0,357 42,658 136,991 35,123 120,292 201,400 102,134 208,220 374,302 76,37 138,71 138,74 3,22 -240,24 -318,3 z"
|
||||
id="path5" />
|
||||
<path
|
||||
d="m 4865,8749 c -256,-26 -463,-94 -672,-221 -161,-97 -355,-295 -455,-463 -132,-223 -195,-450 -204,-745 -9,-291 36,-527 141,-740 128,-260 293,-444 525,-586 175,-106 280,-146 500,-191 104,-21 155,-26 305,-27 438,-2 774,123 1037,387 114,114 133,147 132,227 0,95 -35,152 -119,191 -54,25 -127,24 -181,-3 -24,-11 -85,-64 -136,-116 -138,-140 -291,-222 -493,-263 -424,-85 -843,75 -1069,409 -121,179 -182,368 -193,599 -8,156 8,277 54,418 51,160 102,260 174,346 22,26 39,50 39,53 0,8 20,27 105,102 111,97 292,180 468,215 252,49 539,-1 753,-131 69,-43 98,-66 209,-171 87,-82 122,-101 194,-102 127,-2 213,96 198,225 -9,73 -33,113 -121,202 -185,186 -428,313 -699,365 -124,24 -362,34 -492,20 z"
|
||||
id="path6" />
|
||||
<path
|
||||
d="m 8213,8749 c -185,-17 -377,-80 -528,-174 -56,-35 -157,-126 -230,-208 -19,-21 -71,-102 -78,-119 -17,-47 -24,-4 -26,150 -1,92 -6,183 -11,203 -25,93 -101,149 -202,149 -111,0 -176,-46 -208,-148 -21,-67 -21,-72 -18,-1357 l 3,-1291 26,-49 c 34,-66 95,-105 178,-112 112,-10 196,40 232,140 18,49 19,88 19,732 v 680 l 25,135 c 32,175 49,247 58,256 4,4 7,14 7,22 0,28 77,169 133,241 58,76 157,162 242,210 102,58 284,104 464,117 102,8 162,28 204,69 44,43 60,91 55,165 -6,80 -42,134 -111,165 -66,30 -118,35 -234,24 z"
|
||||
id="path7" />
|
||||
<path
|
||||
d="m 15405,8754 c -238,-25 -464,-99 -658,-216 -72,-44 -203,-156 -282,-241 -120,-130 -238,-330 -293,-497 -52,-156 -89,-440 -77,-589 3,-42 8,-107 11,-146 6,-77 42,-238 74,-329 11,-32 42,-101 70,-153 168,-320 444,-563 794,-703 260,-103 662,-144 1031,-105 269,29 484,82 738,184 245,98 508,273 690,458 201,205 315,362 505,693 30,52 64,111 75,130 95,166 213,385 228,424 7,15 23,49 37,75 14,25 32,60 40,76 21,40 104,159 114,163 4,2 8,8 8,13 0,6 39,51 88,100 157,163 266,205 638,245 61,7 125,54 159,115 24,45 27,59 22,107 -8,74 -46,128 -117,166 -50,27 -63,30 -150,29 -244,-1 -511,-91 -704,-237 -116,-88 -245,-231 -358,-396 -64,-94 -216,-358 -244,-425 -7,-19 -38,-76 -67,-127 -49,-83 -111,-195 -141,-252 -63,-120 -165,-272 -281,-421 -44,-56 -198,-203 -290,-277 -254,-203 -600,-343 -995,-404 -81,-13 -175,-18 -320,-19 -208,0 -268,7 -430,51 -336,92 -595,320 -710,626 -21,57 -60,202 -60,225 0,11 180,13 1057,13 1060,0 1149,3 1213,35 47,24 110,98 131,155 18,47 20,69 16,150 -12,210 -98,486 -203,652 -15,23 -33,54 -40,68 -41,79 -234,270 -359,356 -123,85 -318,164 -490,199 -127,26 -359,40 -470,29 z m 331,-404 c 374,-75 609,-279 741,-643 8,-23 25,-90 38,-149 l 23,-108 h -995 -996 l 7,52 c 7,51 45,194 68,253 24,64 81,175 89,175 5,0 9,5 9,11 0,12 52,82 102,137 109,121 332,238 528,277 101,20 272,18 386,-5 z"
|
||||
id="path8" />
|
||||
<path
|
||||
d="m 9234,8739 c -53,-15 -107,-77 -127,-144 -17,-56 -18,-139 -15,-1346 l 3,-1285 30,-60 c 26,-51 38,-63 84,-86 136,-69 296,-7 330,128 8,30 11,425 11,1313 0,1232 -1,1272 -20,1333 -26,84 -43,106 -104,134 -54,25 -132,31 -192,13 z"
|
||||
id="path9" />
|
||||
<path
|
||||
d="m 17865,8736 c -58,-25 -101,-77 -125,-150 -21,-64 -23,-85 -22,-315 0,-342 1,-381 10,-381 7,0 177,236 198,275 6,11 25,40 43,65 17,25 42,61 55,80 13,19 44,59 69,89 57,66 77,108 77,158 0,43 -32,119 -58,140 -61,49 -181,68 -247,39 z"
|
||||
id="path10" />
|
||||
<path
|
||||
d="m 18150,6950 c -147,-247 -279,-434 -365,-520 l -45,-45 v -196 c 0,-220 10,-269 64,-328 87,-94 258,-95 339,-1 57,67 58,75 55,645 l -3,519 z"
|
||||
id="path11" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.0 KiB |
@@ -73,15 +73,33 @@ export function SystemAudioRecorder({
|
||||
|
||||
const { toast } = useToast();
|
||||
|
||||
// Browser compatibility check
|
||||
// Browser compatibility check - only Chromium browsers supported
|
||||
const checkCompatibility = (): { supported: boolean; error?: string } => {
|
||||
// Check if browser supports getDisplayMedia at all
|
||||
if (!navigator.mediaDevices?.getDisplayMedia) {
|
||||
return {
|
||||
supported: false,
|
||||
error:
|
||||
"Your browser doesn't support system audio capture. Please use Chrome, Edge, or Firefox.",
|
||||
"Your browser doesn't support screen capture. Please use Chrome, Edge, or Brave.",
|
||||
};
|
||||
}
|
||||
|
||||
// Check if it's a Chromium-based browser
|
||||
const userAgent = navigator.userAgent.toLowerCase();
|
||||
const isChromium = userAgent.includes('chrome') ||
|
||||
userAgent.includes('chromium') ||
|
||||
userAgent.includes('edg/') ||
|
||||
userAgent.includes('brave');
|
||||
|
||||
if (!isChromium) {
|
||||
return {
|
||||
supported: false,
|
||||
error:
|
||||
"System audio recording is only supported on Chromium-based browsers (Chrome, Edge, Brave). " +
|
||||
"Please switch to one of these browsers to use this feature.",
|
||||
};
|
||||
}
|
||||
|
||||
return { supported: true };
|
||||
};
|
||||
|
||||
@@ -247,6 +265,13 @@ export function SystemAudioRecorder({
|
||||
},
|
||||
});
|
||||
|
||||
// Debug: Log what tracks we got
|
||||
console.log("Display stream tracks:", {
|
||||
video: displayStream.getVideoTracks().length,
|
||||
audio: displayStream.getAudioTracks().length,
|
||||
allTracks: displayStream.getTracks().map(t => ({ kind: t.kind, label: t.label }))
|
||||
});
|
||||
|
||||
// Stop the video track immediately since we only want audio
|
||||
const videoTrack = displayStream.getVideoTracks()[0];
|
||||
if (videoTrack) {
|
||||
@@ -257,7 +282,15 @@ export function SystemAudioRecorder({
|
||||
// Create a new MediaStream with only audio tracks
|
||||
const audioTracks = displayStream.getAudioTracks();
|
||||
if (audioTracks.length === 0) {
|
||||
throw new Error("NotFoundError");
|
||||
alert(
|
||||
"No audio track found!\n\n" +
|
||||
"Make sure to:\n" +
|
||||
"1. Select a Chrome TAB (not window or screen)\n" +
|
||||
"2. Check the 'Share tab audio' checkbox\n" +
|
||||
"3. Choose a tab that's actually playing audio"
|
||||
);
|
||||
cleanupStreams();
|
||||
return;
|
||||
}
|
||||
const sysStream = new MediaStream(audioTracks);
|
||||
|
||||
@@ -441,7 +474,12 @@ export function SystemAudioRecorder({
|
||||
// Render browser compatibility error
|
||||
if (compatibilityError) {
|
||||
return (
|
||||
<Dialog open={isOpen} onOpenChange={handleClose}>
|
||||
<Dialog open={isOpen} onOpenChange={(open) => {
|
||||
if (!open) {
|
||||
setCompatibilityError(null);
|
||||
onClose();
|
||||
}
|
||||
}}>
|
||||
<DialogContent className="sm:max-w-[600px] bg-white dark:bg-carbon-800 border-carbon-200 dark:border-carbon-700">
|
||||
<DialogHeader>
|
||||
<DialogTitle className="flex items-center gap-2 text-carbon-900 dark:text-carbon-100">
|
||||
@@ -470,7 +508,10 @@ export function SystemAudioRecorder({
|
||||
</Card>
|
||||
|
||||
<div className="flex justify-end">
|
||||
<Button variant="outline" onClick={handleClose}>
|
||||
<Button variant="outline" onClick={() => {
|
||||
setCompatibilityError(null);
|
||||
onClose();
|
||||
}}>
|
||||
Close
|
||||
</Button>
|
||||
</div>
|
||||
@@ -725,19 +766,22 @@ export function SystemAudioRecorder({
|
||||
<span className="font-bold text-cyan-600 flex-shrink-0">
|
||||
2.
|
||||
</span>
|
||||
<div className="flex-1">
|
||||
<div className="mb-2">
|
||||
<strong className="text-amber-700 dark:text-amber-500">Chrome/Edge:</strong> Select "Chrome Tab", choose your tab, and check "Share tab audio"
|
||||
</div>
|
||||
<div>
|
||||
<strong className="text-amber-700 dark:text-amber-500">Firefox:</strong> Select "Application Window", choose the window with audio (e.g., browser window), and check "Share system audio"
|
||||
</div>
|
||||
</div>
|
||||
<span>
|
||||
Select a <strong>Chrome Tab</strong> from the browser picker (not window or screen)
|
||||
</span>
|
||||
</li>
|
||||
<li className="flex gap-3">
|
||||
<span className="font-bold text-cyan-600 flex-shrink-0">
|
||||
3.
|
||||
</span>
|
||||
<span>
|
||||
<strong>Check "Share tab audio"</strong> checkbox at the bottom
|
||||
</span>
|
||||
</li>
|
||||
<li className="flex gap-3">
|
||||
<span className="font-bold text-cyan-600 flex-shrink-0">
|
||||
4.
|
||||
</span>
|
||||
<span>Allow microphone access when prompted (optional)</span>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
Reference in New Issue
Block a user