Merge pull request #519 from jason5ng32/dev

Sync with Dev
This commit is contained in:
Jason Ng authored and GitHub committed 2026-10-23 11:29:15 +08:00
commit 88bb4fdaef
7 files changed
+873 -987

No files matched your search

+1
View File
@@ -62,6 +62,7 @@ public/llms-full.txt
public/tools/
public/robots.txt
public/ads.txt
public/funding.json
# Private AI context (per-machine, not for the public repo)
local-context.md
+1
View File
@@ -0,0 +1 @@
https://ipcheck.ing/funding.json
+12 -4
View File
@@ -84,10 +84,18 @@ const initSentry = (app, router, earlyErrors = []) => {
// gets flushed when an error occurs
replaysSessionSampleRate: 0,
replaysOnErrorSampleRate: 1.0,
// No IP / headers attached to event data. Debugging context that
// needs the visitor's network info comes from the unmasked
// error-replays instead — the page itself displays those details.
sendDefaultPii: false,
// No IP, cookies or request bodies attached to event data; the
// visitor's network info is on the page itself, so an unmasked
// error-replay already carries it. `userInfo: false` also tells
// Sentry never to infer an IP from the connection — through the
// tunnel that would be our server's. Headers stay at the default:
// the browser SDK only collects User-Agent and Referer, which Sentry
// needs for its browser / OS tags.
dataCollection: {
userInfo: false,
cookies: false,
httpBodies: [],
},
// Relay envelopes through our own backend (api/sentry-tunnel.js)
tunnel: '/api/monitoring',
// Force a Content-Type on every envelope POST.
+18 -18
View File
@@ -3,7 +3,7 @@
"private": true,
"version": "8.0.0",
"type": "module",
"packageManager": "pnpm@12.9.1",
"packageManager": "pnpm@12.14.0",
"engines": {
"node": "^24.15.0 || >=26.0.0"
},
@@ -25,15 +25,15 @@
"i18n-sync": "node scripts/i18n-scaffold.js sync"
},
"dependencies": {
"@cloudflare/speedtest": "^1.14.1",
"@cloudflare/speedtest": "^1.14.2",
"@iconify-json/circle-flags": "^1.2.12",
"@iconify/vue": "^5.0.3",
"@iconify/vue": "^5.0.4",
"@khmyznikov/pwa-install": "^0.7.0",
"@lucide/vue": "^1.52.0",
"@lucide/vue": "^1.61.0",
"@photostructure/tz-lookup": "^11.7.0",
"@sentry/node": "^11.4.0",
"@sentry/vue": "^11.4.0",
"@tanstack/vue-table": "^9.2.6",
"@sentry/node": "^11.8.0",
"@sentry/vue": "^11.8.0",
"@tanstack/vue-table": "^9.3.1",
"@thumbmarkjs/thumbmarkjs": "^1.12.0",
"@vueuse/core": "^15.0.0",
"chart.js": "^4.5.1",
@@ -41,18 +41,18 @@
"circle-progress.vue": "^3.4.1",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"concurrently": "^10.0.5",
"concurrently": "^10.0.6",
"croner": "^10.0.1",
"dagre": "^0.8.5",
"dotenv": "^18.0.5",
"express": "^5.2.1",
"dotenv": "^18.0.8",
"express": "^5.3.0",
"express-rate-limit": "^8.7.1",
"express-slow-down": "^3.1.1",
"firebase": "^12.19.0",
"firebase": "^13.1.0",
"html-to-image": "^1.11.13",
"http-proxy-middleware": "^4.2.0",
"maxmind": "^5.0.7",
"pinia": "^4.0.3",
"pinia": "^4.1.0",
"pino": "^10.4.0",
"pino-http": "^11.0.0",
"pino-pretty": "^13.2.0",
@@ -64,24 +64,24 @@
"ua-parser-js": "^2.0.10",
"unbzip2-stream": "^1.4.3",
"vaul-vue": "^0.4.1",
"vue": "^3.5.43",
"vue-i18n": "^11.4.13",
"vue": "^3.5.44",
"vue-i18n": "^11.4.16",
"vue-input-otp": "^0.4.0",
"vue-markdown-render": "^2.3.1",
"vue-router": "^5.3.1",
"vue-router": "^5.4.0",
"vue-sonner": "^2.0.9",
"whoiser": "^1.18.0",
"world-atlas": "^2.0.2",
"write-file-atomic": "^8.0.0"
},
"devDependencies": {
"@sentry/vite-plugin": "^5.4.0",
"@sentry/vite-plugin": "^11.8.0",
"@tailwindcss/vite": "^4.3.3",
"@vitejs/plugin-vue": "^6.0.9",
"@vitejs/plugin-vue": "^6.0.10",
"code-inspector-plugin": "^2.0.9",
"nodemon": "^3.1.14",
"tailwindcss": "^4.3.3",
"vconsole": "^3.15.1",
"vite": "^8.3.2"
"vite": "^8.3.5"
}
}
+821 -951
View File
File diff suppressed because it is too large. Load diff
+9 -9
View File
@@ -7,7 +7,7 @@ allowBuilds:
protobufjs: true
vue-demi: true
minimumReleaseAgeExclude:
- vite@8.1.0 || 8.1.4
- vite@8.1.0 || 8.1.4 || 8.3.5
- tar@7.5.19 || 7.5.22
- '@code-inspector/core@1.6.3 || 1.6.6 || 2.0.5'
- '@code-inspector/esbuild@1.6.3 || 1.6.6 || 2.0.5'
@@ -33,11 +33,11 @@ minimumReleaseAgeExclude:
- code-inspector-plugin@1.6.3 || 1.6.6 || 2.0.5
- tailwindcss@4.3.2
- launch-ide@1.4.5 || 1.4.8
- '@firebase/app-compat@0.5.15 || 0.5.17'
- '@firebase/app@0.15.1 || 0.16.1'
- '@firebase/app-compat@0.5.15 || 0.5.17 || 0.5.20'
- '@firebase/app@0.15.1 || 0.16.1 || 0.16.4'
- '@firebase/remote-config-compat@0.2.27 || 0.2.29'
- '@firebase/remote-config@0.9.0 || 0.9.2'
- firebase@12.16.0 || 12.18.0
- firebase@12.16.0 || 12.18.0 || 13.1.0
- pinia@4.0.2 || 4.0.3
- vue-router@5.2.0 || 5.3.1
- '@sentry/browser-utils@10.68.0 || 10.75.0'
@@ -71,18 +71,18 @@ minimumReleaseAgeExclude:
- '@firebase/app-check-types@0.5.5'
- '@firebase/app-check@0.13.1'
- '@firebase/app-types@0.9.6'
- '@firebase/auth-compat@0.6.10'
- '@firebase/auth-compat@0.6.10 || 0.6.13'
- '@firebase/auth-interop-types@0.2.6'
- '@firebase/auth-types@0.13.2'
- '@firebase/auth@1.13.5'
- '@firebase/auth@1.13.5 || 1.13.8'
- '@firebase/component@0.7.5'
- '@firebase/data-connect@0.7.4'
- '@firebase/database-compat@2.1.7'
- '@firebase/database-types@1.0.22'
- '@firebase/database@1.1.5'
- '@firebase/firestore-compat@0.4.13'
- '@firebase/firestore-compat@0.4.13 || 0.4.16'
- '@firebase/firestore-types@3.0.5'
- '@firebase/firestore@4.17.1'
- '@firebase/firestore@4.17.1 || 4.19.0'
- '@firebase/functions-compat@0.5.0'
- '@firebase/functions-types@0.6.5'
- '@firebase/functions@0.14.0'
@@ -102,7 +102,7 @@ minimumReleaseAgeExclude:
- '@firebase/storage@0.14.5'
- '@firebase/util@1.15.3'
- '@firebase/webchannel-wrapper@1.0.7'
- '@lucide/vue@1.33.0 || 1.40.0'
- '@lucide/vue@1.33.0 || 1.40.0 || 1.61.0'
- tailwind-merge@3.7.0
- '@intlify/core-base@11.4.12'
- '@intlify/devtools-types@11.4.12'
+11 -5
View File
@@ -23,11 +23,17 @@ if (process.env.SENTRY_DSN_BACKEND && process.env.SENTRY_ENVIRONMENT !== 'develo
environment: process.env.SENTRY_ENVIRONMENT || 'production',
// 100% trace sampling (per-route latency / throughput / error rate under Insights)
tracesSampleRate: 1.0,
// Sentry Logs — receives warn/error/fatal lines forwarded by the
// logMethod hook in server/logger.js
enableLogs: true,
// Never attach caller IPs / headers to events (privacy tool)
sendDefaultPii: false,
// Sentry Logs need no switch: the logMethod hook in server/logger.js
// forwards warn/error/fatal lines on its own.
// Never attach caller IPs, headers, cookies or bodies to events
// (privacy tool). The SDK collects all of them unless each category
// is switched off here; query strings stay and are redacted below.
dataCollection: {
userInfo: false,
cookies: false,
httpHeaders: false,
httpBodies: [],
},
// Upstream query strings carry API keys — redact those params in
// breadcrumbs, spans, and request contexts (the rest of the query
// stays: it's debugging context).