Commit Graph

130 Commits

Author SHA1 Message Date
c7aa464c8c Add profile pictures and improve modal animations
- Add ProfilePicture component with fallback to user initials
- Integrate profile pictures in dashboard recent activity dialog layout
- Add profile pictures to payments list and split details
- Fix modal animation overshoot by using fixed positioning and smooth slide-in
- Add fade-in animation for modal content with proper sequencing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-08 21:50:37 +02:00
9a3b2ad134 Add complete Cospend expense sharing feature
- Add MongoDB models for Payment and PaymentSplit with proper splitting logic
- Implement API routes for CRUD operations and balance calculations
- Create dashboard with balance overview and recent activity
- Add payment creation form with file upload (using $IMAGE_DIR)
- Implement shallow routing with modal side panel for payment details
- Support multiple split methods: equal, full payment, custom proportions
- Add responsive design for desktop and mobile
- Integrate with existing Authentik authentication

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-08 21:15:45 +02:00
f2544a1413 Improve accessibility and fix ARIA warnings
- Add proper aria-labels to all interactive buttons
- Convert div click handlers to semantic button elements with proper styling
- Add ARIA roles to SVG circle elements in rosenkranz interface
- Add role="button" and aria-label to tag removal elements
- Suppress inappropriate accessibility warning for image zoom functionality

All build accessibility warnings have been resolved.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 19:39:55 +02:00
a582bac94d Add JSON-LD structured data for recipes
- Create recipeJsonLd.ts function with Schema.org compliant Recipe markup
- Add API endpoint at /api/rezepte/json-ld/[name] for on-demand generation
- Include proper ISO 8601 time parsing for German formats
- Add rel="alternate" link in recipe pages for discoverability
- Set author to Alexander Bocken with proper Person type
- Include caching headers for performance optimization

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 18:57:47 +02:00
1c2a9502ad Implement progressive enhancement for favorites button
- Add server-side form handling for favorites without JavaScript
- Create toggleFavorite server action that uses existing API endpoint
- Update FavoriteButton component with form-based fallback
- Maintain JavaScript enhancement for smoother UX when available
- Use server-side fetch to reuse centralized favorites API logic

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 17:05:07 +02:00
bccab68d51 Fix Card component z-index and favorite indicator positioning
- Reduce icon z-index from 10 to 5 to prevent overlap with header
- Adjust favorite indicator position from -0.5em to 0.1em for better spacing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 16:49:04 +02:00
9d9e2b6af6 Implement progressive enhancement for yeast swapper with state persistence
- Add server-side form handling for yeast swapping without JavaScript
- Implement toggle-based URL parameter system (y0=1, y1=1) for clean URLs
- Add server action to toggle yeast flags and preserve all URL state
- Update multiplier forms to preserve yeast toggle states across submissions
- Calculate yeast conversions server-side from original recipe data
- Fix {{multiplier}} placeholder replacement to handle non-numeric amounts
- Enable multiple independent yeast swappers with full state preservation
- Maintain perfect progressive enhancement: works with and without JS

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 16:08:29 +02:00
b05dcf9e3b Implement progressive enhancement for universal search with context-aware filtering
Add comprehensive search solution that works across all recipe pages with proper fallbacks. Features include universal API endpoint, context-aware filtering (category/tag/icon/season/favorites), and progressive enhancement with form submission fallback for no-JS users.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 14:53:59 +02:00
65aee45555 Implement progressive enhancement for recipe multiplier with form fallbacks
Add form-based multiplier controls that work without JavaScript while providing enhanced UX when JS is available. Fixed fraction display and NaN flash issues.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 14:34:43 +02:00
cce8e5df2c Add yeast type swapper with intelligent unit conversion
- Implements swap button for Frischhefe/Trockenhefe ingredients
- Supports 3:1 fresh-to-dry yeast conversion ratio
- Handles special Prise unit conversions (1 Prise = 1 Prise or 1g)
- Accounts for recipe multipliers (0.5x, 1x, 1.5x, 2x, 3x, custom)
- Automatic unit switching between grams and Prise for practical cooking

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 12:57:28 +02:00
fe960f0a9d Revert "Implement secure client-side favorites loading to fix nginx 502 issues"
This reverts commit 48b94e3aef.
2025-09-04 12:26:27 +02:00
5c28ccea49 Implement secure client-side favorites loading to fix nginx 502 issues
- Create client-side favorites store with secure authentication
- Remove server-side favorites fetching that caused nginx routing issues
- Update FavoriteButton to properly handle short_name/ObjectId relationship
- Use existing /api/rezepte/favorites/check endpoint for status checking
- Maintain security by requiring authentication for all favorites operations

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 12:20:08 +02:00
32bf6ccbc5 Revert "Fix server-side favorites fetching for production nginx setup"
This reverts commit bda30eb42d.
2025-09-04 12:13:08 +02:00
f17d8b2098 Fix server-side favorites fetching for production nginx setup
- Use absolute URLs for internal server-side fetch calls to bypass nginx routing issues
- Add debugging logs to favorites loading process
- Temporarily disable CSRF protection for local testing
- Clean up page server load function

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-04 12:09:28 +02:00
82c71ad136 Add favorite indicators to recipe cards and improve favorites UI
- Add heart emoji indicators to recipe cards (top-left positioning)
- Show favorites across all recipe list pages (season, category, icon, tag)
- Create favorites utility functions for server-side data merging
- Convert client-side load files to server-side for session access
- Redesign favorite button with emoji hearts (🖤/❤️) and bottom-right positioning
- Fix randomizer array mutation issue causing card display glitches
- Implement consistent favorite indicators with drop shadows for visibility

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 20:45:28 +02:00
cd54ad0498 Implement user favorites feature for recipes
- Add UserFavorites MongoDB model with ObjectId references
- Create authenticated API endpoints for favorites management
- Add Heart icon and FavoriteButton components with toggle functionality
- Display favorite button below recipe tags for logged-in users
- Add Favoriten navigation link (visible only when authenticated)
- Create favorites page with grid layout and search functionality
- Store favorites by MongoDB ObjectId for data integrity

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 20:18:57 +02:00
605a2e0509 Implement better auth flow with direct Authentik redirects
- Create custom /login and /logout endpoints that bypass Auth.js default pages
- Use auto-submitting forms to POST to Auth.js with proper form data
- Update UserHeader links to use new custom endpoints (/login, /logout)
- Remove old login/logout page server files that are no longer needed
- Login flow: /login → auto-submit form → /auth/signin/authentik → Authentik
- Logout flow: /logout → auto-submit form → /auth/signout → Authentik logout
- Provides seamless user experience with loading spinners during redirects
- Maintains all Auth.js security features and session management
- Eliminates intermediate Auth.js pages for cleaner auth flow

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 21:58:55 +02:00
36bdb0d65c Card.svelte: fix top-right icon offset 2025-08-31 21:09:34 +02:00
22ddee4942 Fix Card.svelte icon positioning and styling
- Restored icon to top-right position with absolute positioning
- Added proper circular background with nord0 color
- Set correct dimensions (50px × 50px) and border-radius for circular shape
- Added shadow and hover effects to match original design
- Fixed z-index to ensure icon appears above other elements
- Maintained shake animation on card hover for visual feedback

The icon now appears correctly in the top-right corner with a round
background instead of being positioned at bottom center with transparent
background.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 21:07:10 +02:00
c43bf2d441 Add missing Payment model and database connection utilities
- Created Payment model with mongoose schema for cospend functionality
- Added database connection utilities with proper connection caching
- Fixed build errors related to missing imports
- Build now succeeds and dev server starts correctly

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 21:03:15 +02:00
c8d879d4f9 Upgrade SvelteKit 4 to SvelteKit 5 with latest dependencies
Major changes:
- Upgraded Svelte from v4 to v5.38.6 (latest stable)
- Upgraded SvelteKit from v2.0.0 to v2.37.0 (latest)
- Upgraded Vite from v5 to v7.1.3 for better performance
- Updated all related packages to latest compatible versions
- Added pnpm as package manager with packageManager field
- Fixed Card.svelte nested anchor tags issue by converting inner links to buttons
- Updated component styling to maintain visual consistency
- Removed incompatible svelte-preprocess-import-assets package

Dependencies updated:
- @sveltejs/kit: ^2.0.0 → ^2.37.0
- @sveltejs/vite-plugin-svelte: ^3.0.0 → ^6.1.3
- svelte: ^4.0.0 → ^5.38.6
- vite: ^5.0.0 → ^7.1.3
- @sveltejs/adapter-auto: ^3.0.0 → ^6.1.0
- @sveltejs/adapter-node: ^2.0.0 → ^5.0.0
- svelte-check: ^3.4.6 → ^4.0.0
- mongoose: ^7.4.0 → ^8.0.0
- sharp: ^0.32.3 → ^0.33.0

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 21:01:19 +02:00
f69310dfec render HTML in Recipe Card description 2024-10-22 17:29:29 +02:00
af2763e64f Render html also in edit panels 2024-03-02 12:38:03 +01:00
e725a0430a eager image loading for top recipes on page 2024-02-25 12:54:30 +01:00
0f0321a42d specify emoji font for icons 2024-02-25 11:15:06 +01:00
913e76ab9c update multiplier on navgation 2024-02-21 13:47:30 +01:00
0275ddb596 apply ingredient amount to multiplier 2024-02-21 13:26:27 +01:00
03a25458e3 attempt to fix rand_array() 2024-02-21 10:29:17 +01:00
683967932b "fix" symbol in header on mobile 2024-02-20 20:27:33 +01:00
8d62bc4213 simplify boolean assignemnt 2024-02-19 23:22:29 +01:00
968c170cba remove unnecesarry deps since moving to authjs 2024-02-19 23:17:16 +01:00
d1587a3672 move globals out of component into css file 2024-02-18 23:34:14 +01:00
5382ed1091 do not display placeholder image in edit/adding recipe 2024-02-18 19:58:20 +01:00
5eede48406 first attempt in disabling image coursel on redirect 2024-02-18 19:53:47 +01:00
25af1f9145 add link styling 2024-02-18 15:09:25 +01:00
5b34fa7a9c first attempt of img cache invalidation 2024-02-18 14:43:42 +01:00
779dc96967 Correctly display user with pfp if available 2024-02-15 04:28:31 +01:00
ca62e48f7b initial OIDC setup 2024-02-14 16:07:55 +01:00
6aed4baf22 add forgotten css 2024-02-01 17:17:20 +01:00
42a8b607a1 add initial Glaube section 2024-02-01 17:15:51 +01:00
8029c8bbee only margin-right in MediaScroller 2024-01-24 11:09:54 +01:00
e37842114a Search: enable click only result 2024-01-22 16:04:58 +01:00
d5edf25393 fix weird shift in Cards due to double insertion of <a> tag on server 2024-01-22 15:09:08 +01:00
f6887af97a Card.svelte: placeholder image also blurred if JS disabled 2024-01-22 14:53:26 +01:00
74b9de25fb fix Search 2024-01-22 14:47:22 +01:00
df4a3763c1 no blurred image if JS disabled 2024-01-22 14:43:52 +01:00
7dcd495e0c Card is now fully loaded in itself
No longer do we have this weird shift of the description to the right of
the Card until some magical JS is loaded to fix it.
Not yet perfect: The now wrapping a-tag is for some reason still weirdly
sent to client until some js cleans it up. Currently results in a too
large gap which is fixed by local js.

Still TODO: do not blur images if no js present
2024-01-22 14:13:56 +01:00
8f53f66286 Card.svelte: get rid of :has() and Firefox-specific hacks 2024-01-22 12:40:55 +01:00
895c5c5157 slightly improve js-free Card rendering 2024-01-21 10:34:23 +01:00
3ebd48f480 fix Login/PFP falling below viewport 2024-01-20 17:49:20 +01:00