2025-10-01T00:06:22Z - 2026-10-01T00:06:22Z
Overview
29 pull requests merged by 1 user
Merged
#29 Port cron-minutely fixes: reactivate tombstoned subs + confirm-email rate limit
Merged
#28 Allow users to choose digest schedule (time of day, day of week, timezone)
Merged
#27 digest email: replace reply/reaction counts with posting relay URL
Merged
#25 Forgejo Action: build and publish Docker image on merge to main
Merged
#21 Fix broken NIP-9a link in README and document Node/single-instance requirements
Merged
#26 Remove dead build-in-production.sh (anchor fork artifact)
Merged
#24 gitignore .beads/interactions.jsonl (untrack beads audit sidecar)
Merged
#22 fix: validate relay URL before calling load() to prevent remote DoS via unhandled rejection
Merged
#23 Fix digest email showing "0 replies / 0 reactions" for every event
Merged
#19 hardening: run production container as non-root user
Merged
#20 chore: remove unused/misplaced dependencies (bcrypt, express-ws, ts-node-dev, @types/node)
Merged
#18 Fix: distinguish already-confirmed confirm links from invalid ones; prevent duplicate subscription rows on re-register
Merged
#15 Document include_event body on POST /notify/:id
Merged
#17 Extract shared brandingVars() helper to eliminate duplication
Merged
#16 Normalize EVENT_VIEWER_URL trailing slash once in env.ts
Merged
#14 Route BASE_URL through env module to prevent callback URL drift
Merged
#12 Run checks in CI via Forgejo Actions
Merged
#13 Standardize POST /notify/:id response shape — always include stored field
Merged
#11 Standardize tests on vitest
Merged
#10 PORT: align default to 4738 throughout stack
Merged
#9 Implement NIP-98 HTTP auth for GET/PUT/DELETE /subscription/email
Merged
#8 Fix digest job race: events received between fetch and delete are dropped unsent
Merged
#7 Rename digest keys Popular/HasPopular → Latest/HasLatest
Merged
#6 Align README, docker-compose, .env.template and stale comment with SMTP mailer
Merged
#2 Reschedule cron job when confirmed subscriber changes frequency
Merged
#4 Scope CORS to browser routes only, fail closed on CORS_ORIGIN
Merged
#5 fix: replace hardcoded #7161FF with {{brandAccent}} in digest email template
Merged
#1 Strip out the web UI (login + subscription filter management)
Merged
#3 fix: resolve eslint unused-variable errors, add branding, idempotent subscriptions, and event verification