Bỏ qua tới nội dung

Nhật ký thay đổi

Nhật ký thay đổi

Những thay đổi bạn nhận ra được, mới nhất ở trên. Các bản SDK có trên npm dưới tên @belvador/*; bản node tự cài lên node của bạn sau khi chữ ký được xác minh.

27/10/2026: Công thức đã kiểm cho máy chủ Node.js, Bun và Supabase Edge Functions#

SDK 0.6.1 · docs

  • Hướng dẫn mới cho Bun và Supabase Edge Functions, thêm phần VPS trong hướng dẫn Node.js. Mỗi công thức được kiểm đúng như bản đăng trên một node thật: trên Edge Runtime của Supabase, lỗi do handler ném, lỗi bạn tự xử lý, kết quả { data, error } và lỗi quá thời gian chờ đều tới thành issue riêng, được gửi trước khi function trả lời.

  • @belvador/core/sentry là lối vào ổn định cho app dùng SDK Sentry chính thức: bộ lọc của chính Belvador làm beforeSend / beforeBreadcrumb, và captureResultWith(Sentry) cho lỗi cơ sở dữ liệu không ném. Cài đặt Node.js giờ dùng nó thay cho một hàm lọc chép tay.

  • Với @belvador/spool, lỗi xảy ra khi node không liên lạc được vẫn tới sau khi tiến trình bị kill bằng SIGKILL và sau một lần sập vì hết bộ nhớ (Node.js), và sau SIGKILL trên Bun.

  • Mỗi hướng dẫn có một lời nhắc cho AI coding agent với đúng các tệp đó.

27/10/2026: Lỗi không mất khi rớt mạng, và lỗi cơ sở dữ liệu không ném#

SDK 0.6.0 · @belvador/spool 0.6.0

  • init({ offline: true }) trên trình duyệt giữ lỗi gửi hỏng vì mạng trong IndexedDB (tối đa 50, trong 72 giờ) và gửi khi trang có mạng lại hoặc ở lần tải sau. Hàng đợi là một tệp riêng 1,8 KB, chỉ tải khi bạn bật.

  • Gói mới @belvador/spool cho máy chủ Node.js, Bun và Deno dùng SDK Sentry chính thức: lỗi chờ trên đĩa khi node chưa liên lạc được và được gửi khi node trả lời, kể cả bởi tiến trình kế tiếp. Đã kiểm bằng cách kill tiến trình với SIGKILL: 200/200 lỗi tới nơi, không lỗi nào hai lần.

  • captureResult() báo error của Supabase, PostgREST và các client { data, error } khác thành một event có kiểu theo mã Postgres (db.permission_denied, db.query_canceled, …), gom theo kiểu và thao tác. Câu SQL, details và hint không bao giờ được gửi.

  • privacyPolicy() áp cả luật quyền riêng tư của project ngay trong app, và preview: true in đúng thứ sẽ được gửi mà không gửi.

  • Thử lại giờ chờ một khoảng ngẫu nhiên dưới 1, 2, 4, rồi 8 giây, để nhiều app cùng mất kết nối không quay lại cùng một giây.

26/10/2026: Chỉ báo lần hỏng cuối của một job#

SDK 0.5.3

  • withMonitor nhận reportRetries: false: lần thử còn được thử lại vẫn gửi check-in (hiện là Sẽ thử lại) nhưng không gửi event lỗi; lần hỏng cuối vẫn được báo như trước. Mặc định mọi lần thử hỏng vẫn được báo, để lượt chạy cho thấy từng lần gặp lỗi gì.

  • Lỗi gửi từ withMonitor mang số lần thử trong context monitor.

  • Lý do: trong thí nghiệm, mười job thanh toán mỗi job hỏng ba lần đã gửi 30 event cho 10 lần thất bại, và job chạy được ở lần thứ ba vẫn để lại 2 event. SDK Node của Sentry cũng gửi mọi lần thử; integration Dedupe, chỉ bật mặc định ở SDK trình duyệt, không giúp được khi các job chạy song song.

26/10/2026: Công thức ping không thể làm dừng job của bạn#

docs

  • Mọi công thức curl cho ping URL và check-in HTTP giờ kết thúc bằng || true. Trước đây, nếu ping URL vẫn trả lỗi sau các lần thử lại, script dùng set -e — và mọi step GitHub Actions, vốn chạy bằng bash -e — dừng ngay tại đó; trong thí nghiệm, job không bao giờ được chạy. Hãy chép lại công thức từ trang monitor hoặc tài liệu.

  • Công thức check-in cũng có thêm giới hạn 10 giây và các lần thử lại như công thức ping vẫn có, nên một URL không truy cập được không còn treo job.

26/10/2026: Che thêm nhiều bí mật trong message của lỗi#

SDK 0.5.2 · node 0.1.31

  • SDK và node giờ che các khoá mà tiền tố đã cho biết nhà cung cấp — GitHub (ghp_, github_pat_), GitLab, OpenAI và Anthropic (sk-proj-, sk-ant-), AWS access key ID (AKIA…), Slack (xoxb-), Google API key, Stripe webhook secret, npm, Supabase secret key và khoá ingest của Belvador — ở bất cứ đâu trong văn bản.

  • Phần bí mật của URL webhook Slack, Discord và URL bot Telegram bị che; tên máy chủ vẫn đọc được.

  • Authorization: token … và các scheme khác bị ghi vào message, ví dụ dòng lệnh curl bị lỗi, giờ được che như Bearer vẫn được che trước đây.

  • Trong thí nghiệm, 14 lỗi Node.js thật mang một bí mật giả; trước bản này 5/15 bí mật vẫn đọc được sau cả hai lớp lọc, giờ không còn cái nào.

26/10/2026: Lỗi loader trong ứng dụng TanStack Start, kèm stack máy chủ#

SDK 0.5.1

  • Với withBelvadorRouter({ routeTree, ... }), lỗi ném ra trong loader của route khi trang render trên máy chủ được báo từ máy chủ, kèm stack máy chủ — trước đây lỗi đến từ trình duyệt với stack chỉ trỏ vào trang. Trong thí nghiệm bản build production: 3/3 lỗi loader khi render trên máy chủ đến đúng một lần, kèm tên hàm và tệp của loader.

  • Mỗi lỗi chỉ được báo một lần: máy chủ gửi cho trình duyệt một mã băm ngắn của lỗi đã báo, không bao giờ gửi nội dung lỗi. Nếu chưa có nửa máy chủ, trình duyệt vẫn báo như trước.

  • onError, dehydrate và hydrate của bạn vẫn chạy như cũ và chỉ thấy dữ liệu của chính chúng.

26/10/2026: Báo lỗi route trong ứng dụng TanStack Start chưa có trang lỗi#

SDK 0.5.0

  • @belvador/tanstack-start có thêm withBelvadorRouter: bọc các tuỳ chọn bạn truyền cho createRouter, lỗi route sẽ được báo kể cả khi ứng dụng chưa có error component. Trước đây TanStack Router bỏ qua việc báo trong trường hợp này; trong thí nghiệm của mình, 0/3 lần crash route đến được Belvador, giờ là 3/3.

  • defaultOnCatch và defaultErrorComponent của bạn vẫn chạy như cũ; belvadorOnCatch vẫn được export.

26/10/2026: Lọc dữ liệu chặt hơn và báo lỗi chạy nền trong Worker#

SDK 0.4.1 · node 0.1.30

  • Node và SDK giờ che thêm email dạng mã hoá (jane%40example.com) và địa chỉ IPv4 công khai nằm trong message lỗi và log. Địa chỉ nội bộ như 10.0.3.17 vẫn đọc được.

  • Node xoá cả tên đăng nhập lẫn mật khẩu trong URL kiểu https://user:pass@host, không chỉ mật khẩu.

  • @belvador/cloudflare báo promise ctx.waitUntil bị reject thành lỗi không được xử lý; Cloudflare vẫn nhận đúng lần reject đó.

  • Gói React và TanStack Start trên npm có hướng dẫn cài đặt đã sửa: Belvador khởi chạy trước khi import app, nên lỗi lúc app đang tải cũng được báo.

25/10/2026: Đệm niêm phong nhanh hơn và các trang sản phẩm công khai#

node 0.1.29

  • Event được đệm ở edge khi node offline giờ được niêm phong bằng X25519 có sẵn trong runtime, nhanh khoảng năm lần.

  • Khi hàng đợi edge lỗi, event được ghi vào chỗ dự phòng R2 (đã niêm phong) thay vì bị từ chối.

  • Python 3.12 và cầu nối Sentry cho Java đã qua các lần chạy chứng nhận OpenTelemetry.

  • Trang mới: bảng giá, so sánh với Sentry, Sentry tự host, GlitchTip và Bugsink, hướng dẫn theo framework, benchmark và hai công cụ miễn phí.

24/10/2026: Trace và log OpenTelemetry, uptime check, SLO#

node 0.1.26

  • Trace và log qua OTLP/HTTP, lưu trên node của bạn, có waterfall, tìm log và liên kết từ issue.

  • Uptime check từ châu Âu, Mỹ và châu Á – Thái Bình Dương, quyết định theo đa số, có cảnh báo chứng chỉ TLS sắp hết hạn.

  • SLO dựa trên uptime check, monitor, ping URL hoặc span, có cảnh báo cháy nhanh/chậm và nhập/xuất OpenSLO.

23/10/2026: Monitor ping URL và cầu nối OpenTelemetry#

SDK 0.4.0 · node 0.1.25

  • Monitor ping URL cho mọi cron job hay timer: một URL bí mật, có tín hiệu bắt đầu, lỗi, mã thoát và output. Vẫn cảnh báo khi node của bạn đang tắt.

  • Webhook có chữ ký cho cảnh báo, theo chuẩn Standard Webhooks.

  • @belvador/* 0.4.0: lỗi mang theo span OpenTelemetry đang chạy khi app đã dùng OpenTelemetry API.

20/10/2026: Monitor cron và node chịu được mất điện#

SDK 0.3.0 · node 0.1.23

  • Monitor check-in cho job định kỳ và worker, với withMonitor() trong các gói @belvador/* và check-in của Sentry SDK.

  • Tuỳ chọn trace header để lỗi ở trình duyệt và máy chủ dùng chung trace id.

  • Node 0.1.23 lưu đúng một lần 24.001/24.001 event qua ba lần cắt điện (benchmark).

19/10/2026: Kiểm kết nối và bộ tài liệu#

SDK 0.2.0

  • verifyIntegration() chứng minh từ production rằng lỗi trình duyệt và máy chủ tới đúng project, theo từng môi trường.

  • Sự cố kết nối (khoá đã thu hồi vẫn được dùng, origin bị chặn) hiện trên project và có thể gửi cảnh báo.

  • Tài liệu tiếng Anh và tiếng Việt, có llms.txt và bản Markdown của mọi trang.

17/10/2026: Các gói SDK đầu tiên#

SDK 0.1.0

  • @belvador/browser, @belvador/react, @belvador/cloudflare và @belvador/tanstack-start trên npm, giấy phép MIT, dựa trên engine JavaScript của Sentry.

Thử trên project Hetzner của bạn

Miễn phí trong giai đoạn beta. Hetzner tính tiền máy; Belvador không bao giờ tính tiền theo event.