Commit Graph

345 Commits

Author SHA1 Message Date
b80531b551 add automatic image renaming when recipe short_name changes
All checks were successful
CI / update (push) Successful in 1m11s
2025-12-26 21:55:04 +01:00
3215c87fad make search component bilingual
All checks were successful
CI / update (push) Successful in 12s
2025-12-26 21:47:34 +01:00
715f86d26d make yeast swapper bilingual with case-insensitive detection 2025-12-26 21:41:37 +01:00
442b2a3145 add bilingual labels to recipe components and fix language switcher
- Translate hardcoded German terms in IngredientsPage and InstructionsPage
- Migrate both components to Svelte 5 runes (, , )
- Fix language switcher to use correct short names via shared store
- Add recipeTranslationStore for recipe-specific language switching
2025-12-26 21:35:59 +01:00
6de3d76504 refactor: unify recipe routes into [recipeLang] slug with full bilingual support
Consolidate /rezepte and /recipes routes into single [recipeLang] structure to eliminate code duplication. All pages now use conditional API routing and reactive labels based on language parameter.

- Merge duplicate route structures into /[recipeLang] with 404 for invalid slugs
- Add English API endpoints for search, favorites, tags, and categories
- Implement language dropdown in header with localStorage persistence
- Convert all pages to use Svelte 5 runes (, , )
- Add German-only redirects (301) for add/edit pages
- Make all view pages (list, detail, filters, search, favorites) fully bilingual
- Remove floating language switcher in favor of header dropdown
2025-12-26 21:19:27 +01:00
36a7fac39a add English translation support for recipes with DeepL integration
- Add embedded translations schema to Recipe model with English support
- Create DeepL translation service with batch translation and change detection
- Build translation approval UI with side-by-side editing for all recipe fields
- Integrate translation workflow into add/edit pages with field comparison
- Create complete English recipe routes at /recipes/* mirroring German structure
- Add language switcher component with hreflang SEO tags
- Support image loading from German short_name for English recipes
- Add English API endpoints for all recipe filters (category, tag, icon, season)
- Include layout with English navigation header for all recipe subroutes
2025-12-26 20:28:43 +01:00
731adda897 improve toggle button alignment and prayer verse spacing
All checks were successful
CI / update (push) Successful in 24s
- Wrap rosary page toggles in centered container with left-aligned items
- Reduce spacing between toggles from 2rem to 0.5rem
- Simplify Toggle component styling (remove centering/margins)
- Add centered wrapper for gebete page toggle
- Add spacing between German verses in monolingual mode for readability
2025-12-26 17:43:31 +01:00
54cc31a03a refactor: extract language toggle into reusable components
All checks were successful
CI / update (push) Successful in 24s
Create Toggle and LanguageToggle components to reduce code duplication
and enable shared state across pages.

- Add Toggle.svelte: Generic iOS-style toggle with customizable accent color
- Add LanguageToggle.svelte: Language-specific toggle with localStorage persistence
- Refactor rosary page to use new toggle components
- Add language toggle to gebete page
- Toggle state persists across both pages via localStorage
- Reduce min-height of Ave Maria decades in monolingual mode (50vh → 30vh)
2025-12-26 17:34:34 +01:00
01a31ae60a add language toggle 2025-12-26 17:29:41 +01:00
ad3c3f2c6d rosary: fix scrolls with snaps, add footnotes indicating making the sign of the cross and bowing your head 2025-12-22 16:00:01 +01:00
c192a05159 fix Elisabeth 2025-12-20 16:52:23 +01:00
aa242a0d8c remove space 2025-12-17 22:04:45 +01:00
29a1de6316 fix Freudenreiche Geheimnisse spelling 2025-12-16 20:19:48 +01:00
40a795a30b refactor: remove verbose debug logging from cospend API endpoints
Removed excessive console.log statements from recurring payments processing and monthly expenses aggregation. Error logging (console.error) is retained for troubleshooting.
2025-12-16 16:40:39 +01:00
acc65c8320 remove mario-kart route 2025-12-16 16:01:25 +01:00
7eff051d8b fix: ensure Bible verses are prerendered and served statically
- Fetch full verse data at build time in +page.server.ts
- Pass preloaded verseData to BibleModal instead of fetching client-side
- Remove onMount fetch logic from BibleModal component
- Add VerseData interface to type definitions
- Update handleCitationClick to pass verseData prop

This ensures all Bible verses are embedded in static HTML during build,
eliminating runtime API calls and improving performance.
2025-12-16 16:01:04 +01:00
2b693d6e83 feat: enhance rosary with interactive Bible citations and improved mystery selection
- Add clickable Bible reference buttons that open modal with full verses
- Create BibleModal component with backdrop blur and styled close button
- Implement build-time data fetching for Bible texts while maintaining reactivity
- Redesign mystery selector with responsive grid (3-in-row/4-in-row/2×2)
- Add "Heutige" badge to indicate today's auto-selected mystery
- Reposition luminous mysteries toggle below mystery selector
- Integrate Bible reference and counter buttons side-by-side
- Restructure Bible API under /api/glaube/bibel/ for better organization
2025-12-16 15:45:40 +01:00
dc0737b7f3 ß -> ss 2025-12-16 13:47:25 +01:00
10cb650548 feat: enhance rosary with final prayer and mystery titles
- Add RosaryFinalPrayer component with Latin and German text
- Display short mystery titles in decade headings (e.g., "5. Gesätz: Kreuzigung")
- Add descriptive titles to initial three Ave Marias (Glaube, Hoffnung, Liebe)
- Add closing cross symbol to signal final sign of the cross
- Mystery titles update dynamically when switching between rosary types
2025-12-16 13:42:38 +01:00
0740b62e94 basic CLAUDE.md for mcp 2025-12-16 11:32:38 +01:00
9482554a85 fix latin rosary secrets to FSSP Ordo Missæ 2025-12-15 22:43:00 +01:00
96c7e504fb fix: remove scale transform on homepage icon hover 2025-12-12 22:55:43 +01:00
4efc592ab8 fix: adjust z-index values to prevent recipe card elements from overlapping header and add button 2025-12-12 22:48:40 +01:00
8a25305893 fix: add width constraints to prevent horizontal overflow on mobile
Added max-width: 100% and overflow-x: hidden to main-content and cospend-main containers to prevent child elements from forcing horizontal scroll on mobile devices.
2025-12-09 14:35:43 +01:00
20cf1e2406 fix: improve mobile responsiveness of cospend page
Reduced padding on mobile screens (max-width: 600px) to prevent horizontal overflow and ensure header spans full width. Updated BarChart, DebtBreakdown, EnhancedBalance components and recent activity section.
2025-12-09 14:31:27 +01:00
cd1cded383 refactor: extract prayers into reusable components in gebete page
Extract inline prayer content into dedicated components in $lib/components/prayers/
for better code organization and reusability. This reduces the gebete page from ~339
to ~95 lines while maintaining the same functionality.
2025-12-08 00:48:10 +01:00
182602d4fe fix Gloria Patri 2025-12-08 00:13:30 +01:00
51597b6ac3 update symbols for rosary 2025-12-07 12:06:56 +01:00
26564475d2 fix: apply crosses font to rosary visualization cross symbol
The cross at the top of the rosary visualization now uses the Crosses font
for consistent typography with other prayer symbols.
2025-12-06 12:23:37 +01:00
76245ee033 feat: add crosses font with WOFF2 support for prayer symbols
- Add crosses.ttf and crosses.woff2 font files to static/fonts/
- Load crosses font globally in app.css with WOFF2 and TTF fallback
- Apply crosses font to italic elements in prayers (christ.css)
- Ensures consistent cross symbol rendering across prayers and rosary
2025-12-06 11:58:02 +01:00
87382e9046 feat: enhance interactive rosary with mobile support and counters
- Add weekday-based mystery auto-selection with luminous mysteries toggle
- Implement iOS-style toggle for including/excluding luminous mysteries
- Add mystery selector buttons with visual feedback
- Create CounterButton component for tracking Ave Maria progress
- Add orange bead highlighting for prayer counting
- Implement auto-scroll to next section after completing decade
- Optimize mobile layout with responsive sidebar (20px-80px width)
- Scale rosary visualization 3.5x on mobile for better visibility
- Fix scroll synchronization accounting for CSS transform scale
- Increase cross size for better visibility
- Extract BenedictusMedal as reusable component
- Add smooth scroll polyfills for better browser compatibility
- Improve SVG interaction with click handlers and scroll locking
2025-12-04 21:13:20 +01:00
abf0af0cc9 refactor: improve rosary prayer styling and add closing prayers
- Add SalveRegina component with full bilingual Latin/German text
- Wrap FatimaGebet in paragraph tags for consistent styling with other prayers
- Combine final prayers (Gloria Patri, Fatima, Salve Regina) into single Abschluss section
- Change Ave Maria titles from German to Latin ('Ave Maria' instead of 'Gegrüßet seist du Maria')
- Add h3 titles to all Gloria Patri prayers for consistency
- Extend SVG viewBox to show more curve area at top and bottom
- Add CSS mask with gradients for smooth fade-out of circular connection curve
- Adjust viewBox dimensions for better bead visibility
2025-12-04 07:43:52 +01:00
c6d9e5efa7 feat: add Benedictus medal and circular connection to rosary
- Add inline Benedictus medal with bar cross and C S S M letters
- Position medal at y=240 after second large bead
- Add bezier curve connecting last bead back to medal area
- Adjust vertical chain to start below cross (y=50) and end at last bead (y=1655)
- Create visual representation of circular rosary structure
2025-12-04 07:24:34 +01:00
1df11e454b feat: implement interactive rosary with bilingual prayer components
- Create reusable prayer components (Paternoster, AveMaria, GloriaPatri, Kreuzzeichen, Credo, FatimaGebet)
- Add bilingual display (Latin/German) with proper styling differentiation
- Implement scrolling SVG visualization that syncs with prayers
- Add mystery highlighting for Ave Maria (Latin in red, German in orange)
- Separate Gesätze (decades) from transition prayers (Gloria, Fatima, Paternoster)
- Complete full Nicene Creed text
- Split initial three Ave Marias into individual sections (Faith, Hope, Love)
- Add Latin versions for all rosary mysteries (joyful, sorrowful, glorious, luminous)
- Make visualization beads larger and remove container styling for seamless background integration
- Fix SVG coordinate-to-pixel conversion for accurate scroll synchronization
2025-12-04 00:07:02 +01:00
87bf880c0b fix: make nested links clickable in recipe cards
Use the card wrapper pattern with absolute positioned main link and elevated z-index for nested links.
This maintains proper HTML semantics (no nested <a> tags) while allowing category, icon, and tag links to be clickable.

- Replace outer <a> wrapper with <div>
- Add invisible overlay link for main card click area (z-index: 1)
- Elevate nested links (category, tags, icon) with z-index: 10
- Maintain all existing hover effects and accessibility
- Keep semantic HTML structure without nesting <a> tags
2025-11-18 15:29:33 +01:00
10ee2e81ae refactor: consolidate formatting utilities and add testing infrastructure
- Replace 8 duplicate formatCurrency functions with shared utility
- Add comprehensive formatter utilities (currency, date, number, etc.)
- Set up Vitest for unit testing with 38 passing tests
- Set up Playwright for E2E testing
- Consolidate database connection to single source (src/utils/db.ts)
- Add auth middleware helpers to reduce code duplication
- Fix display bug: remove spurious minus sign in recent activity amounts
- Add path aliases for cleaner imports ($utils, $models)
- Add project documentation (CODEMAP.md, REFACTORING_PLAN.md)

Test coverage: 38 unit tests passing
Build: successful with no breaking changes
2025-11-18 15:24:22 +01:00
d09dc2dfed feat: add interactive category filtering to cospend bar chart
Allow users to click on bar segments or legend items to filter to a single category. Clicking again restores all categories. Totals displayed above bars now dynamically update to reflect only visible categories.
2025-11-13 13:14:45 +01:00
773def5c87 fix: remove view transitions to ensure consistent behavior across environments
- Remove View Transition API from layout to eliminate dev/production inconsistency
- Fix nested links in Card component (category, tags, icon buttons now clickable)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-02 14:34:20 +02:00
b9e9a8724e fix nested links not working on recipe cards 2025-10-02 14:30:31 +02:00
ede45816e6 feat: enable edit buttons for all payments and remove delete functionality
- Remove createdBy restriction from edit buttons in PaymentModal and view pages
- All authenticated users can now edit any payment (including executed recurring payments)
- Remove delete payment functionality from both modal and view pages
- Replace inline edit button with consistent EditButton component in PaymentModal
- Clean up unused delete-related code and variables

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 20:43:48 +02:00
de20bdb82a fix: improve cospend mobile layout and fix settlement rounding
- Fix settlement amounts rounding to 2 decimal places in debts API
- Improve dashboard mobile responsiveness with tighter gaps and padding
- Optimize settlement layout to stay horizontal on mobile with smaller profile pictures
- Fix payments page mobile layout with better breakpoints and reduced min-width
- Enhance modal behavior on mobile devices with proper responsive design
- Reduce container max-width from 1400px to 1200px for better mobile fitting

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 20:16:51 +02:00
90ea22497f feat: add multi-currency support to cospend payments
- Add ExchangeRate model for currency conversion tracking
- Implement currency utility functions for formatting and conversion
- Add exchange rates API endpoint with caching and fallback rates
- Update Payment and RecurringPayment models to support multiple currencies
- Enhanced payment forms with currency selection and conversion display
- Update split method selector with better currency handling
- Add currency-aware payment display and balance calculations
- Support for EUR, USD, GBP, and CHF with automatic exchange rate fetching

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-14 19:54:31 +02:00
ac84de43e1 fix: implement persistent MongoDB connections and resolve race conditions
- Replace connect/disconnect pattern with persistent connection pool
- Add explicit database initialization on server startup
- Remove all dbDisconnect() calls from API endpoints to prevent race conditions
- Fix MongoNotConnectedError when scheduler runs concurrently with API requests
- Add connection pooling with proper MongoDB driver options
- Add safety check for recipes array in favorites utility

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-14 19:53:55 +02:00
d1f9af1444 cospend: graph only shows hovered month expenses 2025-09-12 23:37:39 +02:00
972c9b8d9b fix: use event.fetch instead of global fetch for server-side requests
Updated both hooks.server.ts and bible-quote API to properly use event.fetch
for relative URLs in server-side code, following SvelteKit best practices.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 23:17:18 +02:00
bfc9c75687 error page: prettier + random bible verse 2025-09-12 23:11:57 +02:00
8eb28c1dec bible api: use SvelteKit static file handling instead of fs
Replace filesystem access with fetch request to leverage SvelteKit's
built-in static file serving for the allioli.tsv bible data.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 22:54:25 +02:00
878ea724c7 error page: prettier + random bible verse 2025-09-12 22:49:32 +02:00
0667fedf1e cospend: require group membership for access 2025-09-12 22:27:21 +02:00
5f381646c6 Enhance cospend monthly expenses chart with improved UX
- Add monthly total labels above each bar showing cumulative expense amounts
- Improve chart styling: white labels, larger fonts, clean flat tooltip design
- Hide Y-axis ticks and grid lines for cleaner appearance
- Capitalize category names in legend and tooltips
- Show only hovered category in tooltip instead of all categories
- Trim empty months from start of data for users with limited history
- Create responsive layout: balance and chart side-by-side on wide screens
- Increase max width to 1400px for dashboard while keeping recent activity at 800px
- Filter out settlements from monthly expenses view

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 22:21:22 +02:00