Commit graph

392 commits

Author SHA1 Message Date
Till-JS
adb6d06232 feat(todo): add inline tag creation with color palette
Replace modal-based tag creation with inline form and preview.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 15:59:34 +01:00
Till-JS
a4c986f887 feat(shared-ui): improve nav visibility settings with icons
Pass navItems from app layout for app-specific configuration with icons.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 15:59:08 +01:00
Till-JS
c6b5c2e89a feat(calendar): add agenda view components
Add AgendaFilters and AgendaItem components for enhanced agenda view.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 15:55:48 +01:00
Till-JS
3fc89f565d feat(calendar): add tasks page for todo management
Add dedicated tasks route with navigation entry and todo detail modal.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 15:55:18 +01:00
Till-JS
aa778bc0de feat(calendar): integrate todo tasks into calendar views
Add todo items display in Day/Week/Month views and sidebar section.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 15:53:56 +01:00
Till-JS
9f13bba3d0 refactor(todo): rename Labels to Tags for consistency across apps
- Rename route /labels to /tags and /label/[id] to /tag/[id]
- Rename LabelSelector component to TagSelector
- Update all UI texts from "Labels" to "Tags"
- Update navigation items and references
- Align terminology with Calendar and Contacts apps

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 15:21:33 +01:00
Till-JS
6b30a914f4 fix(todo): improve drag-and-drop reliability with ID-based sync
Use sorted task IDs instead of array reference to detect real changes
from parent. Update lastTaskIds after finalize to prevent $effect from
reverting local DnD state changes.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 15:09:10 +01:00
Till-JS
aa117c51cd feat(command-bar): match priority highlight colors to UI
Priority keywords now show their actual UI colors:
- Dringend (urgent): red #ef4444
- Wichtig (high): orange #f97316
- Normal (medium): yellow #eab308
- Später (low): green #22c55e

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 15:06:22 +01:00
Till-JS
d9626a9d8f feat(shared-ui): add syntax highlighting to CommandBar input
Keywords are now visually highlighted as you type:
- Priority (wichtig, dringend, später, normal): orange/warning
- Tags (#tag): primary color
- References (@project, @calendar): green/success
- Dates (heute, morgen, montag, etc.): purple
- Times (14:00, um 14 Uhr): purple

Uses overlay technique with transparent input over highlighted backdrop.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 15:01:57 +01:00
Till-JS
96916599a6 fix(todo): allow priority keywords without ! prefix
Now supports both:
- "heimfahren wichtig" → priority high
- "heimfahren !wichtig" → priority high

Keywords: später, normal, wichtig, dringend (case-insensitive)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:57:37 +01:00
Till-JS
04b255c161 feat(shared-ui): add unified statistics components with theme support
- Add reusable chart components in shared-ui (StatsGrid, ActivityHeatmap, TrendLineChart, DonutChart, ProgressBars, StatisticsSkeleton)
- Use CSS variables (--primary) for consistent theme-based styling
- Add statistics pages to Calendar and Contacts apps
- Add statistics stores with app-specific metrics
- Fix PriorityDonutChart layout in Todo app (vertical layout with 2x2 legend grid)
- Add date-fns dependency to shared-ui

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:52:29 +01:00
Till-JS
a0306bab7d refactor(todo): rename priority labels for better natural language input
- low → "Später" (was "Niedrig")
- medium → "Normal" (was "Mittel")
- high → "Wichtig" (was "Hoch")
- urgent → "Dringend" (unchanged)

CommandBar syntax now supports: !später, !normal, !wichtig, !dringend
Shortcut syntax still works: !, !!, !!!

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:52:11 +01:00
Till-JS
7591fc00d8 style(shared-ui): refactor CommandBar to use theme CSS variables
Replace hardcoded dark-mode colors with theme-aware CSS variables:
- #1a1a1a → hsl(var(--color-surface-elevated))
- #333 → hsl(var(--color-border))
- #e5e5e5 → hsl(var(--color-foreground))
- #888 → hsl(var(--color-muted-foreground))
- #2a2a2a → hsl(var(--color-surface))
- #3b82f6 → hsl(var(--color-primary))
- #10b981 → hsl(var(--color-success))
- #ef4444 → hsl(var(--color-error))

CommandBar now adapts correctly to light/dark mode and all theme variants.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:40:20 +01:00
Till-JS
56269a5829 feat(todo): add deep validation for DTOs and completed task pagination
Validation:
- Create SubtaskDto with title MinLength/MaxLength, order validation
- Create TaskMetadataDto with typed EffectiveDuration, storyPoints enum
  validation (Fibonacci only), funRating bounds (1-10)
- Use @ValidateNested with @Type() for deep validation in CreateTaskDto

Pagination:
- Add offset parameter and total count to getCompletedTasks()
- Return { tasks, total, hasMore } structure for frontend pagination
- Enforce max limit of 100 to prevent abuse
- Add 3 pagination tests (basic, offset, max enforcement)

Error handling:
- Add try-catch to localStorage operations in +layout.svelte
- Handles private browsing mode and quota exceeded errors gracefully

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:38:11 +01:00
Till-JS
68c7bfb8a7 feat: add unified CommandBar Quick-Create for Calendar and Contacts
Implements the same CommandBar quick-create functionality from Todo
in Calendar and Contacts apps with a shared base parser architecture.

- Add base-parser in shared-utils with common patterns (date, time, tags)
- Refactor task-parser to use base-parser
- Create event-parser for Calendar with duration, location, @calendar
- Create contact-parser for Contacts with email, phone, @company detection
- Integrate Quick-Create into Calendar and Contacts layouts

Natural language syntax:
- Common: heute, morgen, Montag, 15.12., um 14 Uhr, #tags
- Calendar: für 2h, 30 min, in Berlin, @Kalender, ganztägig
- Contacts: @Firma, bei Company, auto email/phone detection

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:37:01 +01:00
Till-JS
4197b61622 fix(todo): add input validation, N+1 fix, and RRULE bounds checking
Security & Validation:
- Add @IsNotEmpty and @MinLength(1) validators to prevent empty inputs
  - CreateTaskDto.title
  - CreateLabelDto.name
  - CreateProjectDto.name
- Add German error messages for validation failures

Performance:
- Fix N+1 query in network.service.ts getGraph()
  - Batch load all task-label relationships in single query
  - Reduces queries from O(n) to O(1) for label fetching

Security:
- Add validateRRule() to prevent DoS via malicious recurrence rules
  - Reject rules > 500 chars
  - Reject rules with > 5000 occurrences in 10 years
  - Prevents hourly/minutely abuse while allowing daily tasks

Cleanup:
- Remove debug console.log from tasks.svelte.ts

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:25:24 +01:00
Till-JS
8b9337ac72 refactor(todo-web): extract reusable form components from TaskEditModal
Extract 5 form components to reduce TaskEditModal from 1220 to 604 lines (51%):

- PrioritySelector: Task priority selection buttons with color indicators
- StorypointsSelector: Fibonacci story point picker (1,2,3,5,8,13,21)
- DurationPicker: Quick duration buttons + custom input for effective time
- FunRatingPicker: 1-10 rating scale with color-coded visual feedback
- LabelSelector: Dropdown for multi-select label assignment

These components are now reusable across other task forms and views.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:18:26 +01:00
Till-JS
306c74e3f9 feat(todo): add quick task creation via CommandBar
- Add natural language parser for task input (date, time, priority, project, labels)
- Extend CommandBar with onCreate/onParseCreate callbacks
- Show create preview with parsed attributes as first option
- Support Cmd/Ctrl+Enter to create directly
- Fix service worker to not intercept Vite dev server requests
- Update deprecated apple-mobile-web-app-capable meta tag

Example: "Meeting morgen 14 Uhr !hoch @Arbeit #wichtig"
→ Creates task with due date, time, priority, project and label

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:15:12 +01:00
Till-JS
937e3c02a0 fix(todo-backend): implement recurrence handling and fix N+1 query
- Implement recurring task handling using rrule library
  - createNextOccurrence() creates next task instance when completing recurring task
  - calculateNextStartDate() maintains offset between start/due dates
  - Copies labels, subtasks (reset), and metadata to new occurrence
  - Respects recurrenceEndDate limit

- Fix N+1 query problem for task labels
  - Replace individual loadTaskLabels() calls with batch loadTaskLabelsBatch()
  - Reduces database queries from O(2n) to O(2) for task lists
  - Uses Maps for O(1) lookups when combining tasks with labels

- Add Jest test coverage (25 tests)
  - CRUD operations, task status changes, recurrence
  - Special queries (inbox, today, completed)
  - Batch loading efficiency verification

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:11:17 +01:00
Till-JS
40d2ea94ec docs(pr-reviews): add code review for PR #14
Add comprehensive code review document analyzing the major update PR:
- Summary of 382 changed files with +39,514/-6,251 lines
- Code quality analysis highlighting strengths and improvements
- Security considerations and authorization patterns
- Recommendations for future PRs and test coverage

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 13:50:42 +01:00
Till-JS
1169ef32a8 docs: update git workflow - keep individual commits
Remove squash strategy, emphasize keeping individual commits for:
- Better context during conflict resolution
- Easier debugging and reverting
- More granular code reviews

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 13:50:42 +01:00
Wuesteon
422fcd6b34 chore(ci): add staging config protection and validation
- Add staging-config-check.yml workflow to validate HTTPS URLs on PRs
- Add CODEOWNERS to require team lead review for critical config files
- Update GIT_WORKFLOW.md with config file protection guidelines

Prevents accidental reversion of staging URLs (HTTP vs HTTPS) during rebases.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 13:48:45 +01:00
Wuesteon
dd0199c083 docs: add comprehensive staging environment setup guide
Documents the complete staging setup including:
- Hetzner VPS and Namecheap DNS configuration
- Caddy reverse proxy with auto-SSL
- SvelteKit runtime environment variable pattern
- Docker Compose configuration
- Domain mappings and URLs
- Troubleshooting guide
- Instructions for adding new apps

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 03:35:28 +01:00
Wuesteon
a5fab2151c fix(staging): use HTTPS staging domains for all client URLs
- Updated all _CLIENT environment variables to use HTTPS staging domains
- Updated CORS_ORIGINS to allow HTTPS staging domains
- Added Caddyfile.staging to version control for documentation

Domain mappings:
- auth.staging.manacore.ai → mana-core-auth:3001
- chat.staging.manacore.ai → chat-web:3000
- chat-api.staging.manacore.ai → chat-backend:3002
- staging.manacore.ai → manacore-web:5173
- calendar.staging.manacore.ai → calendar-web:5186
- calendar-api.staging.manacore.ai → calendar-backend:3016
- clock.staging.manacore.ai → clock-web:5187
- clock-api.staging.manacore.ai → clock-backend:3017
- todo.staging.manacore.ai → todo-web:5188
- todo-api.staging.manacore.ai → todo-backend:3018

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 03:27:46 +01:00
Wuesteon
c97a0d7a6d 🔥 fix(todo-web): remove dead i18n import from network page 2025-12-10 03:06:37 +01:00
Wuesteon
a1524b420c 🐛 fix(docker): add shared-tags package to todo-web and calendar-web Dockerfiles 2025-12-10 02:57:44 +01:00
Nils Weiser
dae8c9dd3c
Merge pull request #14 from Memo-2023/till-dev
feat: major update with network graphs, themes, todo extensions, and more
2025-12-10 02:47:58 +01:00
Wuesteon
99559395e4 fix(docker): add shared-storage package to chat-backend Dockerfile
The chat-backend build failed because the storage module imports from
@manacore/shared-storage which was not being copied into the Docker build
context.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 02:46:57 +01:00
Till-JS
d06df86cf4 docs: add Git workflow guide
Documents the squash-before-PR workflow, conflict resolution strategies,
and best practices for the monorepo development process.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 02:45:04 +01:00
Till-JS
ee42b6cc76 feat: major update with network graphs, themes, todo extensions, and more
## New Features

### Network Graph Visualization (Contacts, Calendar, Todo)
- D3.js force simulation for physics-based layout
- Zoom & pan with mouse/touchpad
- Keyboard shortcuts: +/- zoom, 0 reset, Esc deselect, / search, F focus
- Filtering by tags, company/location/project, connection strength
- Shared components in @manacore/shared-ui

### Central Tags API (mana-core-auth)
- CRUD endpoints for tags
- Schema: tags table with userId, name, color, app
- Shared tag components in @manacore/shared-ui

### Custom Themes System
- Theme editor with live preview and color picker
- Community theme gallery
- Theme sharing (public, unlisted, private)
- Backend API in mana-core-auth

### Todo App Extensions
- Glass-pill design for task input and items
- Settings page with 20+ preferences
- Task edit modal with inline editing
- Statistics page with visualizations
- PWA support with offline capabilities
- Multiple kanban boards

### Contacts App Features
- Duplicate detection
- Photo upload
- Batch operations
- Enhanced favorites page with multiple view modes
- Alphabet view improvements
- Search modal

### Help System
- @manacore/shared-help-content
- @manacore/shared-help-ui
- @manacore/shared-help-types

### Other Features
- Themes page for all apps
- Referral system frontend
- CommandBar (global search)
- Skeleton loaders
- Settings page improvements

## Bug Fixes
- Network graph simulation initialization
- Database schema TEXT for user_id columns (Better Auth compatibility)
- Various styling fixes

## Documentation
- Daily report for 2025-12-10
- CI/CD deployment guide

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 02:37:46 +01:00
Nils Weiser
e84371aa94
Merge pull request #13 from Memo-2023/n-dev
feat: add email service, storage module + fix runtime env vars
2025-12-10 02:31:03 +01:00
Wuesteon
3fa7b027aa feat: add email service and storage module + fix runtime env vars
## Runtime Environment Fix
- Updated all web app hooks.server.ts to use $env/dynamic/private
- This allows Docker containers to inject env vars at runtime
- Updated docker-compose.staging.yml with HTTPS staging domains
- Fixes Mixed Content errors when accessing staging via domains

## New Features
- Added email service to mana-core-auth for sending emails
- Added storage module to chat backend

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 02:22:34 +01:00
Wuesteon
6239cc7749 fix: use $env/dynamic/private for runtime env vars in SvelteKit hooks
- Updated all web app hooks.server.ts to use $env/dynamic/private
  instead of process.env for reading environment variables
- This allows Docker containers to inject env vars at runtime
- Updated docker-compose.staging.yml with HTTPS staging domains
- Fixes Mixed Content errors when accessing staging via domains

Affected apps: clock, chat, calendar, todo, manacore

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 02:20:49 +01:00
Wuesteon
c61dcb8ff9 docs: remove all Coolify references from codebase
Replace Coolify with Docker Compose throughout documentation.
The project never used Coolify - a removal script was created but
never executed, leaving incorrect documentation.

Changes:
- Delete 13 heavily Coolify-focused docs files
- Update ~30 files replacing Coolify → Docker Compose
- Remove obsolete removal script
- Fix deployment references in active and archived projects

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 01:56:38 +01:00
Wuesteon
79b4bb07ed feat(ci): add database migrations step to tagged staging deployments
Adds a new 'migrations' job that runs after deploy to automatically
push schema changes to the database. Features:

- Runs db:push after container deployment
- Retry logic with exponential backoff (3 attempts)
- 2-minute timeout per attempt
- Skipped for web-only projects (manacore)
- Reports migration status in deployment summary

This ensures schema changes are automatically applied when deploying
new versions via tags (e.g., todo-staging-v1.0.0).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 16:40:46 +01:00
Wuesteon
f440ca2a8d fix(db): use TEXT for user_id columns across entire codebase
Better Auth generates non-UUID user IDs (32-char base62 format like
'otUe1YrfENPdHnrF3g1vSBfpkQfambCZ'). Changed all `uuid('user_id')` to
`text('user_id')` in Drizzle schemas for consistency with auth system.

Affected packages/apps:
- apps/calendar, clock, picture, zitare
- games/figgos, voxelava
- packages/manadeck-database, news-database, uload-database
- services/mana-core-auth (feedback schema)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 16:30:51 +01:00
Wuesteon
4e63f3f74b fix(todo): use TEXT for user_id columns (Better Auth compatibility)
Better Auth generates non-UUID user IDs (e.g., otUe1YrfENPdHnrF3g1vSBfpkQfambCZ).
Changed all user_id columns from uuid to text type to prevent
"invalid input syntax for type uuid" errors.

Also documented this requirement in:
- .claude/guidelines/authentication.md (new User ID Format section)
- .claude/guidelines/database.md (User ID Column Type section)
- apps/todo/CLAUDE.md (Database Schema section)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 16:24:22 +01:00
Wuesteon
582c6f58a4 🐛 fix(ci): prevent container name conflict in staging deployment
- Remove stale containers before deploying (fixes 'name already in use' error)
- Always use --force-recreate flag for consistent deployment behavior
- Add troubleshooting docs for container name conflicts
2025-12-09 15:59:06 +01:00
Wuesteon
23c2d85f6e 📝 docs(cicd): add comprehensive deployment guide with CI/CD architecture 2025-12-09 15:02:44 +01:00
Till-JS
a52e518a98 Docs 2025-12-09 14:48:53 +01:00
Till-JS
c88626d26b feat(todo): add multiple kanban boards with task editing features
- Add multiple boards support with board navigation (pill-style)
- Add global board for all tasks
- Board CRUD operations with color/icon customization
- Task detail modal: click on card opens full edit modal
- Inline title editing: double-click on title for quick edit
- Right-click context menu: edit, complete, delete actions
- Responsive board navigation (top on desktop, bottom on mobile)
- Remove flip animations for cleaner board switching

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 14:41:50 +01:00
Till-JS
1ac74c9bf5 feat(todo): add PWA support with offline capabilities
- Add web app manifest with app metadata and shortcuts
- Add service worker with network-first, cache-first, and network-only strategies
- Add offline fallback page with auto-reload on reconnection
- Add SVG placeholder icon for PWA
- Add PWA meta tags for iOS, Android, and Windows support
- Add comprehensive PWA guide documentation (docs/PWA_GUIDE.md)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 14:40:42 +01:00
Till-JS
d45a9db3fc feat(todo): add statistics page with visualizations
Add comprehensive statistics dashboard with:
- StatsOverview: Quick stats cards (completed today/week, active, overdue)
- ActivityHeatmap: GitHub-style contribution graph (6 months)
- WeeklyTrendChart: Line chart showing 4-week completion trend
- PriorityDonutChart: Interactive donut chart for priority breakdown
- ProjectProgressBars: Progress bars per project

Features:
- Custom SVG visualizations (no external chart libraries)
- Glass-pill design matching app aesthetic
- Dark mode support
- Responsive grid layout
- Statistics store with computed derivations
- Navigation link added to PillNav
- PWA service worker registration

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 14:37:44 +01:00
Till-JS
0c2434bd1d feat(todo): add task metadata fields and mana page
- Add storyPoints, effectiveDuration, funRating to TaskMetadata
- Add UI controls in TaskEditModal for new metadata fields
- Add columns/kanban icon to shared-ui PillNavigation
- Add Mana subscription page to todo app
- Update TASK_METADATA.md documentation

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 14:29:56 +01:00
Till-JS
3e35e6a2f4 feat(todo): add task edit modal and fix task loading
- Add TaskEditModal with full task editing (title, description, dates,
  priority, status, project, labels, subtasks, recurrence, notes,
  storypoints, duration, fun rating)
- Add SubtaskList component with drag-and-drop reordering
- Add onEdit prop to TaskItem and TaskList for modal integration
- Fix task loading on homepage by simplifying fetchAllTasks to load
  all tasks without isCompleted filter
- Fix isCompleted query parameter parsing in backend DTO

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 14:04:11 +01:00
Till-JS
863dd621f5 feat(todo): add comprehensive settings page with 20+ preferences
- Add global settings: confirmOnDelete, keyboardShortcutsEnabled
- Create Todo-specific settings store with localStorage persistence
- Add new shared-ui components: SettingsSelect, SettingsNumberInput, SettingsTimeInput
- Redesign settings page with 6 new sections:
  - Task behavior (priority, due time, auto-archive, quick-add project)
  - View & display (default view, compact mode, task counts, subtask progress)
  - Kanban board (card size, labels, WIP limit)
  - Notifications (reminders, daily digest, overdue alerts)
  - Productivity (focus mode, pomodoro, daily goal, streak)
  - Keyboard shortcuts

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:30:02 +01:00
Till-JS
00dadc97d1 docs(todo): add task metadata reference documentation
Document all available task properties including scheduling, priority,
recurrence (RFC 5545 RRULE), subtasks, labels, and metadata fields.
Includes examples and notes on current QuickAdd implementation status.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:04:39 +01:00
Till-JS
b148a72e36 feat(referral): integrate referral system frontend
- Add referral code input to RegisterPage with live validation
- Create ReferralWidget for dashboard with stats, code sharing, and tier display
- Extend authService.signUp to accept optional referralCode parameter
- Add validateReferralCode function to authStore
- Create referrals.ts API service for frontend
- Add 'referral' widget type to dashboard configuration
- Fix drizzle.config.ts to include 'referrals' schema filter

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:01:43 +01:00
Till-JS
37039048f4 feat(todo): redesign task input and items with glass-pill style
- QuickAddTask: Add glass-morphism pill design with date, priority,
  and project pickers. Auto-focus on mount, fixed position on mobile
  above navigation bar with dropdowns opening upward
- TaskItem: Redesign with pill-shaped glass-morphism style, matching
  the navigation components. Includes hover effects, priority dot,
  and inline meta information
- TaskList: Remove redundant spacing since TaskItem has its own margin
- New tasks now default to today's date

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:00:29 +01:00
Till-JS
eb98f8949f fix(settings): complete global settings unification for remaining apps
- ManaDeck: Remove duplicate theme controls, add appId="manadeck"
- Contacts: Remove duplicate theme controls, add appId="contacts"
- Clock: Add userSettings.load() in onMount for server sync

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 12:45:10 +01:00