Commit graph

389 commits

Author SHA1 Message Date
Johannes Millan
df386a7a7e fix(electron): only pass tray GUID on Windows to prevent validation error
Electron validates the GUID argument even when undefined is passed,
causing "Invalid GUID format" error on Linux/macOS. Only pass the
GUID argument on Windows where it's needed.
2026-01-13 18:26:45 +01:00
Johannes Millan
9140f51a8d feat(electron): add static GUID to tray icon for Windows
Add a static GUID to the Electron Tray constructor on Windows to persist
tray icon position and visibility preferences across app updates. This
prevents the tray icon from being hidden in the overflow menu after
Microsoft Store updates change the executable path.

Closes #5973
2026-01-13 18:26:45 +01:00
Johannes Millan
ce91c8b1dc Merge branch 'master' into feat/operation-logs
Resolve merge conflicts:
- package.json: use @types/node@^22.19.5
- sync-form.const.ts: keep eslint-disable for naming convention
- global-config.effects.ts: remove extra blank line
- unlink-all-tasks-on-provider-deletion.effects.ts: keep deprecation notice
- auto-fix-typia-errors.ts: keep better-typed getValueByPath
- undo-task-delete.meta-reducer.spec.ts: keep getLastDeletePayload import
- Accept deletions for files refactored into operation-logs architecture
2026-01-10 17:08:09 +01:00
Johannes Millan
e6da7ced37 chore(deps): upgrade ESLint to v9 with flat config
- Upgrade eslint from v8 to v9.39.2
- Upgrade typescript-eslint to v8.52.0 (unified package)
- Add angular-eslint package for flat config support
- Migrate from .eslintrc.json to eslint.config.js (flat config)
- Update package configs for sync-md, automations, boilerplate-solid-js
- Remove unused eslint-disable directives
- Fix lint errors (empty interface, template eqeqeq)

BREAKING: Requires Node.js 18.18+ (ESLint 9 requirement)
2026-01-10 16:08:11 +01:00
Johannes Millan
6017da13c7 refactor: integrate pfapi into oplog 3 2026-01-07 14:10:05 +01:00
Johannes Millan
db990b7018 refactor: integrate pfapi into oplog 2 2026-01-07 13:37:05 +01:00
Johannes Millan
a42c8a4cee Merge branch 'master' into feat/operation-logs
* master:
  refactor(dialog): remove unused OnDestroy implementation from DialogAddNoteComponent
  fix(calendar): poll all calendar tasks and prevent auto-move of existing tasks
  docs: add info about how to translate stuff #5893
  refactor(calendar): replace deprecated toPromise with firstValueFrom
  build: update links to match our new organization
  add QuestArc to community plugins list
  feat(calendar): implement polling for calendar task updates and enhance data retrieval logic
  fix(heatmap): use app theme class instead of prefers-color-scheme
  fix(focus-mode): start break from banner when manual break start enabled
  feat(i18n): connect Finnish and Swedish translation files
  refactor(focus-mode): split sessionComplete$ and breakComplete$ into single-responsibility effects
  Fixing Plugin API doc on persistence

# Conflicts:
#	src/app/features/issue/store/poll-issue-updates.effects.ts
#	src/app/t.const.ts
2026-01-05 19:12:46 +01:00
Johannes Millan
1a79592aca build: update links to match our new organization 2026-01-05 14:45:06 +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
e571d6e3bc fix(error-handling): prevent [object Object] from appearing in error messages
Improve error text extraction utilities to never return "[object Object]"
when displaying error messages to users. The fix adds more robust fallback
mechanisms including:

- Check for message, name, statusText properties before calling toString()
- Detect "[object Object]" result and fallback to JSON.stringify()
- Provide meaningful fallback messages when all extraction methods fail

Fixes #5790
2026-01-02 15:40:14 +01:00
Johannes Millan
bb254dd07b Merge branch 'master' into feat/operation-logs
* master:
  fix(test): use dynamic date in year boundary test to avoid today collision
  fix(electron): reduce idle detection log verbosity
  fix(plugins): ensure setCounter creates valid SimpleCounter records
  feat(android): add quick add widget
  perf(android): prewarm WebView during idle time to speed up startup
  fix(ical): prevent race condition in lazy loader
  Merge branch 'master' into master

# Conflicts:
#	src/app/features/android/store/android.effects.ts
#	src/app/features/schedule/ical/get-relevant-events-from-ical.spec.ts
2025-12-31 14:20:58 +01:00
Johannes Millan
62d449a82f fix(electron): reduce idle detection log verbosity
Change frequent idle check logs from info to debug level to prevent
polluting system logs (e.g., /var/log/syslog) every 5 seconds.

Closes #5794
2025-12-31 13:42:18 +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
c4023b4f45 fix(security): address CodeQL security alerts
- Fix incomplete HTML sanitization in errors.ts (alerts #50-52)
  Apply regex repeatedly to handle nested inputs like <scri<script>pt>
- Add lgtm comment for intentional cert bypass in jira.ts (alert #40)
- Fix incomplete string escaping in load-env.js (alert #39)
  Escape backslashes before quotes
- Fix shell command injection in check-file.js (alerts #37-38)
  Use execFileSync with args array instead of string interpolation
2025-12-23 13:42:57 +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
18a0e78f12 fix(sync): show context-aware permission error for Flatpak/Snap
Add isFlatpak() detection to Electron API and show environment-specific
error messages when file permission errors occur during sync:
- Flatpak users see Flatseal and ~/.var/app/ guidance
- Snap users see 'snap connect' and ~/snap/... guidance
- Other users see generic permission error

Addresses #4078
2025-12-22 15:11:50 +01:00
Johannes Millan
ab0371fac6 fix(e2e): improve supersync test stability and build compatibility
E2E test improvements:
- Increase timeouts for sync button and add task bar visibility checks
- Add retry logic for sync button wait in setupSuperSync
- Handle dialog close race conditions in save button click
- Fix simple counter test to work with collapsible sections and inline forms

Build fixes:
- Add es2022 lib/target and baseUrl to electron tsconfig
- Include window-ea.d.ts for proper type resolution
- Add @ts-ignore for import.meta.url in reminder service for Electron build
2025-12-19 09:59:44 +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
52fd0dfc75 fix(electron): use includes() instead of in operator for hostname check
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.
2025-12-15 10:02:13 +01:00
Johannes Millan
7ff7a8bbf2 fix: resolve build errors and add missing electron IPC
- Replace deprecated reminderId with remindAt in templates
- Add fileSyncListFiles to electron preload
- Fix Typia type narrowing in validate-state.service
- Fix jasmine matcher type in hydrator spec
2025-12-12 20:47:48 +01:00
Johannes Millan
1e826698aa fix: linting and compilation errors after file system IPC changes 2025-12-12 20:46:05 +01:00
Johannes Millan
a3d65e021c fix(electron): improve window controls overlay for Windows/Linux (#5713)
- Use CSS env(titlebar-area-width) for dynamic DPI-aware spacing
- Increase fallback width from 96px to 140px to prevent button overlap
- Add theme-aware semi-transparent background to window controls
2025-12-12 19:00:12 +01:00
johannesjo
eefbc7135a fix(electron): sync title bar button colors with app theme
Update window control buttons (minimize, maximize, close) to match
the app's dark/light theme setting instead of always using white.

Fixes #5676
2025-12-07 09:52:20 +01:00
Johannes Millan
152939a866 fix(electron): remove forced X11 mode on Linux
Remove the code that forced X11 mode on Linux via --ozone-platform=x11.
This was causing the snap package to crash on Wayland systems due to
GPU driver mismatches between the bundled Mesa drivers and host system.

The IdleTimeHandler already has proper fallbacks for Wayland environments
(gnomeDBus, xprintidle, loginctl), so forcing X11 is not necessary.

Closes #5663
2025-12-06 11:54:41 +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
e19d3fb593 fix(electron): minimize to tray not working immediately after enabling
Closes #5622

The 'Minimize to tray' setting was not updating the main process shared state when changed in the settings, requiring an app restart to take effect. This was because the 'UPDATE_SETTINGS' IPC event (sent on change) was not updating the 'isMinimizeToTray' flag. This commit ensures that 'UPDATE_SETTINGS' updates the relevant shared state.
2025-12-04 11:50:27 +01:00
Johannes Millan
c5625de6f1 feat(customWindowTitleBar): add sexy custom window title bar <3 2025-12-02 13:30:36 +01:00
Johannes Millan
5bd59e2760 Merge remote-tracking branch 'origin/master'
* origin/master:
  feat(i18n): add export task list string to localization files
  feat(ipc): improve error handling and streamline IPC initialization
  feat(startup): refactor startup logic and move initialization to StartupService
  feat(ipc): implement IPC handlers for app control, data, exec, global shortcuts, system, and Jira
  feat: add placeholder text support to daily summary and inline markdown components
  feat: don't install api test plugin
  chore(deps): bump the npm_and_yarn group across 4 directories with 1 update

# Conflicts:
#	electron/ipc-handler.ts
#	src/app/app.component.ts
2025-11-28 20:28:46 +01:00
Johannes Millan
f9c4629c49 Fix: Resolve build errors for Electron
- Add missing import for  in .
- Update regex in  to be compatible with older TS targets (before ES2018) by replacing  flag with .
2025-11-28 20:04:26 +01:00
Johannes Millan
e212f9a9ba fix: refactor tray handling to use shared state for task and countdown visibility 2025-11-28 18:53:00 +01:00
Johannes Millan
f13ad58e9d fix: minimize to tray not restoring #5581
# Conflicts:
#	electron/ipc-handler.ts
2025-11-28 18:51:15 +01:00
Johannes Millan
f704eebc7e feat(ipc): improve error handling and streamline IPC initialization 2025-11-27 15:06:26 +01:00
Johannes Millan
653ae62dbf feat(ipc): implement IPC handlers for app control, data, exec, global shortcuts, system, and Jira 2025-11-27 13:44:18 +01:00
Johannes Millan
68f3b787d0 fix: handle special characters in IPC errors and skip translation 2025-11-21 12:22:11 +01:00
Johannes Millan
67337684e6 feat: change window title for dev 2025-11-21 11:47:25 +01:00
Johannes Millan
c0453bc708 build: change window title for dev 2025-11-21 11:47:25 +01:00
Devin A. Conley
10e76b32c4 force select folder 2025-11-16 14:51:22 -08:00
sambhram1
a2bbda6d1a 'Fix: Remove trailing slashes from --user-data-dir CLI option path' 2025-10-24 17:52:19 +05:30
Johannes Millan
6350a7249f fix: app not closing on MacOS
Closes #5327
2025-10-23 15:12:12 +02:00
Johannes Millan
c58e269678 feat(share): remove electron share again 2025-10-22 16:05:29 +02:00
Johannes Millan
459b189e26 feat(share): add native share 2025-10-22 15:54:06 +02:00
Johannes Millan
9574dd4f19 feat(share): outline multi platform share functionality 2025-10-22 15:35:24 +02:00
Johannes Millan
911e82bea5 fix: spell checker phoning home #5314 2025-10-19 11:01:20 +02:00
Johannes Millan
3fc7c134f9 feat(electron): further improve on idle handling 2 2025-10-15 15:27:27 +02:00
Johannes Millan
e96e205de0 feat(electron): further improve on idle handling 2025-10-15 15:08:49 +02:00
Johannes Millan
6d38cb1a2e feat(electron): stop idle handling if there is no working method 2025-10-15 14:54:38 +02:00
Johannes Millan
45da016258 refactor(electron): improve idle handling 2025-10-15 14:48:06 +02:00
Johannes Millan
051bb5dd90 refactor(electron): check for best idle method only once 2025-10-15 14:38:58 +02:00
Johannes Millan
08def803e7 feat(electron): improve idle handling for snap 2025-10-15 12:32:00 +02:00
Johannes Millan
a2f723bedd feat: enable hardware acceleration again 2025-10-14 19:10:54 +02:00