Commit graph

229 commits

Author SHA1 Message Date
Johannes Millan
79276f3fc7 16.9.1 2026-01-09 17:59:07 +01:00
Johannes Millan
4919ab188b 16.9.0 2026-01-09 16:41:59 +01:00
Johannes Millan
dfa6a94a4b fix(android): show notification with sound when focus mode timer completes in background
When the app is backgrounded on Android, the focus mode countdown timer
now triggers a high-priority notification with alarm sound and vibration
when it completes. Previously, only the silent foreground service
notification was shown, causing users to miss timer completion.

Changes:
- Add completion notification channel with IMPORTANCE_HIGH
- Detect timer completion in FocusModeForegroundService
- Broadcast completion event to activity via LocalBroadcastManager
- Forward event to Angular via onFocusModeTimerComplete$ subject
- Handle native completion in effects to sync app state

Fixes #5923
2026-01-09 15:01:06 +01:00
Johannes Millan
1a79592aca build: update links to match our new organization 2026-01-05 14:45:06 +01:00
Johannes Millan
2cc06178e5 16.8.3 2026-01-04 17:27:04 +01:00
Johannes Millan
70f1e4ba73 16.8.2 2026-01-04 14:57:50 +01:00
Johannes Millan
b7cbef2f79 feat(android): add alarm sound and vibration to task reminders
Use default alarm ringtone with USAGE_ALARM audio attributes so
reminders play even when phone is on silent. Add vibration pattern
and change notification category from REMINDER to ALARM.

Fixes #5603
2026-01-04 12:45:00 +01:00
Johannes Millan
ac31531ca6 16.8.1 2026-01-02 20:12:41 +01:00
Johannes Millan
092d32a39e 16.8.0 2026-01-02 19:26:41 +01:00
Johannes Millan
a14c95093d fix(android): add error handling for native service calls
Wrap all androidInterface native method calls in try-catch blocks to
prevent app crashes when Java exceptions are raised during method
invocation. Users are now notified via snackbar when service start
fails, while update/stop failures are logged silently.

Changes:
- Add _safeNativeCall helper to TypeScript effects for DRY error handling
- Add safeCall inline helper to Kotlin JavaScriptInterface
- Wrap focus mode and tracking service calls with error handling
- Show user-friendly error notification on service start failures
- Add unit tests for error handling logic

Fixes #5819
2026-01-02 17:09:08 +01:00
Johannes Millan
00fdb29db9 fix(android): resolve race condition and improve widget reliability
- Add @Synchronized to WidgetTaskQueue methods to prevent task loss
- Use apply() instead of commit() in addTask() to avoid UI blocking
- Change QuickAddActivity to extend AppCompatActivity for consistency
- Add unit tests for setCounter() plugin API method
2026-01-01 12:34:39 +01:00
Johannes Millan
4a89c05d32 feat(android): add quick add widget 2025-12-31 12:45:17 +01:00
Johannes Millan
25edb4ff1e perf(android): prewarm WebView during idle time to speed up startup
Load WebView native libraries during main thread idle time using
IdleHandler and WebSettings.getDefaultUserAgent(). This reduces
the 200-300ms freeze on first WebView creation.
2025-12-31 11:45:52 +01:00
Johannes Millan
d11435808e fix(focus-mode): address critical focus mode and Android notification issues
- Fix pausedTaskId race condition: pass pausedTaskId in action payload
  instead of reading from state (reducer clears before effect reads)
- Fix Android focus notification: update title/isBreak on transitions,
  restart timer runnable on resume from paused state
- Fix Android reminder cancellation: track scheduled IDs and cancel
  alarms when reminders are removed
- Fix banner Start button: dispatch skipBreak first when isBreakTimeUp
  to properly resume task tracking
- Fix WebDAV validation: use translation key instead of hardcoded string

Addresses code review feedback for sync issues identified in focus mode,
Android notifications, and reminder scheduling.
2025-12-22 19:00:02 +01:00
Johannes Millan
2c910f6753 fix(android): sync notification timer when time spent is manually changed
Add updateTrackingService method to reset the notification timer when
the user manually edits time spent on a task. Previously, the Android
foreground service maintained its own timer that was only set at
tracking start, causing desync when users manually reset time.

Fixes #5772
2025-12-22 14:40:40 +01:00
Johannes Millan
77b991c75c 16.7.3 2025-12-20 11:43:20 +01:00
Johannes Millan
1d52bb91be 16.7.2 2025-12-19 21:17:46 +01:00
Johannes Millan
4a40af6f14 16.7.1 2025-12-19 21:15:45 +01:00
Johannes Millan
592eb3ba39 16.7.0 2025-12-19 21:10:21 +01:00
Johannes Millan
f7901ba47f feat(android): add better notifications and permanent notification for focus mode 2025-12-19 15:52:11 +01:00
Johannes Millan
ffa7122aea feat(android): add background time tracking via foreground service
When a task is being tracked and the app goes to the background on Android,
JavaScript execution is paused/throttled, causing time tracking to stop.

This adds a native Foreground Service that:
- Shows a persistent notification with task title and elapsed time
- Tracks time independently using timestamps (not JS ticks)
- Provides Pause and Done action buttons on the notification
- Syncs elapsed time back to Angular when the app resumes or task changes

Architecture:
- Native service stores startTimestamp + accumulatedMs
- Calculates elapsed = (now - startTimestamp) + accumulated
- Angular effects sync time on resume, task switch, and notification actions
2025-12-19 13:38:52 +01:00
Johannes Millan
0e17203d0a 16.6.1 2025-12-14 12:33:38 +01:00
Johannes Millan
a10eb2fcf8 16.6.0 2025-12-12 19:06:20 +01:00
Johannes Millan
102ac1c330 16.5.5 2025-12-09 14:26:48 +01:00
johannesjo
7ce0d784ce 16.5.4 2025-12-07 09:57:23 +01:00
Johannes Millan
4bf3754fef 16.5.3 2025-12-06 16:29:09 +01:00
Johannes Millan
6a150ea8a2 16.5.2 2025-12-06 13:41:30 +01:00
Johannes Millan
5ef527990a 16.5.1 2025-12-06 12:08:14 +01:00
Johannes Millan
02093f871d 16.5.0 2025-12-05 17:24:02 +01:00
Johannes Millan
e69c39c3cc fix(android): address cold start share race condition and type mismatch
- Introduce `isFrontendReady` flag in Main Activity to strictly coordinate share intent flushing.
- Queue all share intents until the frontend explicitly signals readiness via `triggerGetShareData`.
- Change default share type from 'TEXT' (invalid) to 'NOTE' (valid) to match frontend type definitions.
- Fix race condition where `callJSInterfaceFunctionIfExists` was called before Angular subscriptions were active.
2025-12-02 13:30:36 +01:00
Johannes Millan
36285084bd feat(android): improve sharing robustness and UX
- Remove brittle 3s delay for share intent handling and replace with queueing mechanism.
- Add `triggerGetShareData` to pull pending shares upon app initialization.
- Improve `handleIntent` logic to avoid duplicate processing on warm starts.
- Detect `LINK` vs `TEXT` types for better icon selection.
- Increase title truncation limit to 150 chars.
2025-12-02 13:30:36 +01:00
Johannes Millan
62438af882 feat(android): implement sharing functionality with attachment support 2025-12-02 13:30:36 +01:00
Johannes Millan
b9490291cb 16.4.3 2025-11-30 13:41:43 +01:00
Johannes Millan
1d4605621e 16.4.2 2025-11-30 13:41:06 +01:00
Johannes Millan
e2d6f82638 16.4.1 2025-11-28 21:12:30 +01:00
Johannes Millan
6a8ee82f1b 16.4.0 2025-11-28 21:02:08 +01:00
Johannes Millan
744894ad7e fix(android): update OkHttp dependency to 4.12.0 #5579
- Update okhttp dependency to 4.12.0 to improve compatibility with newer Android versions, potentially resolving network issues on Android 16 #
2025-11-28 18:48:48 +01:00
Johannes Millan
9d9715fd29 16.3.6 2025-11-15 10:34:50 +01:00
Johannes Millan
96f73ccfc7 16.3.5 2025-11-14 15:43:39 +01:00
Johannes Millan
7137b64677 16.3.4 2025-11-14 12:39:47 +01:00
Johannes Millan
a3dfd22ed7 16.3.3 2025-11-13 19:36:56 +01:00
johannesjo
348dfeac82 docs: add comprehensive Mac App Store code signing guide
Documents the complete solution for certificate/provisioning profile matching issues with electron-builder and Apple's MAS validation.
2025-11-10 15:59:24 +01:00
Johannes Millan
0bf97455ab 16.3.1 2025-11-10 10:26:15 +01:00
Johannes Millan
43ceb545b4 16.3.0 2025-11-07 14:00:57 +01:00
Johannes Millan
2a615ecf8e fix: webview check for third party webviews #5447 2025-11-06 19:54:50 +01:00
Johannes Millan
b77f407cc5 16.2.1 2025-11-01 13:22:58 +01:00
Johannes Millan
4d9d0d1d2a fix: handle web view compatability check in android rather than in index.html 2025-11-01 13:18:33 +01:00
Johannes Millan
52ce9e6022 16.2.0 2025-10-31 14:41:44 +01:00
Johannes Millan
7313d4e14c build: fix android build 2025-10-29 18:15:50 +01:00
Johannes Millan
5fac5193e6 fix: sharing on android 2025-10-29 16:17:36 +01:00