super-productivity/src/app/core
Johannes Millan d19ec37aaa
fix(notifications): defer mobile permission prompt to first use (#8120) (#8137)
* fix(notifications): defer mobile permission prompt to first use (#8120)

The startup effect (askPermissionsIfNotGiven$) requested notification
permission ~2s after launch via ensurePermissions(), which contradicts
the documented lazy-prompt design in CapacitorReminderService.initialize()
and lowers iOS/Android grant rates (an unprompted launch-time dialog is
dismissed more often than a contextual one).

Read the permission STATE instead and only warn on explicit 'denied';
'prompt'/'prompt-with-rationale' now stay silent so the OS dialog surfaces
lazily on the first real schedule (when the user creates a reminder).

- add getPermissionState() to CapacitorNotificationService (no prompt) and
  refactor checkPermissions() to delegate to it
- add getPermissionState() to CapacitorReminderService ('granted' for the
  legacy Android WebView per #7408, 'denied' when unavailable)
- branch the startup effect on the tri-state and defer the exact-alarm
  check until notifications are granted

* fix(notifications): check exact alarms after lazy grant

* refactor(notifications): drop dead duplicate snack in exact-alarm catch

ensureExactAlarmPermission() never rejects (it swallows its own errors),
so the .catch() that re-opened the EXACT_ALARM_DENIED snack was an
unreachable duplicate of the .then() warning. Keep a resolving, log-only
catch so a future throw can't cache a rejected promise that every
scheduling effect would re-await, and document the one-shot memo and the
isAndroid() gate.
2026-06-08 16:06:16 +02:00
..
banner New focus mode rework (#7411) 2026-05-06 21:11:02 +02:00
base-component fix(supersync): use npx tsx instead of global install in docker monitor 2026-01-23 14:58:59 +01:00
browser-title feat(focus-mode): show flowtime and countdown timer in browser tab ti… (#7640) 2026-05-19 15:01:09 +02:00
chrome-extension-interface fix(supersync): use npx tsx instead of global install in docker monitor 2026-01-23 14:58:59 +01:00
clipboard-image Feat/clipboard paste attachments (#7166) 2026-06-03 20:57:53 +02:00
confetti feat(project): project completion experience (#8036) 2026-06-08 13:43:38 +02:00
data-init fix: remove dead translation key and deduplicate hydration error snack 2026-02-16 18:44:27 +01:00
date fix(core): refresh day stream after next-day start changes #7720 (#8075) 2026-06-08 11:40:05 +02:00
date-time-format fix(date-time): use browser regional locale for default date format (#8023) 2026-06-05 12:28:58 +02:00
drop-paste-input fix: typing issue 2025-05-14 17:56:00 +02:00
electron test(electron): align TODAY filter spec with isTodayWithOffset impl 2026-05-12 21:11:53 +02:00
error-handler fix(core): avoid logging crash user data #7870 (#8128) 2026-06-08 11:27:23 +02:00
example-tasks [codex] Fix sync import conflict from startup example tasks (#7976) 2026-06-03 15:57:53 +02:00
global-tracking-interval fix(core): refresh day stream after next-day start changes #7720 (#8075) 2026-06-08 11:40:05 +02:00
http fix(i18n): boot with bundled English when translation fetch fails offline (#7854) (#7875) 2026-06-01 13:15:33 +02:00
input-intent fix(sidenav): write input-intent body classes on hybrid device init 2026-04-21 21:50:52 +02:00
keyboard-layout test: add unit tests for KeyboardLayoutService and db-upgrade 2026-01-12 12:58:39 +01:00
language fix(supersync): use npx tsx instead of global install in docker monitor 2026-01-23 14:58:59 +01:00
notify fix(notifications): unblock iOS local notifications 2026-05-24 01:00:42 +02:00
persistence feat(project): project completion experience (#8036) 2026-06-08 13:43:38 +02:00
platform fix(notifications): defer mobile permission prompt to first use (#8120) (#8137) 2026-06-08 16:06:16 +02:00
share style: replace hardcoded z-index, media queries, and spacing with design tokens 2026-03-19 18:58:51 +01:00
snack Improve on sync (#7736) 2026-05-22 17:49:25 +02:00
startup feat(local-backup): Track A safeguards for #7925 (#7932) 2026-06-02 11:58:36 +02:00
startup-overlay fix(mobile-nav): coordinate native and HTML add-task button handoff 2026-03-27 17:33:38 +01:00
theme feat(project): project completion experience (#8036) 2026-06-08 13:43:38 +02:00
unsplash feat: make unsplash utm stuff work 2025-08-14 14:35:37 +02:00
util Improve on sync (#7736) 2026-05-22 17:49:25 +02:00
initial-pwa-update-check.service.spec.ts fix(pwa): avoid startup stalls during network changes 2026-05-14 12:41:09 +02:00
initial-pwa-update-check.service.ts fix(pwa): avoid startup stalls during network changes 2026-05-14 12:41:09 +02:00
ipc-events.spec.ts feat: improve input handling for api adding task 2025-09-02 19:31:11 +02:00
ipc-events.ts fix(electron): always show app border unless in fullscreen 2026-03-10 18:57:49 +01:00
locale.constants.ts Update the app to Vietnamese. (#7576) 2026-05-13 12:24:40 +02:00
log.ts fix(log): stop exported log leaking user content (#7619) 2026-05-15 16:51:50 +02:00
window-ea.d.ts fix: typing errors 2025-08-04 22:08:29 +02:00