Commit Graph

238 Commits

Author SHA1 Message Date
dwindown
23f8f70c83 Remove attendees from calendar event to work without Domain-Wide Delegation
- Service accounts require Domain-Wide Delegation to invite attendees
- Removed attendees array, sendUpdates, and guest permissions
- Client email still included in event description
- Google Meet link will still be generated successfully
- Can re-enable attendees later if Domain-Wide Delegation is configured
2025-12-23 11:37:53 +07:00
dwindown
bc8bc1159d Fix JWT generation using native Deno Web Crypto API
- Remove external jose library dependency that was causing import errors
- Use native crypto.subtle API available in Deno
- Manual base64url encoding for JWT header, payload, and signature
- Use RSASSA-PKCS1-v1_5 with SHA-256 for RS256 algorithm
- Remove cat heredoc wrapper from file
2025-12-23 11:25:20 +07:00
dwindown
43305a2f16 Rewrite JWT generation using manual construction and Web Crypto API
- Build JWT header and payload manually for exact format control
- Use lower-level importKey/sign from Web Crypto API
- Use RSASSA-PKCS1-v1_5 algorithm directly (RSA+SHA256 = RS256)
- Manual base64url encoding for URL-safe tokens
- Add debug logging to trace JWT generation
- Avoids SignJWT abstraction that was causing algorithm errors
2025-12-23 11:17:55 +07:00
dwindown
0ad50f4b6b Remove keyId from importPKCS8 options
- Remove keyId parameter from importPKCS8 call
- Keep kid in protected header for JWT
- Fix 'Invalid or unsupported alg value' error

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 11:11:57 +07:00
dwindown
1f998c2549 Fix private key import for JWT signing
- Use importPKCS8 to convert private key string to CryptoKey
- Pass CryptoKey to SignJWT.sign() instead of string
- Fix 'Key for RS256 algorithm must be CryptoKey' error

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 11:08:36 +07:00
dwindown
fa1064daac Fix JWT signing for Google Calendar authentication
- Change from jwt.sign() to SignJWT class
- Use proper jose library SignJWT API for Deno
- Fix 'Cannot read properties of undefined' error

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 11:04:40 +07:00
dwindown
ee019ea767 Fix column name mismatch for service account JSON
- Change integration_google_service_account_json to google_service_account_json
- Matches actual database column name
- Remove schema cache workaround since column name now matches
- Update all frontend references to use correct column name

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 10:57:09 +07:00
dwindown
7c2a084b3e Add schema cache fallback for service account JSON
- Add fallback RPC method when PostgREST schema cache fails
- Save service account JSON separately via raw SQL
- Show warning message if manual save needed

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 10:52:00 +07:00
dwindown
00e6ef17d6 Add create-google-meet-event to config.toml and deploy
- Add function configuration to supabase/config.toml
- Successfully deploy via deploy-edge-functions.sh

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 10:36:59 +07:00
dwindown
0a3aca7cbc Add deployment helpers and environment config
- Add manual deployment instructions for self-hosted Supabase
- Add schema refresh SQL scripts
- Add deployment helper scripts
- Add Supabase environment configuration

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 10:26:06 +07:00
dwindown
6e411b160a Fix edge function and add to deployment script
- Update create-google-meet-event with improved JWT handling
- Fix jose library import and token signing
- Add better error logging
- Include create-google-meet-event in deployment script

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 09:58:12 +07:00
dwindown
631dc9a083 Add Google Calendar integration via Supabase Edge Functions
- Create new create-google-meet-event edge function
- Use service account authentication (no OAuth needed)
- Add google_service_account_json field to platform_settings
- Add admin UI for service account JSON configuration
- Include test connection button in Integrasi tab
- Add comprehensive setup documentation
- Keep n8n workflows as alternative option

Features:
- Direct Google Calendar API integration
- JWT authentication with service account
- Auto-create Google Meet links
- No external dependencies needed
- Simple configuration via admin panel

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 01:32:23 +07:00
dwindown
dfda71053c Add n8n test mode toggle and edge function improvements
- Add test/production toggle for n8n webhook URLs in IntegrasiTab
- Update create-meet-link function to use database test_mode setting
- Add send-email-v2 edge function for Mailketing API integration
- Update daily-reminders and send-consultation-reminder to use send-email-v2
- Remove deprecated branding field from BrandingTab
- Update domain references from hub.dwindi.com to with.dwindi.com
- Add environment variables for Coolify deployment
- Add comprehensive edge function test script
- Update payment flow redirect to order detail page

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 00:24:40 +07:00
dwindown
f1cc2ba3f7 Fix checkout flow to redirect to specific order detail page
🔄 Better UX Flow:
- After successful payment: redirect to /orders/{order_id} instead of /access
- This shows the specific order details where users can see their purchase
- Users can then proceed to payment if needed or access their content

📧 Updated Shortcodes:
- {thank_you_page} now uses dynamic URL pattern: /orders/{order_id}
- {order_id} will be replaced with actual order ID by ShortcodeProcessor
- Added {thank_you_page} to order_created and payment_reminder templates

🎯 User Journey:
1. User receives email with payment link
2. After successful payment → redirected to specific order detail page
3. If not logged in → redirects to login, then back to order detail
4. Order detail page shows payment status and access information

Much better user experience than generic dashboard redirect!

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 22:40:08 +07:00
dwindown
7fbc7c1302 Fix shortcode URLs to use actual application routes
🔧 Fixed URLs:
- {thank_you_page} now points to actual /access route (Member Access page)
- {payment_link} now points to /checkout route instead of dummy URL

 Based on real app flow analysis:
- After successful payment, users are redirected to /access (MemberAccess.tsx)
- Payment initiation happens through /checkout page
- These routes are verified in App.tsx routing configuration

This ensures email templates use real, functional URLs that match the actual application flow.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 22:32:53 +07:00
dwindown
7244433e12 Improve shortcode UI and add payment link shortcodes
 UI Improvements:
- Completely redesigned shortcode display with clean categorization
- Added collapsible section for all available shortcodes
- Used emoji icons for better visual organization
- Improved color coding and typography
- Added "Used in this template" section with visual distinction

 New Shortcodes:
- Added {payment_link} for direct payment links in emails
- Added {thank_you_page} for public thank you page access
- Updated relevant templates to include new payment shortcodes

🎯 Key Features:
- Shortcodes organized by category (User, Order, Product, Access, etc.)
- Visual hierarchy with proper spacing and borders
- Hover effects and smooth transitions
- Better readability with proper contrast

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 22:17:51 +07:00
dwindown
3f8cd7937a Fix JavaScript error in EmailTemplatePreview
- Fix "nama is not defined" error by properly escaping shortcode text
- Wrap template literals with backticks in JSX to prevent variable interpretation
- This prevents shortcode braces from being treated as JavaScript variables

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 22:07:54 +07:00
dwindown
204218c4e7 Fix database constraint error in template seeding
- Replace insert() with upsert() to handle existing templates
- Add onConflict: 'key' to update duplicates instead of failing
- This resolves "duplicate key value violates unique constraint" error
- Templates will now be properly updated/seeded on first visit

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 21:57:00 +07:00
dwindown
78e7b946ac Fix shortcode organization and add template debugging
🎯 **Shortcode Organization:**
- Replace overwhelming all-shortcodes display with per-template relevant shortcodes
- Each notification type now shows only shortcodes that make sense for that context
- Examples:
  - Payment templates: order info, amounts, payment details
  - Access templates: login credentials, access links
  - Consulting templates: meeting details, consultation topics
  - Event templates: event info, schedules, locations

🐛 **Template Content Debugging:**
- Auto-detect templates with empty content and force reseed
- Add "Reset Template Default" button for manual debugging
- Enhanced console logging for template loading issues
- Force reseed functionality to delete and recreate templates

 **UI Improvements:**
- Remove unused Textarea import
- Cleaner shortcode display within each template card
- Better user experience with focused, relevant information

🔧 **Debug Features:**
- Check for empty email_subject or email_body_html fields
- Automatic content repair when empty templates are detected
- Manual reset option for troubleshooting
- Detailed console logging for development

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 21:38:47 +07:00
dwindown
edca7205ef Improve shortcode UI display in NotifikasiTab and EmailTemplatePreview
 Enhanced shortcode organization and display:

**NotifikasiTab improvements:**
- Organized shortcodes into 9 categories with color-coded badges
- User Info (blue), Order Info (green), Product Info (yellow), Access Info (purple)
- Consulting (orange), Event Info (pink), Bootcamp Info (indigo), Company Info (gray), Payment Info (red)
- Added scrollable container with max-height for better UX
- Better visual hierarchy with category headers

**EmailTemplatePreview improvements:**
- Scrollable shortcode list with grid layout (2-3 columns)
- Show only shortcodes used in current template
- Add "All Available Shortcodes" summary section
- Improved visual organization with consistent styling

🎨 UI/UX Benefits:
- Easier to find relevant shortcodes by category
- Visual distinction between different data types
- Better space utilization with scrollable areas
- More informative and scannable layout

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 21:18:30 +07:00
dwindown
0668ed22a7 Fix email template preview UX and add comprehensive shortcodes
1. Remove duplicate close button in preview modal
- Removed extra X button in DialogHeader since Dialog already has close functionality

2. Fix test email to include master layout
- Process shortcodes and render with master template before sending
- Import EmailTemplateRenderer and ShortcodeProcessor in sendTestEmail
- Send complete HTML email with header, footer, and styling applied

3. Add comprehensive table shortcodes for all notification types
- User info: {nama}, {email}
- Order info: {order_id}, {tanggal_pesanan}, {total}, {metode_pembayaran}, {status_pesanan}, {invoice_url}
- Product info: {produk}, {kategori_produk}, {harga_produk}, {deskripsi_produk}
- Access info: {link_akses}, {username_akses}, {password_akses}, {kadaluarsa_akses}
- Consulting: {tanggal_konsultasi}, {jam_konsultasi}, {durasi_konsultasi}, {jenis_konsultasi}, {topik_konsultasi}
- Event: {judul_event}, {tanggal_event}, {jam_event}, {link_event}, {lokasi_event}, {kapasitas_event}
- Bootcamp: {judul_bootcamp}, {progres_bootcamp}, {modul_selesai}, {modul_selanjutnya}, {link_progress}
- Company: {nama_perusahaan}, {website_perusahaan}, {email_support}, {telepon_support}
- Payment: {bank_tujuan}, {nomor_rekening}, {atas_nama}, {jumlah_pembayaran}, {batas_pembayaran}

4. Improve shortcode UI display
- Scrollable shortcode list with better organization
- Show available shortcodes summary
- Categorize shortcodes by type (User, Orders, Products, etc.)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 21:13:09 +07:00
dwindown
4bb6e8d08c Fix null reference error in EmailTemplatePreview
- Add conditional rendering for previewTemplate to prevent null reference
- Add null checks in EmailTemplatePreview component for template properties
- Fix shortcodes filtering to handle null template properties
- Remove non-null assertion operator and use proper conditional rendering

Fixes: "Cannot read properties of null (reading 'email_subject')" error

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 21:01:04 +07:00
dwindown
1982033ac4 Fix email template preview UX and debug template loading
- Convert EmailTemplatePreview from bottom card to modal Dialog component
- Replace problematic bottom preview with clean modal popup
- Add proper modal state management (open/close handlers)
- Debug template loading with comprehensive error handling and logging
- Add user feedback for template seeding and loading errors
- Improve fetchData() and seedTemplates() with try-catch blocks
- Add console logging for debugging template initialization

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 20:57:33 +07:00
dwindown
f743a79674 Fix build: remove problematic table imports temporarily
- Removed custom Tiptap table extensions that were causing import errors
- Kept EmailButton and OTPBox components working
- Table functionality will need proper Tiptap table extension setup later
- Build now completes successfully for deployment

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 20:44:46 +07:00
dwindown
37680bd25b Polish email template system with UX improvements
- Consolidated multiple preview canvases into single shared preview with "Simpan & Preview" button
- Fixed double scrollbar issue in preview box by using fixed height container and scrolling=no
- Added modular email components to Tiptap editor:
  * EmailButton with URL, text, and full-width options
  * OTPBox with monospace font and dashed border styling
  * EmailTable with brutalist styling and proper header support
- Generated contextual initial email content for all template types:
  * Payment success with professional details table
  * Access granted with celebration styling and prominent CTA
  * Order created with clear next steps and status information
  * Payment reminder with urgent styling and warning alerts
  * Consulting scheduled with session details and preparation tips
  * Event reminder with high-energy countdown and call-to-action
  * Bootcamp progress with motivational progress tracking
- Enhanced RichTextEditor toolbar with email component buttons and visual separators
- Improved NotifikasiTab with streamlined preview workflow

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 20:35:50 +07:00
dwindown
efc085e231 Implement modular email template system with preview and testing
- Create modular EmailTemplateRenderer with master shell and content separation
- Build reusable email components library (buttons, alerts, OTP boxes, etc.)
- Add EmailTemplatePreview component with master/content preview modes
- Implement test email functionality for each notification template
- Update NotifikasiTab to use new preview system with shortcode processing
- Add dummy shortcode data for testing (nama, email, order_id, etc.)
- Maintain design consistency between web and email

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 19:56:23 +07:00
dwindown
6e7b8eea1c Fix Integrasi tab layout and add save button
- Make email test inputs 50/50 with flex-1 classes
- Add save button back to Integrasi tab
- Improve button styling with border-top-2 for better separation
- Update save button text to 'Simpan Semua Pengaturan'

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 19:18:49 +07:00
dwindown
9911313597 Fix missing Input import in NotifikasiTab
- Add Input import back to NotifikasiTab component
- Input components are used for email subject and webhook URL fields

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 19:16:38 +07:00
dwindown
3c902aaef5 Move email provider settings to Integrasi tab and fix database schema
- Move Mailketing API configuration from NotifikasiTab to IntegrasiTab
- Remove email provider settings from NotifikasiTab, add info card
- Update IntegrasiTab to save email settings to notification_settings table
- Add test email functionality to Integrasi tab
- Fix database schema compatibility with new email settings
- Remove GitHub remote, keep only Gitea remote
- Clean up unused imports and variables

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 19:13:01 +07:00
dwindown
7f918374f4 Replace SMTP configuration with Mailketing API
- Remove SMTP host/port/username/TLS configuration
- Add Mailkening API token configuration
- Update email provider dropdown (Mailketing only)
- Update test email function to use Mailketing API
- Update help text and validation

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 18:57:55 +07:00
dwindown
1fe0aa0b96 Fix admin panel to use working email function (send-email-v2)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-22 18:41:45 +07:00
dwindown
75f8329e8e Fix port mismatch for Caddy reverse proxy
- Change application port from 3000 to 80
- Match Caddy's upstream proxy configuration
- Update healthcheck to use port 80
- Fix 502 gateway errors

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 23:55:56 +07:00
dwindown
967dd206fa Add healthcheck support to Dockerfile
- Install curl for health check compatibility
- Add built-in Docker healthcheck with proper timing
- Include start-period to allow server to initialize
- Fix Coolify deployment issues with health checks

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 23:40:06 +07:00
dwindown
7a493d0e9c Update Dockerfile for Coolify compatibility
- Replace Nginx with serve package for SPA compatibility
- Use port 3000 to match Coolify's default configuration
- Works better with Coolify's Caddy reverse proxy setup

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 23:26:46 +07:00
dwindown
4b5dfc6557 Configure for self-hosted deployment
- Add environment variable support for Supabase and Pakasir configurations
- Create Docker configuration with Nginx for production deployment
- Add .env.example with all required environment variables
- Remove hardcoded URLs from Supabase client and Checkout component
- Add Docker and Nginx configuration files for Coolify deployment

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 23:01:39 +07:00
gpt-engineer-app[bot]
ef19864985 Refactor review UX to use name
- Align all review-related components to use profiles.name instead of profiles.full_name
- Update AdminReviews, TestimonialsSection, ProductReviews to fetch and display name via name field
- Adjust related admin member and consultant views to reference name
- Update MemberProfile editing flow placeholders to reflect name field
- Ensure public reviews still render with approved reviews only and inline summaries where applicable

X-Lovable-Edit-ID: edt-81d7dcc8-ea28-4072-9da0-5a7d623fb1ed
2025-12-21 15:38:23 +00:00
gpt-engineer-app[bot]
ed0d97bb4b Changes 2025-12-21 15:38:22 +00:00
gpt-engineer-app[bot]
f4a1dee9bd Refine review UX and fix admin
- Fix admin reviews queries to use proper profiles/user_id relation
- Update product/testimonials reviews components to reference correct profiles relation
- Ensure is_approved filtering remains for public displays
- Keep review UX focused on consulting/webinar/bootcamp entry points, not orders
- Prepare for inline review prompts without order-centric UI

X-Lovable-Edit-ID: edt-16853854-bdfa-46e3-8812-64bb44bd281f
2025-12-21 15:30:01 +00:00
gpt-engineer-app[bot]
891faa73f0 Changes 2025-12-21 15:30:01 +00:00
gpt-engineer-app[bot]
2906c94c14 Improve experience reviews flow
Implement an experience-centric review system:
- Add review modal/form and integrate with consulting, webinar, bootcamp flows
- Enable consultants to submit one review per slot after completion
- Extend reviews data model (order_id, type, etc.) with RLS coverage
- Admin reviews page wrapped in AppLayout with proper fetch and moderation
- Webinar/bootcamp prompts added inline on respective pages
- UI components for reviews reused across sections
- Add reusable ReviewModal and ConsultingHistory wiring
- Ensure only approved reviews display publicly

X-Lovable-Edit-ID: edt-26eb5d98-1267-4188-94f9-5a81716f484a
2025-12-21 15:09:52 +00:00
gpt-engineer-app[bot]
8a1ccb7acc Changes 2025-12-21 15:09:52 +00:00
gpt-engineer-app[bot]
d3f7544536 Enhance order & reviews features
- Fix: skip bucket creation when content already exists; add logic to handle existing bucket gracefully.
- Debug: investigate and resolve member order detail data fetch error; ensure proper data mapping and navigation.
- Add WhatsApp integration prompts, reviews system scaffolding, and frontend wiring for branding-driven content.
- Implement image handling improvements in RichTextEditor and ensure HTML rendering in descriptions.
- Enable ElasticEmail adapter and multi-provider email flow, plus daily/reminder capabilities.

X-Lovable-Edit-ID: edt-b568a0fb-5175-44a5-a6d0-52e2c9936894
2025-12-19 16:37:02 +00:00
gpt-engineer-app[bot]
cc7c330e83 Changes 2025-12-19 16:37:01 +00:00
gpt-engineer-app[bot]
461a14dfdc Continue remaining tasks
Implement frontend features for LMS gaps, branding, and admin consulting, plus enhancements to rich text and member order detail. This includes Google Meet webhook frontend stub, ElasticEmail adapter, HTML in descriptions, improved navigation, and improved UI/UX for consulting management and notifications.

X-Lovable-Edit-ID: edt-5031906b-9c9f-4b2f-8526-fe8a75340c65
2025-12-19 16:09:43 +00:00
gpt-engineer-app[bot]
04cae4fc54 Changes 2025-12-19 16:09:43 +00:00
gpt-engineer-app[bot]
df9dbe5cbb Enhance rich text image handling
Improve RichTextEditor to upload images to storage with optional base64 fallback, add image size controls, fix order detail navigation, and implement frontend hooks for branding and admin tasks. Also address member order detail routing issue and prep for Google Meet/ElasticEmail integration.

X-Lovable-Edit-ID: edt-a7826be1-5123-430e-a6f9-a3d1aa3f13de
2025-12-19 16:02:32 +00:00
gpt-engineer-app[bot]
e569c2cf7e Changes 2025-12-19 16:02:31 +00:00
gpt-engineer-app[bot]
d410b5b7c1 Fix order detail view HTML
- Allow HTML in Akses description and product descriptions
- Fix member order detail page so clicking shows details (adjust navigation approach)
- Review undo status against provided task list and gaps

X-Lovable-Edit-ID: edt-5b53d6da-64ae-4165-a4e2-12eaaef938a6
2025-12-19 15:45:41 +00:00
gpt-engineer-app[bot]
09558c0359 Changes 2025-12-19 15:45:40 +00:00
gpt-engineer-app[bot]
5a55257ef2 Integrate branding settings
Implement Google Meet integration, reminders, HTML in descriptions, admin order detail, fix test email, add homepage branding settings, wire branding to frontend, and ensure all settings wired. Also add admin branding homepage tab, and routing/frontend updates.

X-Lovable-Edit-ID: edt-7e1950f8-765a-4f0e-8ae7-12854ef4d2f7
2025-12-19 15:17:47 +00:00