Time-grid-wrapper max-height is set based on (endHour - startHour) so
only the selected time range is visible. Users can still scroll to see
hours outside the range. Tasks remain in their correct timeslots.
v1.33.4
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>
Fix stale closure in updateTaskFields causing tasks to disappear after
dragging between kanban columns. Add view switcher icons (Week/List/Kanban)
in the header on hover. Add search bar and filter dropdowns (project,
someday list, week) to the kanban board. Include someday list tasks in
kanban view.
v1.29.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New "Kanban" view style alongside Simple, Calendar, and List
- Drag tasks between columns to change their stage
- Customizable stages with colors in Settings > View Style
- Stage colors appear as left border indicators on tasks in weekly view
- Default stages: Backlog, To Do, In Progress, Review, Done
- Stages persist in database (User.kanbanStages as JSON)
- Task stage persists in database (Task.kanbanStage)
- Full i18n support (EN, DE, FR, ES, IT)
- Unassigned tasks shown in separate column
v1.28.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace cryptic "—" with translated "No tab" label in the tab assign
dropdown (EN, DE, FR, ES, IT). Selecting it unassigns the list from
its current tab.
v1.27.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New tabs created via FolderPlus button are stored in localStorage as
custom tabs and merged with list-derived tabs. Dissolve and rename
also update custom tabs. Changed tab assign icon in list headers from
Tag to FolderPlus for consistency.
v1.27.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
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>
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>
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>
Replace browser confirm() popup when unchecking synced task lists with
an inline red confirmation banner. Add sync all / unsync all buttons
per provider for batch operations. i18n for EN, DE, FR, ES, IT.
v1.26.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
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>
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>
- Added 70+ translation keys across all 5 languages (EN/DE/FR/ES/IT)
- Replaced 45+ hardcoded strings in settings with translated versions
- Added flag emojis to language dropdown (🇬🇧🇩🇪🇫🇷🇪🇸🇮🇹)
- Fixed language dropdown jumping back to English (functional updater, correct fallback)
- Downgraded Synology calendar 405/404 errors to warnings for stale calendars
v1.24.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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
- Fix setval(0) error in accountNumber migration (use GREATEST(..., 1))
- Add migration for dateVerticalAlign, dayHeaderGap, weekday settings, quoteLanguages
- Deploy scripts now fall back to db push if migrate deploy fails
v1.22.3
The standalone build already includes the correct server files.
Copying .next/server on top was overwriting middleware-manifest.json,
causing MODULE_NOT_FOUND errors at runtime.
v1.22.1
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
- 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>
- 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>
- 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>
- 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
- 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>