Commit Graph
26 Commits
Author SHA1 Message Date
isaaccladandClaude Opus 4.8 2a1228b40e Jail the control-panel terminal to the customer's home (chroot)
Deploy Ladill Hosting / deploy (push) Successful in 45s
SECURITY: the browser terminal ran an unconfined login shell as the account's
system user, so customers could browse the whole host (/var/www, other tenants,
/etc). Run it inside a jailkit chroot instead: a vetted, sudo-scoped launcher
(/usr/local/sbin/ladill-jailsh) enters a private mount namespace, bind-mounts
ONLY that user's home into /home/jail, and chroots as the user. They can no
longer see anything outside their own home. Provisioning committed in
deployment/ (setup-terminal-jail.sh + ladill-jailsh) so it is reproducible.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 23:41:18 +00:00
0961a00e1f Add Accounting to the app launcher
Deploy Ladill Hosting / deploy (push) Successful in 48s
Ladill Accounting is now live at accounting.ladill.com; add its row + icon to
the shared app launcher (byte-identical across all Ladill apps).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 13:48:36 +00:00
isaaccladandCursor 7574a035b6 Sync app launcher config and add POS icon.
Deploy Ladill Hosting / deploy (push) Successful in 26s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 22:53:37 +00:00
isaaccladandClaude Opus 4.8 739043755f Add wallet balance widget to the profile menu (after Billing)
Deploy Ladill Hosting / deploy (push) Successful in 28s
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>
2026-06-23 12:25:46 +00:00
isaaccladandClaude Opus 4.8 36f7acf1e1 Add CRM to the Ladill app launcher
Deploy Ladill Hosting / deploy (push) Successful in 21s
crm.ladill.com is now live in the suite; add its launcher row + icon
(byte-identical shared launcher config).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 22:41:28 +00:00
isaaccladandClaude Opus 4.8 8fdc63c65d Add Invoice to the app launcher
Deploy Ladill Hosting / deploy (push) Successful in 22s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 14:19:11 +00:00
isaaccladandCursor ae1c93b017 Add Ladill SMS to shared app launcher.
Deploy Ladill Hosting / deploy (push) Successful in 33s
Include sms.ladill.com in the cross-app launcher and ship the SMS icon asset.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-19 23:12:36 +00:00
isaaccladandCursor 3ac89593fc Merge platform registry into owned-domain picker lookups.
Deploy Ladill Hosting / deploy (push) Successful in 29s
Fetch owned domains from both domains.ladill.com and the platform registry so legacy customer domains populate the Ladill picker.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-19 18:17:03 +00:00
isaaccladandCursor 537e34cbd7 Wire Ladill domain picker and purchase modal into hosting flows.
Deploy Ladill Hosting / deploy (push) Successful in 51s
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>
2026-06-19 18:01:23 +00:00
isaaccladandClaude Opus 4.8 107013bd04 Hosting dev-access: resolve via central identity API (shadow mode)
Deploy Ladill Hosting / deploy (push) Successful in 23s
Consolidate the inline HostingAccountMember lookups (Overview/Search/Hosting
Product/Afia controllers) into HostingAccessResolver, which can source hosting
developer-access from the monolith's central /identity/hosting/developer-access
(correlating cPanel usernames to local account ids). Shadow mode by default
(HOSTING_CENTRAL_DEV_ACCESS=false): local hosting_account_members stays
authoritative and divergence from central is logged; flip the flag to cut over.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 23:42:08 +00:00
isaaccladandCursor ea7e46a260 Fix guest entry: correct marketing URL and stop auto silent SSO.
Deploy Ladill Hosting / deploy (push) Successful in 34s
Correct localhost marketing_url default and stop redirecting guests through
/sso/connect on visit; SSO starts only via explicit sign-in.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 13:09:24 +00:00
isaaccladandCursor 8d076d9fe0 Send SSO guests to ladill.com/products/hosting instead of subdomain landings.
Deploy Ladill Hosting / deploy (push) Successful in 36s
Remove interactive OAuth fallback on silent SSO failure and add ladill.marketing_url config so app subdomains open the dashboard when signed in locally.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 22:22:23 +00:00
isaaccladandClaude Opus 4.8 7cba85fbac Add Merchant to app launcher.
Deploy Ladill Hosting / deploy (push) Successful in 32s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 11:03:26 +00:00
isaaccladandCursor 48fe96074a Fix SSO popup login 500 and add branded signed-out pages.
Deploy Ladill Hosting / deploy (push) Successful in 27s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 15:46:24 +00:00
isaaccladandCursor a3496f8019 Add Ladill Give to the shared app launcher.
Deploy Ladill Hosting / deploy (push) Successful in 1m35s
Sync ladill_launcher.php and give.svg across all extracted apps so Give appears in every product switcher.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 10:34:02 +00:00
isaaccladandCursor 98eee39665 Add app-specific mail branding and sidebar Support links.
Deploy Ladill Hosting / deploy (push) Successful in 38s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 20:11:27 +00:00
isaaccladandCursor 618dbe7f47 Add Ladill Transfer to the shared app launcher.
Deploy Ladill Hosting / deploy (push) Successful in 30s
Include transfer.svg and the SSO launcher row so Transfer appears in the
topbar grid across all Ladill apps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 16:08:22 +00:00
isaacclad a579950cbf Add Ladill Mini to shared app launcher.
Deploy Ladill Hosting / deploy (push) Successful in 1m8s
2026-06-07 18:51:40 +00:00
isaaccladandCursor e40f1d997d Show only Ladill app names in the mobile header.
Deploy Ladill Hosting / deploy (push) Successful in 29s
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>
2026-06-07 16:44:11 +00:00
isaaccladandCursor d3a379d5bc Add mobile topbar titles and show Afia on all mobile headers.
Deploy Ladill Hosting / deploy (push) Successful in 26s
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>
2026-06-07 16:30:31 +00:00
isaaccladandCursor cf9d7cc75d Add Events to the shared app launcher.
Deploy Ladill Hosting / deploy (push) Successful in 42s
Include the Events SSO entry and launcher icon so customers can switch to events.ladill.com from every product.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 14:24:17 +00:00
isaaccladandCursor bfa9975e01 Add QR Plus to the shared app launcher across all Ladill apps.
Deploy Ladill Hosting / deploy (push) Successful in 33s
Register qrplus.ladill.com in ladill_launcher.php and sync the launcher icon.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 06:46:48 +00:00
isaaccladandCursor 8205d55d1e Add Ladill Servers to app launcher.
Deploy Ladill Hosting / deploy (push) Successful in 33s
Sync servers.svg from monolith for the all-apps menu.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 19:28:22 +00:00
isaaccladandCursor 5703a00862 Show linked domains on cards and fix Email leftovers.
Deploy Ladill Hosting / deploy (push) Successful in 24s
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>
2026-06-06 17:30:40 +00:00
isaaccladandCursor a2985005ff Replace monolith user.* routes with cross-app URLs.
Deploy Ladill Hosting / deploy (push) Successful in 20s
Hosting type pages and panel views referenced platform routes that do not exist in the extracted app; link to domains, account, and servers apps instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 16:46:09 +00:00
isaaccladandCursor e251a4cf60 Initial Ladill Hosting app with Gitea deploy pipeline.
Deploy Ladill Hosting / deploy (push) Failing after 17s
Shared web hosting extracted from the platform monolith, with CI deploy
to /var/www/ladill-hosting matching Bird/Domains/Email.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 16:24:20 +00:00