Webby - AI-Powered No-Code Website Builder SaaS Platform v1.0.6
Webby - AI-Powered No-Code Website Builder SaaS Platform Changelog
Changelog v1.0.6
Webby (Laravel)
- Added webhook idempotency via Cache-based event ID deduplication in BuilderWebhookController, preventing duplicate event processing when the same webhook is delivered multiple times
- Added pusher_active flag support in webhook payloads; builder events now use broadcastWhen() to conditionally skip Pusher/Reverb broadcasting when the builder's own Pusher client already delivered the event, eliminating duplicate messages on the frontend
- Added SSL retry endpoint (POST /project/{project}/domain/retry-ssl) with throttle middleware, allowing users to manually re-trigger failed SSL provisioning from the custom domain settings UI
- Added SSL status polling in CustomDomainCard frontend component with jitter-based intervals, auto-expiry after timeout, and real-time status feedback (active/failed/checking)
- Added "Retry SSL Provisioning" button in CustomDomainCard when SSL status is failed, replacing the previous advice to remove and re-add the domain
- Added nginx config cleanup (sites-enabled, sites-available, reload) when removing a custom domain via ProjectCustomDomainController::destroy
- Added try_files directive to nginx custom-domain template for proper asset fallback routing
- Added ShouldBeUnique interface to RecoverWorkspaceBuild job with 120-second uniqueness window per project, preventing duplicate recovery attempts
- Added frontend event deduplication in useBuilderChat: status events dedup by status+message key, thinking events dedup by content, and complete events fire only once per session via completedSessionRef
- Added shared pollStatus callback with 2-second debounce in useBuilderChat, consolidating duplicate polling logic between the running-state fallback and visibility-change handlers
- Added channel stability improvements in useUserChannel: tracks current channel name to prevent redundant resubscriptions, properly unsubscribes when switching users, and adds dedicated unmount cleanup
- Added broadcastConfigKey memoization in useUserChannel to prevent unnecessary Echo reconnections when config object reference changes
- Added CustomDomainCard test suite (329 lines) covering SSL polling, retry, and domain verification flows
- Added BuilderWebhookTest cases for webhook idempotency and duplicate event rejection
- Added ProvisionCustomDomainSsl unit test for nginx config path handling
- Added useUserChannel test cases for channel stability and cleanup behavior
- Added autosetup SSL callout to custom domains documentation page explaining sudoers dependency
- Fixed ProvisionCustomDomainSsl writing nginx config to wrong path — now correctly moves to /etc/nginx/sites-available/ directory
- Fixed Stripe plugin breaking on API version 2026-01-28+ where current_period_end moved from subscription to items; added getSubscriptionPeriodEnd() helper that checks both locations with fallback
- Fixed all payment gateway webhook handlers (Stripe, PayPal, Paystack, Razorpay, Crypto.com, YooKassa) catching only \Exception instead of \Throwable, missing fatal errors; now catches \Throwable and returns 500 to enable gateway retries instead of silently returning 200
- Fixed PayPal and Crypto.com using config('app.name') for product/subscription names; now uses SystemSetting::get('site_name') with config('app.name') as fallback
- Updated translations across all 10 languages with new SSL retry/polling keys