* origin/master: (21 commits)
docs: add archived tasks viewer to community plugins
chore(deps): bump aws-sdk-s3 in the bundler group across 1 directory
Update zh.json
Update es.json
Update es.json
fix(linear): show status name property
fix: add retry for rate limiting
feat: update ClickUp issue content comments
feat: refactor ClickUp error logging to use IssueLog
Tweaked visual display
feat: Add generic subtask support for issue providers, implement for ClickUp
Added parent task title to focus mode
fix: remove deprecated toPromise calls
chore: organize imports
test: refactor to use typia.random
Update it.json
feat: Introduce typia for ClickUp API runtime type validation, refactor ClickUp models, and simplify task title display.
Full translation and corrections pl.json
test: add clickup api service unit tests
fix: update workspace selection api key
...
When break time is up and the banner shows "Break is done", pressing
the play button now starts the next session instead of trying to
resume the completed break.
When using banner-only mode (isStartInBackground), hide the Dismiss
button to prevent users from accidentally dismissing the focus mode
banner, especially after session completion.
When a session is manually completed in banner mode, show a "Start"
button to begin the next session instead of hiding the play button.
Also hide the "End Session" button when session is already completed.
- Remove isAlwaysUseFocusMode from config model, defaults, and form
- Use isSyncSessionWithTracking instead for auto-opening focus mode
- Reorder form fields: isSyncSessionWithTracking first, then isStartInBackground
- Update all tests to reflect the changes
Add validation in sync effects to check if the paused task still
exists before attempting to resume tracking. This prevents errors
when a task is deleted during a focus session pause.
- Add icon buttons (play/pause, stop, open overlay) to focus mode banner
when "start in background" mode is enabled
- Replace isAutoStartSession with isSyncSessionWithTracking for
bidirectional sync between focus session and time tracking:
- Pause session → stop tracking (stores task ID for resume)
- Resume session → resume tracking on stored task
- Stop tracking → pause session
- Start tracking → start/resume session
- Fix session auto-completing on resume by using distinctUntilChanged
on isRunning state
- Fix pause/resume to work for both work sessions and breaks
- Add pausedTaskId prop to pauseFocusSession action for sync feature
- Add comprehensive tests for all sync effects (26 new tests)
- Use getFirstRepeatOccurrence to calculate the correct first occurrence date
when making a task repeatable
- Remove tasks from Today tag when first occurrence is not today, even when
startTime/remindAt are not set
- Make isSkipAutoRemoveFromToday dynamic based on isToday(dateTime) in both
effects and service
- Add comprehensive tests for the new behavior
When Pomodoro session duration is changed in settings, the displayed
duration for an unstarted session now updates automatically. Only syncs
if divisible by 1000 (whole seconds) and session hasn't started.
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
Wrap dialog content in mat-dialog-content to enable scrolling when
the "Remind at" field appears, ensuring action buttons remain
accessible on small phone screens (5" and similar).
Add isDefaultText binding to inline-markdown in focus overlay to properly
distinguish between user notes and default template, preventing note
overwrite when clicking the notes button.
Detect filesystem permission errors (EROFS, EACCES, EPERM) during local
file sync and display a helpful message guiding users to grant permissions
via Flatseal or use ~/.var/app/ path.
Fixes#4078
The `in` operator checks for array indices, not values, so the condition
was always false. This prevented User-Agent header removal for GitHub,
Office365, and Outlook requests.