Commit Graph

28 Commits

Author SHA1 Message Date
e7eb060643 feat: add location autocomplete and custom reminder times to event modal
- Location field shows dropdown suggestions from previously saved locations
  as the user types; selected/submitted locations are persisted to
  profile.viewSettings.savedLocations (max 20, most recent first)
- Reminder dropdown gains a "Custom…" option that opens an inline editor
  for entering X minutes / hours / days before the event; confirmed custom
  values are persisted to profile.viewSettings.customReminderMinutes
  (max 10) and appear in future reminder dropdowns

v1.112.0
2026-05-29 11:53:03 +02:00
42905641cd feat: bidirectional Outlook/MS To-Do sync, busyStatus + star, list-delete dialog
- Outlook recurring delete: also delete the specific instance after the master
  to clean up orphaned first occurrences.
- CachedCalendarEvent gains busyStatus column (migration applied) so showAs
  changes from Outlook flow back into the weekly view.
- Outlook create/update now round-trip the full event (busyStatus, visibility,
  attendees, reminders, recurrence link) via a shared response mapper.
- MS To-Do importance ('high' star) ⇄ local importance flag in pull-sync,
  push-sync, initial import, and local-task POST/PATCH; dueDateTime ⇄
  scheduledDate added to pull-sync.
- Local task PATCH now fires a best-effort push to Outlook/Google/Synology so
  any field change keeps both sides aligned.
- AnyDay list delete dialog now offers Cancel / hide locally / delete on both
  sides; new deleteMsTodoList + deleteGoogleTaskList helpers.

v1.103.0

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-03 19:53:09 +02:00
8ffb6a0690 feat: accessibility follow-up — heading hierarchy, keyboard resize, contrast fix
- Fix heading hierarchy: modal titles h3→h2 (RecurrenceModal, two WeeklyView dialogs),
  SettingsSidebar h4→h3 for Localisation, Data Export, Backup & Restore sections
- Add keyboard resize handle: role=slider, tabIndex, aria-valuemin/max/now/text,
  ArrowUp/Down keys to adjust task duration in 15-min increments
- Add aria-label to CalendarEventModal notes textarea fallback
- Color contrast: raise --weekly-text-light from #a6a6a7 (~2.4:1) to #767676 (~4.5:1)
  on white background to meet WCAG AA

v1.86.0
2026-04-06 00:25:08 +02:00
5c01869444 feat: comprehensive accessibility pass — ARIA, focus traps, keyboard move, live regions
- Modals (SearchModal, ImportListModal, CalendarEventModal): role=dialog,
  aria-modal, aria-label, focus trap via keydown Tab handler, aria-hidden on backdrop
- OnboardingWizard: role=dialog on card, aria-hidden on overlay, aria-current=step
  on progress dots wrapped in <nav><ol>, aria-label on nav buttons
- GridTaskBlock: aria-label on all ~12 action buttons (complete, edit, add subtask,
  notes, rolling, recurrence, project, link, delete, move), aria-expanded/aria-pressed
  where applicable, aria-hidden on all decorative SVGs, aria-label on inline edit
  textarea and subtask inputs; note indicator div → button
- Keyboard task move: new "Move Task" dialog in GridTaskBlock with date+time
  inputs, routed via onMoveTask prop → moveTaskToSlot in WeeklyView
- WeeklyView: visually-hidden aria-live="polite" region with announce() helper;
  announces task add, complete/incomplete, delete, sync complete/failed
- Forms: aria-invalid + aria-describedby + role=alert on error paragraphs in
  TaskForm; auth error div gets id + role=alert; email input gets aria-describedby;
  show/hide password button gets aria-label + aria-pressed
- Spinners: role=status + aria-label on standalone spinners (TaskItem delete,
  WeeklyView sync); aria-hidden on inline button spinners (AuthForm, TaskForm,
  CalendarSettings, SettingsSidebar, EmailAuthForm)
- layout.tsx: Open Graph and Twitter Card meta tags added

v1.85.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 18:18:08 +02:00
bb34e083d5 fix: make CalendarEventModal more compact for small smartphone screens
- Modal uses flexbox column layout: scrollable body + pinned action bar
- maxHeight raised to 96vh, width uses calc(100vw - 12px)
- iconRow: gap 10→8px, padding 6→3px, minHeight 28→24px
- iconCol: width 20→18px
- inlineSelect: fontSize 0.8→0.78rem, padding 2→1px
- Title: fontSize 1.1→1rem, padding 4→3px
- Date inputs: padding 4→3px, fontSize 0.8→0.78rem, smaller labels
- Notes: minHeight 50→36px, padding tightened
- Action buttons: padding and font slightly reduced
- All section paddings reduced from 16px to 14px

v1.81.2
2026-03-31 09:59:56 +02:00
51301bc497 fix: redesign recurring delete as overlay with loading indicator
Replace inline delete buttons (Dieses/Künftige/Alle) with a proper
overlay dialog matching the recurring edit overlay style. Shows animated
dots on the active delete option while processing. Other options dim
during deletion.

v1.75.7

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 12:09:20 +01:00
b6d39910e5 fix: animated dots on save button while creating events
Dots pulse sequentially (. . .) to give clear visual feedback
that the operation is still in progress.

v1.74.4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 12:43:33 +01:00
2f973bf8af fix: show provider icon on all events, better save button feedback
- Always show provider icon (Google/Apple/Outlook/Synology) at
  bottom-right of event blocks using FontAwesome icons
- Save button shows "Erstelle..." / "Creating..." while saving
  instead of just "..." to reduce user confusion during sync

v1.74.3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 12:31:36 +01:00
8d8ba73d17 fix: provider icon in event modal, hide synology URL, recurring event display
- Show provider icon (Google/Apple/Outlook/Synology) left of calendar color dot
- Hide URL field when Synology calendar is selected (not supported)
- Force refresh after creating recurring events so all instances show immediately
  (previously only the first occurrence appeared until next sync cycle)

v1.74.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 11:42:26 +01:00
cfa4fb023c feat: redesign calendar event modal for mobile
Compact, icon-driven layout inspired by Google Calendar:
- Icon-row layout with left-aligned icons for each field
- Color accent bar and save button match selected calendar color
- Toggle switch for all-day instead of checkbox
- Compact From/To time inputs
- Tighter spacing throughout, smaller font sizes
- German translations for all labels
- Footer bar with subtle background
- Shorter delete buttons for recurring events (This/Future/All)

v1.74.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 11:27:06 +01:00
08959c6ddb feat: drag-to-create calendar events, fix rolling tasks, fix Outlook recurring
- Drag on empty time slots to create calendar events with pre-filled time range
- Rolling tasks now work per-task without requiring global autoRolling setting
- Add firstDayOfWeek to Outlook weekly recurrence patterns
- Add debug logging for Outlook recurrence creation

v1.72.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 01:56:16 +01:00
948d239867 feat: redesign recurring edit dialogs with Google Calendar style and i18n
- Redesigned drag/resize and modal recurring edit dialogs with radio buttons
  (This event / This and following / All events) with descriptions
- Added German/English i18n to both recurring edit dialogs
- Repeat-on day buttons now respect weekStartDay setting (Mon/Sun start)
- Added language prop to CalendarEventModal

v1.70.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 16:40:33 +01:00
74a8c9a9a9 feat: recurring event edit confirmation (this event / all events)
When editing a recurring calendar event (via modal or drag/resize),
the user is now asked whether changes apply to just this instance or
all events in the series.

- Modal: Save button shows "This event" / "All events" options for
  recurring events
- Drag/resize: centered overlay prompt with same options + cancel
- API PATCH: editMode=all routes update to the series master ID
  (recurringEventId) instead of the instance ID
- Cancel on drag prompt reverts to original position

v1.69.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 12:41:21 +01:00
6584b9c266 feat: add 'This & past' recurring event delete option
Adds a fourth delete option for recurring events: delete this instance
and all past occurrences. For CalDAV (Apple/Synology), this moves
DTSTART forward to the next occurrence. Includes optimistic UI removal.

v1.63.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 00:40:48 +01:00
57eeb3d8e8 feat: recurring event delete options (this/future/all instances)
When deleting a recurring calendar event, users now choose between
deleting just this instance, this and future instances, or all instances.
Supports Google, Apple (iCloud), and Synology CalDAV providers.

v1.62.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 22:06:23 +01:00
1011aef639 fix: recurring event DST time shift and block height overflow
- Use TZID-based local time (instead of UTC 'Z') for DTSTART/DTEND
  when creating recurring CalDAV events, preventing DST-related time
  shifts (e.g. 13:40 CET showing as 14:40 CEST after clock change)
- Send browser timezone from CalendarEventModal to server
- Guard against NaN event duration (missing/invalid endTime) which
  caused event blocks to stretch to end of day

v1.61.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 21:23:24 +01:00
c5dc315f82 feat: sync calendar colors from all providers and add custom recurrence
- Store calendar colors (backgroundColor) from Apple and Synology
  during connection setup
- Auto-refresh missing colors for existing Apple/Synology connections
- Show color dots next to calendar names in settings
- Add "Custom..." recurrence option with interval (every N days/weeks/
  months/years) and day-of-week selection for weekly recurrence
- Generate proper RRULE with INTERVAL and BYDAY for all providers
- Generate proper Outlook Graph recurrence with custom intervals

v1.61.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:35:22 +01:00
1ab98025a6 feat: add Outlook calendar colors and recurrence end date/count
- Fetch and display Outlook calendar colors from Microsoft Graph API
  instead of hardcoded blue
- Add recurrence end options to calendar event modal: Never, On Date
  (UNTIL), or After X occurrences (COUNT)
- Pass recurrence end parameters through to RRULE generation for all
  providers (Google, Apple, Synology, Outlook)

v1.60.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:14:13 +01:00
d991e7a65b style: make CalendarEventModal more compact for mobile
Reduce padding, gaps, font sizes, and combine Status/Visibility into
a single row for better usability on smaller screens.

v1.36.1
2026-03-16 17:04:25 +01:00
b9c05571be feat: add alerts, invitees, attachments, busy status, and visibility to calendar events
Support extended calendar event properties across all providers:
- Alerts/Reminders: VALARM for CalDAV, reminders API for Google, reminderMinutes for Outlook
- Invitees/Attendees: ATTENDEE for CalDAV, attendees API for Google/Outlook
- Attachments: ATTACH (URL-based) for CalDAV (Apple/Synology)
- Busy Status: TRANSP for CalDAV, transparency for Google, showAs for Outlook
- Visibility: CLASS for CalDAV, visibility for Google, sensitivity for Outlook

Updated CalendarEventModal with new UI fields including expandable
Invitees & Attachments section and reminder/status/visibility dropdowns.

v1.36.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:36:37 +01:00
ebfe911b81 fix: align time column header, calendar events, all-day events, and swap view icons
- Fix time-column-header height to dynamically match weekly-day-header
- Fix all-day events column alignment (width 50px → 55px to match time column)
- Fix calendar events overflowing weekday columns (remove negative left/right)
- Swap Simple/Calendar view icons in header switcher
- Uncomment headerCustomFormat in API select for instant toggle
- Add response error checking in updateTaskFields for kanban persistence
- Add font/view dependencies to header height ResizeObserver

v1.33.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 18:32:09 +01:00
499b012d82 fix: CSS class slide animation, mobile dot, flex task indicators 2026-03-06 12:09:13 +01:00
6574eeb65f feat: add backup/restore, task indicators, and multiple bug fixes
- Add JSON export/import for all tasks, anyday lists, and projects (Settings > Account > Backup & Restore)
- Add merge and replace import modes with confirmation for destructive replace
- Add resizable notes sidebar with drag handle on left edge
- Add subtask count indicator (indigo pill) on tasks that toggles subtask list
- Add note indicator (amber pill) on tasks that toggles inline notes
- Show Account ID in Settings > Account as read-only identifier
- Fix goal save bug: saved goals matching default text are no longer ignored
- Fix calendar week number using Monday within visible range instead of middle day
- Fix calendar events not appearing instantly by delaying sync refresh 3s
- Grey out URL field when creating events on Google/Outlook calendars

v1.12.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 15:39:37 +01:00
fcaadc1ce9 Refactor Someday area to grid layout with dynamic slots, fixed scrolling, and border refinements 2026-03-01 11:58:48 +01:00
f0672e5c68 feat: fix Docker deployment, OAuth redirects, event editing, and UI improvements
- Fix Docker build: resolve hooks-rules-of-hooks in GridTaskBlock, add Suspense
  boundary for useSearchParams, fix non-root user home dir and prisma binary path
- Add comprehensive DB migrations for missing columns/tables (WeeklyGoal,
  CachedCalendarEvent, User settings, SomedayList sync fields, Task subtasks)
- Fix Outlook OAuth redirect using NEXTAUTH_URL instead of request.url
- Fix CalendarEventModal preserving existing event dates (support flat format)
- Fix header z-index layering so goal text doesn't block hover controls
- Convert font size selects to free-form text inputs, add dayHeaderGap setting
- Add goal 2-line clamping with 500px max width
- Fix weekend colors not applying to date elements

v1.6.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:18:13 +01:00
368928c016 Reposition notes popup to floating vertical container and various integration fixes 2026-02-24 12:26:02 +01:00
8842123caf feat: improve calendar sync, event modal, and task list management
- Fix All Day checkbox positioning in CalendarEventModal (own row)
- Add provider name to calendar dropdown (Google/Apple/Outlook)
- Optimistic UI updates after event save/delete (no reload needed)
- Force-refresh calendar cache after event mutations
- Reduce background sync interval from 5min to 2min
- Support forceRefresh in background-sync API
- Use shared Prisma singleton in tasks sync route
- Add per-provider task list fetching and sync checkboxes
- Add allDay support to event creation and editing

v1.4.0
2026-02-24 11:01:15 +01:00
e9a0a706b7 Fix header layout, add day/night switch, refine night mode styling 2026-02-12 20:14:12 +01:00