diff --git a/.cspell.json b/.cspell.json new file mode 100644 index 0000000..936fa74 --- /dev/null +++ b/.cspell.json @@ -0,0 +1,30 @@ +{ + "language": "en-GB", + "allowCompoundWords": true, + "dictionaries": [ + "en-gb", + "companies", + "softwareTerms", + "typescript", + "node", + "html", + "css", + "bash" + ], + "ignoreRegExpList": [ + "```[\\s\\S]*?```", // Ignores multi-line code blocks in Markdown + "`[^`\n]+`" // Ignores inline code blocks + ], + "ignoreWords": [ + "nhcarrigan", + "fiverr", + "misgendering", + "neurodiversity", + "recused", + "neurodivergent", + "hyfetch", + "technomancer", + "Wofi", + "Dunst", + ] +} diff --git a/astro.config.mjs b/astro.config.mjs index 9fc44e7..f1ba930 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -63,7 +63,8 @@ export default defineConfig({ } ], customCss: [ - "./src/styles/style.css" + "./src/styles/style.css", + "./src/fonts/font-face.css" ] })] }); diff --git a/package.json b/package.json index a3a3e8b..f18f0ef 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "scripts": { "dev": "astro dev", "start": "astro dev", + "lint": "cspell src/content/docs", "build": "astro build", "preview": "astro preview", "astro": "astro" @@ -14,5 +15,8 @@ "@astrojs/starlight": "^0.26.1", "astro": "^4.14.5", "typescript": "^5.5.4" + }, + "devDependencies": { + "cspell": "8.17.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85a175d..e317f33 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,10 @@ importers: typescript: specifier: ^5.5.4 version: 5.5.4 + devDependencies: + cspell: + specifier: 8.17.0 + version: 8.17.0 packages: @@ -170,6 +174,219 @@ packages: resolution: {integrity: sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==} engines: {node: '>=6.9.0'} + '@cspell/cspell-bundled-dicts@8.17.0': + resolution: {integrity: sha512-kJfHW+/BkhnP/FUQ8Tl1Eb8ZaZRozw1i+UaD0RVxNOlRGev4Lnyq5nszJwmc8NSBwAS1wmq7OTHvnOvJ1YE0og==} + engines: {node: '>=18'} + + '@cspell/cspell-json-reporter@8.17.0': + resolution: {integrity: sha512-AJZIjLi/rwOHjTZMQMoGOBht1ERFHUUreTFIOTi4oZCBundnk2bXUteIQthXUCgHL2JSiS9yboUWoAIrekz7Yg==} + engines: {node: '>=18'} + + '@cspell/cspell-pipe@8.17.0': + resolution: {integrity: sha512-2wdF4OfrUtY8oJvLzJdc5Z1qbVUYC706jmTq/48jTeMWl0tfUyb7JslZrnCxYxQmX3EzQhWyoj4lPfgjbxIvbg==} + engines: {node: '>=18'} + + '@cspell/cspell-resolver@8.17.0': + resolution: {integrity: sha512-UfvCjFqCUIucqdEWAl1MuezaRS4l3NumWFlaavVdGhdyf5nL+ydmFvrp5YXGQdBzMYnpzwQOwgMU3Jt5xXgFAQ==} + engines: {node: '>=18'} + + '@cspell/cspell-service-bus@8.17.0': + resolution: {integrity: sha512-ureBVt/fa5IHooFBfNpZUyTzqMN7aaPhXiGrb1oIfroNZaqiXG5WbvwAeyDrrk2KUa7Fl74/Yr2sOOdT3i7WSg==} + engines: {node: '>=18'} + + '@cspell/cspell-types@8.17.0': + resolution: {integrity: sha512-irrADI/GvabVTD9LRP/8mIH/bdoP7AOBgO7DVgNB+fZHDyJa/omzJjjie5kAZuen0l/3TrOadl3F+K0y/9AZ5A==} + engines: {node: '>=18'} + + '@cspell/dict-ada@4.0.5': + resolution: {integrity: sha512-6/RtZ/a+lhFVmrx/B7bfP7rzC4yjEYe8o74EybXcvu4Oue6J4Ey2WSYj96iuodloj1LWrkNCQyX5h4Pmcj0Iag==} + + '@cspell/dict-al@1.0.3': + resolution: {integrity: sha512-V1HClwlfU/qwSq2Kt+MkqRAsonNu3mxjSCDyGRecdLGIHmh7yeEeaxqRiO/VZ4KP+eVSiSIlbwrb5YNFfxYZbw==} + + '@cspell/dict-aws@4.0.7': + resolution: {integrity: sha512-PoaPpa2NXtSkhGIMIKhsJUXB6UbtTt6Ao3x9JdU9kn7fRZkwD4RjHDGqulucIOz7KeEX/dNRafap6oK9xHe4RA==} + + '@cspell/dict-bash@4.1.8': + resolution: {integrity: sha512-I2CM2pTNthQwW069lKcrVxchJGMVQBzru2ygsHCwgidXRnJL/NTjAPOFTxN58Jc1bf7THWghfEDyKX/oyfc0yg==} + + '@cspell/dict-companies@3.1.8': + resolution: {integrity: sha512-4DVPBwEPWa97g3bgg80i3orGeOGnOiJ7tj3c7n6y7FmqkEgyXcnpxOq0n0HWzwRrwrJp9KIJbtMzSAEynIwyNw==} + + '@cspell/dict-cpp@6.0.2': + resolution: {integrity: sha512-yw5eejWvY4bAnc6LUA44m4WsFwlmgPt2uMSnO7QViGMBDuoeopMma4z9XYvs4lSjTi8fIJs/A1YDfM9AVzb8eg==} + + '@cspell/dict-cryptocurrencies@5.0.3': + resolution: {integrity: sha512-bl5q+Mk+T3xOZ12+FG37dB30GDxStza49Rmoax95n37MTLksk9wBo1ICOlPJ6PnDUSyeuv4SIVKgRKMKkJJglA==} + + '@cspell/dict-csharp@4.0.5': + resolution: {integrity: sha512-c/sFnNgtRwRJxtC3JHKkyOm+U3/sUrltFeNwml9VsxKBHVmvlg4tk4ar58PdpW9/zTlGUkWi2i85//DN1EsUCA==} + + '@cspell/dict-css@4.0.16': + resolution: {integrity: sha512-70qu7L9z/JR6QLyJPk38fNTKitlIHnfunx0wjpWQUQ8/jGADIhMCrz6hInBjqPNdtGpYm8d1dNFyF8taEkOgrQ==} + + '@cspell/dict-dart@2.2.4': + resolution: {integrity: sha512-of/cVuUIZZK/+iqefGln8G3bVpfyN6ZtH+LyLkHMoR5tEj+2vtilGNk9ngwyR8L4lEqbKuzSkOxgfVjsXf5PsQ==} + + '@cspell/dict-data-science@2.0.5': + resolution: {integrity: sha512-nNSILXmhSJox9/QoXICPQgm8q5PbiSQP4afpbkBqPi/u/b3K9MbNH5HvOOa6230gxcGdbZ9Argl2hY/U8siBlg==} + + '@cspell/dict-django@4.1.3': + resolution: {integrity: sha512-yBspeL3roJlO0a1vKKNaWABURuHdHZ9b1L8d3AukX0AsBy9snSggc8xCavPmSzNfeMDXbH+1lgQiYBd3IW03fg==} + + '@cspell/dict-docker@1.1.11': + resolution: {integrity: sha512-s0Yhb16/R+UT1y727ekbR/itWQF3Qz275DR1ahOa66wYtPjHUXmhM3B/LT3aPaX+hD6AWmK23v57SuyfYHUjsw==} + + '@cspell/dict-dotnet@5.0.8': + resolution: {integrity: sha512-MD8CmMgMEdJAIPl2Py3iqrx3B708MbCIXAuOeZ0Mzzb8YmLmiisY7QEYSZPg08D7xuwARycP0Ki+bb0GAkFSqg==} + + '@cspell/dict-elixir@4.0.6': + resolution: {integrity: sha512-TfqSTxMHZ2jhiqnXlVKM0bUADtCvwKQv2XZL/DI0rx3doG8mEMS8SGPOmiyyGkHpR/pGOq18AFH3BEm4lViHIw==} + + '@cspell/dict-en-common-misspellings@2.0.7': + resolution: {integrity: sha512-qNFo3G4wyabcwnM+hDrMYKN9vNVg/k9QkhqSlSst6pULjdvPyPs1mqz1689xO/v9t8e6sR4IKc3CgUXDMTYOpA==} + + '@cspell/dict-en-gb@1.1.33': + resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} + + '@cspell/dict-en_us@4.3.28': + resolution: {integrity: sha512-BN1PME7cOl7DXRQJ92pEd1f0Xk5sqjcDfThDGkKcsgwbSOY7KnTc/czBW6Pr3WXIchIm6cT12KEfjNqx7U7Rrw==} + + '@cspell/dict-filetypes@3.0.9': + resolution: {integrity: sha512-U7ycC1cE32A5aEgwzp/iE0TVabonUFnVt+Ygbf6NsIWqEuFWZgZChC7gfztA4T1fpuj602nFdp7eOnTWKORsnQ==} + + '@cspell/dict-flutter@1.0.3': + resolution: {integrity: sha512-52C9aUEU22ptpgYh6gQyIdA4MP6NPwzbEqndfgPh3Sra191/kgs7CVqXiO1qbtZa9gnYHUoVApkoxRE7mrXHfg==} + + '@cspell/dict-fonts@4.0.3': + resolution: {integrity: sha512-sPd17kV5qgYXLteuHFPn5mbp/oCHKgitNfsZLFC3W2fWEgZlhg4hK+UGig3KzrYhhvQ8wBnmZrAQm0TFKCKzsA==} + + '@cspell/dict-fsharp@1.0.4': + resolution: {integrity: sha512-G5wk0o1qyHUNi9nVgdE1h5wl5ylq7pcBjX8vhjHcO4XBq20D5eMoXjwqMo/+szKAqzJ+WV3BgAL50akLKrT9Rw==} + + '@cspell/dict-fullstack@3.2.3': + resolution: {integrity: sha512-62PbndIyQPH11mAv0PyiyT0vbwD0AXEocPpHlCHzfb5v9SspzCCbzQ/LIBiFmyRa+q5LMW35CnSVu6OXdT+LKg==} + + '@cspell/dict-gaming-terms@1.0.9': + resolution: {integrity: sha512-AVIrZt3YiUnxsUzzGYTZ1XqgtkgwGEO0LWIlEf+SiDUEVLtv4CYmmyXFQ+WXDN0pyJ0wOwDazWrP0Cu7avYQmQ==} + + '@cspell/dict-git@3.0.3': + resolution: {integrity: sha512-LSxB+psZ0qoj83GkyjeEH/ZViyVsGEF/A6BAo8Nqc0w0HjD2qX/QR4sfA6JHUgQ3Yi/ccxdK7xNIo67L2ScW5A==} + + '@cspell/dict-golang@6.0.17': + resolution: {integrity: sha512-uDDLEJ/cHdLiqPw4+5BnmIo2i/TSR+uDvYd6JlBjTmjBKpOCyvUgYRztH7nv5e7virsN5WDiUWah4/ATQGz4Pw==} + + '@cspell/dict-google@1.0.4': + resolution: {integrity: sha512-JThUT9eiguCja1mHHLwYESgxkhk17Gv7P3b1S7ZJzXw86QyVHPrbpVoMpozHk0C9o+Ym764B7gZGKmw9uMGduQ==} + + '@cspell/dict-haskell@4.0.4': + resolution: {integrity: sha512-EwQsedEEnND/vY6tqRfg9y7tsnZdxNqOxLXSXTsFA6JRhUlr8Qs88iUUAfsUzWc4nNmmzQH2UbtT25ooG9x4nA==} + + '@cspell/dict-html-symbol-entities@4.0.3': + resolution: {integrity: sha512-aABXX7dMLNFdSE8aY844X4+hvfK7977sOWgZXo4MTGAmOzR8524fjbJPswIBK7GaD3+SgFZ2yP2o0CFvXDGF+A==} + + '@cspell/dict-html@4.0.10': + resolution: {integrity: sha512-I9uRAcdtHbh0wEtYZlgF0TTcgH0xaw1B54G2CW+tx4vHUwlde/+JBOfIzird4+WcMv4smZOfw+qHf7puFUbI5g==} + + '@cspell/dict-java@5.0.10': + resolution: {integrity: sha512-pVNcOnmoGiNL8GSVq4WbX/Vs2FGS0Nej+1aEeGuUY9CU14X8yAVCG+oih5ZoLt1jaR8YfR8byUF8wdp4qG4XIw==} + + '@cspell/dict-julia@1.0.4': + resolution: {integrity: sha512-bFVgNX35MD3kZRbXbJVzdnN7OuEqmQXGpdOi9jzB40TSgBTlJWA4nxeAKV4CPCZxNRUGnLH0p05T/AD7Aom9/w==} + + '@cspell/dict-k8s@1.0.9': + resolution: {integrity: sha512-Q7GELSQIzo+BERl2ya/nBEnZeQC+zJP19SN1pI6gqDYraM51uYJacbbcWLYYO2Y+5joDjNt/sd/lJtLaQwoSlA==} + + '@cspell/dict-latex@4.0.3': + resolution: {integrity: sha512-2KXBt9fSpymYHxHfvhUpjUFyzrmN4c4P8mwIzweLyvqntBT3k0YGZJSriOdjfUjwSygrfEwiuPI1EMrvgrOMJw==} + + '@cspell/dict-lorem-ipsum@4.0.3': + resolution: {integrity: sha512-WFpDi/PDYHXft6p0eCXuYnn7mzMEQLVeqpO+wHSUd+kz5ADusZ4cpslAA4wUZJstF1/1kMCQCZM6HLZic9bT8A==} + + '@cspell/dict-lua@4.0.6': + resolution: {integrity: sha512-Jwvh1jmAd9b+SP9e1GkS2ACbqKKRo9E1f9GdjF/ijmooZuHU0hPyqvnhZzUAxO1egbnNjxS/J2T6iUtjAUK2KQ==} + + '@cspell/dict-makefile@1.0.3': + resolution: {integrity: sha512-R3U0DSpvTs6qdqfyBATnePj9Q/pypkje0Nj26mQJ8TOBQutCRAJbr2ZFAeDjgRx5EAJU/+8txiyVF97fbVRViw==} + + '@cspell/dict-markdown@2.0.7': + resolution: {integrity: sha512-F9SGsSOokFn976DV4u/1eL4FtKQDSgJHSZ3+haPRU5ki6OEqojxKa8hhj4AUrtNFpmBaJx/WJ4YaEzWqG7hgqg==} + peerDependencies: + '@cspell/dict-css': ^4.0.16 + '@cspell/dict-html': ^4.0.10 + '@cspell/dict-html-symbol-entities': ^4.0.3 + '@cspell/dict-typescript': ^3.1.11 + + '@cspell/dict-monkeyc@1.0.9': + resolution: {integrity: sha512-Jvf6g5xlB4+za3ThvenYKREXTEgzx5gMUSzrAxIiPleVG4hmRb/GBSoSjtkGaibN3XxGx5x809gSTYCA/IHCpA==} + + '@cspell/dict-node@5.0.5': + resolution: {integrity: sha512-7NbCS2E8ZZRZwlLrh2sA0vAk9n1kcTUiRp/Nia8YvKaItGXLfxYqD2rMQ3HpB1kEutal6hQLVic3N2Yi1X7AaA==} + + '@cspell/dict-npm@5.1.17': + resolution: {integrity: sha512-RBx4yml+GbjgqmV2R9A8rO+uqjb8hV9arZXxVzW04TNdgGT/VjZnu6/3/QDzEp3DxnbSxknAbIii8BzpF/o5EQ==} + + '@cspell/dict-php@4.0.13': + resolution: {integrity: sha512-P6sREMZkhElzz/HhXAjahnICYIqB/HSGp1EhZh+Y6IhvC15AzgtDP8B8VYCIsQof6rPF1SQrFwunxOv8H1e2eg==} + + '@cspell/dict-powershell@5.0.13': + resolution: {integrity: sha512-0qdj0XZIPmb77nRTynKidRJKTU0Fl+10jyLbAhFTuBWKMypVY06EaYFnwhsgsws/7nNX8MTEQuewbl9bWFAbsg==} + + '@cspell/dict-public-licenses@2.0.11': + resolution: {integrity: sha512-rR5KjRUSnVKdfs5G+gJ4oIvQvm8+NJ6cHWY2N+GE69/FSGWDOPHxulCzeGnQU/c6WWZMSimG9o49i9r//lUQyA==} + + '@cspell/dict-python@4.2.13': + resolution: {integrity: sha512-mZIcmo9qif8LkJ6N/lqTZawcOk2kVTcuWIUOSbMcjyomO0XZ7iWz15TfONyr03Ea/l7o5ULV+MZ4vx76bAUb7w==} + + '@cspell/dict-r@2.0.4': + resolution: {integrity: sha512-cBpRsE/U0d9BRhiNRMLMH1PpWgw+N+1A2jumgt1if9nBGmQw4MUpg2u9I0xlFVhstTIdzXiLXMxP45cABuiUeQ==} + + '@cspell/dict-ruby@5.0.7': + resolution: {integrity: sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q==} + + '@cspell/dict-rust@4.0.10': + resolution: {integrity: sha512-6o5C8566VGTTctgcwfF3Iy7314W0oMlFFSQOadQ0OEdJ9Z9ERX/PDimrzP3LGuOrvhtEFoK8pj+BLnunNwRNrw==} + + '@cspell/dict-scala@5.0.6': + resolution: {integrity: sha512-tl0YWAfjUVb4LyyE4JIMVE8DlLzb1ecHRmIWc4eT6nkyDqQgHKzdHsnusxFEFMVLIQomgSg0Zz6hJ5S1E4W4ww==} + + '@cspell/dict-software-terms@4.1.19': + resolution: {integrity: sha512-6yQa3A8PGa2fJ7bnLI21nBnOa89Rjckdgq8kwvqvZgrAptV/KLfcXbGgFriICbu3GJqTVcnMMh1fLtz+pdwIEg==} + + '@cspell/dict-sql@2.1.8': + resolution: {integrity: sha512-dJRE4JV1qmXTbbGm6WIcg1knmR6K5RXnQxF4XHs5HA3LAjc/zf77F95i5LC+guOGppVF6Hdl66S2UyxT+SAF3A==} + + '@cspell/dict-svelte@1.0.5': + resolution: {integrity: sha512-sseHlcXOqWE4Ner9sg8KsjxwSJ2yssoJNqFHR9liWVbDV+m7kBiUtn2EB690TihzVsEmDr/0Yxrbb5Bniz70mA==} + + '@cspell/dict-swift@2.0.4': + resolution: {integrity: sha512-CsFF0IFAbRtYNg0yZcdaYbADF5F3DsM8C4wHnZefQy8YcHP/qjAF/GdGfBFBLx+XSthYuBlo2b2XQVdz3cJZBw==} + + '@cspell/dict-terraform@1.0.6': + resolution: {integrity: sha512-Sqm5vGbXuI9hCFcr4w6xWf4Y25J9SdleE/IqfM6RySPnk8lISEmVdax4k6+Kinv9qaxyvnIbUUN4WFLWcBPQAg==} + + '@cspell/dict-typescript@3.1.11': + resolution: {integrity: sha512-FwvK5sKbwrVpdw0e9+1lVTl8FPoHYvfHRuQRQz2Ql5XkC0gwPPkpoyD1zYImjIyZRoYXk3yp9j8ss4iz7A7zoQ==} + + '@cspell/dict-vue@3.0.3': + resolution: {integrity: sha512-akmYbrgAGumqk1xXALtDJcEcOMYBYMnkjpmGzH13Ozhq1mkPF4VgllFQlm1xYde+BUKNnzMgPEzxrL2qZllgYA==} + + '@cspell/dynamic-import@8.17.0': + resolution: {integrity: sha512-dd5Xz+10crBJmCzseV+9IPgxI0nNqWW43FBG317droxlhc2L7NktlIe6bsVVCjSoGRrKjQFzTn+cV9kJ9FKvPw==} + engines: {node: '>=18.0'} + + '@cspell/filetypes@8.17.0': + resolution: {integrity: sha512-EJ5APmdJV5GWZx5S47R4T3sEwFuP3PugnucqC8wwNutT8cUZrwYOsh/7bqAjkLiXXiUsJllUsDPlpTbxVfPk+g==} + engines: {node: '>=18'} + + '@cspell/strong-weak-map@8.17.0': + resolution: {integrity: sha512-a2ypnatMb81X/Mx0ibTwiFx1Dg6/oPyNJ9ShTI4cp5gDC1iLJqlXzsYGgTOsGKQ8dYW1hBZxg+hXTfC1ePzDsQ==} + engines: {node: '>=18'} + + '@cspell/url@8.17.0': + resolution: {integrity: sha512-78ZmsbAZ8RbEWRpLgsOuFxEa7Het4pkHyr2AiC0oUiUnvGuVGmUmT4KLCGvzpOzKKztinwgC+u4G5+sC/J6s7A==} + engines: {node: '>=18.0'} + '@ctrl/tinycolor@4.1.0': resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} engines: {node: '>=14'} @@ -747,6 +964,9 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + astring@1.8.6: resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} hasBin: true @@ -797,6 +1017,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} @@ -807,6 +1031,10 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk-template@1.1.0: + resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==} + engines: {node: '>=14.16'} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -835,6 +1063,10 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} + clear-module@4.1.2: + resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==} + engines: {node: '>=8'} + cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -881,6 +1113,14 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + comment-json@4.2.5: + resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} + engines: {node: '>= 6'} + common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} @@ -891,10 +1131,52 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + cspell-config-lib@8.17.0: + resolution: {integrity: sha512-MSa1LENlHpb8vlKqu4i4uJ8n+mwnn+dqkggefUq3Mrbkv1v3oTT5XyMyv586p1+r8KeZgISBniHVv7IN9iWvXQ==} + engines: {node: '>=18'} + + cspell-dictionary@8.17.0: + resolution: {integrity: sha512-PisnibsCrt/EbL4vmoVZZNWpjtquXBlrrY+iSbbQN5rJXCGX1St79DxgZcSzBLpc6Tt08l/VgFlvTDEGRf2xLA==} + engines: {node: '>=18'} + + cspell-gitignore@8.17.0: + resolution: {integrity: sha512-Qk5sgf6sDOI3egNQJAuGnbi3V63Vk/CUX7/CplcrJbX8Yu9fXmjjGN+ffMtLDay3+VLsOLmFJZWCGfgqW/kP6g==} + engines: {node: '>=18'} + hasBin: true + + cspell-glob@8.17.0: + resolution: {integrity: sha512-Miy0kqDIUfsCdLQTJxlXlt9fXqpakwsmyDNKyGjBPNLPF3OAcSelzzxhOUUyzKRgIqXBx4vP3+EF6ZUO3SKDsQ==} + engines: {node: '>=18'} + + cspell-grammar@8.17.0: + resolution: {integrity: sha512-2lvxGetbpCNRZJeGK1AjtBnDYD9gc3lPcjD4wFunPMMQbfi3p/pCUrNtMv8eA/pHaF403ah0MQfS/hgdLczoww==} + engines: {node: '>=18'} + hasBin: true + + cspell-io@8.17.0: + resolution: {integrity: sha512-gNmgRCIwa1/kki6/ekgk/dhTpojpppufu1j5FvuKk9Ib4gOibUdVKcxCi8uk6LbwOFrrDTOtRhC6WgdMmXerUQ==} + engines: {node: '>=18'} + + cspell-lib@8.17.0: + resolution: {integrity: sha512-+5zMNt+n6/9FbMGKZdDUscpbJe2V54W7cA662f6LbzPXImfNpKZSzU0kSNJ9NyKpaJBoA/Yhb4WrBy1XmscS6g==} + engines: {node: '>=18'} + + cspell-trie-lib@8.17.0: + resolution: {integrity: sha512-QeHTxjSBtyFDb8/mIn4PVY0wwc31U3AOUdwEKD6Mshd3OexvS6UhGqfNvHijIuy2WD6Z/2XHpQYVcQF1UXfKkA==} + engines: {node: '>=18'} + + cspell@8.17.0: + resolution: {integrity: sha512-xg2o85zK0G12LA2dK7+zUHp1+udFYSC3dkQw6+Pfo2T99HrlnlaHn57GnoENgOBqfeSTBaN9ApS0Ekeewa8e1w==} + engines: {node: '>=18'} + hasBin: true + css-selector-parser@3.0.5: resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} @@ -970,6 +1252,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} @@ -1036,16 +1322,35 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-equals@5.0.1: + resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} + engines: {node: '>=6.0.0'} + fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-uri@3.0.1: resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@9.1.0: + resolution: {integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==} + engines: {node: '>=18'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -1061,6 +1366,13 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + flat-cache@5.0.0: + resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==} + engines: {node: '>=18'} + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} @@ -1070,6 +1382,10 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + gensequence@7.0.0: + resolution: {integrity: sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==} + engines: {node: '>=18'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -1082,6 +1398,10 @@ packages: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} + get-stdin@9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -1093,6 +1413,10 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -1108,6 +1432,10 @@ packages: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + has-own-prop@2.0.0: + resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} + engines: {node: '>=8'} + hast-util-embedded@3.0.0: resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} @@ -1181,9 +1509,17 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} @@ -1285,6 +1621,9 @@ packages: engines: {node: '>=4'} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -1299,6 +1638,9 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -1602,6 +1944,14 @@ packages: resolution: {integrity: sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==} hasBin: true + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parent-module@2.0.0: + resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==} + engines: {node: '>=8'} + parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} @@ -1639,6 +1989,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -1731,6 +2085,10 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + request-light@0.5.8: resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} @@ -1745,6 +2103,14 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1888,6 +2254,10 @@ packages: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} + to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -2157,6 +2527,10 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} + xxhash-wasm@1.0.2: resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} @@ -2180,6 +2554,11 @@ packages: engines: {node: '>= 14'} hasBin: true + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -2486,6 +2865,208 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@cspell/cspell-bundled-dicts@8.17.0': + dependencies: + '@cspell/dict-ada': 4.0.5 + '@cspell/dict-al': 1.0.3 + '@cspell/dict-aws': 4.0.7 + '@cspell/dict-bash': 4.1.8 + '@cspell/dict-companies': 3.1.8 + '@cspell/dict-cpp': 6.0.2 + '@cspell/dict-cryptocurrencies': 5.0.3 + '@cspell/dict-csharp': 4.0.5 + '@cspell/dict-css': 4.0.16 + '@cspell/dict-dart': 2.2.4 + '@cspell/dict-django': 4.1.3 + '@cspell/dict-docker': 1.1.11 + '@cspell/dict-dotnet': 5.0.8 + '@cspell/dict-elixir': 4.0.6 + '@cspell/dict-en-common-misspellings': 2.0.7 + '@cspell/dict-en-gb': 1.1.33 + '@cspell/dict-en_us': 4.3.28 + '@cspell/dict-filetypes': 3.0.9 + '@cspell/dict-flutter': 1.0.3 + '@cspell/dict-fonts': 4.0.3 + '@cspell/dict-fsharp': 1.0.4 + '@cspell/dict-fullstack': 3.2.3 + '@cspell/dict-gaming-terms': 1.0.9 + '@cspell/dict-git': 3.0.3 + '@cspell/dict-golang': 6.0.17 + '@cspell/dict-google': 1.0.4 + '@cspell/dict-haskell': 4.0.4 + '@cspell/dict-html': 4.0.10 + '@cspell/dict-html-symbol-entities': 4.0.3 + '@cspell/dict-java': 5.0.10 + '@cspell/dict-julia': 1.0.4 + '@cspell/dict-k8s': 1.0.9 + '@cspell/dict-latex': 4.0.3 + '@cspell/dict-lorem-ipsum': 4.0.3 + '@cspell/dict-lua': 4.0.6 + '@cspell/dict-makefile': 1.0.3 + '@cspell/dict-markdown': 2.0.7(@cspell/dict-css@4.0.16)(@cspell/dict-html-symbol-entities@4.0.3)(@cspell/dict-html@4.0.10)(@cspell/dict-typescript@3.1.11) + '@cspell/dict-monkeyc': 1.0.9 + '@cspell/dict-node': 5.0.5 + '@cspell/dict-npm': 5.1.17 + '@cspell/dict-php': 4.0.13 + '@cspell/dict-powershell': 5.0.13 + '@cspell/dict-public-licenses': 2.0.11 + '@cspell/dict-python': 4.2.13 + '@cspell/dict-r': 2.0.4 + '@cspell/dict-ruby': 5.0.7 + '@cspell/dict-rust': 4.0.10 + '@cspell/dict-scala': 5.0.6 + '@cspell/dict-software-terms': 4.1.19 + '@cspell/dict-sql': 2.1.8 + '@cspell/dict-svelte': 1.0.5 + '@cspell/dict-swift': 2.0.4 + '@cspell/dict-terraform': 1.0.6 + '@cspell/dict-typescript': 3.1.11 + '@cspell/dict-vue': 3.0.3 + + '@cspell/cspell-json-reporter@8.17.0': + dependencies: + '@cspell/cspell-types': 8.17.0 + + '@cspell/cspell-pipe@8.17.0': {} + + '@cspell/cspell-resolver@8.17.0': + dependencies: + global-directory: 4.0.1 + + '@cspell/cspell-service-bus@8.17.0': {} + + '@cspell/cspell-types@8.17.0': {} + + '@cspell/dict-ada@4.0.5': {} + + '@cspell/dict-al@1.0.3': {} + + '@cspell/dict-aws@4.0.7': {} + + '@cspell/dict-bash@4.1.8': {} + + '@cspell/dict-companies@3.1.8': {} + + '@cspell/dict-cpp@6.0.2': {} + + '@cspell/dict-cryptocurrencies@5.0.3': {} + + '@cspell/dict-csharp@4.0.5': {} + + '@cspell/dict-css@4.0.16': {} + + '@cspell/dict-dart@2.2.4': {} + + '@cspell/dict-data-science@2.0.5': {} + + '@cspell/dict-django@4.1.3': {} + + '@cspell/dict-docker@1.1.11': {} + + '@cspell/dict-dotnet@5.0.8': {} + + '@cspell/dict-elixir@4.0.6': {} + + '@cspell/dict-en-common-misspellings@2.0.7': {} + + '@cspell/dict-en-gb@1.1.33': {} + + '@cspell/dict-en_us@4.3.28': {} + + '@cspell/dict-filetypes@3.0.9': {} + + '@cspell/dict-flutter@1.0.3': {} + + '@cspell/dict-fonts@4.0.3': {} + + '@cspell/dict-fsharp@1.0.4': {} + + '@cspell/dict-fullstack@3.2.3': {} + + '@cspell/dict-gaming-terms@1.0.9': {} + + '@cspell/dict-git@3.0.3': {} + + '@cspell/dict-golang@6.0.17': {} + + '@cspell/dict-google@1.0.4': {} + + '@cspell/dict-haskell@4.0.4': {} + + '@cspell/dict-html-symbol-entities@4.0.3': {} + + '@cspell/dict-html@4.0.10': {} + + '@cspell/dict-java@5.0.10': {} + + '@cspell/dict-julia@1.0.4': {} + + '@cspell/dict-k8s@1.0.9': {} + + '@cspell/dict-latex@4.0.3': {} + + '@cspell/dict-lorem-ipsum@4.0.3': {} + + '@cspell/dict-lua@4.0.6': {} + + '@cspell/dict-makefile@1.0.3': {} + + '@cspell/dict-markdown@2.0.7(@cspell/dict-css@4.0.16)(@cspell/dict-html-symbol-entities@4.0.3)(@cspell/dict-html@4.0.10)(@cspell/dict-typescript@3.1.11)': + dependencies: + '@cspell/dict-css': 4.0.16 + '@cspell/dict-html': 4.0.10 + '@cspell/dict-html-symbol-entities': 4.0.3 + '@cspell/dict-typescript': 3.1.11 + + '@cspell/dict-monkeyc@1.0.9': {} + + '@cspell/dict-node@5.0.5': {} + + '@cspell/dict-npm@5.1.17': {} + + '@cspell/dict-php@4.0.13': {} + + '@cspell/dict-powershell@5.0.13': {} + + '@cspell/dict-public-licenses@2.0.11': {} + + '@cspell/dict-python@4.2.13': + dependencies: + '@cspell/dict-data-science': 2.0.5 + + '@cspell/dict-r@2.0.4': {} + + '@cspell/dict-ruby@5.0.7': {} + + '@cspell/dict-rust@4.0.10': {} + + '@cspell/dict-scala@5.0.6': {} + + '@cspell/dict-software-terms@4.1.19': {} + + '@cspell/dict-sql@2.1.8': {} + + '@cspell/dict-svelte@1.0.5': {} + + '@cspell/dict-swift@2.0.4': {} + + '@cspell/dict-terraform@1.0.6': {} + + '@cspell/dict-typescript@3.1.11': {} + + '@cspell/dict-vue@3.0.3': {} + + '@cspell/dynamic-import@8.17.0': + dependencies: + '@cspell/url': 8.17.0 + import-meta-resolve: 4.1.0 + + '@cspell/filetypes@8.17.0': {} + + '@cspell/strong-weak-map@8.17.0': {} + + '@cspell/url@8.17.0': {} + '@ctrl/tinycolor@4.1.0': {} '@emmetio/abbreviation@2.3.3': @@ -2986,6 +3567,8 @@ snapshots: array-iterate@2.0.1: {} + array-timsort@1.0.3: {} + astring@1.8.6: {} astro-expressive-code@0.35.6(astro@4.14.5(rollup@4.21.0)(typescript@5.5.4)): @@ -3117,12 +3700,18 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) + callsites@3.1.0: {} + camelcase@7.0.1: {} caniuse-lite@1.0.30001651: {} ccount@2.0.1: {} + chalk-template@1.1.0: + dependencies: + chalk: 5.3.0 + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -3153,6 +3742,11 @@ snapshots: ci-info@4.0.0: {} + clear-module@4.1.2: + dependencies: + parent-module: 2.0.0 + resolve-from: 5.0.0 + cli-boxes@3.0.0: {} cli-cursor@4.0.0: @@ -3197,18 +3791,119 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@12.1.0: {} + + comment-json@4.2.5: + dependencies: + array-timsort: 1.0.3 + core-util-is: 1.0.3 + esprima: 4.0.1 + has-own-prop: 2.0.0 + repeat-string: 1.6.1 + common-ancestor-path@1.0.1: {} convert-source-map@2.0.0: {} cookie@0.6.0: {} + core-util-is@1.0.3: {} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + cspell-config-lib@8.17.0: + dependencies: + '@cspell/cspell-types': 8.17.0 + comment-json: 4.2.5 + yaml: 2.6.1 + + cspell-dictionary@8.17.0: + dependencies: + '@cspell/cspell-pipe': 8.17.0 + '@cspell/cspell-types': 8.17.0 + cspell-trie-lib: 8.17.0 + fast-equals: 5.0.1 + + cspell-gitignore@8.17.0: + dependencies: + '@cspell/url': 8.17.0 + cspell-glob: 8.17.0 + cspell-io: 8.17.0 + find-up-simple: 1.0.0 + + cspell-glob@8.17.0: + dependencies: + '@cspell/url': 8.17.0 + micromatch: 4.0.8 + + cspell-grammar@8.17.0: + dependencies: + '@cspell/cspell-pipe': 8.17.0 + '@cspell/cspell-types': 8.17.0 + + cspell-io@8.17.0: + dependencies: + '@cspell/cspell-service-bus': 8.17.0 + '@cspell/url': 8.17.0 + + cspell-lib@8.17.0: + dependencies: + '@cspell/cspell-bundled-dicts': 8.17.0 + '@cspell/cspell-pipe': 8.17.0 + '@cspell/cspell-resolver': 8.17.0 + '@cspell/cspell-types': 8.17.0 + '@cspell/dynamic-import': 8.17.0 + '@cspell/filetypes': 8.17.0 + '@cspell/strong-weak-map': 8.17.0 + '@cspell/url': 8.17.0 + clear-module: 4.1.2 + comment-json: 4.2.5 + cspell-config-lib: 8.17.0 + cspell-dictionary: 8.17.0 + cspell-glob: 8.17.0 + cspell-grammar: 8.17.0 + cspell-io: 8.17.0 + cspell-trie-lib: 8.17.0 + env-paths: 3.0.0 + fast-equals: 5.0.1 + gensequence: 7.0.0 + import-fresh: 3.3.0 + resolve-from: 5.0.0 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.0.8 + xdg-basedir: 5.1.0 + + cspell-trie-lib@8.17.0: + dependencies: + '@cspell/cspell-pipe': 8.17.0 + '@cspell/cspell-types': 8.17.0 + gensequence: 7.0.0 + + cspell@8.17.0: + dependencies: + '@cspell/cspell-json-reporter': 8.17.0 + '@cspell/cspell-pipe': 8.17.0 + '@cspell/cspell-types': 8.17.0 + '@cspell/dynamic-import': 8.17.0 + '@cspell/url': 8.17.0 + chalk: 5.3.0 + chalk-template: 1.1.0 + commander: 12.1.0 + cspell-dictionary: 8.17.0 + cspell-gitignore: 8.17.0 + cspell-glob: 8.17.0 + cspell-io: 8.17.0 + cspell-lib: 8.17.0 + fast-json-stable-stringify: 2.1.0 + file-entry-cache: 9.1.0 + get-stdin: 9.0.0 + semver: 7.6.3 + tinyglobby: 0.2.10 + css-selector-parser@3.0.5: {} cssesc@3.0.0: {} @@ -3261,6 +3956,8 @@ snapshots: entities@4.5.0: {} + env-paths@3.0.0: {} + es-module-lexer@1.5.4: {} esbuild@0.21.5: @@ -3356,6 +4053,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-equals@5.0.1: {} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3364,12 +4063,22 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} + fast-uri@3.0.1: {} fastq@1.17.1: dependencies: reusify: 1.0.4 + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + file-entry-cache@9.1.0: + dependencies: + flat-cache: 5.0.0 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -3386,17 +4095,28 @@ snapshots: micromatch: 4.0.8 pkg-dir: 4.2.0 + flat-cache@5.0.0: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + + flatted@3.3.2: {} + flattie@1.1.1: {} fsevents@2.3.3: optional: true + gensequence@7.0.0: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} get-east-asian-width@1.2.0: {} + get-stdin@9.0.0: {} + get-stream@8.0.1: {} github-slugger@2.0.0: {} @@ -3405,6 +4125,10 @@ snapshots: dependencies: is-glob: 4.0.3 + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + globals@11.12.0: {} graceful-fs@4.2.11: {} @@ -3418,6 +4142,8 @@ snapshots: has-flag@3.0.0: {} + has-own-prop@2.0.0: {} + hast-util-embedded@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -3609,8 +4335,15 @@ snapshots: human-signals@5.0.0: {} + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + import-meta-resolve@4.1.0: {} + ini@4.1.1: {} + inline-style-parser@0.1.1: {} inline-style-parser@0.2.3: {} @@ -3684,6 +4417,8 @@ snapshots: jsesc@2.5.2: {} + json-buffer@3.0.1: {} + json-schema-traverse@1.0.0: {} json5@2.2.3: {} @@ -3692,6 +4427,10 @@ snapshots: jsonc-parser@3.3.1: {} + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + kind-of@6.0.3: {} kleur@3.0.3: {} @@ -4276,6 +5015,14 @@ snapshots: '@pagefind/linux-x64': 1.1.0 '@pagefind/windows-x64': 1.1.0 + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parent-module@2.0.0: + dependencies: + callsites: 3.1.0 + parse-entities@4.0.1: dependencies: '@types/unist': 2.0.11 @@ -4320,6 +5067,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.2: {} + pify@4.0.1: {} pkg-dir@4.2.0: @@ -4471,6 +5220,8 @@ snapshots: mdast-util-to-markdown: 2.1.0 unified: 11.0.5 + repeat-string@1.6.1: {} + request-light@0.5.8: {} request-light@0.7.0: {} @@ -4479,6 +5230,10 @@ snapshots: require-from-string@2.0.2: {} + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -4665,6 +5420,11 @@ snapshots: dependencies: has-flag: 3.0.0 + tinyglobby@0.2.10: + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 + to-fast-properties@2.0.0: {} to-regex-range@5.0.1: @@ -4923,6 +5683,8 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 + xdg-basedir@5.1.0: {} + xxhash-wasm@1.0.2: {} y18n@5.0.8: {} @@ -4948,6 +5710,8 @@ snapshots: yaml@2.5.0: {} + yaml@2.6.1: {} + yargs-parser@21.1.1: {} yargs@17.7.2: diff --git a/src/components/navigation.ts b/src/components/navigation.ts index 5683465..e5a67d7 100644 --- a/src/components/navigation.ts +++ b/src/components/navigation.ts @@ -50,6 +50,10 @@ export const navigation = [ { label: "DMCA and Copyright", link: "/legal/dmca" + }, + { + label: "Subprocessors List", + link: "/legal/subprocessors" } ] }, diff --git a/src/content/docs/about/contact.md b/src/content/docs/about/contact.md index 8de580a..e9a0657 100644 --- a/src/content/docs/about/contact.md +++ b/src/content/docs/about/contact.md @@ -318,8 +318,8 @@ An in-depth, personalized session focused on long-term professional growth and s ### 6.4 How to Book a Session: - Visit one of: - - Our topmate profile: https://topmate.io/nhcarrigan - - Our fiverr profile: https://www.fiverr.com/nhcarrigan + - Our Topmate profile: https://topmate.io/nhcarrigan + - Our Fiverr profile: https://www.fiverr.com/nhcarrigan - Select the type of session you need (Coffee Chat, Consulting, or Mentorship) - Select an available time slot - Complete the booking process and payment @@ -476,7 +476,7 @@ Direct messages should be used for: - An invoice will be generated for each direct message received. - Payment is required before a response will be provided. -- Invoices will be sent to you via the direct message channel on the platform where the DM was received. +- Invoices will be sent to you via the direct message channel on the platform where the direct message was received. ### 8.4 Response Time diff --git a/src/content/docs/archive/vtubing.md b/src/content/docs/archive/vtubing.md deleted file mode 100644 index d260fdc..0000000 --- a/src/content/docs/archive/vtubing.md +++ /dev/null @@ -1,1793 +0,0 @@ ---- -title: Naomi's VTubing Setup ---- - -Naomi uses her VTuber model for all of her client meetings, as well as streaming. Getting the software to work on Linux is a bit of a nightmare, so this page documents how she does so. - -## 1. OpenSeeFace - -In order to track her webcamera, OpenSeeFace needs to be run independently as a native script. - -### 1.1. Installation - -This should all be done in your home `~` directory. - -- Begin by cloning the repository: - - `git clone https://github.com/emilianavt/OpenSeeFace` - - `cd OpenSeeFace` -- You will need to prepare Python - - Install the packages: `yay -Sy python python-virtualenv` - - Prepare the environment: `virtualenv -p python3 env` - - Source the environment: `source env/bin/activate` - - Install the dependencies: `pip3 install onnxruntime opencv-python pillow numpy` - -### 1.2. Running - -Naomi uses a bash script to run the program. Put this in `~/Documents/scripts/osf.sh`. - -```bash -#!/bin/bash -cd ~/OpenSeeFace && \ -source env/bin/activate && \ -python facetracker.py -c 0 -W 1280 -H 720 --discard-after 0 --scan-every 0 --no-3d-adapt 1 --max-feature-updates 900 -``` - -### 1.3. Desktop Shortcut - -The `.desktop` file allows this to run from the application tray. Put this in `~/.local/share/applications/osf.desktop`. - -```ini -[Desktop Entry] -Name=OpenSeeFace -Exec=/home/naomi/Documents/scripts/osf.sh -Icon=/home/naomi/Documents/scripts/osf.png -Terminal=true -Type=Application -``` - -## 2. VSeeFace - -VSeeFace does not run natively, and will need to run with Wine. - -### 2.1. Installation - -[Download and run the installer](https://www.vseeface.icu/#download). When selecting a directory, put it in `~/VSeeFace`. - -### 2.2. Running - -Naomi uses a bash script to run the program. Put this in `~/Documents/scripts/vsf.sh`. - -```bash -#!/bin/bash -wine ~/VSeeFace/VSeeFace.exe --background-color "#00FF00" -``` - -The `--background-color` flag creates a green screen background to be chroma-keyed out by OBS. - -### 1.3. Desktop Shortcut - -The `.desktop` file allows this to run from the application tray. Put this in `~/.local/share/applications/osf.desktop`. - -```ini -[Desktop Entry] -Name=VSeeFace -Exec=/home/naomi/Documents/scripts/vsf.sh -Icon=/home/naomi/Documents/scripts/vsf.png -Terminal=true -Type=Application -``` - -## 3. OBS - -OBS allows for virtual camera, as well as for streaming. - -### 3.1. Installation - -The `obs-studio-liberty` package bundles everything together, offering both virtual camera and browser source support. These are essential for the setup. - -### 3.2. Scenes - -You can import this JSON file to get Naomi's list of scenes. - -
- Show file - -```json -{ - "DesktopAudioDevice1": { - "prev_ver": 503447552, - "name": "Desktop Audio", - "uuid": "3cf343c8-94fa-4e7e-999a-c682a2fee814", - "id": "pulse_output_capture", - "versioned_id": "pulse_output_capture", - "settings": { - "device_id": "default" - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - "AuxAudioDevice1": { - "prev_ver": 503447552, - "name": "Mic/Aux", - "uuid": "a1c8fff9-1d45-467a-b647-73711e02e915", - "id": "pulse_input_capture", - "versioned_id": "pulse_input_capture", - "settings": { - "device_id": "Remap-Source" - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - "current_scene": "Virtual Cam", - "current_program_scene": "Virtual Cam", - "scene_order": [ - { - "name": "Virtual Cam" - }, - { - "name": "Stream" - }, - { - "name": "Start" - }, - { - "name": "BRB" - }, - { - "name": "End" - } - ], - "name": "Naomi", - "groups": [], - "quick_transitions": [ - { - "name": "Cut", - "duration": 300, - "hotkeys": [], - "id": 1, - "fade_to_black": false - }, - { - "name": "Fade", - "duration": 300, - "hotkeys": [], - "id": 2, - "fade_to_black": false - }, - { - "name": "Fade", - "duration": 300, - "hotkeys": [], - "id": 3, - "fade_to_black": true - } - ], - "transitions": [ - { - "name": "Transition", - "id": "obs_stinger_transition", - "settings": { - "path": "/home/naomi/Documents/stream/stinger.webm", - "track_matte_enabled": true, - "audio_monitoring": 2 - } - } - ], - "saved_projectors": [], - "current_transition": "Transition", - "transition_duration": 300, - "preview_locked": false, - "scaling_enabled": false, - "scaling_level": 0, - "scaling_off_x": 0.0, - "scaling_off_y": 0.0, - "virtual-camera": { - "type2": 3 - }, - "modules": { - "scripts-tool": [], - "output-timer": { - "streamTimerHours": 0, - "streamTimerMinutes": 0, - "streamTimerSeconds": 30, - "recordTimerHours": 0, - "recordTimerMinutes": 0, - "recordTimerSeconds": 30, - "autoStartStreamTimer": false, - "autoStartRecordTimer": false, - "pauseRecordTimer": true - }, - "auto-scene-switcher": { - "interval": 300, - "non_matching_scene": "", - "switch_if_not_matching": false, - "active": false, - "switches": [] - } - }, - "resolution": { - "x": 1920, - "y": 1080 - }, - "sources": [ - { - "prev_ver": 503447552, - "name": "Alerts", - "uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", - "id": "browser_source", - "versioned_id": "browser_source", - "settings": { - "url": "https://streamlabs.com/alert-box/v3/" - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "ObsBrowser.Refresh": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "BRB", - "uuid": "bccd5453-1e6e-4335-8111-b01adf3e9541", - "id": "scene", - "versioned_id": "scene", - "settings": { - "id_counter": 4, - "custom_size": false, - "items": [ - { - "name": "Slide Background", - "source_uuid": "7f03fc0d-6d95-4e9e-b4e7-2e43967b2488", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 1, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Text BRB", - "source_uuid": "6f46d696-d2f1-49b4-957d-1f06a9392cdc", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 582.0, - "y": 364.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 3, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Alerts", - "source_uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.7999999523162842, - "y": 1.7999999523162842 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 4, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - } - ] - }, - "mixers": 0, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "OBSBasic.SelectScene": [], - "libobs.show_scene_item.1": [], - "libobs.hide_scene_item.1": [], - "libobs.show_scene_item.3": [], - "libobs.hide_scene_item.3": [], - "libobs.show_scene_item.4": [], - "libobs.hide_scene_item.4": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Cam Background", - "uuid": "6bd1ef08-a91e-4b0b-bb1a-d3ee2387f5f5", - "id": "ffmpeg_source", - "versioned_id": "ffmpeg_source", - "settings": { - "close_when_inactive": true, - "local_file": "/home/naomi/Documents/stream/virtual-cam-bg.webm", - "looping": true - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "MediaSource.Restart": [], - "MediaSource.Play": [], - "MediaSource.Pause": [], - "MediaSource.Stop": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Cam Overlay", - "uuid": "bf638a3c-5133-406c-a3d2-541723f715f9", - "id": "ffmpeg_source", - "versioned_id": "ffmpeg_source", - "settings": { - "close_when_inactive": true, - "local_file": "/home/naomi/Documents/stream/virtual-cam-overlay.webm", - "looping": true - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "MediaSource.Restart": [], - "MediaSource.Play": [], - "MediaSource.Pause": [], - "MediaSource.Stop": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Chat", - "uuid": "005e5143-427d-405c-84aa-b50210ad015f", - "id": "browser_source", - "versioned_id": "browser_source", - "settings": { - "url": "https://streamlabs.com/widgets/chat-box/v1/", - "width": 500, - "css": "body { background: white }" - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "ObsBrowser.Refresh": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "End", - "uuid": "74d15386-4a95-4a1e-90ce-6b4f4c77615f", - "id": "scene", - "versioned_id": "scene", - "settings": { - "id_counter": 4, - "custom_size": false, - "items": [ - { - "name": "Slide Background", - "source_uuid": "7f03fc0d-6d95-4e9e-b4e7-2e43967b2488", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 1, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Text End", - "source_uuid": "e84200d5-b7bf-4230-afff-ff7cbae8a8d3", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 586.0, - "y": 363.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 3, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Alerts", - "source_uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.7999999523162842, - "y": 1.7999999523162842 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 4, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - } - ] - }, - "mixers": 0, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "OBSBasic.SelectScene": [], - "libobs.show_scene_item.1": [], - "libobs.hide_scene_item.1": [], - "libobs.show_scene_item.3": [], - "libobs.hide_scene_item.3": [], - "libobs.show_scene_item.4": [], - "libobs.hide_scene_item.4": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Game", - "uuid": "b4b086c6-2733-4c66-b833-b0546d8d928f", - "id": "xcomposite_input", - "versioned_id": "xcomposite_input", - "settings": { - "capture_window": "" - }, - "mixers": 0, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": {}, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Model", - "uuid": "61587530-1788-4a8a-9854-55d7ab8643c1", - "id": "xcomposite_input", - "versioned_id": "xcomposite_input", - "settings": { - "capture_window": "", - "show_cursor": false - }, - "mixers": 0, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": {}, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {}, - "filters": [ - { - "prev_ver": 503447552, - "name": "Chroma Key", - "uuid": "3c3151f6-95cf-431c-8f9d-d0c4d0276265", - "id": "chroma_key_filter", - "versioned_id": "chroma_key_filter_v2", - "settings": {}, - "mixers": 0, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": {}, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - } - ] - }, - { - "prev_ver": 503447552, - "name": "Slide Background", - "uuid": "7f03fc0d-6d95-4e9e-b4e7-2e43967b2488", - "id": "ffmpeg_source", - "versioned_id": "ffmpeg_source", - "settings": { - "close_when_inactive": true, - "local_file": "/home/naomi/Documents/stream/slide-bg.webm", - "looping": true - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "MediaSource.Restart": [], - "MediaSource.Play": [], - "MediaSource.Pause": [], - "MediaSource.Stop": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Start", - "uuid": "527629ef-79c9-4b1a-a006-738220d3e68f", - "id": "scene", - "versioned_id": "scene", - "settings": { - "id_counter": 4, - "custom_size": false, - "items": [ - { - "name": "Slide Background", - "source_uuid": "7f03fc0d-6d95-4e9e-b4e7-2e43967b2488", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 1, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Text Start", - "source_uuid": "f8ec5105-3e0e-44df-925e-1de60b69aac9", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 557.0, - "y": 413.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 3, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Alerts", - "source_uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.7999999523162842, - "y": 1.7999999523162842 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 4, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - } - ] - }, - "mixers": 0, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "OBSBasic.SelectScene": [], - "libobs.show_scene_item.1": [], - "libobs.hide_scene_item.1": [], - "libobs.show_scene_item.3": [], - "libobs.hide_scene_item.3": [], - "libobs.show_scene_item.4": [], - "libobs.hide_scene_item.4": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Stream", - "uuid": "7936741f-a3a3-478d-acdc-ca0e25fc1da1", - "id": "scene", - "versioned_id": "scene", - "settings": { - "id_counter": 6, - "custom_size": false, - "items": [ - { - "name": "Stream Background", - "source_uuid": "d9b7efee-1348-4d0f-9b2d-f7ea0ecad7e7", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 1222.0, - "y": 403.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 1, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Game", - "source_uuid": "b4b086c6-2733-4c66-b833-b0546d8d928f", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 54.0, - "y": 98.0 - }, - "scale": { - "x": 0.71406251192092896, - "y": 0.71428573131561279 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 3, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Model", - "source_uuid": "61587530-1788-4a8a-9854-55d7ab8643c1", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 1266.0, - "y": 607.0 - }, - "scale": { - "x": 0.58046877384185791, - "y": 0.58055555820465088 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 4, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Stream Overlay", - "source_uuid": "26865859-0f4d-4e3f-8285-e7567de6ab80", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 2, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Alerts", - "source_uuid": "f1d0e2a1-3bbf-4a75-80ab-91243c5590d4", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.7999999523162842, - "y": 1.7999999523162842 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 5, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Chat", - "source_uuid": "005e5143-427d-405c-84aa-b50210ad015f", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 1420.0, - "y": 0.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 6, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - } - ] - }, - "mixers": 0, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "OBSBasic.SelectScene": [], - "libobs.show_scene_item.1": [], - "libobs.hide_scene_item.1": [], - "libobs.show_scene_item.3": [], - "libobs.hide_scene_item.3": [], - "libobs.show_scene_item.4": [], - "libobs.hide_scene_item.4": [], - "libobs.show_scene_item.2": [], - "libobs.hide_scene_item.2": [], - "libobs.show_scene_item.5": [], - "libobs.hide_scene_item.5": [], - "libobs.show_scene_item.6": [], - "libobs.hide_scene_item.6": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Stream Background", - "uuid": "d9b7efee-1348-4d0f-9b2d-f7ea0ecad7e7", - "id": "ffmpeg_source", - "versioned_id": "ffmpeg_source", - "settings": { - "close_when_inactive": true, - "local_file": "/home/naomi/Documents/stream/stream-bg.webm", - "looping": true - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "MediaSource.Restart": [], - "MediaSource.Play": [], - "MediaSource.Pause": [], - "MediaSource.Stop": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Stream Overlay", - "uuid": "26865859-0f4d-4e3f-8285-e7567de6ab80", - "id": "ffmpeg_source", - "versioned_id": "ffmpeg_source", - "settings": { - "close_when_inactive": true, - "local_file": "/home/naomi/Documents/stream/stream-overlay.webm", - "looping": true - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "MediaSource.Restart": [], - "MediaSource.Play": [], - "MediaSource.Pause": [], - "MediaSource.Stop": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Text BRB", - "uuid": "6f46d696-d2f1-49b4-957d-1f06a9392cdc", - "id": "ffmpeg_source", - "versioned_id": "ffmpeg_source", - "settings": { - "local_file": "/home/naomi/Documents/stream/slide-text-brb.webm", - "close_when_inactive": true, - "looping": true - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "MediaSource.Restart": [], - "MediaSource.Play": [], - "MediaSource.Pause": [], - "MediaSource.Stop": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Text End", - "uuid": "e84200d5-b7bf-4230-afff-ff7cbae8a8d3", - "id": "ffmpeg_source", - "versioned_id": "ffmpeg_source", - "settings": { - "local_file": "/home/naomi/Documents/stream/slide-text-end.webm", - "looping": true - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "MediaSource.Restart": [], - "MediaSource.Play": [], - "MediaSource.Pause": [], - "MediaSource.Stop": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Text Start", - "uuid": "f8ec5105-3e0e-44df-925e-1de60b69aac9", - "id": "ffmpeg_source", - "versioned_id": "ffmpeg_source", - "settings": { - "local_file": "/home/naomi/Documents/stream/slide-text-start.webm", - "close_when_inactive": true, - "undo_uuid": "f8ec5105-3e0e-44df-925e-1de60b69aac9", - "looping": true - }, - "mixers": 255, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "libobs.mute": [], - "libobs.unmute": [], - "libobs.push-to-mute": [], - "libobs.push-to-talk": [], - "MediaSource.Restart": [], - "MediaSource.Play": [], - "MediaSource.Pause": [], - "MediaSource.Stop": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - }, - { - "prev_ver": 503447552, - "name": "Virtual Cam", - "uuid": "251f1f3f-846d-475d-a496-9c9afd69125a", - "id": "scene", - "versioned_id": "scene", - "settings": { - "id_counter": 3, - "custom_size": false, - "items": [ - { - "name": "Cam Background", - "source_uuid": "6bd1ef08-a91e-4b0b-bb1a-d3ee2387f5f5", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 1, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Model", - "source_uuid": "61587530-1788-4a8a-9854-55d7ab8643c1", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 2, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 1920.0, - "y": 1080.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 3, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - }, - { - "name": "Cam Overlay", - "source_uuid": "bf638a3c-5133-406c-a3d2-541723f715f9", - "visible": true, - "locked": false, - "rot": 0.0, - "pos": { - "x": 0.0, - "y": 0.0 - }, - "scale": { - "x": 1.0, - "y": 1.0 - }, - "align": 5, - "bounds_type": 0, - "bounds_align": 0, - "bounds_crop": false, - "bounds": { - "x": 0.0, - "y": 0.0 - }, - "crop_left": 0, - "crop_top": 0, - "crop_right": 0, - "crop_bottom": 0, - "id": 2, - "group_item_backup": false, - "scale_filter": "disable", - "blend_method": "default", - "blend_type": "normal", - "show_transition": { - "duration": 0 - }, - "hide_transition": { - "duration": 0 - }, - "private_settings": {} - } - ] - }, - "mixers": 0, - "sync": 0, - "flags": 0, - "volume": 1.0, - "balance": 0.5, - "enabled": true, - "muted": false, - "push-to-mute": false, - "push-to-mute-delay": 0, - "push-to-talk": false, - "push-to-talk-delay": 0, - "hotkeys": { - "OBSBasic.SelectScene": [], - "libobs.show_scene_item.1": [], - "libobs.hide_scene_item.1": [], - "libobs.show_scene_item.3": [], - "libobs.hide_scene_item.3": [], - "libobs.show_scene_item.2": [], - "libobs.hide_scene_item.2": [] - }, - "deinterlace_mode": 0, - "deinterlace_field_order": 0, - "monitoring_type": 0, - "private_settings": {} - } - ] -} -``` - -
- -### 3.3. Profile - -This configuration file sets up the OBS profile. - -```ini -[General] -Name=Naomi - -[Output] -Mode=Simple -FilenameFormatting=%CCYY-%MM-%DD %hh-%mm-%ss -DelayEnable=false -DelaySec=20 -DelayPreserve=true -Reconnect=true -RetryDelay=2 -MaxRetries=25 -BindIP=default -IPFamily=IPv4+IPv6 -NewSocketLoopEnable=false -LowLatencyEnable=false - -[Stream1] -IgnoreRecommended=false - -[SimpleOutput] -FilePath=/home/naomi -RecFormat2=mkv -VBitrate=2500 -ABitrate=160 -UseAdvanced=false -Preset=veryfast -NVENCPreset2=p5 -RecQuality=Stream -RecRB=false -RecRBTime=20 -RecRBSize=512 -RecRBPrefix=Replay -StreamAudioEncoder=aac -RecAudioEncoder=aac -RecTracks=1 -StreamEncoder=nvenc -RecEncoder=nvenc - -[AdvOut] -ApplyServiceSettings=true -UseRescale=false -TrackIndex=1 -VodTrackIndex=2 -Encoder=obs_x264 -RecType=Standard -RecFilePath=/home/naomi -RecFormat2=mkv -RecUseRescale=false -RecTracks=1 -RecEncoder=none -FLVTrack=1 -StreamMultiTrackAudioMixes=1 -FFOutputToFile=true -FFFilePath=/home/naomi -FFExtension=mp4 -FFVBitrate=2500 -FFVGOPSize=250 -FFUseRescale=false -FFIgnoreCompat=false -FFABitrate=160 -FFAudioMixes=1 -Track1Bitrate=160 -Track2Bitrate=160 -Track3Bitrate=160 -Track4Bitrate=160 -Track5Bitrate=160 -Track6Bitrate=160 -RecSplitFileTime=15 -RecSplitFileSize=2048 -RecRB=false -RecRBTime=20 -RecRBSize=512 -AudioEncoder=libfdk_aac -RecAudioEncoder=libfdk_aac - -[Video] -BaseCX=1920 -BaseCY=1080 -OutputCX=1920 -OutputCY=1080 -FPSType=0 -FPSCommon=30 -FPSInt=30 -FPSNum=30 -FPSDen=1 -ScaleType=bicubic -ColorFormat=NV12 -ColorSpace=709 -ColorRange=Partial -SdrWhiteLevel=300 -HdrNominalPeakLevel=1000 - -[Audio] -MonitoringDeviceId=default -MonitoringDeviceName=Default -SampleRate=48000 -ChannelSetup=Stereo -MeterDecayRate=23.53 -PeakMeterType=0 - -[Panels] -CookieId=#redacted -``` - -### 3.4. Docks - -This configuration file loads Naomi's standard dock layout. Sensitive information has been redacted. This specifically goes in `~/.config/obs-studio/global.ini`. - -```ini -[General] -Pre19Defaults=false -Pre21Defaults=false -Pre23Defaults=false -Pre24.1Defaults=false -MaxLogs=10 -InfoIncrement=1 -ProcessPriority=Normal -EnableAutoUpdates=true -ConfirmOnExit=true -HotkeyFocusType=NeverDisableHotkeys -FirstRun=true -InstallGUID=#Redacted -CurrentTheme3=Light -LastVersion=503382018 -InfoLastVersion=32993938767872 - -[Video] -Renderer=OpenGL - -[BasicWindow] -PreviewEnabled=true -PreviewProgramMode=false -SceneDuplicationMode=true -SwapScenesMode=true -SnappingEnabled=true -ScreenSnapping=true -SourceSnapping=true -CenterSnapping=false -SnapDistance=10 -SpacingHelpersEnabled=true -RecordWhenStreaming=false -KeepRecordingWhenStreamStops=false -SysTrayEnabled=true -SysTrayWhenStarted=false -SaveProjectors=false -ShowTransitions=true -ShowListboxToolbars=true -ShowStatusBar=true -ShowSourceIcons=true -ShowContextToolbars=true -StudioModeLabels=true -VerticalVolControl=false -MultiviewMouseSwitch=true -MultiviewDrawNames=true -MultiviewDrawAreas=true -MediaControlsCountdownTimer=true -WarnBeforeStartingStream=false -WarnBeforeStoppingStream=false -WarnBeforeStoppingRecord=false -geometry=AdnQywADAAAAAA8AAAAAAAAAFn8AAAQ3AAARNgAAACAAABVsAAAC2AAAAAICAAAAB4AAAA8AAAAAIAAAFn8AAAQ3 -DockState=AAAA/wAAAAD9AAAAAwAAAAAAAAB0AAAC1/wCAAAAAfsAAAAiAEMAaABhAHQAXwBlAHgAdAByAGEAQgByAG8AdwBzAGUAcgEAAAAXAAAC1wAAAFAA////AAAAAQAAAY4AAALX/AIAAAAB/AAAABcAAALXAAAAUAD////8AQAAAAL7AAAAMABSAGUAZABlAG0AcAB0AGkAbwBuAHMAXwBlAHgAdAByAGEAQgByAG8AdwBzAGUAcgEAAAXyAAAAwwAAAFAA////+wAAACgAQQBjAHQAaQBvAG4AcwBfAGUAeAB0AHIAYQBCAHIAbwB3AHMAZQByAQAABrkAAADHAAAAUAD///8AAAADAAAHgAAAAQT8AQAAAAf7AAAAFABzAGMAZQBuAGUAcwBEAG8AYwBrAQAAAAAAAAE1AAAAoAD////7AAAAFgBzAG8AdQByAGMAZQBzAEQAbwBjAGsBAAABOQAAATIAAACgAP////sAAAASAG0AaQB4AGUAcgBEAG8AYwBrAQAAAm8AAAGSAAAA3gD////7AAAAHgB0AHIAYQBuAHMAaQB0AGkAbwBuAHMARABvAGMAawEAAAQFAAABHwAAAIIA////+wAAACIARgBlAGUAZABfAGUAeAB0AHIAYQBCAHIAbwB3AHMAZQByAQAABSgAAAExAAAAUAD////7AAAAGABjAG8AbgB0AHIAbwBsAHMARABvAGMAawEAAAZdAAABIwAAAJ4A////+wAAABIAcwB0AGEAdABzAEQAbwBjAGsCAAACYgAAAbgAAAK8AAAAyAAABXYAAALXAAAABAAAAAQAAAAIAAAACPwAAAAA -ExtraBrowserDocks=[{"title": "Redemptions", "url": "https://www.twitch.tv/popout/naomilgbt/reward-queue", "uuid": "redacted"}, {"title": "Feed", "url": "https://dashboard.twitch.tv/popout/u/naomilgbt/stream-manager/activity-feed?uuid=redacted", "uuid": "redacted"}, {"title": "Chat", "url": "https://dashboard.twitch.tv/popout/u/naomilgbt/stream-manager/chat?uuid=redacted", "uuid": "redacted"}, {"title": "Actions", "url": "https://dashboard.twitch.tv/popout/u/naomilgbt/stream-manager/quick-actions?uuid=redacted", "uuid": "redacted"}] -AlwaysOnTop=false -EditPropertiesMode=false -DocksLocked=false -SideDocks=false - -[Basic] -Profile=Naomi -ProfileDir=Naomi -SceneCollection=Naomi -SceneCollectionFile=Naomi -ConfigOnNewProfile=true - -[OBSWebSocket] - -[Accessibility] -SelectRed=255 -SelectGreen=65280 -SelectBlue=16744192 -MixerGreen=2522918 -MixerYellow=2523007 -MixerRed=2500223 -MixerGreenActive=5046092 -MixerYellowActive=5046271 -MixerRedActive=5000447 - -[PropertiesWindow] -cx=720 -cy=580 - -[ScriptLogWindow] -geometry=AdnQywADAAAAAAABAAAAGQAAAlgAAAGoAAAAAQAAABkAAAJYAAABqAAAAAEAAAAAB4AAAAABAAAAGQAAAlgAAAGo - -[Appearance] -Theme=com.obsproject.Yami.Light -``` diff --git a/src/content/docs/community/appeal.md b/src/content/docs/community/appeal.md index ff1e656..31f28f9 100644 --- a/src/content/docs/community/appeal.md +++ b/src/content/docs/community/appeal.md @@ -6,6 +6,10 @@ Our moderators exercise careful discretion when implementing disciplinary measur If you believe you have been unjustly restricted from participating in our community, you may initiate our formal appeal process as outlined below. +:::caution[Warning!] +Submitting multiple appeals for the same sanction will result in our appeals team automatically denying your request. +::: + ## 1. Preparing Your Appeal Prior to submitting an appeal, please ensure you have the following information ready: @@ -22,7 +26,7 @@ Please note that incomplete or inadequately prepared appeals may be summarily di To submit your appeal, please complete the form available at the following link: -[Submit a Sanction Appeal](https://airtable.com/app4JjHyeaBqt4vVH/pagOIWG3ZBEGRD8oW/form) +[Submit a Sanction Appeal](https://nhcarrigan.com/appeal) ## 3. Important Disclaimers diff --git a/src/content/docs/community/coc.md b/src/content/docs/community/coc.md index 80d86d5..494fd7c 100644 --- a/src/content/docs/community/coc.md +++ b/src/content/docs/community/coc.md @@ -260,16 +260,25 @@ Harassment includes, but is not limited to: - Leaders commit to applying these principles fairly and consistently in all aspects of community management. - Leaders who fail to follow or enforce the Code of Conduct may be permanently removed from their position. -### 5.3. Privacy and Security +### 5.3 Sanction Criteria + +The following list outlines the criteria used when determining if a sanction should be issued. + +- Behaviour which violates this Code of Conduct, our Community Guidelines, or our other public policies. +- Behaviour which our staff feel is not in the spirit of the policy, even if it is not violating the letter of the policy. +- Repeated behaviour that has been previously sanctioned, as outlined in our escalation policy. +- Attempts to circumvent sanctions, such as ban evasion. + +### 5.4. Privacy and Security - All community leaders are obligated to respect the privacy and security of incident reporters. - Information about sanctions will be shared on a need-to-know basis. -### 5.4. Gradated Sanction System +### 5.5. Gradated Sanction System Community leaders will follow these Community Impact Guidelines in determining consequences: -#### 5.4.1. Level 1: Reminder +#### 5.5.1. Level 1: Reminder - Example Behavior: Use of inappropriate language or other behavior deemed unprofessional or unwelcome. - Consequences: @@ -277,7 +286,7 @@ Community leaders will follow these Community Impact Guidelines in determining c - Clarification of the violation and why the behavior was inappropriate - A public apology may be requested -#### 5.4.2. Level 2: Warning +#### 5.5.2. Level 2: Warning - Example Behavior: A violation through a single incident or series of actions. - Consequences: @@ -285,7 +294,7 @@ Community leaders will follow these Community Impact Guidelines in determining c - Clear communication of consequences for continued behavior - Incident is logged for future reference -#### 5.4.3. Level 3: Temporary Removal +#### 5.5.3. Level 3: Temporary Removal - Example Behavior: A serious violation of community standards or sustained inappropriate behavior. - Consequences: @@ -293,41 +302,41 @@ Community leaders will follow these Community Impact Guidelines in determining c - Clear conditions for return, including a cooling-off period - Requirement to re-read and acknowledge the Code of Conduct before rejoining -#### 5.4.4. Level 4: Permanent Ban +#### 5.5.4. Level 4: Permanent Ban - Example Behavior: Pattern of violations, sustained inappropriate behavior, harassment, or aggression towards individuals or groups. - Consequences: - Permanent ban from all community platforms - Public statement may be made, if deemed necessary for community safety -### 5.5. Additional Sanction Considerations +### 5.6. Additional Sanction Considerations - Repeated violations will generally result in escalating sanctions. - The severity of the violation may warrant skipping levels in the sanction system. - Community leaders may impose additional requirements, such as public apologies or community service, as conditions for continued participation. -### 5.6. Appeals Process +### 5.7. Appeals Process - Individuals may appeal sanctions by [completing the form](/community/appeal) - Appeals will be reviewed by leaders not involved in the original decision. - During the appeal, the original sanction remains in effect. -### 5.7. Documentation and Transparency +### 5.8. Documentation and Transparency - All formal sanctions will be publicised for review and consistency. - Aggregate data on Code of Conduct violations and sanctions may be published periodically to ensure transparency. -### 5.8. Rehabilitation and Education +### 5.9. Rehabilitation and Education - Where appropriate, we will provide resources and support for individuals to learn from their mistakes and improve their behavior. - For less severe violations, completion of educational programs may be offered as an alternative or supplement to other sanctions. -### 5.9. Legal Implications +### 5.10. Legal Implications - In cases of illegal activity, appropriate legal authorities may be notified. - Our sanctions do not preclude or replace any legal action that may be warranted. -### 5.10. Regular Review +### 5.11. Regular Review - This sanction system will be reviewed periodically to ensure its effectiveness and fairness. - Community feedback on the sanction system is welcome and will be considered in reviews. diff --git a/src/content/docs/community/guide.md b/src/content/docs/community/guide.md index 94ecbe3..59a5f3e 100644 --- a/src/content/docs/community/guide.md +++ b/src/content/docs/community/guide.md @@ -41,6 +41,8 @@ Nothing in this guide may supercede or overwrite the Code of Conduct. ## 2. Interacting with Staff +Please remember that our staff members generously volunteer their time to help our community remain safe and welcoming. Above all else, be kind to them - moderating online spaces is *hard*, and we don't need to make it harder on them! + ### 2.1 Respect for Authority Our staff team consists of trusted members empowered with tools to maintain community safety and harmony. While they strive for fairness and consistency, it's important to recognize their human nature and the potential for occasional errors. @@ -68,6 +70,18 @@ We are committed to maintaining high standards of conduct for our staff. Any sub We value your feedback on our moderation processes. If you have suggestions for improving our systems or policies, please submit them through the appropriate channels. +### 2.6 Responding to Sanctions + +If you receive a sanction, here are tips on how to avoid further moderation action: + +- Do not continue the behaviour +- Do not attempt to continue the behaviour in a slightly modified way, such as to avoid a specific component of our policies +- Do not make passive-aggressive comments about our policies, staff, or your sanction +- Do not try to justify your behaviour by comparing it to another user's that was not sanctioned +- Do try to learn from the sanction and improve your interactions +- Do keep an open mind and try to learn +- Do be the kindest you can be + ## 3. Plural Systems ### 3.1 Understanding Plurality @@ -114,15 +128,15 @@ In text-based communication, the nuances of tone and intention can often be lost Consider using tone tags in the following situations: - When your message could be interpreted in multiple ways -- If you're using sarcasm, humor, or other tones that might not be immediately apparent +- If you're using sarcasm, humour, or other tones that might not be immediately apparent - When discussing sensitive topics where clarity of intention is crucial - If you're communicating with someone who has expressed difficulty interpreting tone in text ### 4.3 How to Use Tone Tags - Place the tone tag at the end of your message or the relevant section -- Use forward slashes to enclose the tag, e.g., /j for joking -- You can use multiple tags if needed, e.g., /s /lh for sarcastic and light-hearted +- Use forward slashes to enclose the tag, e.g., `/j` for joking +- You can use multiple tags if needed, e.g., `/s /b` for sarcastic and bitter - If you're unsure about a tag's meaning, refer to our community glossary or ask for clarification ### 4.4 Commonly Used Tone Tags @@ -244,6 +258,7 @@ While not exhaustive, common pronoun options include: - She/her/hers - He/him/his - They/them/theirs + - Neopronouns (e.g., xe/xem/xyr, ze/zir/zirs) - Any pronouns - No pronouns (use name only) @@ -318,10 +333,14 @@ Our community is committed to creating a safe and respectful environment for all ### 7.2 When to Use Warnings +:::caution[Warning!] +Content/Trigger warnings are **mandatory** in all of our community spaces. Repeated patterns of failure to properly label your content will result in sanctions. "I forgot" is not an acceptable excuse. +::: + Use content or trigger warnings when posting about: - Graphic violence or gore -- Sexual content or explicit discussions of sexuality +- Sexual content or explicit discussions of sexuality (except within our clearly-indicated adult-only areas) - Abuse (physical, emotional, sexual) - Self-harm or suicide - Eating disorders or body image issues @@ -448,3 +467,31 @@ After a conflict is resolved: - Reflect on what led to the disagreement - Consider how it could have been prevented or handled better - Apply these lessons in future interactions + +## 9. This Should Be Fun! + +It is important to remember that engaging with our community should be a fun process. If you aren't enjoying your time, please consider some of these options: + +### 9.1. Take a Break + +It's okay if you need some time away from our community! We'll be here when you get back, so don't hesitate to step away for a while and decompress. Let yourself come back refreshed so you have the best experience possible. + +### 9.2. Evaluate Your Engagement + +Our community spaces are intended to be fun, relaxed, and wholesome environments. If you find that you aren't meshing with our vibe in the way that you want, consider taking a look at the type of interactions you are creating. It may be that you aren't using our community in the best way. + +### 9.3. Temporary Bans + +If you need a break and you find yourself unable to step away, or you keep coming back to check on things when you really do not want to, please reach out to our staff. We are more than willing to issue temporary bans to help you preserve the space you need. + +## 10. Mini-modding + +"Mini-modding" is a term often used to describe behaviour in which a non-staff user instructs another user to amend their behaviour as if they were a member of staff. + +Our community does not prohibit mini-modding, provided: + +- You gently encourage and support members in properly integrating with our community +- You do not represent yourself as a member of NHCarrigan's team +- You do not belittle, call out, or antagonise a user who is violating our policies + +Remember that the best way to correct someone's behaviour is to lead by example. If that fails, do not escalate - instead, report the behaviour to our team. diff --git a/src/content/docs/dev/contributing.md b/src/content/docs/dev/contributing.md index 34687fa..93e4431 100644 --- a/src/content/docs/dev/contributing.md +++ b/src/content/docs/dev/contributing.md @@ -316,7 +316,7 @@ When you're ready to commit your changes: - Use the present tense ("Add feature" not "Added feature") - Use the imperative mood ("Move cursor to..." not "Moves cursor to...") - Limit the first line to 50 characters or less - - Additonal information can be included in the body + - Additional information can be included in the body - Do NOT reference issues/PRs in your commit Example: diff --git a/src/content/docs/dev/environment.md b/src/content/docs/dev/environment.md index f5aa54b..67fdeb7 100644 --- a/src/content/docs/dev/environment.md +++ b/src/content/docs/dev/environment.md @@ -558,7 +558,7 @@ IgnorePkg = This is a complete list of all packages on the machine. This list is generated with `yay -Q`. :::caution -This list is mega chonky. +This list is quite large. :::
@@ -2262,7 +2262,7 @@ J=#idlerpg-discuss J=#idlerpg-ng ``` -### 3.5 hyprland +### 3.5 `hyprland` This is Naomi's `hyprland` config, which goes in `~/.config/hypr/hyprland.conf`. diff --git a/src/content/docs/dev/servers.md b/src/content/docs/dev/servers.md index d5a0bb6..d0ad259 100644 --- a/src/content/docs/dev/servers.md +++ b/src/content/docs/dev/servers.md @@ -6,7 +6,7 @@ This document outlines how we set up our remote servers for running projects. ## 1. Provision a Server -We use DigitalOcean as our provider. Regardless of your choice, provision a new VPS using the **latest Ubunutu LTS version**. Add your `ssh` key AND Naomi's `ssh` key in the setup process. +We use DigitalOcean as our provider. Regardless of your choice, provision a new VPS using the **latest Ubuntu LTS version**. Add your `ssh` key AND Naomi's `ssh` key in the setup process. ## 2. Set Up User @@ -289,11 +289,33 @@ And to unban them: sudo fail2ban-client set nginx-auth unbanip ``` -## 5. Running a Project +## 5. Uploading a Project + +To upload a project, you should **not** use `git` to clone the project to the machine. Instead, start by cloning the project to your local environment and navigating to the directory: + +```bash +git clone +cd /path/to/project +``` + +:::tip +If you already have the project cloned, remove any ignored files such as `node_modules`, `prod`, or `coverage`. + +```bash +rm -rf node_modules prod coverage +``` + +Then sync the project up to the machine, ignoring the `.git` directory. + +```bash +GLOBIGNORE='.git' scp -r ./* :/home/nhcarrigan/ +``` + +## 6. Running a Project Now you are ready to start running the project. -### 5.1. Node.js +### 6.1. Node.js Most of our projects will run on Node. For a new machine, you'll need to set that up. @@ -323,7 +345,7 @@ Finally, install `pnpm` as the package manager. npm i -g pnpm ``` -### 5.2. PM2 +### 6.2. PM2 All of our processes run with PM2 to allow for monitoring and auto-restarts. You'll need to install it. diff --git a/src/content/docs/dev/vtubing.md b/src/content/docs/dev/vtubing.md new file mode 100644 index 0000000..e45d7ef --- /dev/null +++ b/src/content/docs/dev/vtubing.md @@ -0,0 +1,54 @@ +--- +title: Naomi's VTubing Setup +--- + +Naomi uses her VTuber model for all of her client meetings, as well as streaming. Getting the software to work on Linux is a bit of a nightmare, so this page documents how she does so. + +## 1. OpenSeeFace + +In order to track her webcamera, OpenSeeFace needs to be run independently as a native script. + +### 1.1. Installation + +This should all be done in your home `~` directory. + +- Begin by cloning the repository: + - `git clone https://github.com/emilianavt/OpenSeeFace` + - `cd OpenSeeFace` +- You will need to prepare Python + - Install the packages: `yay -Sy python python-virtualenv` + - Prepare the environment: `virtualenv -p python3 env` + - Source the environment: `source env/bin/activate` + - Install the dependencies: `pip3 install onnxruntime opencv-python pillow numpy` + +### 1.2. Running + +``` +cd OpenSeeFace +source env/bin/activate +python facetracker.py -c 0 -W 1280 -H 720 --discard-after 0 --scan-every 0 --no-3d-adapt 1 --max-feature-updates 900 +``` + +## 2. VSeeFace + +VSeeFace does not run natively, and will need to run with Wine. + +### 2.1. Installation + +[Download and run the installer](https://www.vseeface.icu/#download). When selecting a directory, put it in `~/VSeeFace`. + +### 2.2. Running + +```bash +wine ~/VSeeFace/VSeeFace.exe --background-color "#00FF00" +``` + +The `--background-color` flag creates a green screen background to be chroma-keyed out by OBS. + +## 3. OBS + +OBS allows for virtual camera, as well as for streaming. + +### 3.1. Installation + +The `obs-studio-git` AUR package is Naomi's current installation. diff --git a/src/content/docs/legal/dmca.md b/src/content/docs/legal/dmca.md index f462489..e095bf6 100644 --- a/src/content/docs/legal/dmca.md +++ b/src/content/docs/legal/dmca.md @@ -38,7 +38,7 @@ title: DMCA and Intellectual Property Compliance Policy - The date of publication or creation (if available) - Any applicable license terms - For digital content, consider using hyperlinks to the original source when possible. -- Follow citation guidelines appropriate to your field or the context of use (e.g., APA, MLA, Chicago). +- Follow citation guidelines appropriate to your field or the context of use (e.g., APA, Chicago). ## 5. Original Content Creation and Sharing @@ -64,7 +64,7 @@ title: DMCA and Intellectual Property Compliance Policy ## 8. Plagiarism -- Presenting others' work as your own is strictly prohibited and considered a serious offense. +- Presenting others' work as your own is strictly prohibited and considered a serious offence. - This includes code, text, images, ideas, and any other form of content. - Plagiarism can have serious consequences, including loss of community privileges, academic penalties, or legal action. - Always cite your sources and use quotation marks for direct quotes. diff --git a/src/content/docs/legal/government.md b/src/content/docs/legal/government.md new file mode 100644 index 0000000..c2ca781 --- /dev/null +++ b/src/content/docs/legal/government.md @@ -0,0 +1,34 @@ +--- +title: Government Actions and Compliance +--- + +# 1. Introduction + +The purpose of this document is to maintain transparency regarding any government or legal authority's actions against our organisation that result in a release of your data to those authorities. + +## 1.1. Disclaimers + +- We do not provide any sort of proactive information to regulatory agencies. +- We do not, and will never, set up "backdoors" or other direct access routes for regulatory agencies to surveil or access your data. +- All data in this document cover the entirety of NHCarrigan's lifetime, from our inception in + +# 2. Requests for Information + +We have received 0 requests for information/data from authoritative agencies. + +| Agency | Data Requested | Result | +| ------ | -------------- | ------ | + +# 3. Warrants and Subpoenas + +We have been the subject of 0 warrants or subpoenas for our information/data. + +| Agency | Date of Action | Result | +| ------ | -------------- | ------ | + +# 4. Asset Seizures + +We have had our data/information searched or seized 0 times. + +| Agency | Scope of Search | Result | +| ------ | --------------- | ------ | diff --git a/src/content/docs/legal/privacy.md b/src/content/docs/legal/privacy.md index 10b5b2e..b4a3530 100644 --- a/src/content/docs/legal/privacy.md +++ b/src/content/docs/legal/privacy.md @@ -145,7 +145,7 @@ We will make reasonable efforts to respond to all data-related requests within 3 ### 3.8. Limitations -While we strive to honor all legitimate requests, be aware that legal requirements may sometimes prevent us from fully complying with certain requests. +While we strive to honour all legitimate requests, be aware that legal requirements may sometimes prevent us from fully complying with certain requests. ### 3.9. Ongoing Commitment @@ -155,7 +155,7 @@ We are committed to transparency and user privacy. We continuously work to impro ### 4.1. Retention Principle -We adhere to the principle of data minimization, storing personal data for the shortest time necessary to fulfill the purposes for which it was collected and to ensure the proper functioning of our applications. +We adhere to the principle of data minimization, storing personal data for the shortest time necessary to fulfil the purposes for which it was collected and to ensure the proper functioning of our applications. ### 4.2. Retention Periods diff --git a/src/content/docs/legal/subprocessors.md b/src/content/docs/legal/subprocessors.md new file mode 100644 index 0000000..c9104a9 --- /dev/null +++ b/src/content/docs/legal/subprocessors.md @@ -0,0 +1,32 @@ +--- +title: Data Subprocessors +--- + +## 7. Subprocessors + +The following entities process your data on our behalf. Interacting with our applications is subject to the privacy policies and terms of these entities. + +### 7.1. Primary Subprocessors + +These entities directly store, manage, or handle our application data. + +| Entity | Data Processed | +| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | +| Anthropic | Any data provided to our AI-powered applications such as the AltGenerator Discord bot. | +| Crisp | Any communication sent to and from NHCarrigan via the embedded chat on our web applications | +| DigitalOcean | Any data transmitted over the network to and from our applications. | +| Discord | Any information related to usage logging and errors posted in our community. | +| HubSpot | Data submitted to our Contact, Sales Inquiry, Sanction Appeals, and Newsletter Sign-up forms. | +| MongoDB | Any data provided to our applications when you interact with them. | +| ProtonMail | Any information transmitted to and from our `nhcarrigan.com` email addresses. | +| Stripe | Information provided during the identity and age verification processes necessary to access certain applications and community channels. | + +### 7.2. Secondary Subprocessors + +In addition to our primary subprocessors, platforms and services you engage with in order to interface with our applications maintain their own privacy policies, and may store your data pursuant to those policies. + +Such platforms include, but are not limited to: + +- Codeberg +- Discord +- GitHub diff --git a/src/content/docs/legal/terms.md b/src/content/docs/legal/terms.md index 395cf18..e04b724 100644 --- a/src/content/docs/legal/terms.md +++ b/src/content/docs/legal/terms.md @@ -394,7 +394,7 @@ We are under no obligation to: We reserve the right, but have no obligation, to monitor, edit, or remove any User Submissions that we determine, in our sole discretion, to be: -- Unlawful, offensive, threatening, libelous, defamatory, pornographic, or obscene +- Unlawful, offensive, threatening, libellous, defamatory, pornographic, or obscene - Violating any party's intellectual property rights - Violating these Terms of Service or our Code of Conduct - Otherwise objectionable @@ -404,7 +404,7 @@ We reserve the right, but have no obligation, to monitor, edit, or remove any Us You represent and warrant that your User Submissions: - Do not violate any right of any third party, including copyright, trademark, privacy, personality, or other personal or proprietary rights -- Do not contain libelous, unlawful, abusive, or obscene material +- Do not contain libellous, unlawful, abusive, or obscene material - Do not contain any computer virus or other malware that could affect the operation of the Service or any related website - Do not violate any applicable local, state, national, or international law or regulation @@ -416,7 +416,7 @@ You agree not to submit User Submissions that: - Falsely state or otherwise misrepresent your affiliation with a person or entity - Contain false or misleading information - Infringe upon or violate our intellectual property rights or the intellectual property rights of others -- Promote illegal activities or conduct that is abusive, threatening, obscene, defamatory, or libelous +- Promote illegal activities or conduct that is abusive, threatening, obscene, defamatory, or libellous - Promote discrimination based on race, sex, religion, nationality, disability, sexual orientation, or age - Contain topics, names, material, or information that violate any applicable law or regulation @@ -492,7 +492,7 @@ We may share your personal information with third-party service providers who as ### 9.8 Data Retention -We retain your personal information for as long as necessary to fulfill the purposes outlined in our Privacy Policy, unless a longer retention period is required or permitted by law. +We retain your personal information for as long as necessary to fulfil the purposes outlined in our Privacy Policy, unless a longer retention period is required or permitted by law. ### 9.9 Your Rights @@ -747,7 +747,7 @@ You acknowledge and agree that the foregoing disclaimers and limitations of liab ### 12.10 Force Majeure -We will not be liable for any failure or delay in performing our obligations where such failure or delay results from any cause beyond our reasonable control, including, without limitation, acts of God, natural disasters, pandemic, labor disputes, war, riot, embargoes, acts of civil or military authorities, fire, floods, accidents, strikes, or shortages of transportation facilities, fuel, energy, labor, or materials. +We will not be liable for any failure or delay in performing our obligations where such failure or delay results from any cause beyond our reasonable control, including, without limitation, acts of God, natural disasters, pandemic, labour disputes, war, riot, embargoes, acts of civil or military authorities, fire, floods, accidents, strikes, or shortages of transportation facilities, fuel, energy, labour, or materials. ### 12.11 Time Limitation @@ -787,7 +787,7 @@ from any claim or demand, including reasonable attorneys' fees and costs, made b ### 13.2 Duty to Defend -You agree to cooperate as fully as reasonably required in the defense of any claim. nhcarrigan reserves the right to assume the exclusive defense and control of any matter subject to indemnification by you. +You agree to cooperate as fully as reasonably required in the defence of any claim. nhcarrigan reserves the right to assume the exclusive defence and control of any matter subject to indemnification by you. ### 13.3 No Admission of Liability @@ -813,9 +813,9 @@ This indemnification obligation will survive the termination of these Terms of S Your indemnification obligation shall be limited to the extent permitted by applicable law. -### 13.9 Right to Assume Defense +### 13.9 Right to Assume Defence -nhcarrigan reserves the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate with our defense of these claims. +nhcarrigan reserves the right, at your expense, to assume the exclusive defence and control of any matter for which you are required to indemnify us, and you agree to cooperate with our defence of these claims. ### 13.10 Mitigation of Damages @@ -867,7 +867,7 @@ The severability of provisions may be assessed differently in various jurisdicti ### 14.6 Effect on Entire Agreement -The unenforceability or invalidity of any provision shall not affect the enforceability or validity of the entire agreement. These Terms shall continue in full force and effect as if such invalid or unenforceable provision had never been contained herein. +The un-enforceability or invalidity of any provision shall not affect the enforceability or validity of the entire agreement. These Terms shall continue in full force and effect as if such invalid or unenforceable provision had never been contained herein. ### 14.7 Negotiation in Good Faith @@ -885,11 +885,11 @@ The failure to enforce any part of these Terms shall not constitute a waiver of Provisions that are essential to the purpose of these Terms, including but not limited to indemnification, limitation of liability, and dispute resolution provisions, shall survive the termination or expiration of these Terms. -### 14.11 Interpretation in Favor of Validity +### 14.11 Interpretation in Favour of Validity These Terms shall be interpreted, to the extent possible, in a manner that makes them valid and enforceable under applicable law. -### 14.12 Notification of Unenforceability +### 14.12 Notification of Un-enforceability If you believe any provision of these Terms to be unenforceable, please notify us in writing with a detailed explanation. @@ -1045,7 +1045,7 @@ You agree that any legal action or proceeding between you and nhcarrigan shall b ### 17.3 Binding Arbitration -Any dispute, controversy, or claim arising out of or relating to these Terms of Service, including the formation, interpretation, breach, or termination thereof, including whether the claims asserted are arbitrable, shall be referred to and finally determined by binding arbitration in accordance with the JAMS International Arbitration Rules. +Any dispute, controversy, or claim arising out of or relating to these Terms of Service, including the formation, interpretation, breach, or termination thereof, including whether the claims asserted can be arbitrated, shall be referred to and finally determined by binding arbitration in accordance with the JAMS International Arbitration Rules. ### 17.4 Arbitration Process diff --git a/src/content/docs/projects/task-bot.md b/src/content/docs/projects/task-bot.md index 40b19a1..2d72505 100644 --- a/src/content/docs/projects/task-bot.md +++ b/src/content/docs/projects/task-bot.md @@ -2,7 +2,7 @@ title: Task Bot --- -Task Bot (hereinafter the "Application") is a user-installable Discord application which allows you to manage your tasks anywhere on Discord: in a server, in a DM with the bot, in DMs with your friends... The possibilities are endless. +Task Bot (hereinafter the "Application") is a user-installable Discord application which allows you to manage your tasks anywhere on Discord: in a server, in a direct message with the bot, in direct messages with your friends... The possibilities are endless. Task management with this bot is an individual feature. If you need server-level task management, such as for a development team, please reach out to us in our support server to discuss pricing. diff --git a/src/content/docs/staff/handbook.md b/src/content/docs/staff/handbook.md index 6c33dd8..e3b5c5d 100644 --- a/src/content/docs/staff/handbook.md +++ b/src/content/docs/staff/handbook.md @@ -89,7 +89,7 @@ Our community spans multiple platforms: #### 2.3.1 Professionalism -Maintain a professional demeanor in all interactions: +Maintain a professional demeanour in all interactions: - Remain calm and objective, especially in challenging situations. - Avoid engaging in or escalating conflicts. @@ -142,7 +142,7 @@ Know when and how to escalate issues: #### 2.2.2 Warning a Member -Use warnings for minor infractions or first-time offenses. +Use warnings for minor infractions or first-time offences. **When to Warn:** - Mild spam (e.g., posting the same message a few times) @@ -186,7 +186,7 @@ Banning is the most severe action and should be used judiciously. **When to Ban:** - Severe rule violations -- Repeated offenses after warnings and kicks +- Repeated offences after warnings and kicks - Malicious actions (e.g., raiding, doxxing, severe harassment) **How to Ban:** @@ -249,11 +249,11 @@ Example: "@User, please avoid spamming emotes. Next time may result in a timeout ##### 2.3.3.2 Timeouts -Use timeouts for more serious or repeated minor offenses. +Use timeouts for more serious or repeated minor offences. -- First offense: 5-minute timeout -- Second offense: 10-minute timeout -- Third offense: 30-minute timeout +- First offence: 5-minute timeout +- Second offence: 10-minute timeout +- Third offence: 30-minute timeout To timeout: `/timeout @username [duration]` @@ -267,11 +267,11 @@ Always document the reason for bans in your moderator notes or designated channe #### 2.3.4 Specific Situations -1. **Spam:** Use timeouts, increasing duration for repeat offenses. +1. **Spam:** Use timeouts, increasing duration for repeat offences. 2. **Hate Speech/Discrimination:** Immediate ban and report to Twitch. 3. **Excessive Backseat Gaming:** Start with a warning, then short timeout if it continues. 4. **Spoilers:** Delete message and issue a warning. -5. **Self-Promotion:** Remove message and warn. Timeout for repeated offenses. +5. **Self-Promotion:** Remove message and warn. Timeout for repeated offences. 6. **Bot Attacks:** Enable followers-only or subscribers-only mode temporarily. #### 2.3.5 Communication @@ -332,7 +332,7 @@ Familiarize yourself with Reddit's moderation tools: ##### 2.4.3.3 Temporary Bans -- Use for repeated minor offenses or more serious rule violations. +- Use for repeated minor offences or more serious rule violations. - Typical durations: 3 days, 7 days, 14 days, 30 days. - Always include the reason and duration in the ban message. @@ -344,7 +344,7 @@ Familiarize yourself with Reddit's moderation tools: #### 2.4.4 Specific Situations -1. **Spam:** Remove and mark as spam. Temp ban for repeated offenses. +1. **Spam:** Remove and mark as spam. Temp ban for repeated offences. 2. **Harassment:** Remove, warn, and escalate to temp or permanent ban as needed. 3. **Off-topic Posts:** Remove and direct users to appropriate subreddits. 4. **Reposts:** Remove recent reposts, with a comment explaining the removal. @@ -359,7 +359,7 @@ Familiarize yourself with Reddit's moderation tools: #### 2.4.6 Flair Management -- Ensure posts are properly flaired. +- Ensure posts have the proper flair. - Assist users with setting up user flairs if applicable. #### 2.4.7 Modmail @@ -382,7 +382,7 @@ Familiarize yourself with Reddit's moderation tools: #### 2.4.10 Handling Sensitive Content -- Remove NSFW content. +- Remove adult-only content. - For controversial topics, monitor discussions closely and lock if necessary. - Report any illegal content to Reddit admins immediately. @@ -427,7 +427,7 @@ Familiarize yourself with Codeberg's moderation features: #### 2.5.4 Specific Situations -1. **Spam:** Remove spam content and warn the user. Block for repeated offenses. +1. **Spam:** Remove spam content and warn the user. Block for repeated offences. 2. **Harassment:** Remove offending content, warn the user, and escalate to blocking if behavior persists. 3. **Off-topic Discussions:** Redirect to appropriate channels or close if irrelevant. 4. **Code of Conduct Violations:** Address promptly, following the enforcement guidelines in the CoC. @@ -498,7 +498,7 @@ Example: "Username, please avoid using excessive caps. It's considered shouting. ##### 2.6.3.2 Kicks -Use kicks for more serious or repeated minor offenses. +Use kicks for more serious or repeated minor offences. To kick: `/kick username Reason for kick` @@ -512,8 +512,8 @@ Always document the reason for bans in your moderation logs. #### 2.6.4 Specific Situations -1. **Spam**: Use kicks, escalating to short-term bans for repeat offenses. -2. **Offensive Language**: Warn, then kick. Ban for repeated offenses. +1. **Spam**: Use kicks, escalating to short-term bans for repeat offences. +2. **Offensive Language**: Warn, then kick. Ban for repeated offences. 3. **Flooding**: Mute temporarily, kick if behavior continues. 4. **Off-topic Discussions**: Gently redirect to appropriate channels. 5. **Bot Attacks**: Set channel to moderated mode (+m) temporarily. @@ -566,7 +566,7 @@ Use message deletion for content that violates workspace rules. ##### 2.7.3.3 Restricting Privileges -For repeated offenses, consider restricting user privileges temporarily. +For repeated offences, consider restricting user privileges temporarily. ##### 2.7.3.4 Removing Users diff --git a/src/fonts/OpenDyslexicMono-Regular.otf b/src/fonts/OpenDyslexicMono-Regular.otf new file mode 100644 index 0000000..cb5e3d2 Binary files /dev/null and b/src/fonts/OpenDyslexicMono-Regular.otf differ diff --git a/src/fonts/font-face.css b/src/fonts/font-face.css new file mode 100644 index 0000000..60b6fd8 --- /dev/null +++ b/src/fonts/font-face.css @@ -0,0 +1,8 @@ +@font-face { + font-family: "OpenDyslexic Mono"; + src: url("./OpenDyslexicMono-Regular.otf") format("opentype"); +} + +* { + font-family: "OpenDyslexic Mono", monospace !important; +} \ No newline at end of file