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 @@
+ If you’re using Focus or + Do Not Disturb, notifications may be silenced or + hidden. +
++ If you recently restarted iOS and don’t see the notification, open + TimeSafari once. (You don’t need to change + anything.) +
++ Battery optimization can delay or block scheduled notifications. +
++ Depending on the device manufacturer, Android can clear scheduled + notifications during a reboot. If you restarted recently: +
+