Commit Graph

325 Commits

Author SHA1 Message Date
dad44ca384 fix(api): use type assertions for User model to bypass prisma type-lag during build
chore(release): bump version to 1.8.5
2026-03-01 15:35:18 +01:00
e0ce3a3ec5 chore(release): merge dev to main for v1.8.4 2026-03-01 15:30:33 +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
ea3acbfcf0 chore(release): merge dev to main for v1.8.3 2026-03-01 14:56:46 +01:00
87cf48e6fd style(email): replace dark mode template with bright, clean aesthetic
chore(release): bump version to 1.8.3
2026-03-01 14:56:31 +01:00
9b1edf87d0 chore(release): merge dev to main for v1.8.2 2026-03-01 14:43:05 +01:00
74eec23443 fix(email): change fallback sender to carrylight.de to prevent SPAM rejection
chore(release): bump version to 1.8.2
2026-03-01 14:40:02 +01:00
cad16233d8 chore(release): merge dev to main for v1.8.1 2026-03-01 14:15:48 +01:00
95487cc83f fix(email): increase SMTP timeout to 15s to prevent email dispatch failures on slow connections
chore(release): bump version to 1.8.1
2026-03-01 14:14:52 +01:00
f2c397d73d Merge dev into main 2026-03-01 12:52:50 +01:00
9778952783 Update second hardcoded version string to 1.8.0 2026-03-01 12:51:53 +01:00
018c52476e Merge dev into main 2026-03-01 12:42:59 +01:00
328fbcf55a format prisma schema 2026-03-01 12:39:08 +01:00
e40b129d1d Update hardcoded version to 1.8.0 2026-03-01 12:36:34 +01:00
4d24044aa5 Bump version to 1.8.0 2026-03-01 12:08:30 +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
f4ae9f85aa chore: make update-server.sh safe for crontab (reboot) usage 2026-02-27 09:32:41 +01:00
8d2134b83d chore: add pm2 save to update-server.sh 2026-02-27 09:29:53 +01:00
2c81b348aa feat: add LXC deployment automation scripts 2026-02-27 09:21:10 +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
root
da8d019aba chore: Supabase migration - update env configs and dependencies 2026-02-26 13:36:07 +00:00
5ad92aa833 chore: remove dead apple-icloud dependency and fix build 2026-02-26 08:15:12 +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
138f5d8030 fix: restore settings sidebar visibility by fixing CSS positioning
- Reverted right: -480px to right: 0 in globals.css

- Maintained widened sidebar (480px) while fixing the translateX animation conflict
2026-02-23 22:06:16 +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
b46c7b7ccb chore: Portainer-compatible docker-compose, improved .dockerignore
- Use image reference instead of build context for Portainer stacks
- Inline all environment variables (no env_file dependency)
- Add .next, logs, Inspiration to .dockerignore
- Explicit .env.local and .env.production in .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:52:49 +01:00
02a8c2a0b4 chore: Production Dockerfile, deploy script, dev port 3001
- Multi-stage Dockerfile: build stage + slim production runner
- Runs `next build` + `next start` instead of `npm run dev`
- Dev server on port 3001 to avoid conflict with production on 3000
- Deploy script with version bumping and health checks
- Explicit .env.production for docker-compose
- Updated .gitignore and .dockerignore

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