Commit graph

366 commits

Author SHA1 Message Date
Chris
2444e36f47
Fix date format inconsistency in Task detail screen (#956)
* Fix date format inconsistency in Task detail screen (#938)

Replace browser-dependent toLocaleDateString() with explicit country-based
date formatting to ensure consistent date formats based on user's timezone.

Problem:
- User with English language + Greek timezone saw MM/DD/YYYY format
- Expected DD/MM/YYYY format based on timezone/country
- Browser's Intl.DateTimeFormat had incomplete locale support for
  combined locales like "en-GR"

Solution:
- Add country-to-format mapping in dateUtils.ts (60+ countries)
- New formatDateByCountry() for dates (DD/MM/YYYY, MM/DD/YYYY, YYYY/MM/DD)
- New formatDateTimeByCountry() for datetimes with 24h time
- Update TaskDueDateCard and TaskDeferUntilCard to use new functions
- Uses date-fns for consistent cross-browser formatting

Testing:
- Added 40 comprehensive test cases covering all format types
- Verified with Greece (DD/MM), US (MM/DD), Japan (YYYY/MM/DD)
- All tests passing

Fixes #938

* chore: remove unused import in dateUtils.ts
2026-03-21 18:47:33 +02:00
Chris
b63f684190
feat: Add MCP Integration with client-agnostic instructions (#953) 2026-03-20 16:55:49 +02:00
debode
024ef0a522
fix: use getAssetPath() for logo images in Navbar and Login (#946)
Both Navbar.tsx and Login.tsx hardcode absolute paths for the logo
images ('/wide-logo-light.png', '/wide-logo-dark.png'). This breaks
when tududi is served behind a reverse proxy with a subpath, such as
Home Assistant ingress.

The getAssetPath() helper from config/paths already handles base path
detection (including HA ingress auto-detection), and Login.tsx already
uses it for the login graphic. This commit applies the same pattern to
the logo images.

Changes:
- Navbar.tsx: add getAssetPath to import, use it for logo src
- Login.tsx: use getAssetPath for logo src (was already imported)
2026-03-18 15:26:25 +02:00
Chris
f1ea7843a7
Fix date format inconsistency in Defer Until field (#941)
Fixes #938

The Defer Until field was using i18n.language directly instead of
resolveUserLocale(), causing it to display dates in MM/DD/YYYY format
(US default) regardless of timezone setting.

Now uses the same locale resolution pattern as the Due Date field,
which combines language with timezone-derived country code (e.g.,
"en" + Greek timezone → "en-GR" → DD/MM/YYYY format).

Changes:
- Import useMemo and resolveUserLocale
- Add displayLocale memo to resolve timezone-aware locale
- Use displayLocale instead of i18n.language in toLocaleString()
2026-03-14 08:04:00 +02:00
Chris
23131d686a
Fix sidebar toggle causing unnecessary task list reload (#888) (#937)
Remove isSidebarOpen from the useEffect dependency array and from the
API request parameters in Tasks.tsx. The sidebar visibility state has no
bearing on which tasks should be fetched, so toggling it should not
trigger a data re-fetch.
2026-03-10 18:37:07 +02:00
Chris
1a1b70b5e7
Fix subtask completion not persisting to backend (#920) (#936)
The toggle handler required onSubtaskUpdate callback to make the API
call, but TaskSubtasksCard never provided it. Extract a shared handler
that calls toggleTaskCompletion for persisted subtasks regardless of
whether onSubtaskUpdate is provided, falling back to updating local
state via onSubtasksChange.
2026-03-10 17:30:45 +02:00
Chris
c33682bac0
Fix subtask completion not persisting when onSubtaskUpdate is not provided (#920) (#932)
When toggling subtask completion in TaskSubtasksSection, the toggle handler
required onSubtaskUpdate callback to make the API call. Components like
TaskSubtasksCard don't pass this callback, so toggling fell through to the
local-only state update path, never sending a network request.

Add an intermediate code path: when the subtask is persisted but
onSubtaskUpdate is not provided, call toggleTaskCompletion() directly
to persist the change, then update local state.

Fixes #920
2026-03-10 17:23:29 +02:00
Chris
a01dd9f41c
Fix subtask icons invisible on Today page (#839) (#935)
The SubtasksToggleButton was placed inside the same flex container as
the task name with truncate, causing it to be squeezed to zero width.
Wrap the task name in an inner flex container (matching the upcoming
view layout) so the button stays visible.
2026-03-10 17:15:06 +02:00
Chris
45ea578393
Fix tag view showing completed projects when Open filter is active (#933) (#934) 2026-03-10 17:07:45 +02:00
Chris
8fea7020bb
Fix: Show Projects with due dates in Upcoming view (#928)
* Add projects with due dates to upcoming view

Fetch and include projects with due_date_at in the upcoming range
when type=upcoming is requested. Projects are filtered by ownership
or permissions and exclude completed/archived projects.

Part of #925

* Display upcoming projects in Upcoming view

Add UI to show projects with due dates in the Upcoming view.
Projects are displayed in a separate section below tasks with
links to project details and formatted due dates.

Fixes #925

* Fix prettier formatting errors
2026-03-09 23:36:14 +02:00
Chris
358f577576
Fix note creation with project assignment (#927)
Transform project data in createNote to match updateNote behavior.
This ensures project_uid is properly extracted from nested project
object when creating notes with project associations.

Fixes #926
2026-03-09 23:14:44 +02:00
Chris
9f61bbbb21
Fix date format to respect timezone preference, not just language (#898) (#916)
Date fields in the task edit page used i18n.language (e.g. "en") to
determine date format, giving MM/DD for English even when the user's
timezone indicates a DD/MM region (e.g. Europe/Athens).

Enhance resolveUserLocale to derive the country from the user's
timezone and combine it with the language (e.g. "en" + "GR" = "en-GR")
so date formatting follows regional conventions.
2026-03-06 15:44:15 +02:00
Chris
3a1b4ca1b4
Load areas into store (#913) 2026-03-06 08:46:07 +02:00
Chris
aa686702e9
Fix defer date validation for recurring task instances (#910)
* Fix defer date validation for recurring task instances

* fixup! Fix defer date validation for recurring task instances
2026-03-05 08:20:30 +02:00
Chris
0bde44e460
Fix task name not being saved for new tasks (#905) 2026-03-04 18:13:37 +02:00
Chris
74d2027d17
Introduce focus mode in notes (#891) 2026-03-03 00:29:03 +02:00
Chris
b81abd9bfe
Fix abandoned 'New Task' persisting when navigating away without changes (#889) 2026-03-02 18:28:54 +02:00
Chris
a80e9b5aba
Fix redirect after task deletion to return to originating view (#887) 2026-03-01 16:07:02 +02:00
Chris
edc9d214f6
Fix recurring tasks losing name and subtasks on status change (#886) 2026-03-01 13:17:54 +02:00
Chris
96db8c1362
Fix 819 (#869)
* Fix projects order persist to localstorage

* Fix tags page not showing completed tasks
2026-02-27 01:07:08 +02:00
Chris
1167a3a940
Fix projects order persist to localstorage (#868) 2026-02-27 00:35:44 +02:00
Rylen Anil
c60f140944
Fix tag links by refreshing tags after creation (#843) 2026-02-27 00:34:10 +02:00
Chris
0146b87a4b
Fix status dropdown z-index behind subtasks in project view (#866) 2026-02-26 19:53:59 +02:00
Chris
6e3b1b4099
Fix tag validation error messages not shown to user (#861) 2026-02-24 14:49:49 +02:00
Chris
a0cd6db1a2
Fix Sunday selection in monthly weekday recurrence (#859) 2026-02-24 13:46:48 +02:00
Chris
9c3f0fe851
Fix new task in mobile (#857) 2026-02-24 13:03:38 +02:00
Chris
d127070f76
Auto focus on new task (#856)
* Auto focus on new task

* fixup! Auto focus on new task
2026-02-24 12:28:19 +02:00
Chris
2ce1c62c48
Fix right padding (#834) 2026-02-11 14:06:26 +02:00
Chris
8bc93247d7
Fix timezone missed rollout (#832) 2026-02-10 22:28:14 +02:00
Chris
d5d8b8f1a7
Fix date comparison bugs causing false past due warnings and Today view miscategorization (#826) 2026-02-07 22:40:33 +02:00
Chris
3ee54dbdc7
Fix an issue with breaking inbox input on long strings (#823) 2026-02-07 09:03:13 +02:00
Chris
f562101ca5
Fix subtasks dissapearing issue (#811) 2026-02-01 14:16:04 +02:00
Chris
2f13d0d4a7
Fix saving subtasks on edit (#806) 2026-01-31 08:29:44 +02:00
Chris
0d27d96467
Clear local storage on selection (#795) 2026-01-23 23:54:04 +02:00
Chris Veleris
bdc33d3113 Fix project links in productivity assistant 2026-01-23 23:25:08 +02:00
Chris
6922bc8916
Set stalled projects active without tasks (#793) 2026-01-23 23:06:35 +02:00
Chris
5dbf12be98
Fix task detail status change (#789) 2026-01-22 18:53:46 +02:00
Chris
1369fc4849
Fix issue with dropdown spilling over (#788) 2026-01-22 17:48:50 +02:00
Chris
8ceae37785
Fix missing spacing between lists and headings in markdown (#775) 2026-01-14 17:42:26 +02:00
Chris
438b08720c
Fix long timeout in bookmark note creation (#767) 2026-01-07 19:08:28 +02:00
Chris
b4de9c23eb
Fix recurrence occurences (#750) 2025-12-29 12:13:08 +02:00
Chris
703f6fe506
Add custom keyboard shortcuts (#749)
* Add custom keyboard shortcuts

* fixup! Add custom keyboard shortcuts
2025-12-28 21:58:21 +02:00
Chris
8c839199e1
Add completed date (#747) 2025-12-28 18:40:58 +02:00
Chris
e71f5caf33
Fix note edit delete buttons (#746) 2025-12-28 18:17:29 +02:00
Chris
3f37113a2c
Add tooltips (#744) 2025-12-28 12:03:50 +02:00
Chris
2c68643dce
Fix Today page sorting not updating after priority change (#743) 2025-12-28 11:03:54 +02:00
Chris
628c532a07
Fix midnight UTC default date (#742) 2025-12-28 10:33:42 +02:00
Chris
21b797c1ad
Fix tags order (#741) 2025-12-28 10:13:03 +02:00
Chris
d51fb021b1
Fix style in metrics (#740) 2025-12-28 08:50:08 +02:00
Chris
eee1bbc013
Fix bug 722 (#737)
* Fix project statuses

* Refactor project states

* Add translations
2025-12-28 07:51:15 +02:00