Paystack blocks iframes, so checkout uses a popup beside the sheet/modal chrome. Opening about:blank on the user tap keeps that window from being blocked after the async initiate response.
Paystack checkout.paystack.com returns X-Frame-Options: SAMEORIGIN, so the shared sheet opened empty. Keep mobile sheet/desktop modal chrome, launch checkout in a named window with a Continue CTA fallback, and escape payment-return via window.opener or top.
Standardize customer-facing Ladill Pay checkout shells across products, open them on all viewports, and escape iframe callbacks back to the product flow.
Customers can create label-based subdomains under primary/addon sites with a separate max_domains×5 quota, nginx/docroot/SSL provisioning, and managed DNS A records when Ladill controls the parent zone.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the once-per-session sessionStorage guard (which suppressed the loading
screen after its first appearance) with entry-aware logic: show on app entry
and reloads, suppress on internal link navigations and back/forward.
Sync mobile-header-btn partials, mobile x-btn.create, and update dashboard header actions for consistent mobile FABs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove duplicate Billing header above Home; wallet card follows Billing
in menu order to match the desktop avatar dropdown.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show wallet balance prominently in the mobile profile bottom sheet with refresh
on open; align session lifetime with the platform default.
Co-authored-by: Cursor <cursoragent@cursor.com>
Profile moves to the bottom nav sheet on small screens; optional search tab
support is synced from the Ladill platform template.
Co-authored-by: Cursor <cursoragent@cursor.com>
InjectBootSplash middleware shows a self-branded loading splash once per session
while the app boots, then fades out.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Wallet balance peek rendered as a menu row directly under Billing, backed by
a /wallet/balance endpoint (BillingClient) and guarded by Route::has. Also
opens Afia via a direct window event for reliability.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Use the Domains API for owned domains across panel, account, and order forms, with an embedded iframe purchase modal instead of redirecting to domains.ladill.com.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire UserProfileMenu and shared Blade partial into topbar, mobile nav, and layouts so menu items match the account portal (Ladill Mail excluded).
Co-authored-by: Cursor <cursoragent@cursor.com>
Wallet, Billing, Team, Developers, and Support live on account.ladill.com.
Siloed sidebars keep product nav and app Settings only.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove the Wallet/Billing/Team links from the hosting sidebar (managed centrally
at account.ladill.com); keep Support (deep-links to hub) and Settings. Redirect
the now-orphaned account.wallet/account.billing routes to the central hub so
bookmarks still work.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Completes the strip: drop the local account.team* and account.developers* route
definitions (the DeveloperController + views were removed in the previous
commit) and point the sidebar Team link to the central account hub. account.switch
retained. (Previous commit landed only the deletions; this makes routes consistent.)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add home.ladill.com helper, repair click-outside handling on topbar menus, and expand profile links on desktop and mobile.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replies came back with **bold** markup that displayed literally to users.
Render the bubble as HTML (escaped first for safety) and convert **text** to
<strong>; newlines already handled by whitespace-pre-line.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Move Settings out of the Account and Advanced sections into a pinned footer on both the app and control panel sidebars.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove route-based page titles and the uppercase subtitle line so mobile
headers display a single title like Ladill Bird.
Co-authored-by: Cursor <cursoragent@cursor.com>
Route-based subtitle and page titles replace plain app labels in mobile topbars, and the Afia AI button is visible on mobile across topbars and mobile-page-header screens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Return an HTML search screen from /search for browser visits and point the bottom nav Search tab at it instead of the dashboard.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire local notification inbox in the topbar, sync ladillhosting logo and hosting launcher icon, and fix signed-out page branding.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire a JSON /search endpoint and Alpine dropdown so customers can find accounts, linked domains, and orders from the hosting app header.
Co-authored-by: Cursor <cursoragent@cursor.com>
Display hosted_sites on account cards, scope Afia and Settings to hosting,
add hosting_settings for notifications, and remove mailbox UI from the
hosting layout and account pages.
Co-authored-by: Cursor <cursoragent@cursor.com>
The grid launcher stays in the top bar; the duplicate footer control
cluttered the account sidebar without adding value.
Co-authored-by: Cursor <cursoragent@cursor.com>
Route launcher and home hub entry to the account overview instead of the
control panel, label the sidebar app launcher, and extend hosting:import
to sync hosted_sites with platform_id matching for existing accounts.
Co-authored-by: Cursor <cursoragent@cursor.com>