Commit Graph

424 Commits

Author SHA1 Message Date
806061bf47 fix: move someday resize handle to top border and improve visibility
Handle now appears above the someday section as a visible bar with
background color. Dragging up increases height (inverted for top handle).
Handle styling improved with hover/active states for better discoverability.

v1.39.3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 02:49:27 +01:00
87c7211655 fix: move resize handles outside scrollable sections
Resize handles for all-day and someday areas were inside the
overflow:auto section, making them scroll away. Now placed
outside the section so they always sit at the bottom border.

v1.39.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 01:37:39 +01:00
71486f0d43 fix: rolling tasks not moving to today due to profile load race condition
Rolling ran inside fetchTasks before profile.autoRolling was loaded,
so it always saw false and skipped. Now runs as a dedicated effect
that waits for both profile and tasks to be ready.

v1.39.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 01:08:15 +01:00
eebc8eb9b6 feat: drag-to-provider sync, recurring task editing, resizable areas, search improvements
- Sync tasks to external provider when dragged to a synced Someday list (Google/Outlook/Synology)
- Add Synology support to POST /api/tasks/sync endpoint
- Edit recurring task series (title, interval, unit, time) all at once via new API
- Make Someday and all-day areas vertically resizable with drag handles (height persisted in cookies)
- Include Someday tasks in search results with list name display
- Instant calendar event appearance after creation (improved optimistic update + immediate cache refresh)
- Fix project color not updating on tasks when project color changes
- Add database backup script for Supabase LXC

v1.39.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 00:50:42 +01:00
43169c0bfc feat: add mobile font scale setting
New setting in Settings > Styling that scales all fonts on mobile
devices (75% / 85% / 100% / 115% / 130%). Applies to day names,
dates, tasks, events, and the mobile header date. Also scales the
CW/date display in the mobile header via scaleRem().

New DB field: mobileFontScale (Float, default 1.0)

v1.38.0
2026-03-16 22:42:09 +01:00
2ad55fe1bd fix: restore sticky weekday headers on mobile
The global overflow-y:visible rule for time-grid-on was overriding
the mobile overflow-y:auto on .weekly-days-grid, which broke
position:sticky on day headers. Wrap desktop overflow rules in a
min-width media query and keep mobile scroll container intact.

v1.37.4
2026-03-16 22:35:37 +01:00
0fa2893e10 fix: prune deleted Synology calendars from stored list
When fetching events, refresh the calendar list from the Synology
server and remove any stored calendars that no longer exist. This
stops repeated "Calendar unavailable" errors from deleted calendars.

v1.37.3
2026-03-16 22:28:28 +01:00
a32e5601d0 fix: push scheduler handles all-day events and adds debug logging
- Query both timed (startDateTime) and all-day (startDate) events
- All-day events treated as starting at 07:00 UTC (~09:00 CET)
- Log number of events found per user for debugging
- Skip already-passed events to avoid unnecessary checks

v1.37.2
2026-03-16 22:22:58 +01:00
c28fa71e4d fix: settings sidebar text color on mobile and blue theme bar
- Use var(--weekly-bg) and var(--weekly-text) for sidebar background
  and text color so it matches the calendar in both light/dark mode
- Add explicit label color rules for settings sidebar
- Change manifest theme_color from blue (#0ea5e9) to white
- Add responsive themeColor meta tags for light/dark preference

v1.37.1
2026-03-16 21:59:34 +01:00
f9c7893341 feat: add push notifications for calendar event reminders
- Service worker + Web Push API for browser/mobile notifications
- PWA manifest with icons for home screen install (iOS 16.4+)
- Push subscription management (subscribe/unsubscribe API routes)
- Notification toggle in Settings > General
- Push scheduler script (cron) checks cached events and sends
  notifications at reminder times, with dedup tracking
- Test notification endpoint at /api/push/test
- Persists reminders in calendar event cache for scheduler access
- New DB models: PushSubscription, SentNotification
- New user field: notificationsEnabled

Setup: generate VAPID keys with `npx tsx scripts/generate-vapid-keys.ts`
and add to .env, then run scheduler via cron every minute.

v1.37.0
2026-03-16 21:38:15 +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
c21fd0bd88 Fix WeeklyView TS errors and Time Grid alignment 2026-03-15 11:21:07 +01:00
376d0efdc2 fix: settings sidebar single-scroll on mobile
Switch sidebar from flex column layout to block on mobile so the
quick actions, tabs, and settings content all flow in one scrollable
container instead of the content being trapped in a tiny flex:1 area.

v1.35.3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 10:02:42 +01:00
658042c8b3 fix: double date picker on mobile, sidebar scroll, 2-column grid
- Prevent desktop SimpleDatePicker from rendering on mobile (was
  showing two date pickers simultaneously)
- Add overflow-y: auto to settings sidebar at 768px breakpoint so
  the quick actions panel and content are scrollable on all mobile
- Add cols-2 CSS rules for weekly-days-grid and all-day-events-grid
  so the 2-day view spreads columns correctly

v1.35.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 09:57:36 +01:00
914b1d76b2 fix: prevent swipe navigation when scrolling someday area
Ignore horizontal swipe gestures that originate inside the .weekly-someday
element so that horizontal scrolling of someday lists works without
triggering day navigation on mobile.

v1.35.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 09:53:54 +01:00
e663f82c26 feat: add 2-day view, scrollable mobile settings, fix someday on mobile
- Add 2-column option to view days selector (1,2,3,5,7)
- Make settings sidebar scrollable on mobile (overflow-y: auto)
- Fix someday section not visible on mobile by removing maxHeight
  constraint from time-grid-wrapper on mobile devices, allowing
  natural page scrolling to reach the someday area below

v1.35.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 09:48:40 +01:00
fff67cb4af fix: tighten date-weekday gap in above/below layout
Set flex gap to 0px for column layouts (above/below) so the date sits
closer to the weekday. Remove default margin-bottom from .weekly-day-date
CSS to prevent extra spacing.

v1.34.5

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 09:27:29 +01:00
6409dd8908 fix: date vertical offset scales with headline font size
Compute vertical offset relative to the weekday headline font size
instead of the date's own small font. Top shifts up 55%, center 25%,
bottom stays at baseline — giving visible, proportional alignment.

v1.34.4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 09:13:35 +01:00
d6009ef7b2 fix: date vertical alignment uses baseline with relative offsets
Use baseline alignment as anchor so the date positions relative to the
weekday text, not the container. Apply small em-based offsets for
top/center/bottom to fine-tune positioning without overshooting.

v1.34.3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 09:04:53 +01:00
a66f2c0bb4 fix: use baseline alignment for date vertical "bottom" option
Change "bottom" date vertical alignment from flex-end to baseline so
the date aligns to the weekday text baseline instead of the container
edge, giving a more natural and subtle positioning.

v1.34.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 09:00:36 +01:00
e9a4a0b216 fix: date vertical alignment in day header
Remove default h3 margins from .weekly-day-name and clear margin-bottom
on .weekly-day-date when in horizontal (left/right) layout so that
flexbox alignItems (top/center/bottom) works correctly.

v1.34.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 08:55:48 +01:00
d28a02c5b5 feat: optimize mobile UX with simplified header and quick actions
Replace crowded 7-element mobile header with clean 3-element layout:
hamburger menu (left), tappable date display (center), search (right).
All touch targets are 44px+ per Apple HIG.

Move navigation, quick actions, view controls, and utilities into a
new mobile quick actions panel at the top of the settings sidebar.
Add safe area insets for notch and home indicator on iOS devices.

v1.34.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 23:39:17 +01:00
de483ed64e fix: apply CW font settings to mobile header
Mobile header now uses Calendar Week (KW) font family, size, weight,
and color settings instead of hardcoded styles. Year span also uses
separate Year font settings in KW mode.

v1.33.8

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 21:51:12 +01:00
b5599b6625 fix: add 16px right margin to side-nav-right to clear scrollbar
v1.33.7

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 20:42:03 +01:00
892d729e53 fix: side-nav-right visibility and mobile text input color
Move right navigation arrows outside scrollable time-grid-wrapper so
they remain visible on hover. Add explicit -webkit-text-fill-color for
all inputs/textareas to fix invisible text on iOS Safari.

v1.33.6

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 19:56:22 +01:00
0f214040ff fix: scroll to startHour on load and fix time label visibility
- Add timeGridWrapperRef to scroll the correct container (wrapper has
  overflow-y: scroll, inner elements have overflow: visible)
- Scroll wrapper to startHour offset on load and when startHour changes
- Time labels use translateY(-0.4em) so first/last hours aren't clipped
  by the sticky header or container edge
- jumpToHour also targets the wrapper ref

v1.33.5

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 19:04:31 +01:00
8b68c50445 fix: visible hours setting now constrains the time grid viewport
Time-grid-wrapper max-height is set based on (endHour - startHour) so
only the selected time range is visible. Users can still scroll to see
hours outside the range. Tasks remain in their correct timeslots.

v1.33.4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 18:53:37 +01:00
ee2f7bfb69 fix: tasks stay in correct timeslot when changing visible hours
- GridTaskBlock now positions tasks from hour 0, not from workingHoursStart
- Changing start/end hour only scrolls the view, doesn't shift task positions
- Calendar events and tasks now align on the same time slots

v1.33.3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 18:46:34 +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
58de23a18f Convert header display settings to dropdown (v1.33.1) 2026-03-13 15:53:16 +01:00
b827f39722 Implement custom header formatting (v1.33.0) 2026-03-13 15:18:32 +01:00
889282381f Bump version to 1.32.0 2026-03-13 15:10:47 +01:00
07ffc9136e Add Month & Year and Full Date header display options 2026-03-13 15:10:40 +01:00
259bb1dd34 Bump version to 1.31.5 2026-03-13 14:33:20 +01:00
a6acc64ab8 Optimize build process and fix dynamic route collection errors 2026-03-13 14:33:14 +01:00
b244755163 Fix build collector errors and bump to 1.31.3 2026-03-13 14:23:08 +01:00
1d1486b113 Bump version to 1.31.2 2026-03-13 14:04:35 +01:00
ef22fb5046 Fix linting errors and Synology rootUrl issue 2026-03-13 13:40:39 +01:00
4b0b23c024 Fix potential LXC MODULE_NOT_FOUND by pinning next/prisma and cleanup 2026-03-13 12:42:24 +01:00
340e54672b Bump version to 1.31.1 2026-03-13 12:31:03 +01:00
9e32440f15 Merge branch 'dev' into main 2026-03-13 12:11:37 +01:00
2819068d4d Fix all-day event shifts and header UI overlap 2026-03-13 12:11:12 +01:00
22d2a8440f fix: make header toggle instant and fix calendar event width 2026-03-12 09:04:49 +01:00
8c3540bdd5 chore: prepare for merge to main 2026-03-12 07:47:10 +01:00
329f082ecf feat: view switcher improvements, header month option, kanban date/time, mobile fixes
- Swap simple/calendar icons in header view switcher
- Add calendar view button to header view switcher
- Reorder header: view switcher first, then days, hours, slot duration
- Add header display setting: calendar week (KW) or month name
- Show kanban stage color border on GridTaskBlock (week/simple views)
- Show date, weekday, and time on kanban cards
- Remove task swipe gestures on mobile (use container swipe for day nav)
- Fix mobile landscape 3-day grid overflow
- Add headerDisplay to schema, API, and settings UI

v1.30.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 20:22:32 +01:00
8703239f0f feat: fix kanban drag persistence, add view switcher and kanban filters
Fix stale closure in updateTaskFields causing tasks to disappear after
dragging between kanban columns. Add view switcher icons (Week/List/Kanban)
in the header on hover. Add search bar and filter dropdowns (project,
someday list, week) to the kanban board. Include someday list tasks in
kanban view.

v1.29.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:12:55 +01:00
af2de09f6b feat: add Kanban board view with customizable stages
- New "Kanban" view style alongside Simple, Calendar, and List
- Drag tasks between columns to change their stage
- Customizable stages with colors in Settings > View Style
- Stage colors appear as left border indicators on tasks in weekly view
- Default stages: Backlog, To Do, In Progress, Review, Done
- Stages persist in database (User.kanbanStages as JSON)
- Task stage persists in database (Task.kanbanStage)
- Full i18n support (EN, DE, FR, ES, IT)
- Unassigned tasks shown in separate column

v1.28.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:15:11 +01:00
7b02e648ab fix: clearer "No tab" option to remove list from tab group
Replace cryptic "—" with translated "No tab" label in the tab assign
dropdown (EN, DE, FR, ES, IT). Selecting it unassigns the list from
its current tab.

v1.27.3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:01:15 +01:00
79e4a5b287 fix: tab creation now works, use FolderPlus icon for tab assign
New tabs created via FolderPlus button are stored in localStorage as
custom tabs and merged with list-derived tabs. Dissolve and rename
also update custom tabs. Changed tab assign icon in list headers from
Tag to FolderPlus for consistency.

v1.27.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:58:55 +01:00