diff --git a/docs/NOTIFICATION_TROUBLESHOOTING.md b/docs/NOTIFICATION_TROUBLESHOOTING.md index 07a733952f..e00c29a993 100644 --- a/docs/NOTIFICATION_TROUBLESHOOTING.md +++ b/docs/NOTIFICATION_TROUBLESHOOTING.md @@ -57,18 +57,6 @@ If you recently restarted iOS and don’t see the notification, open **TimeSafar 3. Turn notifications **on** 4. If Android shows notification categories/channels for the app, ensure the relevant channel is allowed. -### Exact alarms (Android 12+ / some devices) - -Daily notifications may require **Exact alarms** to fire at the precise time. - -- Open **Settings** → **Apps** → **TimeSafari** -- Look for **Alarms & reminders** / **Exact alarms** (wording varies) -- Turn **Allow** on - -If you don’t see that option: - -- Search Android settings for **Exact alarms**, **Alarms & reminders**, or **Special app access** - ### Battery / background restrictions Battery optimization can delay or block scheduled notifications. diff --git a/package-lock.json b/package-lock.json index 901a4ad230..1aca273501 100644 --- a/package-lock.json +++ b/package-lock.json @@ -106,6 +106,7 @@ "@commitlint/cli": "^18.6.1", "@commitlint/config-conventional": "^18.6.2", "@playwright/test": "^1.54.2", + "@tailwindcss/typography": "^0.5.19", "@types/dom-webcodecs": "^0.1.7", "@types/jest": "^30.0.0", "@types/js-yaml": "^4.0.9", @@ -8656,6 +8657,33 @@ "node": ">=10" } }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.19.tgz", + "integrity": "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, + "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@timesafari/daily-notification-plugin": { "version": "1.3.3", "resolved": "git+https://gitea.anomalistdesign.com/trent_larson/daily-notification-plugin.git#b8d9b6247d670929418b12e7135d8dd3c9684277", @@ -26523,6 +26551,7 @@ "version": "3.4.17", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", diff --git a/package.json b/package.json index 2a8fec8f0f..54970ee1e4 100644 --- a/package.json +++ b/package.json @@ -151,7 +151,6 @@ "@capacitor/share": "^6.0.3", "@capacitor/status-bar": "^6.0.2", "@capawesome/capacitor-file-picker": "^6.2.0", - "@timesafari/daily-notification-plugin": "git+https://gitea.anomalistdesign.com/trent_larson/daily-notification-plugin.git#master", "@dicebear/collection": "^5.4.1", "@dicebear/core": "^5.4.1", "@ethersproject/hdnode": "^5.7.0", @@ -162,12 +161,12 @@ "@fortawesome/free-solid-svg-icons": "^6.5.1", "@fortawesome/vue-fontawesome": "^3.0.6", "@jlongster/sql.js": "^1.6.7", - "nostr-tools": "^2.15.0", "@peculiar/asn1-ecc": "^2.3.8", "@peculiar/asn1-schema": "^2.3.8", "@pvermeer/dexie-encrypted-addon": "^3.0.0", "@simplewebauthn/browser": "^10.0.0", "@simplewebauthn/server": "^10.0.0", + "@timesafari/daily-notification-plugin": "git+https://gitea.anomalistdesign.com/trent_larson/daily-notification-plugin.git#master", "@tweenjs/tween.js": "^21.1.1", "@types/qrcode": "^1.5.5", "@veramo/core": "^5.6.0", @@ -204,6 +203,7 @@ "lru-cache": "^10.2.0", "luxon": "^3.4.4", "merkletreejs": "^0.3.11", + "nostr-tools": "^2.15.0", "notiwind": "^2.0.2", "papaparse": "^5.4.1", "pinia": "^2.1.7", @@ -235,6 +235,7 @@ "@commitlint/cli": "^18.6.1", "@commitlint/config-conventional": "^18.6.2", "@playwright/test": "^1.54.2", + "@tailwindcss/typography": "^0.5.19", "@types/dom-webcodecs": "^0.1.7", "@types/jest": "^30.0.0", "@types/js-yaml": "^4.0.9", diff --git a/src/router/index.ts b/src/router/index.ts index 0f00ceb415..2c039010e3 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -433,8 +433,13 @@ router.beforeEach(async (to, _from, next) => { } }); -// Add navigation success logging +// Add navigation success logging and scroll-to-top (app uses #app as scroll container, not window) router.afterEach((to, from) => { + const app = document.getElementById("app"); + if (app) { + app.scrollTop = 0; + app.scrollLeft = 0; + } logger.debug(`[Router] ✅ Navigation completed:`, { from: from?.path || "none", to: to.path, diff --git a/src/views/HelpNotificationsView.vue b/src/views/HelpNotificationsView.vue index 35e6c4a42c..711009ff7c 100644 --- a/src/views/HelpNotificationsView.vue +++ b/src/views/HelpNotificationsView.vue @@ -27,6 +27,179 @@
+
+

Troubleshooting Notifications

+ +

1) Check your in-app notification settings

+ + +
+ + + 2) iOS troubleshooting + +
+
Allow notifications for TimeSafari
+
    +
  1. + Open SettingsNotifications +
  2. +
  3. Tap TimeSafari
  4. +
  5. Turn Allow Notifications on
  6. +
  7. + Enable at least one delivery style (recommended): +
      +
    • Lock Screen
    • +
    • Notification Center
    • +
    • Banners
    • +
    +
  8. +
  9. + Optional but helpful: +
      +
    • + Sounds on (if you want an audible reminder) +
    • +
    +
  10. +
+
Focus / Do Not Disturb
+

+ If you’re using Focus or + Do Not Disturb, notifications may be silenced or + hidden. +

+
    +
  • Open SettingsFocus
  • +
  • + Check the active Focus mode and ensure + TimeSafari is allowed (or temporarily disable + Focus to test) +
  • +
+
After restarting your phone
+

+ If you recently restarted iOS and don’t see the notification, open + TimeSafari once. (You don’t need to change + anything.) +

+
+
+ +
+ + + 3) Android troubleshooting + +
+
Allow notifications for TimeSafari
+
    +
  1. Open SettingsApps
  2. +
  3. + Tap TimeSafari → + Manage notifications (wording varies) +
  4. +
  5. Turn notifications on
  6. +
  7. + If Android shows notification categories/channels for the app, + ensure the relevant channel is allowed. +
  8. +
+
Battery / background restrictions
+

+ Battery optimization can delay or block scheduled notifications. +

+
    +
  • + Open SettingsApps → + TimeSafari → + Battery usage (wording varies) +
  • +
  • + If available: +
      +
    • + Set Battery usage to + Unrestricted +
    • +
    • Turn Allow background usage on
    • +
    • Disable optimization for TimeSafari
    • +
    +
  • +
  • + If your device has lists like Sleeping apps / + Restricted apps, remove TimeSafari from them +
  • +
+
After restarting your phone
+

+ Depending on the device manufacturer, Android can clear scheduled + notifications during a reboot. If you restarted recently: +

+
    +
  • + Open TimeSafari once (you don’t need to change + anything) +
  • +
+
+
+ +

4) If it still doesn’t work

+ +
+ +