Wave-1 user feedback (points 7–10):
- Settings: new Projects tab with full CRUD (name, color, icon picker)
- Priority Icons render in simple/calendar/list views with style-specific
visuals (Eisenhower icons, ABCDE letters, Ivy Lee 1–6, Pareto star).
Toggle + style selector in Settings; Ivy Lee ranks now persist to
task.priority so cross-view badges stay consistent.
- Someday Lists gain optional icon (left of title) and color (left
border tint), edited via a pencil-popup with IconPicker + color picker.
- Tabs gain optional icon and color, stored in user.viewSettings JSON
and edited via the same popup pattern.
Schema: SomedayList.color/icon, User.showPriorityIcons/priorityStyle.
v1.99.0
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix heading hierarchy: modal titles h3→h2 (RecurrenceModal, two WeeklyView dialogs),
SettingsSidebar h4→h3 for Localisation, Data Export, Backup & Restore sections
- Add keyboard resize handle: role=slider, tabIndex, aria-valuemin/max/now/text,
ArrowUp/Down keys to adjust task duration in 15-min increments
- Add aria-label to CalendarEventModal notes textarea fallback
- Color contrast: raise --weekly-text-light from #a6a6a7 (~2.4:1) to #767676 (~4.5:1)
on white background to meet WCAG AA
v1.86.0
Option A — URL field per task:
- New url String? column in Task schema (migration: 20260403_add_task_url)
- Link icon button in GridTaskBlock action bar; click to open inline URL popup
with input, clear (×) button, and open-in-new-tab shortcut
- Blue link indicator shown inline on the task card when a URL is set
- updateTaskUrl() in WeeklyView persists to DB via PATCH /api/tasks
Option B — Rich text notes with inline hyperlinks:
- GridTaskBlock notes popup upgraded from plain markdown textarea to
RichTextEditor (Tiptap), which already has bold/italic/underline/
bullet/blockquote/link toolbar and full link support
- Notes now save on every change via onChange (no blur required)
v1.82.0
Project icons (faHeart, faBriefcase etc.) were rendering as literal text in
GridTaskBlock because the lookup skipped the legacy "faX" → "x" normalization
that ProjectIcon does. Added the same normalization before allIcons.find().
Someday list tabs now survive provider disconnects and reconnects:
- customTabs (empty tabs) saved to viewSettings in DB instead of localStorage only
- assignListToTab saves a title→tab mapping in viewSettings.somedayTabPrefs
- Profile load merges DB customTabs with localStorage for migration
- Import route reads somedayTabPrefs and auto-applies tab when creating/
relinking a SomedayList by title match
v1.81.20
- tasks/sync GET: batch Google/Outlook/Synology credential fetches with
Promise.all instead of sequential awaits; move per-list Synology
findMany outside the loop to eliminate N+1
- calendar/sync: replace fire-and-forget background refresh with 800ms
Promise.race so fast refreshes return fresh data without blocking
- Extract icon data to iconRegistry.ts; lazy-load IconPicker via
next/dynamic so picker UI code is deferred until needed
v1.78.0
Move project icons from flex siblings into the text span so that
multi-line task titles wrap around the icon instead of leaving
empty space below it.
v1.59.4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add picker-open class when project picker is shown to keep task-actions
visible even when mouse leaves the task hover area. Elevate z-index on
picker-open tasks so the dropdown isn't obscured by adjacent tasks.
v1.57.15
- 6-step onboarding wizard (welcome, language, connect providers,
view style, work hours, styling) for new signups
- Added hasCompletedOnboarding field to User schema
- Fixed subtask progress bar in GridTaskBlock (simple/calendar views)
- Fixed kanban drag-and-drop to someday area
- Fixed weather/provider icon overlap in time grid tasks
- Provider icon positioning: inline when weather on, top-right when off
v1.56.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- 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>
- 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>
- 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>
- 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>
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>
- 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
- 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>
- 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
- 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
- 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
- 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
- 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