- Moved task-related settings from the main localization sections into a new "TASKS" section for better organization and clarity.
- Added translations for task-related settings in multiple languages including Italian, Japanese, Korean, Norwegian, Dutch, Polish, Brazilian Portuguese, Portuguese, Slovak, Swedish, Turkish, Ukrainian, and Chinese.
- Removed redundant translations from the main sections to avoid duplication and improve maintainability.
The updateBanner$ effect is action-based and requires a triggering action
to emit. Tests were subscribing directly without dispatching an action,
causing timeouts in the LA timezone test run. Added tick() action dispatch
to properly trigger the effect in all four failing tests.
- Change workflow runner from macos-latest to macos-26
- Add Xcode and SDK version verification step
- Ensures compliance with Apple's April 2026 requirement for iOS 26 SDK
- Maintains iOS 14.0 deployment target for backward compatibility
Docker Compose was failing because env_file: .env was referenced but the
file doesn't exist in CI (it's gitignored). Also updates deprecated
set-output command to use GITHUB_OUTPUT environment file.
- Add missing mocks for OperationEncryptionService, SuperSyncStatusService, and CLIENT_ID_PROVIDER
- Fix async handling by replacing flushMicrotasks() with tick() and flush()
- Update test expectation to match actual clientId parameter
- Reset hasWarnedClockDrift flag in beforeEach to prevent test interference
- Re-enable previously disabled test suite
Root cause: Without all required service mocks, async code in lock callback
never executed in fakeAsync context, preventing clock drift detection logic
from running.
Use keyboard shortcut ('d') to mark task as done instead of clicking
the done button. This avoids element detachment issues caused by
continuous re-renders from the progress bar while task is being tracked.
Fixes timeout in "should keep overlay visible when last tracked task
was completed" test.
Activates clientId-based snapshot replacement detection by passing the
client's ID to downloadOps(). This fixes both false negatives (missing
other clients' snapshot uploads when syncVersion stays at 1) and false
positives (own snapshot uploads triggering conflict dialogs).
The dual-strategy detection logic was already implemented but never
activated because excludeClient was always undefined. Now:
- When excludeClient is provided: uses clientId comparison (accurate)
- When excludeClient is undefined: falls back to syncVersion comparison
Changes:
- Load and pass clientId in operation-log-download.service.ts
- Add tests for syncVersion=1 snapshot replacement detection
- Add tests for false positive prevention after own uploads
All 44 unit tests passing.
Update ImportPage, SettingsPage, and plugin test helpers to navigate
to correct tabs after config page refactoring. Import/Export section
is now in Sync & Backup tab, plugins in Plugins tab.
Fixes 6 failing E2E tests:
- archive-import-persistence (3 tests)
- archive-subtasks (3 tests)
Fixes#6031
- Add home and removable-media plugs for local file sync access
- Add desktop and desktop-legacy plugs for taskbar pinning in Cinnamon
- Update install hook to prompt for home interface connection
- Add documentation warnings about snap limitations and data persistence
All plugs include inline comments explaining their purpose and linking to issue.
The Claude Code Review workflow needs pull-requests: write permission to post review comments on PRs. Previously it only had read access, causing "Actor does not have write permissions" errors.
Update unit tests to verify that:
- Subtasks are excluded when parent is in the same tag/TODAY list
- Subtasks appear as top-level items when parent is NOT in the list
Subtasks can be added to tag lists (including TODAY), but they only appear
as top-level items when their parent is NOT in the same list. When both
parent and subtask are in the same tag/TODAY list, the subtask is shown
nested under the parent instead of separately.
This prevents duplicate display while allowing subtasks to be tagged
independently when needed.