16 Commits
Author SHA1 Message Date
jason5ng32andClaude Fable 5.1 4c9ab04bc5 Improvements
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-22 11:37:55 +08:00
jason5ng32 b616b7e00e Improvements 2026-10-06 10:48:50 +08:00
jason5ng32 45be0e711c Improvements 2026-09-17 10:33:38 +08:00
jason5ng32 a1ee760d88 Improvements 2026-09-13 22:47:01 +08:00
jason5ng32 65145ca5e8 Improvements 2026-09-03 19:10:40 +08:00
jason5ng32 2eddb7287e Improvements 2026-08-20 11:35:55 +08:00
jason5ng32 6e18ba2ded Improvements 2026-08-13 16:27:48 +08:00
jason5ng32andClaude Fable 5 ae0eaee838 Chore(deps): bump dependencies
Routine minor/patch bumps (vue 3.5.41, vite 8.2, sentry 10.69, firebase
12.17.1, …) plus @tanstack/vue-table 8 → 9; pnpm 11.20. Vue 3.5.41
packages allow-listed in the workspace minimumReleaseAge exclusions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 12:15:37 +08:00
jason5ng32 007d81cb98 Improvements 2026-07-25 10:11:10 +08:00
jason5ng32 1aca785105 Improvements 2026-07-16 00:26:25 +08:00
jason5ng32andClaude Fable 5 9bfbf21a60 Feat(monitoring): integrate Sentry across frontend and backend, env-gated end to end
Frontend (@sentry/vue, loaded via build-time-gated dynamic import — no
VITE_SENTRY_DSN_FRONTEND, no Sentry in the bundle; init joins the mount
gate so instrumentation precedes the first render):
- uncaught errors, route-change tracing / Web Vitals, error-only masked
  Session Replay, console.error capture fingerprinted per message prefix
  so each fallback source stays a distinct issue
- explicit ip-source:exhausted signal via the app-events bus
- hidden source maps uploaded (then deleted) by @sentry/vite-plugin,
  gated on SENTRY_AUTH_TOKEN

Backend (@sentry/node, bootstrapped by sentry-instrument.js via
node --import so ESM loader hooks land before express; never loaded
without SENTRY_DSN_BACKEND):
- Express error capture + per-route tracing
- logger hook mirrors warn+ lines to Sentry Logs and elevates error+
  to grouped, alertable Issues
- Sentry Crons check-ins for the MaxMind / CAIDA / service-status jobs
  via the no-op-without-DSN wrapper common/sentry-cron.js

Delivery & ops:
- first-party tunnel /api/monitoring relays envelopes past ad blockers;
  DSN-allowlisted (never an open relay), exempt from the shared rate
  limiter with its own generous ceiling
- rate-limit ledger file becomes opt-in now that the warn line reaches
  Sentry Logs; ecosystem.config.cjs carries the --import flag for pm2

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 11:16:17 +08:00
jason5ng32 38a0db748f Update Packages 2026-07-08 11:54:42 +08:00
jason5ng32 53265e0bcd Improvements 2026-06-30 10:48:33 +08:00
jason5ng32 d72cff6449 Improvements 2026-06-28 12:02:39 +08:00
jason5ng32 691924aa9c Improvements 2026-06-24 09:06:00 +08:00
jason5ng32 1d09e2b60f Improvements 2026-05-31 10:34:01 +08:00