From 24d6460e4c2ca5737dc16e7312ecac2804feaf0d Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Sun, 28 Jun 2026 22:21:09 -0400 Subject: [PATCH] chore: remove Sentry.io entirely We no longer use Sentry. Removed: - @sentry/react + @sentry/vite-plugin (package.json + lockfile) - Sentry.init in index.tsx and the VITE_SENTRY_DSN env (.env.production) - @sentry/vite-plugin + the SENTRY_AUTH_TOKEN sourcemap-upload path in vite.config.js (sourcemap now always false) and the CI env var - Sentry.ErrorBoundary in App.tsx -> react-error-boundary's ErrorBoundary with a folds-native fallback (Box/Text/Button + config tokens), which also resolves the native-cinny audit's raw-#hex/#5865f2 fallback finding. Co-Authored-By: Claude Opus 4.8 --- .env.production | 1 - .gitea/workflows/ci.yml | 1 - package-lock.json | 496 ---------------------------------------- package.json | 2 - src/app/pages/App.tsx | 65 +++--- src/index.tsx | 26 --- vite.config.js | 17 +- 7 files changed, 30 insertions(+), 578 deletions(-) diff --git a/.env.production b/.env.production index 76085ce15..f25f6a5f9 100644 --- a/.env.production +++ b/.env.production @@ -1,2 +1 @@ -VITE_SENTRY_DSN=https://264a5e95c5d31fe080a2e92fb008294d@o4511430568378368.ingest.us.sentry.io/4511430571982849 VITE_APP_VERSION=lotus diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 6f4539b54..18ea85265 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -45,7 +45,6 @@ jobs: run: npm run build env: NODE_OPTIONS: '--max_old_space_size=4096' - SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} VITE_APP_VERSION: ${{ github.sha }} # ── Quality checks (informational — pre-existing issues exist) ─────── diff --git a/package-lock.json b/package-lock.json index 00994e9d7..5853cef9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,6 @@ "@giphy/js-util": "5.2.0", "@giphy/react-components": "10.1.2", "@sapphi-red/web-noise-suppressor": "0.3.5", - "@sentry/react": "10.53.1", "@tanstack/react-query": "5.100.13", "@tanstack/react-query-devtools": "5.100.13", "@tanstack/react-virtual": "3.13.25", @@ -81,7 +80,6 @@ "@element-hq/element-call-embedded": "0.20.1", "@rollup/plugin-inject": "5.0.5", "@rollup/plugin-wasm": "6.2.2", - "@sentry/vite-plugin": "5.3.0", "@types/chroma-js": "3.1.2", "@types/file-saver": "2.0.7", "@types/is-hotkey": "0.1.10", @@ -3782,403 +3780,6 @@ "integrity": "sha512-jh3+V9yM+zxLriQexoGm0GatoPaJWjs6ypFIbFYwQp+AoUb55eUXrjKtKQyuC5zShzzeAQUl0M5JzqB7SSrsRA==", "license": "MIT" }, - "node_modules/@sentry-internal/browser-utils": { - "version": "10.53.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.53.1.tgz", - "integrity": "sha512-X4d6y8sBMjmNhcDW4eMBU3ASsNIMz8dqaFkhyIMN/dkYr/yZKnbRZPaVuVUGvHKjnlficPpIH0/HK9KBjrYxPw==", - "license": "MIT", - "dependencies": { - "@sentry/core": "10.53.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry-internal/feedback": { - "version": "10.53.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.53.1.tgz", - "integrity": "sha512-vVpTI/aEYN5d9IgZeYJWMqVaN0+iFgidSrYNAsZTh1US5sJUzF/wrl+68KdpmCtFROrN3jiAn1oPSwL5CKvEJA==", - "license": "MIT", - "dependencies": { - "@sentry/core": "10.53.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry-internal/replay": { - "version": "10.53.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.53.1.tgz", - "integrity": "sha512-wZNzTBYkgGUPWMuUQv7L64+OJmoCnz7GQNiTrTFK6EVAjJXFBCSsPp/nhif0bLhbk8+0g4xz633uOhpXuQbFdw==", - "license": "MIT", - "dependencies": { - "@sentry-internal/browser-utils": "10.53.1", - "@sentry/core": "10.53.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "10.53.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.53.1.tgz", - "integrity": "sha512-aueLaf/2prExwA76BGU5/bOXCKWqtt6jQXWA6WJQNrmKpPEtZJB4ypnpsou0McXQCF8tur2Y8U0TEkwQP13yJQ==", - "license": "MIT", - "dependencies": { - "@sentry-internal/replay": "10.53.1", - "@sentry/core": "10.53.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-5.3.0.tgz", - "integrity": "sha512-p4q8gn8wcFqZGP/s2MnJCAAd8fTikaU6A0mM97RDHQgStcrYiaS0Sc5zUNfb1V+UOLPuvdEdL6MwyxfzjYJQTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@sentry/browser": { - "version": "10.53.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.53.1.tgz", - "integrity": "sha512-zXF373hzUOGzUOrqd8xb1U3LQi5uYC3mwv+z5OMKUUinQlu30tTWBs7ypy6YTchtix9QlYaHWlayUF8vBZ5UjA==", - "license": "MIT", - "dependencies": { - "@sentry-internal/browser-utils": "10.53.1", - "@sentry-internal/feedback": "10.53.1", - "@sentry-internal/replay": "10.53.1", - "@sentry-internal/replay-canvas": "10.53.1", - "@sentry/core": "10.53.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/bundler-plugin-core": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-5.3.0.tgz", - "integrity": "sha512-L5T60sWdAI3qWwdg3Ptwek/0TY59PERrxyqp4XMUkroayQvGd9r5dIW9Q1kSeXX9iJ442nXbFZKAOyCKV4Z13Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.18.5", - "@sentry/babel-plugin-component-annotate": "5.3.0", - "@sentry/cli": "^2.58.5", - "dotenv": "^16.3.1", - "find-up": "^5.0.0", - "glob": "^13.0.6", - "magic-string": "~0.30.8" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@sentry/cli": { - "version": "2.58.6", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.6.tgz", - "integrity": "sha512-baBcNPLLfUi9WuL+Tpri9BFaAdvugZIKelC5X0tt0Zdy+K0K+PCVSrnNmwMWU/HyaF/SEv6b6UHnXIdqanBlcg==", - "dev": true, - "hasInstallScript": true, - "license": "FSL-1.1-MIT", - "dependencies": { - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.7", - "progress": "^2.0.3", - "proxy-from-env": "^1.1.0", - "which": "^2.0.2" - }, - "bin": { - "sentry-cli": "bin/sentry-cli" - }, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@sentry/cli-darwin": "2.58.6", - "@sentry/cli-linux-arm": "2.58.6", - "@sentry/cli-linux-arm64": "2.58.6", - "@sentry/cli-linux-i686": "2.58.6", - "@sentry/cli-linux-x64": "2.58.6", - "@sentry/cli-win32-arm64": "2.58.6", - "@sentry/cli-win32-i686": "2.58.6", - "@sentry/cli-win32-x64": "2.58.6" - } - }, - "node_modules/@sentry/cli-darwin": { - "version": "2.58.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.6.tgz", - "integrity": "sha512-udAVvcyfNa0R+95GvPz/+43/N3TC0TYKdkQ7D7jhPSzbcMc7l2fxRNN5yB3UpCA5fWFnW4toeaqwDBhb/Wh3LA==", - "dev": true, - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-arm": { - "version": "2.58.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.6.tgz", - "integrity": "sha512-pD0LAt5PcUzAinBwvDqc66x9+2CabHEv486yP0gRjWO7SakbaxmfVq/EXd8VLq/Tzi39LAu422UYK1lpW3MILw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-arm64": { - "version": "2.58.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.6.tgz", - "integrity": "sha512-q8mEcNNmeXMy5i+jWT30TVpH7LcP4HD21CD5XRSPAd/a912HF6EpK0ybf/1USO14WOhoXbAGi9txwaWabSe33g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-i686": { - "version": "2.58.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.6.tgz", - "integrity": "sha512-q8vNJi1eOV/4vxAFWBsEwLHoSYapaZHIf4j76KJGJXFKTkEbsjCOOsKbwUIBTQQhRgV4DFWh3ryfsPS/que4Kg==", - "cpu": [ - "x86", - "ia32" - ], - "dev": true, - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-x64": { - "version": "2.58.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.6.tgz", - "integrity": "sha512-DZu956Mhi3ZRjTBe1WdbGV46ldVbA8d2rgp/fh51GsI25zjBHah4wZnPTSzpc+YqxU6pJpg579B/r3jrIK530Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-win32-arm64": { - "version": "2.58.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.6.tgz", - "integrity": "sha512-nj0Ff/kmAB73EPDhR8B4O9r+NUHK5GkPCkGWC+kXVemqAJWL5jcJ5KdxG0l/S0z6RoEoltID8/43/B+TaMlT7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-win32-i686": { - "version": "2.58.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.6.tgz", - "integrity": "sha512-WNZiDzPbgsEMQWq4avsQ391v/xWKJDIWWWo9GYl+N/w5qcYKkoDW7wQG7T9FasI6ENn68phChTOAPXXxbfAdOg==", - "cpu": [ - "x86", - "ia32" - ], - "dev": true, - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-win32-x64": { - "version": "2.58.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.6.tgz", - "integrity": "sha512-R35WJ17oF4D2eqI1DR2sQQqr0fjRTt5xoP16WrTu91XM2lndRMFsnjh+/GttbxapLCBNlrjzia99MJ0PZHZpgA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/core": { - "version": "10.53.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.53.1.tgz", - "integrity": "sha512-XG4ezlkyuAPjBC5+9kXC94rXXuqYTw9NRhfaDHssbTFaGnqBR8vQX2UUgZfY7ucbeelRDGfBu1sywoU+mB04uA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/react": { - "version": "10.53.1", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.53.1.tgz", - "integrity": "sha512-lrwNq5T/zW84l60894TpKHPcvFuc1I/Hnohecc0TfYVpIcYYuw2orCHoU4v4wgkFaJUpegVetbgdOphViyLVjA==", - "license": "MIT", - "dependencies": { - "@sentry/browser": "10.53.1", - "@sentry/core": "10.53.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "react": "^16.14.0 || 17.x || 18.x || 19.x" - } - }, - "node_modules/@sentry/rollup-plugin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@sentry/rollup-plugin/-/rollup-plugin-5.3.0.tgz", - "integrity": "sha512-hgPGPYdQJ/G1cGYOxAb7d4z3V+/k/E5/P/5TFPEEBLuIbFFk+JG0CISUDJdzXJjO382Lb99PBJuXGbueBmO79w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/bundler-plugin-core": "5.3.0", - "magic-string": "~0.30.8" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "rollup": ">=3.2.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@sentry/vite-plugin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-5.3.0.tgz", - "integrity": "sha512-qcoSzo4n2MulVQ70UUPLq6dTleb2a2HwL2wuwvAgWhPChrYTuk6A6mDg6aQb9fairPAwFPiU9PzOANpoDJcz1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/bundler-plugin-core": "5.3.0", - "@sentry/rollup-plugin": "5.3.0" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/@simple-libs/stream-utils": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-1.2.0.tgz", @@ -4893,18 +4494,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/ajv": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", @@ -6634,19 +6223,6 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -8473,19 +8049,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/husky": { "version": "9.1.7", "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", @@ -10599,26 +10162,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", @@ -11178,16 +10721,6 @@ "node": ">=6" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -11198,13 +10731,6 @@ "react-is": "^16.13.1" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true, - "license": "MIT" - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -12783,12 +12309,6 @@ "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", "license": "MIT" }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", @@ -13336,22 +12856,6 @@ "defaults": "^1.0.3" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index adbdee9aa..cad716e95 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "@giphy/js-util": "5.2.0", "@giphy/react-components": "10.1.2", "@sapphi-red/web-noise-suppressor": "0.3.5", - "@sentry/react": "10.53.1", "@tanstack/react-query": "5.100.13", "@tanstack/react-query-devtools": "5.100.13", "@tanstack/react-virtual": "3.13.25", @@ -105,7 +104,6 @@ "@element-hq/element-call-embedded": "0.20.1", "@rollup/plugin-inject": "5.0.5", "@rollup/plugin-wasm": "6.2.2", - "@sentry/vite-plugin": "5.3.0", "@types/chroma-js": "3.1.2", "@types/file-saver": "2.0.7", "@types/is-hotkey": "0.1.10", diff --git a/src/app/pages/App.tsx b/src/app/pages/App.tsx index 7f6973bd3..5c0be9fe5 100644 --- a/src/app/pages/App.tsx +++ b/src/app/pages/App.tsx @@ -1,7 +1,16 @@ import React, { useEffect } from 'react'; -import * as Sentry from '@sentry/react'; +import { ErrorBoundary } from 'react-error-boundary'; import { Provider as JotaiProvider, useAtomValue } from 'jotai'; -import { OverlayContainerProvider, PopOutContainerProvider, TooltipContainerProvider } from 'folds'; +import { + Box, + Button, + config, + OverlayContainerProvider, + PopOutContainerProvider, + Text, + toRem, + TooltipContainerProvider, +} from 'folds'; import { RouterProvider } from 'react-router-dom'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; @@ -102,41 +111,25 @@ function App() { const portalContainer = document.getElementById('portalContainer') ?? undefined; return ( - ( -
( + -

Something went wrong

-

+ Something went wrong + {error instanceof Error ? error.message : 'An unexpected error occurred.'} -

- -
+ + + )} > @@ -171,7 +164,7 @@ function App() { -
+ ); } diff --git a/src/index.tsx b/src/index.tsx index b307a8265..cff3a7ff1 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,5 +1,4 @@ /* eslint-disable import/first */ -import * as Sentry from '@sentry/react'; import React from 'react'; import { createRoot } from 'react-dom/client'; import { enableMapSet } from 'immer'; @@ -7,31 +6,6 @@ import '@fontsource-variable/inter/index.css'; import 'folds/dist/style.css'; import { configClass, varsClass } from 'folds'; -const sentryDsn = import.meta.env.VITE_SENTRY_DSN; -if (sentryDsn) { - Sentry.init({ - dsn: sentryDsn, - environment: import.meta.env.MODE, - release: import.meta.env.VITE_APP_VERSION, - // browserTracingIntegration omitted — it injects sentry-trace/baggage headers - // into outgoing fetch calls, which breaks Synapse CORS on matrix.lotusguild.org - // No propagation targets — we don't control the Matrix server's CORS allow-list - tracePropagationTargets: [], - tracesSampleRate: 0, - // Don't send PII (IPs, usernames) — this is a private chat app - sendDefaultPii: false, - // Forward Sentry logs to the dashboard - enableLogs: true, - // Suppress benign PostmessageTransport / matrixRTC heartbeat timeouts (upstream library noise) - ignoreErrors: ['Request timed out'], - beforeSend(event) { - // Drop any event that may have leaked an access token into breadcrumbs/data - if (JSON.stringify(event).includes('access_token')) return null; - return event; - }, - }); -} - enableMapSet(); import './index.css'; diff --git a/vite.config.js b/vite.config.js index 4b78188e9..28d70e1f4 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,6 +1,5 @@ import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; -import { sentryVitePlugin } from '@sentry/vite-plugin'; import { wasm } from '@rollup/plugin-wasm'; import inject from '@rollup/plugin-inject'; import { viteStaticCopy } from 'vite-plugin-static-copy'; @@ -261,20 +260,6 @@ export default defineConfig({ react(), copyPdfWorker(), lotusDenoise(), - ...(process.env.SENTRY_AUTH_TOKEN - ? [ - sentryVitePlugin({ - org: 'lotus-guild', - project: 'javascript-react', - authToken: process.env.SENTRY_AUTH_TOKEN, - sourcemaps: { - filesToDeleteAfterUpload: ['./dist/**/*.map'], - }, - release: { name: process.env.VITE_APP_VERSION ?? 'lotus' }, - telemetry: false, - }), - ] - : []), VitePWA({ srcDir: 'src', filename: 'sw.ts', @@ -302,7 +287,7 @@ export default defineConfig({ build: { target: 'esnext', outDir: 'dist', - sourcemap: process.env.SENTRY_AUTH_TOKEN ? 'hidden' : false, + sourcemap: false, copyPublicDir: false, // manualChunks must be in rolldownOptions (not rollupOptions) for Vite 8 / Rolldown rolldownOptions: {