Commit graph

  • 9ad5c4eef4 Merge pull request 'Port cron-minutely fixes: reactivate tombstoned subs + confirm-email rate limit' (#29) from mailship-fc-merge-cron-fixes-df6 into main main matt 2026-09-23 17:56:11 +0000
  • 34c5e28fd1 Rate-limit confirmation emails and restore daily/weekly digest cron mplorentz 2026-09-22 12:31:33 -0400
  • 0ff8984a94 fix reactivating old rows mplorentz 2026-09-21 11:26:26 -0400
  • 4a74a5284b Re-activate tomstoned subscriptions when email is the same mplorentz 2026-09-21 10:05:53 -0400
  • 5007a79a3a Merge pull request 'Allow users to choose digest schedule (time of day, day of week, timezone)' (#28) from mailship-200-allow-users-to-choose-digest-schedule-ti-60c into main matt 2026-09-23 15:57:56 +0000
  • e34f1cd821 feat: allow users to choose digest schedule (hour, minute, dayOfWeek, timezone) Agent 2026-09-23 10:50:04 -0400
  • 051c1e88fb Rate-limit confirmation emails and restore daily/weekly digest cron cron-minutely mplorentz 2026-09-22 12:31:33 -0400
  • 81f5602ce4 Merge remote-tracking branch 'origin/main' into cron-minutely mplorentz 2026-09-22 10:58:30 -0400
  • 27bb4a5342 Merge pull request 'digest email: replace reply/reaction counts with posting relay URL' (#27) from mailship-ihb-digest-email-replace-reply-reaction-coun-281 into main matt 2026-09-22 14:58:00 +0000
  • b7592044c0 digest email: replace reply/reaction counts with relay URL mailship-ihb-digest-email-replace-reply-reaction-coun-281 Agent 2026-09-22 10:04:05 -0400
  • 5675ebdf52 fix reactivating old rows mplorentz 2026-09-21 11:26:26 -0400
  • fd815282c2 Re-activate tomstoned subscriptions when email is the same mplorentz 2026-09-21 10:05:53 -0400
  • dbe4f6741d Merge pull request 'Forgejo Action: build and publish Docker image on merge to main' (#25) from mailship-7o9-forgejo-action-build-publish-docker-imag-63e into main matt 2026-09-18 17:40:37 +0000
  • cab5cab6fa Update .forgejo/workflows/docker-publish.yml matt 2026-09-18 17:40:26 +0000
  • 3a7d0d110a Merge branch 'cron-minutely' of ssh://forgejo.lorentz.is:4201/matt/mailship into cron-minutely mplorentz 2026-09-18 13:11:58 -0400
  • 8ebee878cb Merge remote-tracking branch 'origin/main' into cron-minutely mplorentz 2026-09-18 13:11:51 -0400
  • 7b75b2f4aa Merge pull request 'Fix broken NIP-9a link in README and document Node/single-instance requirements' (#21) from mailship-jh5-readme-nip-9a-link-is-empty-broken-897 into main matt 2026-09-18 17:11:24 +0000
  • bcce525a83 README: link NIP-9a to the spec PR (2194) — not yet merged to master Agent 2026-09-18 12:59:38 -0400
  • 98e1de2ba0 Merge pull request 'Remove dead build-in-production.sh (anchor fork artifact)' (#26) from mailship-xyg-remove-dead-build-in-production-sh-ancho-e90 into main matt 2026-09-18 16:37:06 +0000
  • 77ce571d52 Remove dead build-in-production.sh (anchor fork artifact) Agent 2026-09-18 12:33:43 -0400
  • 5deace1967 feat: add Forgejo Action workflow to build and publish Docker image Agent 2026-09-18 12:31:15 -0400
  • 82532eb6f0 Merge pull request 'gitignore .beads/interactions.jsonl (untrack beads audit sidecar)' (#24) from mailship-pcy-gitignore-beads-interactions-jsonl-untra-efb into main matt 2026-09-18 16:30:29 +0000
  • d55e3f941b gitignore .beads/interactions.jsonl (untrack beads audit sidecar) Agent 2026-09-18 12:22:31 -0400
  • b1a8258cfa Merge pull request 'fix: validate relay URL before calling load() to prevent remote DoS via unhandled rejection' (#22) from mailship-iij-post-notify-with-non-wss-relay-url-crash-655 into main matt 2026-09-18 15:38:46 +0000
  • e22a5f457e Merge pull request 'Fix digest email showing "0 replies / 0 reactions" for every event' (#23) from mailship-d08-digest-email-shows-0-replies-0-reactions-10f into main matt 2026-09-18 15:37:53 +0000
  • 43f2a04de4 Merge pull request 'hardening: run production container as non-root user' (#19) from mailship-c3s-docker-run-production-container-as-non-r-4e7 into main matt 2026-09-18 15:33:56 +0000
  • 08a1fd5232 Merge branch 'main' into mailship-jh5-readme-nip-9a-link-is-empty-broken-897 matt 2026-09-18 15:27:39 +0000
  • 612a4f5af2 Merge pull request 'chore: remove unused/misplaced dependencies (bcrypt, express-ws, ts-node-dev, @types/node)' (#20) from mailship-6m4-remove-unused-misplaced-dependencies-bcr-d33 into main matt 2026-09-18 15:20:45 +0000
  • f5f962f6b1 Merge pull request 'Fix: distinguish already-confirmed confirm links from invalid ones; prevent duplicate subscription rows on re-register' (#18) from mailship-2px-confirm-link-shows-email-not-confirmed-a-349 into main matt 2026-09-18 15:08:00 +0000
  • ae836da033 fix: load reply/reaction events from repository into digest context Agent 2026-09-18 10:46:27 -0400
  • 0a5b7ad14d fix: validate relay URL before calling load() and soften unhandledRejection handler Agent 2026-09-18 10:39:04 -0400
  • 37ec3e8122 fix(README): repair empty NIP-9a links, add Node & single-instance constraints Agent 2026-09-18 10:32:18 -0400
  • 3d24260419 Remove unused/misplaced dependencies (bcrypt, express-ws, ts-node-dev, @types/node) Agent 2026-09-18 10:32:09 -0400
  • dfdc6d489c hardening: run production container as non-root user Agent 2026-09-18 10:30:52 -0400
  • 9fa1f73316 fix: distinguish already-confirmed tokens from invalid ones; prevent duplicate active subscriptions mailship-2px-confirm-link-shows-email-not-confirmed-a-349 Agent 2026-09-17 16:57:30 -0400
  • 8235513822 Set trust proxy so NIP-98 URL matching works behind traefik (X-Forwarded-Proto) hudson 2026-09-16 15:15:26 -0400
  • 395b192432 Set trust proxy so NIP-98 URL matching works behind traefik (X-Forwarded-Proto) hudson 2026-09-16 15:15:06 -0400
  • dd90386fb6 Merge branch 'main' into cron-minutely mplorentz 2026-09-16 14:07:25 -0400
  • c21ed9f71d Merge branch 'main' of ssh://forgejo.lorentz.is:4201/matt/mailship mplorentz 2026-09-16 14:06:54 -0400
  • f4a3873f23 Merge pull request 'Document include_event body on POST /notify/:id' (#15) from mailship-6u7-document-include-event-body-on-post-noti-292 into main matt 2026-09-16 14:59:08 +0000
  • 2ee4e53bd9 Merge pull request 'Extract shared brandingVars() helper to eliminate duplication' (#17) from mailship-90c-extract-shared-brandingvars-helper-brand-e34 into main matt 2026-09-16 14:37:20 +0000
  • 4b43664411 extract shared brandingVars() helper to eliminate duplication Agent 2026-09-16 09:56:13 -0400
  • e86ffbed15 Merge pull request 'Normalize EVENT_VIEWER_URL trailing slash once in env.ts' (#16) from mailship-aee-extract-shared-normalized-event-viewer-u-671 into main matt 2026-09-16 13:44:38 +0000
  • dbde1ec02d Normalize EVENT_VIEWER_URL trailing slash once in env.ts, remove 6 ad-hoc strips mailship-aee-extract-shared-normalized-event-viewer-u-671 Agent 2026-09-16 09:28:03 -0400
  • 0059ec263b Merge pull request 'Route BASE_URL through env module to prevent callback URL drift' (#14) from mailship-lap-inconsistent-env-access-server-ts-reads--747 into main matt 2026-09-16 13:23:33 +0000
  • 560c7ef9bc document include_event body on POST /notify/:id Agent 2026-09-14 16:10:10 -0400
  • a0a284b0a3 Route BASE_URL through env module instead of reading process.env directly mailship-lap-inconsistent-env-access-server-ts-reads--747 Agent 2026-09-14 16:08:40 -0400
  • c4b1a3fb4c Merge pull request 'Run checks in CI via Forgejo Actions' (#12) from mailship-e77-run-checks-in-ci-via-forgejo-actions-605 into main matt 2026-09-14 20:00:59 +0000
  • 2c257dedcd Merge pull request 'Standardize POST /notify/:id response shape — always include stored field' (#13) from mailship-nl0-post-notify-response-shape-ok-skipped-la-387 into main matt 2026-09-14 20:00:32 +0000
  • b54fb4f891 POST /notify/🆔 standardize response shape — always include stored field mailship-nl0-post-notify-response-shape-ok-skipped-la-387 Agent 2026-09-14 13:42:11 -0400
  • 53b0182c7b feat(ci): add Forgejo Actions workflow for CI checks mailship-e77-run-checks-in-ci-via-forgejo-actions-605 Agent 2026-09-14 13:40:08 -0400
  • a4bc587d64 Merge pull request 'Standardize tests on vitest' (#11) from mailship-clt-standardize-tests-on-vitest-ddc into main matt 2026-09-14 17:36:00 +0000
  • 091fe6e7f3 Merge pull request 'PORT: align default to 4738 throughout stack' (#10) from mailship-lcy-port-readme-says-default-3000-env-ts-thr-8fe into main matt 2026-09-14 17:34:36 +0000
  • d98d034989 Merge pull request 'Implement NIP-98 HTTP auth for GET/PUT/DELETE /subscription/email' (#9) from mailship-uxf-implement-nip-98-auth-for-get-put-delete-9b9 into main matt 2026-09-14 17:33:47 +0000
  • 13b1e9d00f Standardize tests on vitest mailship-clt-standardize-tests-on-vitest-ddc Agent 2026-09-14 13:29:54 -0400
  • 02dd5944c8 align PORT default: make optional with 4738, update README mailship-lcy-port-readme-says-default-3000-env-ts-thr-8fe Agent 2026-09-14 13:14:05 -0400
  • cfbb29cb96 Merge pull request 'Fix digest job race: events received between fetch and delete are dropped unsent' (#8) from mailship-091-event-arrival-race-in-digest-job-events--614 into main matt 2026-09-14 17:12:10 +0000
  • 737f949f9b fix digest job race: delete sent events by ID, not timestamp mailship-091-event-arrival-race-in-digest-job-events--614 Agent 2026-09-14 13:07:34 -0400
  • b94018c11e Fix integration test: add missing CORS_ORIGIN env var mailship-uxf-implement-nip-98-auth-for-get-put-delete-9b9 Agent 2026-09-14 13:07:16 -0400
  • f3ccade029 Merge pull request 'Rename digest keys Popular/HasPopular → Latest/HasLatest' (#7) from mailship-hq0-rename-stale-digest-template-keys-popula-194 into main matt 2026-09-14 17:05:53 +0000
  • 40ac047629 Implement NIP-98 HTTP auth for GET/PUT/DELETE /subscription/email Agent 2026-09-14 13:04:26 -0400
  • e83cd1f7d2 Rename Popular/HasPopular → Latest/HasLatest in digest ts/mjml/render-preview mailship-hq0-rename-stale-digest-template-keys-popula-194 Agent 2026-09-14 13:00:07 -0400
  • 7cdb84a0a1 Merge pull request 'Align README, docker-compose, .env.template and stale comment with SMTP mailer' (#6) from mailship-0da-readme-config-architecture-and-docker-co-6e1 into main matt 2026-09-14 16:57:09 +0000
  • c72b86e4ae Merge remote-tracking branch 'origin/main' into mailship-0da-readme-config-architecture-and-docker-co-6e1 mailship-0da-readme-config-architecture-and-docker-co-6e1 mplorentz 2026-09-14 12:55:35 -0400
  • 2e26760126 fix: remove unused imports and variables flagged by eslint Agent 2026-09-10 17:03:35 -0400
  • 0eca031890 fix: update stale 'Postmark' comment to 'SMTP' in server.ts Agent 2026-09-10 16:59:15 -0400
  • 694791bfdd Merge pull request 'Reschedule cron job when confirmed subscriber changes frequency' (#2) from mailship-e04-frequency-change-updates-db-but-never-re-63d into main matt 2026-09-10 19:55:42 +0000
  • 8837d3fadd Merge pull request 'Scope CORS to browser routes only, fail closed on CORS_ORIGIN' (#4) from mailship-32x-cors-is-not-production-safe-wildcard-ori-52b into main matt 2026-09-10 19:46:02 +0000
  • 93ffdf3531 Merge pull request 'fix: replace hardcoded #7161FF with {{brandAccent}} in digest email template' (#5) from mailship-hu5-stale-hardcoded-accent-7161ff-in-digest--a31 into main matt 2026-09-10 19:35:04 +0000
  • 8866ef3256 merge: main into branch to pick up lint fixes mailship-hu5-stale-hardcoded-accent-7161ff-in-digest--a31 Agent 2026-09-10 12:27:45 -0400
  • a4463fdab4 Merge remote-tracking branch 'origin/main' into mailship-32x-cors-is-not-production-safe-wildcard-ori-52b Agent 2026-09-10 12:25:26 -0400
  • f04e378ea1 Merge pull request 'Strip out the web UI (login + subscription filter management)' (#1) from mailship-d5i-strip-out-the-web-ui-login-subscription--1d8 into main matt 2026-09-10 16:24:30 +0000
  • def67c4b6c merge origin/main: resolve digest.ts conflict (identical eslint cleanup) mailship-d5i-strip-out-the-web-ui-login-subscription--1d8 Agent 2026-09-10 12:23:37 -0400
  • 57add6dcbd Merge remote-tracking branch 'origin/main' into mailship-32x-cors-is-not-production-safe-wildcard-ori-52b Agent 2026-09-10 12:02:17 -0400
  • a6fd29cd7d Merge pull request 'fix: resolve eslint unused-variable errors, add branding, idempotent subscriptions, and event verification' (#3) from mailship-66x-fix-pre-existing-eslint-unused-variable--93f into main matt 2026-09-10 16:01:04 +0000
  • 4497a7dee9 fix: remove pre-eslint unused-variable errors across src/ mailship-66x-fix-pre-existing-eslint-unused-variable--93f Agent 2026-09-10 11:58:05 -0400
  • 97e92232c7 chore: remove unused import of netContext from env.ts Agent 2026-09-10 11:31:44 -0400
  • 3e667fe3c6 fix: reschedule cron job when confirmed subscriber changes frequency Agent 2026-09-10 11:28:53 -0400
  • 49b7b0d83b Align README, docker-compose, .env.template with SMTP mailer Agent 2026-09-10 11:30:50 -0400
  • fdc4579aa7 fix: scope CORS to browser routes only, require CORS_ORIGIN (fail closed) Agent 2026-09-10 11:29:18 -0400
  • 97eaf8ab36 fix(digest): replace hardcoded #7161FF with {{brandAccent}} Agent 2026-09-10 11:23:31 -0400
  • 2fb738981e Fix pre-existing eslint unused-import errors to pass script/checks gate Agent 2026-09-10 10:36:54 -0400
  • 44dcc22a04 Minor readme edits mplorentz 2026-09-10 10:23:40 -0400
  • abc993e595 Remove orphaned web/dist/ reference from .dockerignore Agent 2026-09-10 10:09:13 -0400
  • 75f5908039 Strip out the web UI (login + subscription filter management) Agent 2026-09-10 10:08:14 -0400
  • d5f54845b6 dedupe and serialize subscription writes. mplorentz 2026-09-03 13:42:50 -0400
  • ce59c15819 dedupe and serialize subscription writes. mplorentz 2026-09-03 13:42:50 -0400
  • db490f5c99 Merge branch 'main' into cron-minutely mplorentz 2026-09-03 12:00:22 -0400
  • 5abec46cb7 Make subscription upsert idempotent via PUT mplorentz 2026-09-03 11:47:21 -0400
  • ff8e1d7a0d Update styling on confirmation failed page mplorentz 2026-09-02 16:51:01 -0400
  • bb1a7982dc Merge branch 'main' into cron-minutely mplorentz 2026-08-27 15:23:24 -0400
  • 3a0aff2f30 Update confirmation page mplorentz 2026-08-27 15:23:18 -0400
  • cf335649c0 Wait longer for profile photoes. mplorentz 2026-08-27 15:18:52 -0400
  • 14bc273d98 update digest footer mplorentz 2026-08-27 15:01:13 -0400
  • 29111e117c Merge branch 'main' into cron-minutely mplorentz 2026-08-27 14:51:14 -0400
  • 777ab81195 Add relay to nevent in digest links mplorentz 2026-08-27 14:49:56 -0400
  • 2644310bfa Merge branch 'main' into cron-minutely mplorentz 2026-08-27 11:28:12 -0400
  • d143a563ba Process nostr events included directly in the callback. mplorentz 2026-08-27 11:28:03 -0400
  • 4e8918c1f3 Add branding to email confirmation screen mplorentz 2026-08-27 10:30:46 -0400
  • f7e0c99764 Update subscription confirmation email template mplorentz 2026-08-27 10:17:06 -0400