Commit graph

18001 commits

Author SHA1 Message Date
Johannes Millan
b3ddfcbf20 perf(e2e): optimize polling intervals in helpers
Phase 1.4 of E2E test optimization:
- TASK_POLL_INTERVAL: 300ms → 150ms
- waitForSyncComplete() stable check: 300ms → 150ms
- waitForSyncComplete() spinner check: 200ms → 100ms
- Dialog loop polling: 200ms → 100ms

Expected impact: 5-10s saved per test (faster detection)
Risk: Low - still reasonable for network operations
2026-01-18 15:58:46 +01:00
Johannes Millan
aef7c07921 perf(e2e): reduce arbitrary delays in tests
Phase 1.3 of E2E test optimization:
- triggerSync(): 1000ms → 300ms initial wait
- Time tracking tests: 5000ms → 2000ms accumulation wait
- Auto-sync setup delay: 2000ms → 500ms

Expected impact: 3-8s saved per test
Risk: Very low - waits reduced but still safe for test purposes
2026-01-18 15:56:38 +01:00
Johannes Millan
8c62b87315 perf(e2e): optimize setupSuperSync() wait intervals
Phase 1.2 of E2E test optimization:
- Reduce toPass() intervals from [500, 1000, ...] to [200, 400, ...]
- Reduce explicit waits from 200-500ms to 100-200ms
- Faster retry polling for dialog operations

Expected impact: 5-10s saved per client setup
Risk: Low - still generous timeouts with proper retries
2026-01-18 15:54:32 +01:00
Johannes Millan
4c738186f3 perf(e2e): reduce post-sync settle delay from 300ms to 100ms
Phase 1.1 of E2E test optimization. Reduces the settle delay in
syncAndWait() since waitForSyncComplete() already polls for completion.

Expected impact: ~10-15s saved per test
Risk: Low - polling already ensures sync is complete
2026-01-18 15:52:32 +01:00
Johannes Millan
a8d154530e ci(e2e): increase scheduled workflow timeout to 120 minutes
The E2E test suite has grown to 111+ spec files with an estimated
execution time of 80-100 minutes, exceeding the previous 60-minute
timeout limit. This increase prevents premature workflow termination.
2026-01-18 15:35:32 +01:00
Johannes Millan
6771fa77a2 17.0.0-RC.12 2026-01-18 14:00:52 +01:00
Johannes Millan
dab4762f25 fix(tour): update tour for tabbed settings page
- Simplify sync tour to use right-click/long-press on sync button
- Fix ProductivityHelper tour to select correct tab via query params
- Add query parameter support to config page for tab selection
2026-01-18 13:24:56 +01:00
Johannes Millan
9ec4a4d72e test(op-log): increase performance test threshold for macOS CI
Increase O(n) performance test threshold from 12x to 20x to accommodate
macOS CI environment variability. The test still validates linear scaling
but now accounts for platform-specific performance characteristics that
showed ratios up to ~15.5x on macOS GitHub Actions runners.
2026-01-18 13:12:56 +01:00
Johannes Millan
21e9b617a3 test(e2e): fix supersync tests to navigate to correct settings tabs
E2E tests were failing because settings sections moved to different tabs:
- Simple Counters section is now in Productivity tab (not General)
- Import/Export section is now in Sync & Backup tab (not General)

Fixed tests now navigate to the correct tab before looking for sections:
- supersync-simple-counter.spec.ts: Navigate to Productivity tab
- supersync-backup-import-id-mismatch.spec.ts: Navigate to Sync & Backup tab
- supersync-backup-recovery.spec.ts: Navigate to Sync & Backup tab

5 out of 6 failing tests now pass.
2026-01-18 12:46:20 +01:00
Johannes Millan
0dd33fe4b6 17.0.0-RC.11 2026-01-18 12:29:38 +01:00
Johannes Millan
847062004f test(focus-mode): fix updateBanner$ effect tests by dispatching trigger actions
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.
2026-01-18 12:22:20 +01:00
Johannes Millan
4bbe7634d8 build(ios): update to iOS 26 SDK for App Store requirements
- 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
2026-01-18 12:21:38 +01:00
Johannes Millan
1f4eecbe70 fix(e2e): create missing .env file and update GitHub Actions syntax
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.
2026-01-18 12:07:55 +01:00
Johannes Millan
d9e27a0da7 17.0.0-RC.10 2026-01-18 02:20:51 +01:00
Johannes Millan
dca674cdf4 test(op-log): fix clock drift tests by adding missing service mocks
- 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.
2026-01-18 02:20:14 +01:00
Johannes Millan
7d5bb1a709 17.0.0-RC.9 2026-01-17 16:08:01 +01:00
Johannes Millan
4cd4216f46 test: tmp disable 2026-01-17 16:07:12 +01:00
Johannes Millan
0bd9c7de0a test: fix broken 2026-01-17 16:06:48 +01:00
Johannes Millan
2e1327ecb5 test: fix broken 2026-01-17 16:04:59 +01:00
Johannes Millan
950c99ef4b test(e2e): fix flaky Pomodoro focus mode test
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.
2026-01-17 15:53:27 +01:00
Johannes Millan
0a7e0c317e 17.0.0-RC.8 2026-01-17 15:47:15 +01:00
Johannes Millan
7f493fcfe6 test: improve e2e 2026-01-17 15:46:49 +01:00
Johannes Millan
978d71f40d fix(sync): pass clientId to downloadOps for accurate snapshot detection
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.
2026-01-17 15:46:14 +01:00
Johannes Millan
4d78d7b9fc fix(ci): add E2E tests to PR workflow 2026-01-17 15:23:45 +01:00
Johannes Millan
6a9d39838c build: don't run e2e tests every 2026-01-17 15:02:11 +01:00
Johannes Millan
dbaaab8faa fix(snap): remove duplicate plugs from configuration
The default plug already includes home, desktop, and desktop-legacy.
Explicitly listing them again caused snap store rejection due to duplicates.
2026-01-17 14:50:56 +01:00
Johannes Millan
53324bac08 17.0.0-RC.7 2026-01-17 13:33:56 +01:00
Johannes Millan
ce595ba212 17.0.0-RC.6 2026-01-17 13:32:33 +01:00
Johannes Millan
7137533407 test(e2e): fix additional tests for tabbed config page
Update plugin-lifecycle, plugin-upload, and reminders tests to
navigate to correct tabs:
- Plugin tests navigate to Plugins tab (extension icon)
- Reminder tests navigate to Time & Tracking tab (timer icon)

Fixes 5 additional E2E test failures after config page refactoring.
2026-01-17 13:26:57 +01:00
Johannes Millan
1f3098a48f test(e2e): update page objects for tabbed config page UI
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)
2026-01-17 13:20:35 +01:00
Johannes Millan
1c0581bca8 fix(snap): add filesystem and desktop integration plugs
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.
2026-01-17 12:44:30 +01:00
Johannes Millan
a11257e70b fix(ci): grant write permissions for Claude code review to post comments
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.
2026-01-17 12:36:07 +01:00
Johannes Millan
efad5565e7 test(tags): update tests for subtask filtering in tag lists
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
2026-01-17 12:36:07 +01:00
Johannes Millan
0c5bc46e67 fix(tags): show subtasks in tag lists only when parent is not in same 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.
2026-01-17 12:36:07 +01:00
Johannes Millan
7a7cb031b9 fix(ci): add memory allocation to Mac test step to prevent OOM 2026-01-17 12:36:07 +01:00
Johannes Millan
bd7944131a
Merge pull request #6034 from steindvart/pull-request-template
Add pull request template
2026-01-17 12:31:25 +01:00
Johannes Millan
8580742272
Merge pull request #6033 from steindvart/settings-tabs
Organize settings page into horizontal tabs for improved usability
2026-01-17 12:27:14 +01:00
Ivan Kalashnikov
8e811a4943 docs: add pull request template. 2026-01-17 15:47:22 +07:00
Ivan Kalashnikov
f2b5cbb958 refactor(config-page): update comments for clarity and remove unused service injection 2026-01-17 15:30:52 +07:00
Ivan Kalashnikov
bb485df58a style(config-page): center align tab content with auto margins 2026-01-17 14:46:55 +07:00
Ivan Kalashnikov
cdd99dedfe refactor(config): remove collapsible element from plugins tab. 2026-01-17 14:33:21 +07:00
Ivan Kalashnikov
34aee6a12c docs: add TODOs. 2026-01-17 14:25:43 +07:00
Ivan Kalashnikov
8afe8335fb refactor(i18n): remove 'PRODUCTIVITY_HELPER' key from translation files. 2026-01-17 14:18:38 +07:00
Ivan Kalashnikov
4c7875c8dd fix(i18n): update Russian translations and make alphabetical order for en and ru. 2026-01-17 14:16:37 +07:00
Ivan Kalashnikov
d7a1a3a1d0 refactor(config): reorder service injections for improved readability 2026-01-17 13:58:04 +07:00
Ivan Kalashnikov
c64485b888 fix(config): rename 'Plugins & Shortcuts' to 'Plugins' for consistency in UI and translations 2026-01-17 12:55:30 +07:00
Johannes Millan
3c5b441046 17.0.0-RC.5 2026-01-16 22:35:17 +01:00
Johannes Millan
0cd6dfaf43 17.0.0-RC.4 2026-01-16 22:34:50 +01:00
Johannes Millan
b0f4e99c0b test(e2e): fix flaky focus mode tests
Fixed 6 flaky E2E tests in focus mode by addressing race conditions
with countdown animation and session state transitions.

Changes:
- Added pointer-events: none to countdown component to prevent blocking
  clicks during fade-out animation (195ms)
- Replaced arbitrary timeouts with explicit waits for session-in-progress
  indicator (complete session button) in all focus mode tests
- Tests now wait for countdown animation to fully complete before
  interacting with UI elements

Root causes:
1. Countdown overlay intercepted pointer events during fade animation,
   causing clicks to fail intermittently
2. 900ms delay between countdown completion and session start caused
   race conditions when using fixed timeouts

Affected tests:
- focus-mode-break.spec.ts (4 tests)
- flowtime-timer-bug-5117.spec.ts (2 tests)

All tests now pass consistently without retries.
2026-01-16 22:34:50 +01:00
Johannes Millan
213d0ec010 chore(plugins): remove debug logging from procrastination-buster i18n 2026-01-16 22:34:50 +01:00