Commit graph

357 commits

Author SHA1 Message Date
Wuesteon
3011d77caf ♻️ refactor(contacts,zitare): use dynamic runtime URLs in auth stores
Replace hardcoded localhost URLs with dynamic getAuthUrl() and
getBackendUrl() functions that:
- Read from injected window variables in client-side code
- Fall back to process.env for SSR
- Default to localhost for local development

This ensures proper URL resolution in Docker/production environments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-15 14:13:00 +01:00
Wuesteon
660cbd654f Merge branch 'dev' into till-dev 2025-12-15 14:10:34 +01:00
Till-JS
bc0eecac95 Feat: Tagmodal, fullscreenmode, tag groups, onepage design philosophy 2025-12-15 03:37:01 +01:00
Till-JS
893c6ef0fb feat(shared-ui): unify ImmersiveModeToggle across Calendar, Contacts, and Todo apps
- Move ImmersiveModeToggle component from Calendar to shared-ui package
- Add immersiveModeEnabled setting to Contacts and Todo settings stores
- Update all three app layouts with F-key shortcut and conditional UI rendering
- Consistent glass-pill styling on hover for toggle button

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 03:34:15 +01:00
Till-JS
a6d439360f feat(calendar): add immersive/fullscreen mode toggle
- Add ImmersiveModeToggle component with glass-pill styling
- Toggle hides all UI elements (PillNav, DateStrip, TagStrip, InputBar)
- Press F key to toggle immersive mode
- Button positioned at bottom center, transparent until hovered
- Semi-transparent in immersive mode for minimal distraction

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 03:22:30 +01:00
Till-JS
3edb65c2c3 feat(calendar): add number labels to ViewSwitcher and extended day views
- Replace icons with number labels (1, 3, 5, 7, 10, 14, 30, 60, 90, 365, M, Y, L)
- Add new standard view types: 30day, 60day, 90day, 365day
- Add 3day view as standard option
- Add custom day range input (1-365 days) in context menu
- Update PillTabGroup to show labels when no icon is provided
- Change MultiDayView dayCount prop from union to number type
- Add ultra-compact class for views with 14+ days

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 02:54:10 +01:00
Till-JS
1395291b49 feat(calendar): combine calendar/tasks pill with sidebar toggle and mobile splitscreen
- Combine separate Kalender and Aufgaben pills into single tab group
- Add prependElements prop to PillNavigation for tab groups at start
- Clicking Aufgaben tab toggles todo sidebar instead of navigating
- Remove separate /tasks route (no longer needed)
- Implement 50/50 splitscreen layout on mobile (calendar top, todos bottom)
- Add proper flex container hierarchy for mobile layout
- Make TodoSidebarSection fill container on mobile with clean edges
- Add calendar and check-square icons to PillTabGroup
- Export PillTabGroupConfig type from shared-ui

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 02:35:35 +01:00
Till-JS
c712cc7995 feat(shared-ui): add reusable HelpModal system with keyboard shortcuts and syntax panels
- Create new help module with HelpModal, KeyboardShortcutsPanel, and SyntaxHelpPanel components
- Add common shortcuts and syntax constants for reusability
- Refactor InputBarHelpModal to use new HelpModal component
- Fix ContextMenu event handling with stopPropagation and pointer-events
- Fix Modal z-index for proper stacking context
- Add CalendarHeaderContextMenu import to WeekView

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 23:43:19 +01:00
Till-JS
5ac8de722d revert(calendar): restore animated swipe navigation
Revert to the full-featured animated version with:
- Smooth linear JS animation (requestAnimationFrame)
- Velocity tracking for momentum-based navigation
- Chain navigation for fast multi-page scrolling
- Visual feedback during swipe gestures

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 23:30:55 +01:00
Till-JS
20bc954d6b fix(calendar): prevent double navigation with lock mechanism
Add 150ms lock after each page navigation to prevent:
- Wheel events continuing to fire and triggering multiple navigations
- Rapid swipes causing double-jumps

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 23:25:43 +01:00
Till-JS
1f7b93af21 feat(calendar): add context menu to CalendarHeader with display settings
Add right-click context menu to the calendar header for customizing:
- Compact view toggle
- Weekday format (full/short/hidden)
- Date visibility toggle
- Month display toggle (e.g., "13.12.")

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 23:25:29 +01:00
Till-JS
78fb495ba2 feat(calendar): add visual scrolling with instant snap
Restore visual feedback during swipe/scroll gestures:
- Track follows finger/trackpad during gesture
- Instant page switch when threshold reached (no animation)
- 3-panel carousel (prev/current/next)
- Simple ~230 lines, no animation complexity

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 23:21:24 +01:00
Till-JS
a86f8e4ef4 refactor(calendar): simplify swipe to instant navigation
Remove all animation complexity - just instant page switches:
- Swipe/scroll threshold triggers immediate navigation
- No animation, no bounce, no transitions
- Accumulated delta for trackpad scrolling
- ~100 lines instead of ~300

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 23:19:39 +01:00
Till-JS
3929911051 feat(calendar): enable fast multi-page navigation
Allow chaining multiple swipes without waiting for animation to complete:
- Detect swipes during animation in same direction
- Immediately complete current navigation and start next
- Faster animation speed (3.0 px/ms) for snappier feel
- Reduced debounce (50ms) for quicker response
- Higher velocity threshold (0.5 px/ms) for intentional fast swipes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 23:14:39 +01:00
Till-JS
0ebc3d0f8c fix(calendar): use pure JS animation for truly linear swipe
Replace CSS transitions with requestAnimationFrame animation:
- Constant speed (2.5 px/ms) throughout entire animation
- No easing at all - completely linear movement
- Smoother continuation from user gesture to animation
- Remove CSS transition class entirely

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 23:08:58 +01:00
Till-JS
dca7d97c78 feat(calendar): improve swipe to smooth linear scrolling
Replace elastic snap behavior with smooth constant-speed scrolling:
- Use linear easing instead of ease-out (no deceleration at end)
- Add velocity tracking for momentum-based navigation
- Dynamic animation duration based on remaining distance (80-200ms)
- Fast swipes trigger immediate navigation regardless of position
- Lower threshold (15%) for easier page transitions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 23:06:19 +01:00
Till-JS
4e391bdbc6 refine(calendar): improve swipe navigation UX
- Increase swipe threshold from 15% to 20% for more intentional navigation
- Reduce animation duration from 300ms to 200ms for snappier feel
- Reduce wheel debounce from 150ms to 100ms for faster response
- Simplify code by removing redundant comments

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 22:57:17 +01:00
Till-JS
9e0c8cbd7d refactor(contacts): use InputBar settings store for autoFocus
Remove hardcoded autoFocus prop now that it's controlled by the
global InputBar settings store introduced in the context menu feature.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 22:22:40 +01:00
Till-JS
e0d7b3d13d feat(calendar): add swipe navigation for calendar views
Implement horizontal swipe/trackpad navigation between calendar periods:
- Add ViewCarousel component with animated page transitions
- Support touch swipe, trackpad scroll, and wheel navigation
- Create useSwipeNavigation composable for reusable swipe handling
- Add dateNavigation utility for calculating view-specific date offsets

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 22:22:15 +01:00
Till-JS
9e7113982e feat(shared-ui): add InputBar context menu with settings
- Add InputBarContextMenu with settings toggles (syntax highlighting, auto-focus)
- Add InputBarHelpModal for keyboard shortcuts and syntax help
- Add inputBarSettings store with localStorage persistence
- Add recentInputHistory store for tracking used tags/references
- Integrate context menu in calendar app with default calendar selection
- Right-click on InputBar opens settings menu

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 22:20:00 +01:00
Till-JS
1ff172fc8d feat(contacts): add birthday and custom dates support
- Add customDates JSONB column to contacts schema
- Add CustomDateDto validation in controller
- Extend Contact interface with customDates field
- Create DateFields.svelte component (collapsible section with birthday + dynamic custom dates)
- Integrate DateFields in ContactDetailModal (view + edit mode)
- Integrate DateFields in NewContactModal

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:43:17 +01:00
Till-JS
fc3129aaa5 refactor(contacts): major component and API refactoring
Components:
- Simplify ContactDetailModal and NewContactModal
- Enhance ContactsToolbarContent with expanded functionality
- Add AlphabetNavContextMenu for alphabet navigation
- Add SocialMediaLinks component for displaying social links
- Add SocialMediaFields form component
- Add ContactNetworkView as integrated network visualization
- Improve skeleton components with shared utilities

API & Config:
- Add centralized API client module
- Refactor contacts API with better error handling
- Add social-media configuration module
- Update batch and config modules

Stores:
- Simplify filter store
- Update settings and user-settings stores
- Clean up view-mode store
- Minor auth store updates

Routes:
- Update layout with simplified navigation
- Minor updates to settings, statistics pages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:31:36 +01:00
Till-JS
c7a9e88d13 refactor(contacts): remove network and new contact pages
- Remove NetworkToolbar and NetworkToolbarContent components
- Remove standalone network visualization page
- Remove dedicated new contact page

Network view integrated into main contacts; new contact via modal.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:31:12 +01:00
Till-JS
d353fb076f refactor(contacts): remove favorites functionality
- Remove FavoriteAlphabetView, FavoriteCardView, FavoriteListView
- Remove FavoriteCardSkeleton and FavoriteGridSkeleton
- Remove favorites route page

Favorites functionality consolidated into main contacts views.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:30:55 +01:00
Till-JS
48edd85591 refactor(calendar): improve agenda and event components
- Replace native select with FilterDropdown in AgendaFilters
- Add view options to DateStripContextMenu
- Improve EventForm layout and styling
- Enhance QuickEventOverlay with better time handling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:30:24 +01:00
Till-JS
cc28cc739e feat(calendar): add birthday calendar and collapsible date strip
- Add virtual birthday calendar to calendars store
- Create DateStripFab component for collapsed date strip mode
- Add dateStripCollapsed setting support in layout
- Adjust InputBar positioning for FAB visibility

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:29:58 +01:00
Till-JS
0badca21ae feat(calendar): add configurable ViewModePill for quick view switching
Add a View Mode Pill component next to the toolbar FAB that allows quick
switching between calendar views. Users can configure which views appear
in the quick switcher via right-click context menu.

- Add ViewModePill component with icons for each view type
- Add ViewModePillContextMenu for configuring visible views
- Add quickViewPillViews setting (default: week, month, agenda)
- Position pill to the left of the toolbar FAB

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:29:03 +01:00
Till-JS
b966c91c32 refactor(calendar): extract EventCard component from views
- Create EventCard component encapsulating event block with resize handles
- Create TimeColumn component for hour labels (not yet integrated)
- Create OverflowIndicator component for overflow events (not yet integrated)
- Integrate EventCard into DayView (154 lines reduced)
- Integrate EventCard into WeekView (166 lines reduced)
- Remove duplicate event-card styles from both views

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:26:32 +01:00
Till-JS
668957a30b refactor(calendar): extract birthday popover logic into composable
Create useBirthdayPopover composable to eliminate duplicated birthday
popover state and handlers across DayView, WeekView, and MonthView.

Changes:
- Add useBirthdayPopover.svelte.ts composable
- Update DayView to use the composable
- Update WeekView to use the composable
- Update MonthView to use the composable
- Export from composables/index.ts

This removes ~40 lines of duplicated code across the three views.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:18:50 +01:00
Till-JS
e0ef15276d feat(calendar): add minimize button to DateStrip
Add a transparent minimize button at the left edge of the DateStrip that
allows quick collapsing to FAB without needing the context menu.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:17:22 +01:00
Till-JS
5bf275d9d0 refactor(calendar): add comprehensive drag/drop composables
Create reusable composables for calendar event and task drag/drop:
- useEventDragDrop: Event drag and resize with document-level listeners
- useTaskDragDrop: Task drag and resize (updated to match new API)
- useSidebarDrop: Sidebar task drop handling
- useCalendarKeyboard: Keyboard shortcut handling (Escape to cancel)

These composables extract ~600 lines of duplicated logic from
WeekView, DayView, and MultiDayView. Integration into views will
be done in a follow-up commit.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:13:58 +01:00
Till-JS
026c1654e3 fix(contacts): resolve Svelte 5 hydration error
- Move type exports from .svelte files to separate .types.ts files
  (FilterDropdown, CommandBar) to prevent SSR hydration issues
- Replace direct NetworkGraph component import in network store
  with TypeScript interface to avoid SSR component instantiation
- Add missing shared packages to vite.config.ts ssr.noExternal
  and optimizeDeps.exclude (splitscreen, i18n, profile-ui, etc.)

The hydration error "Cannot read properties of undefined (reading 'call')"
was caused by Svelte 5's stricter handling of component imports in
.svelte.ts files and type exports from .svelte files during SSR.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:13:22 +01:00
Till-JS
c4fe9ea192 refactor(calendar): extract shared constants and event filtering utilities
Phase 1 of calendar refactoring:
- Create calendarConstants.ts with HOUR_HEIGHT_PX, SNAP_INTERVAL_MINUTES, etc.
- Create eventFiltering.ts with reusable filter functions:
  - getVisibleTimedEvents, getVisibleAllDayEvents, getVisibleOverflowEvents
  - filterByVisibleCalendars, filterByHourRange, getEventMinutes
- Update WeekView, DayView, MultiDayView, MonthView to use new utilities
- Remove ~200 lines of duplicated filtering logic

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 21:07:52 +01:00
Till-JS
cdc3cd3ec8 feat(calendar): add birthday integration from contacts service
- Add birthdaysStore to fetch and manage birthdays from contacts API
- Add BirthdayPopover component with contact details and link to contacts app
- Integrate birthdays into WeekView, MonthView, and DayView as all-day events
- Add settings for showBirthdays and showBirthdayAge toggles
- Add reactive $effect in layout to load birthdays when setting is enabled
- Add /contacts/birthdays endpoint to contacts backend
- Configure PUBLIC_CONTACTS_API_URL env variable for calendar app

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 20:49:08 +01:00
Till-JS
4b6a4c73ae feat(contacts): add collapsible alphabet-nav with FAB toggle
- Add isAlphabetNavCollapsed state to filter store with persistence
- Implement FAB button (left of InputBar) to toggle alphabet navigation
- Add dynamic positioning for alphabet-nav based on toolbar state
- Fix ContactsToolbar view-mode-pill positioning to align with FAB
- Refactor ContactsToolbar to use ExpandableToolbar's fixed positioning

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 19:42:38 +01:00
Till-JS
68626227e0 feat(contacts): unify network page toolbar with ExpandableToolbar pattern
Migrate network page from custom floating NetworkControls to the shared
ExpandableToolbar component, matching the homepage toolbar behavior.

Changes:
- Add NetworkToolbar and NetworkToolbarContent components
- Extend networkStore with toolbar state and zoom control methods
- Register graphComponent in store for toolbar zoom access
- Remove floating NetworkControls from network page
- Add toolbar rendering for /network route in layout

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 16:32:59 +01:00
Till-JS
3f27e477dd fix(contacts): improve new contact card and sticky section headers
- Remove subtitle from new contact card for cleaner appearance
- Make new contact card full width to match list items
- Fix sticky section headers position (top: 8px instead of 80px)
- Update alphabet nav styling with glass blur effect
- Add container queries for responsive centering

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 16:31:38 +01:00
Till-JS
d76f2ddcf1 style: format NewContactModal component
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 16:18:00 +01:00
Till-JS
6ce385a42e style: apply formatting fixes from pre-commit hooks
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 16:16:29 +01:00
Till-JS
863f296733 feat(ui): add shared ExpandableToolbar and unify toolbar dropdowns
- Create ExpandableToolbar shared component in shared-ui
- Migrate CalendarToolbar to use shared component (253 → 90 LOC)
- Migrate ContactsToolbar to use shared component (177 → 31 LOC)
- Add portal pattern to FilterBar dropdown for proper positioning
- Unify FilterBar dropdown styling with ContextMenu design
- Add fly transition with offset for smooth dropdown appearance
- Add ContactsToolbarContent for toolbar content separation
- Add filter store for contacts filter state management
- Add NewContactModal component
- Various contacts view improvements

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 16:14:30 +01:00
Till-JS
9eb3f42483 feat(calendar): add week number display to DateStrip
Add optional calendar week (KW) display setting for the DateStrip component.
Week numbers appear above the first day of each week without affecting spacing.

- Add dateStripShowWeekNumbers setting to settings store
- Implement week number label in DateStrip with responsive styling
- Add toggle to DateStripContextMenu for easy access
- Respects weekStartsOn setting for correct week start detection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 15:35:51 +01:00
Till-JS
7bbeb7c13d feat(calendar): improve settings page UI and add default calendar selection
- Add setAsDefault function to calendars store
- Redesign calendar edit form with better input styling
- Use shared SettingsSection and SettingsCard components
- Add sticky pill headers with icons for all sections
- Increase spacing between sections (2rem gap)
- Add plus icon to "Neuer Kalender" button
- Style improvements for consistency with GlobalSettingsSection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 15:22:44 +01:00
Till-JS
4098283350 feat(calendar): filter events by calendar visibility
Events are now filtered based on the calendar visibility setting in
all view components (WeekView, DayView, MultiDayView, MonthView,
AgendaView). When a calendar is hidden via the toolbar toggle, its
events are no longer displayed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 15:22:03 +01:00
Till-JS
b720f64d2f feat(calendar): replace calendar dropdown with horizontal pills
- Replace select dropdown with horizontal scrolling pill buttons in QuickEventOverlay
- Each pill shows colored dot + calendar name for quick visual selection
- Add setAsDefault method to calendars store
- Improve settings page calendar editing with SettingsSection/SettingsCard components

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 15:19:22 +01:00
Till-JS
5190b1449a feat(ui): add ConfirmationPopover component for inline confirmations
- Add new ConfirmationPopover wrapper component in shared-ui
- Uses portal pattern to escape overflow constraints
- Supports danger/warning/info variants with appropriate styling
- Uses elevation-3 for proper layering above overlays
- Integrate in QuickEventOverlay for delete confirmation
- Fix parseISO bug in QuickEventOverlay (was not imported)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 15:09:16 +01:00
Till-JS
cab1905a2c fix(calendar): prevent event resize jump on drag start
Add resizeOffsetMinutes to track the difference between the snapped
click position and the actual event boundary. This prevents events
from immediately jumping when starting to resize via the top or
bottom handles.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-14 15:07:43 +01:00
Till-JS
6bea47d4da refactor(calendar): consolidate code patterns and reduce duplication
- Add useVisibleHours composable for shared hour filtering logic
- Replace 60+ parseISO patterns with centralized toDate() utility
- Remove legacy toast.ts store (keep only Svelte 5 runes version)
- Standardize searchStore from class to object pattern
- Remove debug console.logs from API clients

Affected views: WeekView, MultiDayView, DayView, AgendaView, YearView
Affected components: EventForm, EventDetailModal, QuickEventOverlay, AgendaItem
Affected stores: events, search, toast

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-14 14:39:27 +01:00
Till-JS
c710f43391 feat(calendar): add DateStrip context menu with display settings
- Add context menu for DateStrip with toggle switches for:
  - Moon phases visibility
  - Event indicators visibility
  - Weekday names visibility
  - Weekend highlighting (subtle background color)
  - Month divider lines (spacing always present, line toggleable)
  - Compact mode
- Add glass effect to "Today" button matching PillNav styling
- Add toggle switch support to shared ContextMenu component
- Persist all settings to localStorage with cloud sync support

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 15:06:41 +01:00
Till-JS
2777447ae8 fix(calendar): improve all-day events row positioning and styling
- Move all-day events row below day headers for better visual hierarchy
- Wrap day-headers and all-day-row in sticky container to eliminate gap
- Make all-day events use full available width

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 15:05:11 +01:00
Till-JS
bd89871f8b feat(ui): add elevation system for overlays and modals
- Add 3-level elevation CSS variables to themes.css for all theme variants
- elevation-1: dropdowns, pills (16% in dark mode)
- elevation-2: modals, overlays (20% in dark mode)
- elevation-3: context menus, tooltips (24% in dark mode)
- Update ContextMenu to use elevation-3
- Update Modal to use elevation-2 with theme-aware borders
- Update QuickEventOverlay to use elevation-2 with matching footer
- Update PillTimeRangeSelector dropdown to use elevation-1
- Update ConfirmationModal and FormModal to use theme variables
- Remove shadows from overlay components for cleaner look

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 15:00:33 +01:00