Commit Graph

288 Commits

Author SHA1 Message Date
5c899d9f3c chore(release): merge dev to main for v1.10.2 2026-03-02 09:21:18 +01:00
667b3f3b37 fix(lxc): explicitly start standalone server on PORT 3002 2026-03-02 09:21:17 +01:00
3c327f30be chore(release): merge dev to main for v1.10.1 2026-03-02 08:26:14 +01:00
beb3281194 fix(v1.10.1): force dynamic for problematic APIs and improve Outlook sync logs 2026-03-02 08:26:14 +01:00
2f78dfa35d Merge branch 'dev' 2026-03-02 08:19:21 +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
99e2e9bac8 chore(release): merge dev to main for v1.9.0 2026-03-02 07:56:23 +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
0e3ae3296b chore(release): merge dev to main for v1.8.7 2026-03-01 16:06:16 +01:00
ecd9be03ce fix(lxc): remove duplicate property in WeeklyView and sync to v1.8.7 2026-03-01 16:06:13 +01:00
d2ece3b15f chore(release): merge dev to main for v1.8.6 2026-03-01 15:59:20 +01:00
f70a235c57 fix(lxc): refactor boot and update scripts for safe migrations and standalone mode
chore(release): bump version to 1.8.6
2026-03-01 15:59:18 +01:00
742cdd7568 chore(release): merge dev to main for v1.8.5 2026-03-01 15:35:20 +01:00
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