Commit Graph

91 Commits

Author SHA1 Message Date
72eafbd63c fix: drag and drop lists onto tabs to assign them
Drag a someday list by its handle and drop it on a tab button to assign
it to that tab. Drop on "All" to unassign. Visual feedback with dashed
outline on hover during drag.

v1.27.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:55:55 +01:00
8959aa7f5a feat: move someday controls to horizontal tab bar, remove label column
Replace the someday-label-column with a unified horizontal tab bar
containing: collapse chevron, "any day" label, new list icon (ListPlus),
new tab icon (FolderPlus), divider, then tab buttons. All icons have
tooltips. Inline input for creating new tabs directly in the bar.

v1.27.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:53:30 +01:00
f05a7c9035 fix: show list count badges on someday tab buttons
Display number of lists per tab in a circle badge next to the tab name.
"All" shows total count, each tab shows its filtered count.

v1.26.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:47:44 +01:00
b2a1981385 fix: tab persistence and move tabs to horizontal bar above someday grid
Fix tabs vanishing on reload by adding missing `tab` field in fetchTasks()
list mapping. Replace cramped vertical tabs in someday-label-column with
a readable horizontal tab bar above the someday grid, working in both
time-grid and non-time-grid modes. Double-click to rename, X to dissolve.

v1.26.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:44:17 +01:00
b56bfdeb52 fix: tab persistence, dissolve tabs, and Synology CalDAV discovery fallback
- Fix someday tabs disappearing on reload (include tab field in fetch mapping)
- Add dissolve/delete tab feature with X button on hover (all 5 languages)
- Fix Synology calendar "cannot find homeUrl" by falling back to derived homeUrl
  when well-known CalDAV discovery fails

v1.25.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:51:22 +01:00
ff6ed1f949 fix: mobile someday tabs and inline new tab input
Show horizontal scrollable tab bar on mobile (≤768px) above someday
lists. Hide vertical tabs in label column on small screens.
Replace browser prompt for new tab name with inline input field.

v1.25.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:38:38 +01:00
3016293cd9 feat: add someday list tabs and side navigation arrows
Add tab system for someday lists allowing categorization (e.g. Private,
Work, Family). Lists can be assigned to tabs via tag icon dropdown in
list headers. Tabs appear in the someday label column for filtering.
Double-click tab name to rename. Tabs persist in DB via new SomedayList.tab field.

Also add hover-overlay prev/next day/week navigation arrows on left and
right sides of the weekly grid, and fix first hour label clipping.

i18n: tab translations for EN, DE, FR, ES, IT.

v1.25.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:15:46 +01:00
627f4c0005 fix: hide reset token, add password confirmation field
Token is now read from URL silently. User enters password twice
with client-side match validation. Shows error for missing/invalid tokens.

v1.23.1
2026-03-10 16:43:27 +01:00
59cfcc7be4 feat: implement password reset flow with email
- API now handles two cases: send reset link (email only) and
  reset password (token + newPassword)
- Generates UUID token stored on user with 1-hour expiry
- Sends styled HTML email with reset link via SMTP
- Prevents email enumeration (always returns success)

v1.23.0
2026-03-10 16:11:30 +01:00
0b68d275d0 feat: multi-language quote selection with per-user language picker
Users can now choose which languages their motivational quotes appear in
via toggle buttons in Settings. Added 45 curated quotes in French, Spanish,
and Italian. Quote language preference is stored per-user in the database.

v1.22.0
2026-03-09 08:11:23 +01:00
9ac7198b24 feat: localization (FR/ES/IT), portal date picker, font matching, quote cleanup
- Add French, Spanish, and Italian translations for full UI localization
- Add Italian to language selector; show native language names
- Fix Jump to Date calendar: use React portal with fixed positioning
  to prevent clipping by overflow:hidden ancestors
- Fix font matching: time grid tasks inherit from task font settings
  when at default values (0.75rem/500), matching someday list fonts
- CSS fallback chain: time-slot-task vars fall through to task vars
- Remove broken recite.vercel.app default quote URL
- Add date-fns locales (fr, es, it) for SimpleDatePicker

v1.21.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 20:54:13 +01:00
4c18d37bec feat: account number display, weekly goals export/import, calendar event fixes
- Show Account Number in Settings > Account for user identification
- Add weekly goals to JSON export/import with upsert-based merge
- Fix calendar events not appearing instantly (await cache ops, prevent
  provider force-refresh from overwriting optimistic updates)
- Add Sign Out button in Settings > Account for mobile accessibility
- Fix dateVerticalAlign persistence in profile API
- Fix quote API error handling for non-JSON responses
- Add Synology to CalendarEvent source type union

v1.20.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 19:56:21 +01:00
9863f8e28e feat: weekday case setting, right-aligned icons, font matching, calendar fixes
- Add weekday case setting (Normal/Capitalize/Uppercase) with DB persistence
- Move provider icons to end of line (right-aligned with marginLeft: auto)
  in both GridTaskBlock and TaskItem
- Make time grid task font inherit from task font settings as fallback
  instead of separate hardcoded defaults (0.75rem/500 → task font values)
- Fix Jump to Date calendar: center-aligned dropdown, dark mode support
  via CSS variables, proper border and shadow styling
- Add weekdayCase to Prisma schema, profile API, and translations (EN/DE)

v1.19.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 13:23:22 +01:00
05dab0720b feat: provider icons in time grid, fix weekday names persistence, calendar z-index
- Add sync provider icons (Google, Microsoft, Apple, Synology) to
  GridTaskBlock so they show in weekday time slots
- Add weekdayFormat and customWeekdayNames fields to Prisma schema
  and profile API so custom weekday names persist across reloads
- Fix Jump to Date calendar z-index by elevating container when open
- Fix someday textarea font to inherit from CSS instead of hardcoded values

v1.18.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 13:09:37 +01:00
7f04750e4a fix: provider icons on all tasks, font size matching, day header z-index
- Show sync provider icons (Google, Microsoft, Apple, Synology) on both
  someday and weekday tasks with fallback detection from externalId
- Remove hardcoded fontSize from someday tasks so they inherit CSS variables
- Remove line-height override for someday task text
- Bump day header z-index to 20 to prevent task overlap when scrolling
- Always propagate externalProvider when dragging tasks between slots

v1.17.2
2026-03-08 12:50:51 +01:00
77daa6e30b chore: release v1.17.0 - Reorganized settings, added Localisation tab, and refined UI layout 2026-03-08 10:30:28 +01:00
2ec09fdcca feat: full Synology bidirectional sync and fix someday list delete button
- Add createSynologyTask: new tasks in synced lists push to Synology CalDAV
- Wire Synology create into POST /api/tasks when somedayList is synced
- Fix someday list title input using width:100% instead of flex:1, which
  pushed the delete button off-screen making lists undeletable
- Slightly improved provider icon styling

v1.16.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 02:00:55 +01:00
fe41c153f7 feat: Synology bidirectional sync (push updates back to CalDAV)
Added updateSynologyTask and deleteSynologyTask functions that modify
VTODOs on the Synology CalDAV server. Wired into the sync PATCH handler
so completing/editing/deleting a Synology-synced task pushes changes back.
Also slightly increased provider icon size for better visibility.

v1.16.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 01:46:40 +01:00
aaa3705511 fix: include synology in external tasks query to prevent duplicate creation
The sync query filtered externalProvider for only 'google' and 'outlook',
missing 'synology'. This caused every sync cycle to treat all Synology
tasks as new, creating duplicates each time.

v1.15.10

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 01:37:35 +01:00
ecf774e0f9 fix: inherit provider from someday list when moving task to weekday slot
Tasks created locally in a synced someday list may not have
externalProvider set (if the sync to Google/etc failed). Now when
moving such a task to a weekday slot, the provider is inherited
from the source list and persisted to the DB.

v1.15.7

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 00:42:18 +01:00
031837cbb2 fix: wrap mobile task toolbar into two rows to prevent overflow
v1.15.6

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 00:30:02 +01:00
a592ac40e9 fix: move mobile task action toolbar above task text to prevent overlap
Use bottom: 100% instead of fixed top offset so toolbar always sits
above the task regardless of task height.

v1.15.4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 00:12:34 +01:00
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
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
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
5dad5aa492 fix(weekly-view): hide individual scrollbars and fix task creation P2003 error 2026-03-05 11:36:17 +01:00
0632e03326 fix: mobile view header density, today logic, and sticky layout 2026-03-04 11:32:45 +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
9be39b0b30 fix: full-screen slide animation for day/week nav 2026-03-04 02:30:26 +01:00
b7fa5ff7c0 fix: consolidate slide animation CSS - remove 3 conflicting keyframe blocks 2026-03-04 02:17:41 +01:00
c7fc01b782 Add Microsoft Auth and update Auth UI 2026-03-03 14:03:09 +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
beb3281194 fix(v1.10.1): force dynamic for problematic APIs and improve Outlook sync logs 2026-03-02 08:26:14 +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
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
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
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
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