feat(security,ui): self-host React deps, Tailwind, fonts; strict CSP; local QR; better selection state

Replace CDN React/ReactDOM/Babel with local libs; remove Babel and inline scripts
Build Tailwind locally, add safelist; switch to assets/tailwind.css
Self-host Font Awesome and Inter (CSS + woff2); remove external font CDNs
Implement strict CSP (no unsafe-inline/eval; scripts/styles/fonts from self)
Extract inline handlers; move PWA scripts to external files
Add local QR code generation (qrcode lib) and remove api.qrserver.com
Improve SessionTypeSelector visual selection (highlighted background and ring)
Keep PWA working with service worker and offline assets
Refs: CSP hardening, offline-first, no external dependencies
This commit is contained in:
lockbitchat
2025-09-08 16:04:58 -04:00
parent 3458270477
commit 0f8399ec88
352 changed files with 84907 additions and 4257 deletions

48
node_modules/yargs/locales/pt_BR.json generated vendored Normal file
View File

@@ -0,0 +1,48 @@
{
"Commands:": "Comandos:",
"Options:": "Opções:",
"Examples:": "Exemplos:",
"boolean": "booleano",
"count": "contagem",
"string": "string",
"number": "número",
"array": "array",
"required": "obrigatório",
"default:": "padrão:",
"choices:": "opções:",
"aliases:": "sinônimos:",
"generated-value": "valor-gerado",
"Not enough non-option arguments: got %s, need at least %s": {
"one": "Argumentos insuficientes: Argumento %s, necessário pelo menos %s",
"other": "Argumentos insuficientes: Argumento %s, necessário pelo menos %s"
},
"Too many non-option arguments: got %s, maximum of %s": {
"one": "Excesso de argumentos: recebido %s, máximo de %s",
"other": "Excesso de argumentos: recebido %s, máximo de %s"
},
"Missing argument value: %s": {
"one": "Falta valor de argumento: %s",
"other": "Falta valores de argumento: %s"
},
"Missing required argument: %s": {
"one": "Falta argumento obrigatório: %s",
"other": "Faltando argumentos obrigatórios: %s"
},
"Unknown argument: %s": {
"one": "Argumento desconhecido: %s",
"other": "Argumentos desconhecidos: %s"
},
"Invalid values:": "Valores inválidos:",
"Argument: %s, Given: %s, Choices: %s": "Argumento: %s, Dado: %s, Opções: %s",
"Argument check failed: %s": "Verificação de argumento falhou: %s",
"Implications failed:": "Implicações falharam:",
"Not enough arguments following: %s": "Argumentos insuficientes a seguir: %s",
"Invalid JSON config file: %s": "Arquivo JSON de configuração inválido: %s",
"Path to JSON config file": "Caminho para o arquivo JSON de configuração",
"Show help": "Exibe ajuda",
"Show version number": "Exibe a versão",
"Did you mean %s?": "Você quis dizer %s?",
"Arguments %s and %s are mutually exclusive" : "Argumentos %s e %s são mutualmente exclusivos",
"Positionals:": "Posicionais:",
"command": "comando"
}