Commit graph

1510 commits

Author SHA1 Message Date
Johannes Millan
6c098b6eaa Merge branch 'master' into feat/operation-logs
Resolve conflict in webdav-sync-expansion.spec.ts:
- Use simplified sync verification without reload (sync updates NgRx directly)
- Test: B marks task done -> sync -> verify A sees task as done
2025-12-29 21:54:15 +01:00
Johannes Millan
30d2209688 chore(package): update baseline-browser-mapping to version 2.9.11 2025-12-26 12:04:55 +01:00
Johannes Millan
efb164c1fe fix(security): update Angular packages to address CVEs
- CVE-2025-66035: XSRF token leakage via protocol-relative URLs
- CVE-2025-66412: Stored XSS via SVG animation and MathML attributes
- CVE-2025-66414: DNS rebinding in @modelcontextprotocol/sdk

Updated @angular/* packages to 20.3.15 and @angular/cli to 20.3.13.
2025-12-23 14:10:16 +01:00
Johannes Millan
501b8b5a32 Merge branch 'master' into feat/operation-logs
* master:
  fix(build): remove deprecated win32metadata from electron-builder config
  fix(focus-mode): address critical focus mode and Android notification issues
  test(task-repeat): fix flaky tests and add Mon/Wed/Fri coverage (#5594)
  fix(electron): delay window focus after notification to prevent accidental input
  feat(task): add Go to Task button for all newly created tasks
  fix(sync): show context-aware permission error for Flatpak/Snap
  fix(android): skip reminder dialog on Android to fix snooze button
  fix(focus-mode): respect isFocusModeEnabled setting in App Features
  fix(android): sync notification timer when time spent is manually changed
  feat(sync): add WebDAV Test Connection button and improve UX
  fix(build): ensure consistent Windows EXE metadata for installer and portable
  Update es.json
  Update es.json
  Update es.json
  feat(i18n): update Turkish language
  16.7.3
  fix: es.json

# Conflicts:
#	src/app/features/android/store/android.effects.ts
#	src/app/features/config/form-cfgs/sync-form.const.ts
#	src/app/features/focus-mode/store/focus-mode.effects.ts
#	src/app/features/tasks/store/task-ui.effects.ts
#	src/app/imex/sync/sync-wrapper.service.ts
#	src/app/pages/config-page/config-page.component.ts
#	src/app/pfapi/api/sync/providers/webdav/webdav.ts
#	src/app/t.const.ts
2025-12-22 20:44:21 +01:00
Johannes Millan
77b991c75c 16.7.3 2025-12-20 11:43:20 +01:00
Johannes Millan
79853eee3f Merge branch 'master' into feat/operation-logs
* master: (41 commits)
  16.7.2
  16.7.1
  16.7.0
  fix(focus-mode): show start button when break time is up in banner mode
  fix(focus-mode): hide dismiss button in banner-only mode (#5737)
  fix(focus-mode): add start button in banner after session completes (#5737)
  refactor(focus-mode): remove isAlwaysUseFocusMode setting (#5737)
  feat(focus-mode): add task existence check before resuming tracking (#5737)
  feat(focus-mode): add icon buttons for banner and sync session with tracking (#5753)
  fix(repeat): schedule tasks for correct day and remove from Today when needed (#5594)
  feat(focus-mode): sync duration when Pomodoro settings change (#5753)
  feat(focus-mode): add new settings and fix pomodoro dialog (#5753)
  fix(focus-mode): fix pomodoro long break timing and add ticking sound option (#5753)
  feat(android): add better notifications and permanent notification for focus mode
  feat(android): add background time tracking via foreground service
  build(ci): add i18n JSON validation step to lint-and-test workflow
  docs: add archived tasks viewer to community plugins
  fix(android): make schedule dialog scrollable on small screens (#5741)
  fix(focus-mode): preserve existing notes when opening notes panel (#5752)
  fix(sync): show user-friendly error for Flatpak/Snap permission issues
  ...

# Conflicts:
#	src/app/features/android/store/android.effects.ts
#	src/app/features/focus-mode/store/focus-mode.effects.ts
#	src/app/features/issue/dialog-edit-issue-provider/dialog-edit-issue-provider.component.ts
#	src/app/features/reminder/reminder.module.ts
#	src/app/features/task-repeat-cfg/store/task-repeat-cfg.effects.ts
2025-12-19 21:38:29 +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
4367fe2109 feat(lint): add ESLint rule to enforce hydration guards on selector effects
Add local-rules/require-hydration-guard ESLint rule that warns when
selector-based NgRx effects lack hydration guards (skipDuringSync() or
isApplyingRemoteOps()).

The rule correctly identifies:
- Effects that START with this.store.select() as primary source
- Does NOT flag selectors in withLatestFrom (secondary sources)
- Does NOT flag selectors inside operator callbacks (already guarded)

This prevents duplicate operations during sync replay where selector-based
effects would fire on intermediate states.

Install eslint-plugin-local-rules to enable the rule.
2025-12-18 17:33:37 +01:00
Johannes Millan
5992fad51b fix(sync): perform archive flush synchronously to prevent DB lock error
Previously, flushYoungToOld was dispatched as an action and handled by
an NgRx effect. This caused a race condition during finish day:
1. Action dispatched, effect queued
2. Method returned, sync started, DB locked
3. Effect ran, tried to write, blocked by DB lock

Fix follows the same pattern as moveToArchive:
- Perform the flush synchronously in ArchiveService before dispatching
- Dispatch action for op-log capture only (syncs to other clients)
- Handler skips local operations (only runs for remote)

Also adds comprehensive unit tests and e2e test for this scenario.
2025-12-17 16:42:59 +01:00
Johannes Millan
02d80249af fix(sync): prevent SYNC_IMPORT for fresh clients syncing to empty server
The server migration check was incorrectly creating a SYNC_IMPORT when
a fresh client (with local data but no sync history) synced to an empty
server. This caused operations from other clients to be filtered out as
"invalidated by SYNC_IMPORT" because they were CONCURRENT with it.

Now _checkAndHandleServerMigration() checks for previously synced ops
before triggering migration, correctly distinguishing between:
- Fresh client (only local ops) → uploads ops normally
- Server migration (has sync history) → creates SYNC_IMPORT

Also adds npm scripts for debugging supersync E2E tests.
2025-12-17 15:56:17 +01:00
Johannes Millan
9f1d68ea40 Merge branch 'master' into feat/operation-logs
* master:
  fix(electron): use includes() instead of in operator for hostname check
  fix(docker): use Debian-based nginx for ARM64 QEMU compatibility
  16.6.1
  build: add resolved URL and integrity for ical.js version 2.1.0
  fix(ui): align time tracking button overlay (#5720)
  fix(calendar): handle Office 365 updateTimezones crash (#5722)
  fix(repeat): use fallback for undefined startDate (#5724)
  build(welcome): update wording for issue claiming instructions
  fix(docker): drop arm/v7 platform to fix QEMU build failure
2025-12-16 18:14:12 +01:00
Johannes Millan
0e17203d0a 16.6.1 2025-12-14 12:33:38 +01:00
Johannes Millan
3791fa14c0 build(sync): add SuperSync service for E2E testing in docker-compose 2025-12-12 20:48:10 +01:00
Johannes Millan
c87e7ec218 refactor(sync): use uuidv7 library for UUID generation
Replace custom UUID v7 implementations with the standard uuidv7 library.
The custom implementation had a bug with JavaScript bitwise operators
not handling 48-bit timestamps correctly.
2025-12-12 20:46:19 +01:00
Johannes Millan
19dfc5ca07 build: add development build script for frontend 2025-12-12 20:46:05 +01:00
Johannes Millan
a10eb2fcf8 16.6.0 2025-12-12 19:06:20 +01:00
Johannes Millan
fe40bdf179 build(deps): update dependencies to fix security vulnerabilities
- Override @conventional-changelog/git-client to ^2.5.1 to fix CVE-2025-59433
- Update glob (via nested deps) to ^11.1.0 to fix CVE-2025-64756
- Update node-forge to ^1.3.3 to fix CVE-2025-12816 & CVE-2025-66030
2025-12-11 18:47:56 +01:00
Johannes Millan
e268076332 test(e2e): try to fix e2e tests 2025-12-10 21:26:48 +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
6e60bde789 build: downgrade electron again 2025-12-06 16:26:39 +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
68ff0ffb88 build(electron): upgrade to Electron 39 with X11 default on Linux
Upgrade Electron from 37.7.0 to 39.2.5. Since Electron 38+ defaults to
Wayland via --ozone-platform=auto, force X11 on Linux to ensure reliable
idle detection (#1443) and global shortcuts. Users can opt-in to Wayland
with --ozone-platform=wayland or --force-wayland flags.
2025-12-05 15:28:40 +01:00
Johannes Millan
e6d1464f00
Merge pull request #5638 from johannesjo/dependabot/npm_and_yarn/electron-builder-26.3.2
chore(deps-dev): bump electron-builder from 26.1.0 to 26.3.2
2025-12-04 11:06:05 +01:00
Johannes Millan
af55e8d409
Merge pull request #5608 from nicojmn/master
feat(encryption): migrate to argon2id
2025-12-02 12:41:12 +01:00
Johannes Millan
8f2161623f
Merge pull request #5637 from johannesjo/dependabot/npm_and_yarn/electron-log-5.4.3
chore(deps): bump electron-log from 5.4.1 to 5.4.3
2025-12-02 12:34:58 +01:00
dependabot[bot]
cfe80ef7e4
chore(deps-dev): bump electron-builder from 26.1.0 to 26.3.2
Bumps [electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder) from 26.1.0 to 26.3.2.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/packages/electron-builder/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/electron-builder@26.3.2/packages/electron-builder)

---
updated-dependencies:
- dependency-name: electron-builder
  dependency-version: 26.3.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 02:20:14 +00:00
Johannes Millan
e6883d5117
Merge pull request #5634 from johannesjo/dependabot/npm_and_yarn/canvas-confetti-1.9.4
chore(deps-dev): bump canvas-confetti from 1.9.3 to 1.9.4
2025-12-02 01:20:31 +01:00
dependabot[bot]
07cc3d387b
chore(deps): bump electron-log from 5.4.1 to 5.4.3
Bumps [electron-log](https://github.com/megahertz/electron-log) from 5.4.1 to 5.4.3.
- [Changelog](https://github.com/megahertz/electron-log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/megahertz/electron-log/compare/v5.4.1...v5.4.3)

---
updated-dependencies:
- dependency-name: electron-log
  dependency-version: 5.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 15:46:50 +00:00
dependabot[bot]
a50907bb32
chore(deps-dev): bump canvas-confetti from 1.9.3 to 1.9.4
Bumps [canvas-confetti](https://github.com/catdad/canvas-confetti) from 1.9.3 to 1.9.4.
- [Release notes](https://github.com/catdad/canvas-confetti/releases)
- [Commits](https://github.com/catdad/canvas-confetti/compare/1.9.3...1.9.4)

---
updated-dependencies:
- dependency-name: canvas-confetti
  dependency-version: 1.9.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 15:45:58 +00:00
Johannes Millan
6b6e815635
Merge pull request #5630 from johannesjo/dependabot/npm_and_yarn/nanoid-5.1.6
chore(deps-dev): bump nanoid from 5.1.5 to 5.1.6
2025-12-01 16:24:02 +01:00
Johannes Millan
b9c3b8c934
Merge pull request #5633 from johannesjo/dependabot/npm_and_yarn/rollup/rollup-darwin-x64-4.53.3
chore(deps): bump @rollup/rollup-darwin-x64 from 4.27.4 to 4.53.3
2025-12-01 16:23:55 +01:00
Johannes Millan
c92db89712
Merge pull request #5632 from johannesjo/dependabot/npm_and_yarn/eslint-plugin-jsdoc-61.4.1
chore(deps-dev): bump eslint-plugin-jsdoc from 50.6.0 to 61.4.1
2025-12-01 16:23:31 +01:00
dependabot[bot]
65209fa770
chore(deps): bump @rollup/rollup-darwin-x64 from 4.27.4 to 4.53.3
Bumps [@rollup/rollup-darwin-x64](https://github.com/rollup/rollup) from 4.27.4 to 4.53.3.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.27.4...v4.53.3)

---
updated-dependencies:
- dependency-name: "@rollup/rollup-darwin-x64"
  dependency-version: 4.53.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 15:14:13 +00:00
dependabot[bot]
ab5a4b39df
chore(deps-dev): bump eslint-plugin-jsdoc from 50.6.0 to 61.4.1
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.6.0 to 61.4.1.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.6.0...v61.4.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 61.4.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 15:12:07 +00:00
dependabot[bot]
36778d1ac2
chore(deps-dev): bump @electron/notarize from 3.0.1 to 3.1.1
Bumps [@electron/notarize](https://github.com/electron/notarize) from 3.0.1 to 3.1.1.
- [Release notes](https://github.com/electron/notarize/releases)
- [Commits](https://github.com/electron/notarize/compare/v3.0.1...v3.1.1)

---
updated-dependencies:
- dependency-name: "@electron/notarize"
  dependency-version: 3.1.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 15:11:54 +00:00
dependabot[bot]
c3e85440ae
chore(deps-dev): bump nanoid from 5.1.5 to 5.1.6
Bumps [nanoid](https://github.com/ai/nanoid) from 5.1.5 to 5.1.6.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/5.1.5...5.1.6)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-version: 5.1.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 15:11:42 +00: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
nicojmn
d97a8b0bd8
feat(encryption): migrate to argon2id 2025-11-29 23:48:10 +01:00
Johannes Millan
e2d6f82638 16.4.1 2025-11-28 21:12:30 +01:00
Johannes Millan
fa828f5454 fix(build): build vite-plugin before building plugins 2025-11-28 21:10:30 +01:00
Johannes Millan
6a8ee82f1b 16.4.0 2025-11-28 21:02:08 +01:00
Johannes Millan
2e5aadaa97 test: fix failing e2e tests and improve stability
- Add 'pree2e' script to build plugins before tests
- Add explicit checks for plugin management initialization
- Improve stability in issue-provider-panel tests
- Ensure baseURL is passed to test context
- Update plugin lockfiles
2025-11-28 20:59:37 +01:00
Johannes Millan
706a557e86 feat: update rxjs to 7 step 1 2025-11-17 14:04:17 +01:00