Commit Graph

13 Commits

Author SHA1 Message Date
Claude ca76bf315c Move drag handle to top center edge of widget card
- Move drag handle out of widgetHeader into widgetCard directly so it
  sits at the top edge of the card, centered horizontally
- Style as a small tab (36x14px bar) protruding from the top border
- Always visible in edit mode for all widget types
- Remove old inline-flex overrides that conflicted with the new layout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 11:54:19 +02:00
Claude 88614b080a Center drag handle at top of all widgets and fix dead edit-mode CSS
- Position drag handle at left: 50% with translateX(-50%) instead of
  left: 6px so it appears centered at the top of every widget
- Fix widget-density.css referencing non-existent class widgetCardEditMode
  (the actual class is widgetEditing), which caused edit-mode header
  padding adjustments to never apply

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 11:45:42 +02:00
Claude d277789aa6 Add admin password reset for users
- Extend PATCH /api/users/[id] to accept optional password field
- Hash with bcrypt (cost 12), invalidate target user's sessions
- Add "Passwort" button and modal dialog in admin user management
- Validate password length (10-128 chars) via existing normalizePassword

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 11:22:11 +02:00
Claude a63c1069dd Fix Docker port mapping: container listens on 3130, not 3000
The PORT env var overrides the internal port to 3130, so the mapping
must forward to 3130 instead of the Dockerfile default 3000.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 11:17:22 +02:00
Claude 0db81aa715 Remove duplicate CSS rules and simplify z-index hierarchy in globals.css
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 11:04:11 +02:00
Claude ec00024615 Merge toolbar-fixes.css and user-theme.css into globals.css
Consolidate two override CSS files into globals.css to reduce the number
of separate stylesheets. Both files were primarily overriding rules
already in globals.css (81% and 55% overlap respectively).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:44:46 +02:00
Claude 2f3e1bff1b Extract shared types to src/types/dashboard.ts
Consolidate duplicated type definitions (User, Settings, Widget,
CalendarEvent, CalendarSource, NoteBoardItem, etc.) into a single
shared types file. Removes ~100 lines of duplicated type code across
page.tsx, settings/page.tsx, NoteWidget.tsx, and CalendarWidget.tsx.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:42:30 +02:00
Claude a22f1baf4d Extract NoteWidget and CalendarWidget from monolithic page.tsx
Split page.tsx from ~2370 to ~1600 lines by extracting:
- NoteWidget: Markdown editor/preview, toolbar, checkbox toggle, all
  formatting helpers (bold, italic, lists, links, code)
- CalendarWidget: Month grid, event tooltips, source selection,
  next-events list, month navigation

Both components are self-contained with their own state where appropriate
(calendar month navigation, local content edits) while receiving data
and callbacks from the parent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:36:06 +02:00
Claude 1ef34445a9 Remove --accept-data-loss from Dockerfile prisma db push
This flag allows Prisma to drop columns/tables when the schema changes,
which risks data loss on production upgrades. Without the flag, Prisma
will error instead of silently destroying data.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:26:55 +02:00
Claude 21953178ff Remove dead CSS: delete unused compact-widgets.css, deduplicate globals.css
- Delete compact-widgets.css (378 lines, never imported anywhere)
- Remove duplicate singleNoteWidget block in globals.css (exact copy-paste)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:26:20 +02:00
Claude ac60e0ef3d Remove hardcoded encryption key from .env.example
The example file contained an actual key value. Replace with empty
placeholder and add key generation instructions to README.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:19:59 +02:00
Claude 91e5902020 Add responsive grid layout for mobile/tablet support
Switch from fixed 48-column grid to responsive breakpoints:
- lg (>=1200px): 48 columns, free positioning (unchanged desktop behavior)
- md (>=900px): 24 columns, vertical compaction
- sm (>=600px): 12 columns, vertical compaction
- xs (<600px): 6 columns, vertical compaction

Widgets automatically reflow and stack on smaller screens instead of
being squished. Layout changes are only persisted from the desktop
breakpoint. Drag/resize editing is desktop-only.

Also adds mobile CSS refinements for topbar, tabs, and workspace padding.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 10:32:59 +02:00
Claude a4051ae132 Initial commit: Personal Dashboard
Next.js 16 dashboard with configurable widgets (favorites, notes, calendar,
clock, calculator, search, domain-check), multi-tab support, user auth,
dark mode, and Docker deployment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 10:02:05 +02:00