Introduces a 5-step guided flow (Create Account → Add Wallet → Alert
Rules → Notifications → Done) that takes new users from zero to fully
configured alerts in one linear session. /signup now redirects to
/onboarding; already-onboarded users who revisit /onboarding are
redirected to /addresses.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- #1: remove mock alert events that poisoned production responses
- #2: add Notifier interface + Send implementations for all channels
- #3/#4: notification goroutines now carry a 30s context timeout and retry up to 3x with exponential backoff
- #5: schedule email digest in poller via DIGEST_INTERVAL_HOURS (default 24h)
- #6: SystemStatus queries real checkpoint data; returns starting/active/idle with latestBlock and lag
- #7: Ethereum RPC client retries on network errors, 429, and 5xx with 1s/2s backoff
- #8: alert_events dedup index + ON CONFLICT DO NOTHING to prevent duplicate events on poller restart
- #9: PATCH /v1/addresses/{id} for label editing; frontend address list gains inline edit and remove buttons
Dockerfile: golang:1.24-alpine (pinned by sha256), installs Node.js,
npm, golangci-lint (pinned by commit hash), and runs make check as a
build step so the image only builds on a green branch.
.gitea/workflows/check.yml: runs docker build . on push (actions/checkout
pinned by commit sha).
Standard golangci-lint v2 config fetched from the canonical upstream
source. Must not be modified by agents — only manually by the user.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
REPO_POLICIES.md is copied from the canonical upstream source
(last_modified: 2026-02-22). LICENSE is MIT, copyright 2026 Steven Jannette.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds OS files, editor artifacts, Node modules, secrets, Go build
artifacts, and frontend build output to the root gitignore.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Enforces 4-space indentation (tabs for Go and Makefiles), LF line
endings, UTF-8 encoding, and trailing-whitespace trimming.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>