Commit graph

917 commits

Author SHA1 Message Date
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
85fa50974b Merge branch 'master' into feat/operation-logs
* master:
  refactor(e2e): improve test infrastructure for easier expansion
  chore(e2e): remove broken/empty skipped tests
  test(e2e): fix flaky plugin and WebDAV sync tests
  refactor(e2e): replace waitForTimeout with condition-based waits
  perf(e2e): remove ineffective waits to speed up test runs
  docs(e2e): add CLAUDE.md reference and barrel export for easier test creation
  build: update dep
  refactor(e2e): simplify waits and fix flaky tests
  feat(e2e): streamline e2e test development with improved infrastructure
  perf(e2e): optimize wait utilities and addTask method for faster test execution
  16.8.1

# Conflicts:
#	e2e/pages/base.page.ts
#	e2e/pages/project.page.ts
#	e2e/tests/reminders/reminders-schedule-page.spec.ts
#	e2e/tests/sync/webdav-sync-advanced.spec.ts
#	e2e/tests/sync/webdav-sync-expansion.spec.ts
#	e2e/tests/sync/webdav-sync-full.spec.ts
#	e2e/utils/waits.ts
2026-01-03 18:51:51 +01:00
Johannes Millan
9c84de94ee build: update dep 2026-01-03 12:57:47 +01:00
Johannes Millan
4cee57db14 fix(sync-server): fix SimpleWebAuthn v13 type imports
Import types from @simplewebauthn/server instead of deprecated
@simplewebauthn/types package which is no longer supported in v13.
2026-01-02 22:00:10 +01:00
Johannes Millan
f143210cd9 fix(sync-server): update SimpleWebAuthn to v13 and add debug logging
- Update @simplewebauthn/server from v11 to v13.2.2 for compatibility
- Add debug logging for WebAuthn config and authentication options
- Browser library also needs to be updated to v13.2.2 (manual step)

The version mismatch between server and browser libraries may have been
causing passkey registration/login issues.
2026-01-02 21:58:49 +01:00
Johannes Millan
ac31531ca6 16.8.1 2026-01-02 20:12:41 +01:00
Johannes Millan
e6ea0d74f0 Merge branch 'master' into feat/operation-logs
* master: (37 commits)
  16.8.0
  feat(i18n): add new translations
  fix: address code review issues from today's changes
  fix: address code review issues from today's changes
  fix(data-repair): change quickSetting to CUSTOM when startDate is missing
  fix(test): fix fetch spy setup in audio tests
  fix(android): sync time tracking from notification correctly on resume
  fix(database): prevent repeated error dialogs when disk is full
  fix(reminder): prevent dismissed reminders from reappearing
  fix(task-repeat): prevent race condition when saving repeat config
  fix(android): add error handling for native service calls
  fix(reminder): cancel native Android reminders immediately on task deletion
  fix(error-handler): use getErrorTxt to prevent [object Object] in error titles
  fix(planner): use task startDate for weekly repeat weekday calculation
  fix(focus-mode): use independent 1s timer for Pomodoro countdown
  feat(focus-mode): add Skip Break button to banner during active breaks
  feat(notes): add auto-save to fullscreen markdown editor
  fix(reflection-note): prevent trailing spaces from being deleted while typing
  fix(sync): add error handling for JSON parse failures in sync data
  fix(error-handling): prevent [object Object] from appearing in error messages
  ...

# Conflicts:
#	src/app/core/persistence/database.service.ts
#	src/app/features/android/store/android-focus-mode.effects.ts
#	src/app/features/android/store/android-foreground-tracking.effects.ts
#	src/app/features/reminder/reminder.service.spec.ts
#	src/app/features/reminder/reminder.service.ts
#	src/app/features/tasks/dialog-view-task-reminders/dialog-view-task-reminders.component.ts
#	src/app/features/tasks/store/task-reminder.effects.spec.ts
#	src/app/features/tasks/store/task-reminder.effects.ts
#	src/app/features/work-context/store/work-context.effects.spec.ts
#	src/app/features/work-context/store/work-context.effects.ts
#	src/app/t.const.ts
#	src/assets/i18n/en.json
2026-01-02 19:56:30 +01:00
Johannes Millan
092d32a39e 16.8.0 2026-01-02 19:26:41 +01:00
Johannes Millan
9c0a728ef4 feat(sync-server): replace password auth with passkey + magic link
Authentication changes:
- Add passkey (WebAuthn) as primary login method
- Add email magic link as fallback for devices without passkey support
- Remove password-based authentication entirely

New features:
- Passkey registration and login via @simplewebauthn/server
- Magic link login with 15-minute expiry tokens
- Passkey recovery via email link
- Self-hosted simplewebauthn-browser.min.js for reliability

Database changes:
- Add Passkey model for WebAuthn credentials
- Add PasskeyChallenge model for registration/auth challenges
- Add loginToken and loginTokenExpiresAt fields for magic links
- Add passkeyRecoveryToken fields for passkey recovery

UI changes:
- Login form: email + "Login with Passkey" + "Send Login Link"
- Register form: email + terms checkbox + "Register with Passkey"
- Consistent token display UI for both passkey and magic link login
- Remove password fields and forgot password flow

Security:
- CSP-compliant magic link redirect using external script
- Rate limiting on all auth endpoints
- Single-use magic link tokens
2026-01-02 16:52:48 +01:00
dependabot[bot]
4738955b04
chore(deps-dev): bump @typescript-eslint/utils from 8.41.0 to 8.51.0
Bumps [@typescript-eslint/utils](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/utils) from 8.41.0 to 8.51.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/utils/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.51.0/packages/utils)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/utils"
  dependency-version: 8.51.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-01 13:01:10 +00:00
Johannes Millan
ac43881d2d build: update types 2025-12-31 12:45:42 +01:00
Johannes Millan
d7cc365885 build: update package-lock.json 2025-12-31 11:35:59 +01:00
Johannes Millan
c7d37ab773 Merge branch 'refs/heads/master' into feat/operation-logs
* refs/heads/master:
  perf: lazy load ical.js to reduce initial bundle size
2025-12-30 20:24:46 +01:00
Johannes Millan
1cb1e1c742 perf: lazy load ical.js to reduce initial bundle size
Move ical.js (~76KB) to a lazy-loaded chunk via dynamic import.
The library is only loaded when calendar integration features are used.

- Create ical-lazy-loader.ts for on-demand loading
- Make getRelevantEventsForCalendarIntegrationFromIcal async
- Update calendar-integration.service.ts to use switchMap
2025-12-30 20:20:07 +01:00
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
b2332c4fb6 fix(security): update axios and brace-expansion dependencies
Run npm audit fix to address:
- axios DoS vulnerability (GHSA-4hjh-wcwx-xvwj)
- brace-expansion ReDoS vulnerability (GHSA-v6h2-p8h4-qcjw)
2025-12-23 14:10:54 +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
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
ebb4af3d73 build: add resolved URL and integrity for ical.js version 2.1.0 2025-12-14 12:29:19 +01:00
Johannes Millan
240581d046 post merge fix 2025-12-12 20:50:30 +01:00
Johannes Millan
180c5d70cc feat(syncServer): first draft 2025-12-12 20:46:04 +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
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
881680c183 test(focusMode): update mock store initial state and refresh state in tests 2025-12-04 12:34:38 +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
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