Commit graph

1490 commits

Author SHA1 Message Date
Agent
f9878fdff1 feat(settings): merge email digest schedule controls onto email-notifications
All checks were successful
CI / lint-check-build (pull_request) Successful in 3m19s
Resolves PR #5 conflict resolution: rebased the digest-schedule work (from
flotilla-fc1, built against dev) onto the email-notifications branch.

- settings.ts: add emailHour/emailMinute/emailDayOfWeek/emailTimezone to
  SettingsValues + defaults (17:00, device timezone, dayOfWeek undefined)
- alerts/+page.svelte: keep the email-notifications card (gated on
  EMAIL_NOTIFICATION_SERVER, communities warning, error state, NIP-98
  register/enable flow); add HH:MM time input + weekly day-of-week picker;
  weekly select defaults dayOfWeek to Monday; publish schedule fields via
  AppData publishSettings
- mail/index.ts: register() accepts hour/minute/dayOfWeek/timezone and PUTs
  them to mailship; enable()/sync() pass stored schedule through

Dropped dev-based duplicates: src/app/mail.ts, VITE_MAILSHIP_URL (.env +
env.ts) — the email-notifications mail adapter and
VITE_EMAIL_NOTIFICATION_SERVER are canonical. PUT contract matches mailship
PR #28: {email, frequency, hour, minute, dayOfWeek, timezone}.
2026-09-23 14:09:39 -04:00
mplorentz
609a2f65ea Email digest: GET-first restore on boot so reloads stop re-sending confirmations
All checks were successful
CI / lint-check-build (pull_request) Successful in 3m25s
Mail.sync's boot reconcile now GETs the existing subscription (NIP-98
auth) before deciding what to do. When a subscription already exists for
the pubkey with the same email and frequency, its key/callback are
restored in memory and the PUT is skipped entirely. Only a matching
subscription missing the requested params triggers a PUT, so a page
refresh of an unconfirmed address no longer makes mailship re-send a
confirmation email (previously each reload sent one).
2026-09-22 12:31:56 -04:00
mplorentz
63cf801ef1 Fix settings hydration
All checks were successful
CI / lint-check-build (pull_request) Successful in 3m23s
2026-09-21 16:14:02 -04:00
mplorentz
b90a20424e Fix Mail.sync to only fire when the user saves, or when contents are loaded from disk
All checks were successful
CI / lint-check-build (pull_request) Successful in 4m9s
2026-09-21 11:54:19 -04:00
hudson
ce8920123f Keep signer-not-responding toast; drop only the dead Details action button
All checks were successful
CI / lint-check-build (pull_request) Successful in 4m14s
2026-09-17 16:40:09 -04:00
hudson
1cff79dba2 Remove signer-not-responding toast with dead Details link
Some checks failed
CI / lint-check-build (pull_request) Failing after 1m40s
2026-09-16 15:13:47 -04:00
Agent
3981ed9608 fix email notifications: match mailship PUT API with full-URL NIP-98 and payload tag
All checks were successful
CI / lint-check-build (pull_request) Successful in 3m19s
- register(): sign makeHttpAuth with full URL (/subscription/email),
  method PUT, and serialized body so both u-tag and payload tag match
  mailship's verifyNip98Auth. Drop pubkey from request body (server
  reads it from the auth event).
- unregister(): sign makeHttpAuth with full URL (/subscription/:key)
  and method DELETE, matching mailship's u-tag expectation.

Closes PR #4
2026-09-16 13:50:47 -04:00
mplorentz
d6f0e47edf debounce subscription syncing
All checks were successful
CI / lint-check-build (pull_request) Successful in 4m4s
2026-09-03 13:43:10 -04:00
mplorentz
cbba1035e7 Fix bug where email 30390s would be deleted if push notifications were toggled off.
Some checks failed
CI / lint-check-build (pull_request) Has been cancelled
2026-09-03 13:04:29 -04:00
mplorentz
42561c8c02 Use salt instead of device id for email settings 2026-09-03 12:47:36 -04:00
mplorentz
2b2515b1be check for nip-9a support 2026-09-03 12:40:28 -04:00
mplorentz
a7b948740c Omit email digest UI if env variable is not set. 2026-09-03 12:03:34 -04:00
mplorentz
8047a4f084 Always PUT email subscription (remove GET-first lookup)
Some checks failed
CI / lint-check-build (pull_request) Has been cancelled
Mailship's /subscription/email is now an idempotent PUT upsert. Drop the
lookup-before-register dance and always PUT the settings; mailship skips the
confirmation email when nothing changed or only the frequency changed.
2026-09-03 11:52:31 -04:00
mplorentz
3e892d76f6 Sync email settings only when changed
Some checks failed
CI / lint-check-build (pull_request) Has been cancelled
2026-09-01 15:59:30 -04:00
mplorentz
83a8bb1572 Send include_event tag with 30390
Some checks failed
CI / lint-check-build (pull_request) Has been cancelled
2026-08-27 15:44:37 -04:00
mplorentz
dd1182cb32 Save email notification prefs to app settings
Some checks failed
CI / lint-check-build (pull_request) Has been cancelled
2026-08-27 15:08:37 -04:00
5c027dd823 Accept VITE_* build args for branding/feature overrides
Some checks failed
CI / lint-check-build (pull_request) Has been cancelled
Self-hosted deployments can now pass --build-arg VITE_PLATFORM_URL,
VITE_PLATFORM_NAME, VITE_EMAIL_NOTIFICATION_SERVER, etc. to override the
tracked .env defaults at build time. Unset args fall back to .env values
via scripts/build.sh's exported-env restore.
2026-08-25 11:03:57 -04:00
Agent
49df66a58a Fix error message when saving email prefs fails
Some checks failed
CI / lint-check-build (pull_request) Has been cancelled
2026-08-25 10:32:51 -04:00
Agent
bced45814b Merge branch 'dev' into email-notifications 2026-08-25 10:25:53 -04:00
Agent
e3e2e2f57c Onboarded to fragua
Some checks failed
CI / lint-check-build (push) Has been cancelled
2026-08-25 10:23:35 -04:00
mplorentz
c0f545350c Merge branch 'dev' into email-notifications
Some checks failed
CI / lint-check-build (pull_request) Has been cancelled
2026-08-24 14:40:44 -04:00
mplorentz
645174447d Merge branch 'dev' into email-notifications 2026-08-24 14:36:08 -04:00
Jon Staab
637be41a8b Await deletions
Some checks are pending
CI / lint-check-build (push) Waiting to run
2026-08-22 12:36:25 -07:00
Jon Staab
35ed7bc09f React to addressed events getting updated for delete status 2026-08-22 11:40:05 -07:00
Jon Staab
735231f8bc Make some event rendering components reactive 2026-08-22 11:30:30 -07:00
Jon Staab
8d7b640d0f Fix thread permalinks 2026-08-22 11:20:33 -07:00
Jon Staab
99be43f396 Fix pagination collapse 2026-08-22 11:11:57 -07:00
Jon Staab
2edcfd9a79 Fix a test, avoid link nesting in article cards 2026-08-22 11:00:22 -07:00
Jon Staab
08821d27f4 Bump eslint 2026-08-22 10:32:51 -07:00
Jon Staab
5f3b964eec Bump welshman 2026-08-22 10:06:29 -07:00
Jon Staab
e869b2631e Fix US-039 spec 2026-08-22 09:24:36 -07:00
Jon Staab
ef1981c685 Fix the admin spec 2026-08-22 09:10:47 -07:00
Jon Staab
a4193c8629 Report clock drift in tests 2026-08-22 09:00:18 -07:00
Jon Staab
1c58c075a4 Bump welshman 2026-08-21 16:41:57 -07:00
Jon Staab
a28a4fd72a Show error toast on failed report resolution 2026-08-21 15:54:11 -07:00
Jon Staab
0e35cadebe Fix role create/edit colors 2026-08-21 14:11:13 -07:00
Jon Staab
3e4ae49eed Include space urls in hints for profile derivation 2026-08-21 13:47:06 -07:00
Jon Staab
5ecb811b24 Auto-cleanup 2026-08-21 11:29:15 -07:00
Jon Staab
4c21de57e2 Cleanup prose in e2e files 2026-08-20 14:58:26 -07:00
Jon Staab
196bea79b6 Add ci job 2026-08-20 14:43:33 -07:00
Jon Staab
aa2483fe78 Add tests for all user stories 2026-08-20 14:32:30 -07:00
Agent
5cbc1e459c Show email registration errors in UI
- Add error field to EmailNotificationState type
- Set user-friendly error messages in MailNotifications.register() for:
  missing signer, missing server config, NIP-98 auth failure,
  network errors, and server errors
- Clear error on successful registration
- Show inline error banner in the email settings card
- Return early on registration failure (like push does)
- Clear error when user edits email/frequency or clicks reset
2026-08-20 12:22:53 -04:00
mplorentz
725ef45d9d Fix signer error 2026-08-20 11:51:26 -04:00
Agent
fee6f565ff Email notifications: settings UI + mail adapter
- Add VITE_EMAIL_NOTIFICATION_SERVER env var
- Extend notificationSettings with email, emailFrequency, emailAddress
- Add emailNotificationState store in push/adapters/common.ts
- New src/app/mail/index.ts with MailNotifications class:
  register/unregister with mailship via NIP-98 auth,
  publish kind 30390 NIP-9a subscription events
- Wired into alerts settings save handler
- Email Digest Settings card in alerts UI
2026-08-20 11:15:35 -04:00
Jon Staab
c53aaf8df8 Add e2e user stories 2026-08-19 10:32:47 -07:00
Jon Staab
d95ea3c905 Bump version 2026-08-18 15:22:25 -07:00
Jon Staab
e8455f2c8d Add a script to bump the version across web, ios, android 2026-08-18 15:22:14 -07:00
Jon Staab
d5dbb7fba1 Update server.js to use new welshman implementation 2026-08-18 15:13:12 -07:00
Jon Staab
56b9e6f031 Update changelog, bump version 2026-08-18 14:58:41 -07:00
Jon Staab
ce4ecedf7e De-emphasize link meta 2026-08-18 14:44:43 -07:00