Commit Graph

85 Commits

Author SHA1 Message Date
3ea57fb8b4 UI: remove duplicate icons in Someday lists, left-align task actions, and fix mobile overlay. Version 1.15.1 2026-03-07 23:00:47 +01:00
9cde2e4de2 feat: provider logos on synced tasks, someday list drag & drop fix, hide recurrence for someday
- Show provider-specific icons (Google, Microsoft, Apple, Synology) before and after synced task titles
- Fix someday list reorder drag & drop: stable index calculation with drop indicator line
- Prevent dropping someday lists onto day slots (shows not-allowed cursor)
- Hide recurring button for someday tasks
- Fix Google Tasks subtask duplicates by filtering out child tasks from top-level list

v1.15.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 21:20:27 +01:00
3d75d7b39b feat: subtask indicators, drag & drop fixes, font layout, someday scroll & Google Tasks sync
- Move subtask indicator badge outside text span for visibility
- Prevent parent task from hijacking subtask drag events
- Restructure font settings to 2-row layout (font dropdown + size/weight)
- Fix someday horizontal scroll with callback ref wheel handler
- Sync new tasks in Google-linked someday lists to Google Tasks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

v1.14.0
2026-03-07 19:06:19 +01:00
2777601031 chore: change development port to 3000
v1.13.1
2026-03-07 17:39:26 +01:00
d41bc25fb0 fix: always apply completed class for strikethrough and improve checkbox styling for Safari mobile 2026-03-06 15:30:15 +01:00
6fbbbdfdae fix: escape unescaped quote in RichTextEditor blockquote button (build error) 2026-03-06 12:31:06 +01:00
499b012d82 fix: CSS class slide animation, mobile dot, flex task indicators 2026-03-06 12:09:13 +01:00
5e235b65ad feat: expand local quote library with language-aware fallbacks
Add ~30 curated quotes (15 DE + 15 EN) to local quote library. Goal API
now uses local quotes as fallback for all languages, with ZenQuotes only
for English users. Frontend fetchMotivationalQuote also falls back to
local quotes instead of hardcoded English string.

v1.13.0
2026-03-05 15:45:39 +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
182e634f23 feat: add Start View On setting (Today/Yesterday) in General Settings Modal 2026-03-04 11:49:11 +01:00
0632e03326 fix: mobile view header density, today logic, and sticky layout 2026-03-04 11:32:45 +01:00
8ea3720831 fix: per-device settings save to cookie only, not DB 2026-03-04 11:14:46 +01:00
58bbbbdf52 fix: cookie settings override, 5x week animation, deprecated meta tag 2026-03-04 11:08:39 +01:00
c5c713da11 feat: 5x longer week slide animation (1.75s vs 0.35s day) 2026-03-04 09:01:04 +01:00
9fa646fa55 fix: CSS class slide animation, mobile dot, flex task indicators 2026-03-04 08:54:37 +01:00
b3503d9e4d feat: UI improvements A-F — cookies, KW fix, mobile header, indicators 2026-03-04 02:49:44 +01:00
b001845890 feat: mobile UX overhaul and fix Google OAuth
- Add touch-friendly task actions (tap-to-reveal toolbar)
- Add swipe gestures (right=complete, left=delete)
- Add compact mobile header with overflow menu
- Add FAB + bottom sheet for quick task creation
- Add mobile date picker as centered modal
- Add touch feedback CSS (scale on press, no sticky hover)
- Fix Google sign-in by adding allowDangerousEmailAccountLinking
- Fix Google Calendar OAuth using separate 'google-calendar' provider
  to avoid collision with NextAuth's Account records
- Update all API routes to support both provider names

v1.11.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:41:46 +01:00
330d6fddc6 feat: support linebreaks in task titles with Shift+Enter
Replace input elements with textarea for task editing and creation.
Shift+Enter inserts a newline, Enter saves. Display uses pre-wrap.

v1.10.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 08:18:35 +01:00
163e9c1a07 feat: major update — mobile fix, auth decoupling, CalDAV perf, projects, fonts, quotes
Mobile fixes:
- Add viewport meta tag (was missing, causing broken mobile rendering)
- Make header nav controls visible on mobile (opacity-0 group-hover was invisible on touch)
- Add touch swipe gestures for day navigation on mobile
- Fix viewDays responsive override after profile load

Bug fixes:
- Fix goal save (WeeklyView used POST but route only had GET/PUT; fix to use PUT, add POST alias)
- Fix body key mismatch (goal → text) in goal save request

Auth & identity (Task 1):
- Add accountNumber (auto-increment) to User model for stable identity
- Fix OAuth flows: pass user CUID in state instead of email
- Google/Outlook callbacks now look up users by ID, not email
- Non-Gmail users can now connect Google Calendar/Tasks

CalDAV performance (Task 5):
- Embed CalDAV object URL in Apple event IDs (caldav::<url>::<uid> format)
- Delete/update now use O(1) direct URL access instead of O(n) full calendar scan
- Optimistic UI removal on delete (no blocking force-refresh)
- Legacy fallback for old-format IDs during transition

Apple Calendar data (Task 2):
- Pass URL, location, recurringEventId, isRecurring through full pipeline
- Add url, recurringEventId, isRecurring to CachedCalendarEvent schema
- Calendar cache now reads/writes all new fields

Projects (Task 6):
- New Project model (name, icon, color, description, order)
- CRUD API at /api/tasks/projects
- Tasks now support optional projectId with cascading nullify

Quotes (Task 4):
- Curated local quote database (50 quotes, DE+EN) with tag filtering
- Preset quote source APIs (ZenQuotes, Quotable, Forismatic, Type.fit)

Fonts (Task 7):
- FontPicker component with searchable dropdown and live preview
- /api/fonts endpoint (Google Fonts API proxy with 24h cache, fallback to 40 popular fonts)

Quick Settings (Task 8):
- QuickSettingsSidebar component (font size, spacing, show completed, start day, show lines)
- New user preferences: showCompletedTasks, showLines, startDayOffset, quoteSourceUrls

v1.9.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:55:49 +01:00
ecd9be03ce fix(lxc): remove duplicate property in WeeklyView and sync to v1.8.7 2026-03-01 16:06:13 +01:00
7f1211a048 feat(settings): update default application settings for clean bright look
feat(db): add dayHeaderGap field to persist spacing settings

chore(release): bump version to 1.8.4
2026-03-01 15:30:23 +01:00
9778952783 Update second hardcoded version string to 1.8.0 2026-03-01 12:51:53 +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
dea7c387ea v1.7.0: Responsive mobile layout + boot update script
- Add responsive CSS breakpoints (480px/768px/1024px)
- Auto-adjust viewDays based on screen width
- Keep time column visible on mobile (compact)
- Add boot-update.sh for auto-update on reboot
- Fix Suspense boundary in verify-email page
- Bump version to 1.7.0
2026-02-27 13:03:25 +01:00
2133364e3d feat: email verification, auto-save settings, calendar UX improvements
- Email verification: 6-digit code + one-click link on signup
- SMTP integration with nodemailer (lazy-init, auto-detect TLS)
- Verify-email page with 6 input boxes, paste support, auto-submit
- Resend verification with 60s rate limiting
- Block login for unverified email accounts

- Auto-save settings: debounced 800ms save on all profile changes
- Redirect to calendar settings after OAuth connection
- Fix Google Calendar connection display after connecting
- Task actions hover toolbar: fix z-index/overflow clipping on first row
- Make day header sticky with proper stacking context
2026-02-27 08:57:15 +01:00
20deaece0c fix(hooks): clean up syntax and formatting in GridTaskBlock 2026-02-26 07:54:24 +01:00
b1ad9ec546 fix(hooks): definitively resolve React Hook violations in GridTaskBlock 2026-02-26 07:49:45 +01:00
9652bd374e fix: resolve React Hook violation in GridTaskBlock 2026-02-26 07:41:59 +01:00
dddde43935 feat: add setting to show task checkboxes in weekly view
- Add showTaskCheckboxes field to User model in Prisma schema
- Create database migration for the new field
- Update user profile API to handle the new setting
- Implement checkbox rendering in GridTaskBlock controlled by user preference
- Add CSS styles for task checkboxes
2026-02-25 12:59:55 +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
279d1a4c49 Fix notes popup positioning, reposition task actions to avoid overlap, and improve Apple Calendar sync 2026-02-24 12:58:19 +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
210a142f61 fix(sync): resolve drag-and-drop sync gap for Someday lists 2026-02-24 02:06:32 +01:00
eb5a4b4232 fix: sync spinner disappearing prematurely during concurrent fetches
When both fetchCalendarEvents and fetchTasks ran in parallel, whichever
finished first would set isSyncing=false, hiding the spinner while the
other was still running. Replaced boolean with a ref-based counter so
the spinner stays visible until all concurrent syncs complete.

v1.3.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 00:52:06 +01:00
c8080f23ff feat: add bidirectional Microsoft To-Do task creation sync
New tasks created in synced someday lists are now pushed to Microsoft
To-Do automatically. Added createMsTodoTask() API function, POST
handler on /api/tasks/sync, and frontend wiring to call sync after
local task creation in externally-linked lists.

v1.3.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 00:39:19 +01:00
220015b2b6 feat: show sync provider icon on someday lists
- Add externalProvider to SomedayList interface and fetch mapping
- Display a small provider icon (Microsoft/Google/Apple) next to the
  list title with tooltip showing the sync source
- Icon appears at 50% opacity to stay subtle

v1.2.3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 00:30:23 +01:00
866f514f10 fix: detect iCloud all-day events and bypass cache on manual refresh
- Apple calendar parser now checks ICAL.js isDate flag and emits
  date-only strings (YYYY-MM-DD) for all-day events instead of
  full ISO datetime — fixes all-day detection in the frontend
- Calendar events mapper routes date-only Apple events to the
  date field instead of always using dateTime
- Manual refresh button now sends forceRefresh=true which makes
  the sync endpoint wait for live data instead of returning stale cache
- Automatic background syncs still use fire-and-forget for performance

v1.2.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 00:26:04 +01:00
1f202eb8c9 fix: move undo/redo buttons to right section, left of add event button
v1.2.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 00:16:30 +01:00
83e2a99d78 feat: add undo/redo, fix Outlook OAuth session loss, fix Microsoft To-Do task import
Undo/Redo:
- Add undo/redo stacks tracking task and someday list state snapshots
- Undo/redo buttons appear on hover in header center section
- Keyboard shortcuts: Ctrl+Z (undo), Ctrl+Y / Ctrl+Shift+Z (redo)
- Snapshots taken before addTask, toggleTask, updateTask, deleteTask, toggleTaskRolling

Outlook OAuth fix:
- Redirect through /auth/oauth-complete client-side page instead of directly to /tasks
- Client page calls session.update() to refresh JWT before navigating
- Prevents session loss caused by SameSite cookie policy during cross-origin redirect

Microsoft To-Do import fix:
- Set externalId and externalProvider on SomedayList during import
- Link existing lists missing external metadata on re-import
- Enables pull-sync to find and update tasks in subsequent syncs

v1.2.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 00:07:59 +01:00
535f343790 fix: show sync spinner during task fetching, keep completed tasks visible, inject version into settings
- Add isSyncing state to fetchTasks() so spinner shows during task/list loading
- Remove !task.completed filter from getTasksForDate — completed tasks now stay
  visible with strikethrough instead of vanishing
- Inject package.json version into NEXT_PUBLIC_APP_VERSION via next.config.js
  so the Settings > About tab always shows the current version

v1.1.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 23:41:46 +01:00
c82572935c feat: dark mode color adjustment, multi-source quotes, UI text wrapping, and versioning rules
- Add dark mode color adjustment helper for category colors
- Support multiple motivational quote source URLs
- Fix text wrapping for tasks/events to prevent horizontal overflow
- Improve someday list item layout for long text
- Add CLAUDE.md with semantic versioning and git workflow rules
- Update test/doc URLs and planning docs

v1.1.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 23:33:25 +01:00
8496c2daa4 fix: enable text wrapping for tasks and events to prevent horizontal scrollbars
- Updated globals.css for .time-slot-task and .time-slot-event row

- Removed white-space: nowrap from GridTaskBlock title span

- Added word-wrap: break-word to simple-view columns
2026-02-23 22:13:36 +01:00
ce58c3673e feat: move ViewStyle selection from header to settings menu
- Relocated Simple/Calendar/List toggles to General settings tab

- Positioned ViewStyle above localization setting

- Removed redundant dropdown from settings

- Cleaned up header whitespace
2026-02-23 22:08:57 +01:00
83d0d0b920 fix: implement custom CSS sync spinner and update all components
- Replaced broken animate-spin Tailwind class with custom weekly-spinner CSS

- Standardized loading indicators across Auth, Tasks, and Calendar settings

- Fixed JSX syntax errors in several components
2026-02-23 22:04:16 +01:00
eb5065131a fix: remove grid task resize handle, improve hover menu visibility, and fix motivation settings tab
- Removed bottom-center resize handle from GridTaskBlock

- Ensured hover menu is always visible and unclipped for all task heights

- Widened settings sidebar to 480px for better tab spacing

- Fixed conditional rendering of quote settings in WeeklyView
2026-02-23 22:00:04 +01:00
6fed420375 fix: restore sync spinner, fix task hover menu, and add custom motivational quote sources
- Reverted RefreshCcw icon to original CSS loading spinner

- Fixed GridTaskBlock overflow to restore task actions menu visibility

- Implemented motivationalQuote state and fetcher with custom API source setting

- Removed redundant Goal of the Week setting from panel
2026-02-23 21:53:17 +01:00
f9d578ddf1 fix: time grid layout alignment and task drag/drop collision detection
- Removed boxed background from grid tasks and added hover-only resize handle

- Fixed vertical drop calculation using correct cell sizes

- Aligned time column header perfectly using a structural ghost replica

- Added collision detection to prevent dragging tasks over occupied slots
2026-02-23 21:29:56 +01:00
999b354cc8 feat: Move all-day position to settings, time indicator to left, add note icons
- Move all-day event position toggle from toolbar into Settings > General tab
- Render current time label in the time column (left of the red dot line)
- Add note icon on tasks with markdownContent, with hover tooltip
- Add English and German translations for all-day position setting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 16:27:42 +01:00
db00642c21 feat: Add Microsoft To-Do and Outlook Calendar integration
Adds full OAuth2 flow, bidirectional task sync, calendar event CRUD,
caching with background refresh, and shared token management for
Microsoft/Outlook services. Extracts common token refresh logic into
shared outlook-token.ts utility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 22:07:37 +01:00