Commit Graph
111 Commits
Author SHA1 Message Date
isaacclad f88d50f24c Open Paystack from the Pay click gesture, not after fetch.
Deploy Ladill QR Plus / deploy (push) Successful in 47s
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.
2026-07-21 18:14:04 +00:00
isaacclad 6b81644c32 Fix Paystack sheet: stop iframe embeds that Paystack blocks.
Deploy Ladill QR Plus / deploy (push) Successful in 52s
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.
2026-07-21 17:35:31 +00:00
isaacclad 2b3568695b Present Paystack checkout in a responsive mobile sheet and desktop modal.
Deploy Ladill QR Plus / deploy (push) Successful in 1m58s
Standardize customer-facing Ladill Pay checkout shells across products, open them on all viewports, and escape iframe callbacks back to the product flow.
2026-07-21 16:50:07 +00:00
isaacclad c0b897dd95 Sync launcher after restoring Merchant/Mini/Give and adding One.
Deploy Ladill QR Plus / deploy (push) Successful in 1m41s
2026-07-21 14:23:52 +00:00
isaacclad b5c1d744ca Fix deploy tmp paths: drop unset gitea.run_attempt.
Deploy Ladill QR Plus / deploy (push) Successful in 39s
act_runner v0.2.x does not expose gitea.run_attempt, so release archive and
workspace paths rendered with a trailing dash. Use gitea.run_id only, matching
the Meet/CRM deploy workflows.
2026-07-17 12:55:22 +00:00
isaacclad 5148a25509 Keep bookshop title in the hero, above the author card.
Deploy Ladill QR Plus / deploy (push) Successful in 57s
Restore a single hero layout: title and tagline sit on the cover with
extra bottom padding so the overlapping author card does not cover them.
2026-07-16 21:48:35 +00:00
isaacclad 0dfa77752a Clamp bookshop tagline only; restore full author bio.
Deploy Ladill QR Plus / deploy (push) Successful in 1m29s
The one-line ellipsis applies to the page subtitle (tagline), not the
author bio in the card.
2026-07-16 21:45:02 +00:00
isaacclad 8e5574cb52 Move bookshop title and tagline above author card on mobile.
Deploy Ladill QR Plus / deploy (push) Successful in 1m11s
On small screens the hero only shows the cover; title and sub sit above
the author card. Desktop still places them on the cover.
2026-07-16 21:42:30 +00:00
isaacclad 349a65c3ed Remove Bookshop label from public bookshop landing hero.
Deploy Ladill QR Plus / deploy (push) Successful in 1m42s
Keep only the author title and tagline on the cover.
2026-07-16 21:35:40 +00:00
isaacclad 8ca3e3a903 Rename bookshop hero label and clamp description on mobile.
Deploy Ladill QR Plus / deploy (push) Successful in 1m15s
Show "Bookshop" instead of "Author bookshop", and ellipsis-truncate the
tagline and bio to a single line on small screens.
2026-07-16 21:33:07 +00:00
isaacclad 5bab0fedaf Use Host-header loopback for billing force_ip.
Deploy Ladill QR Plus / deploy (push) Successful in 1m45s
CURLOPT_RESOLVE was not reliably faster; rewrite the billing base URL to the
forced IP and send the original Host header instead.
2026-07-16 21:28:06 +00:00
isaacclad 02e6778ccf Speed up QR create/update by cutting billing round-trips.
Deploy Ladill QR Plus / deploy (push) Successful in 2m2s
Create was making three sequential public HTTPS billing calls (~400ms each)
while holding a DB transaction open for image generation. Use loopback DNS
forcing, cache balances briefly, return balance from debit, regenerate images
only when style changes, and keep remote work outside the DB transaction.
2026-07-16 21:25:16 +00:00
isaacclad d83a314bee Add Portfolio and Bookshop QR types with tailored landing pages.
Deploy Ladill QR Plus / deploy (push) Successful in 58s
Portfolio showcases freelancer work projects; Bookshop lists author titles with multi-platform purchase links. Includes create/edit forms, public assets, and tests.
2026-07-16 20:56:52 +00:00
isaacclad 95d73d1367 Add Campaigns module for grouping QR codes.
Deploy Ladill QR Plus / deploy (push) Successful in 1m6s
Let accounts organise codes by promo or launch, attach or detach codes, and view combined scan totals from the sidebar.
2026-07-16 20:43:02 +00:00
isaacclad ccb7c971e6 Remove Merchant, Mini, and Give from the app launcher.
Deploy Ladill QR Plus / deploy (push) Successful in 1m59s
Registry marks them soon pending BoG licensing; propagate the clean launcher so every app matches.
2026-07-15 13:28:48 +00:00
isaacclad aafeaa6c4c Remove desktop header search from app topbars.
Deploy Ladill QR Plus / deploy (push) Successful in 1m13s
Drop the lg+ topbar search field; mobile search entry points are unchanged.
2026-07-09 06:57:33 +00:00
isaacclad 841c3dcf94 Sync app launcher from registry
Deploy Ladill QR Plus / deploy (push) Successful in 50s
2026-07-07 23:13:52 +00:00
isaacclad 4787ec9d59 Show boot splash on app open/reload for logged-in users.
Deploy Ladill QR Plus / deploy (push) Successful in 1m30s
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.
2026-07-07 20:35:34 +00:00
isaacclad 5ca1dc8bd8 Sync app launcher from registry
Deploy Ladill QR Plus / deploy (push) Successful in 30s
2026-07-07 14:42:59 +00:00
isaacclad 389f3612b6 Prefer system npm in deploy CI when portable node-gyp is broken.
Deploy Ladill QR Plus / deploy (push) Successful in 1m37s
Falls back to downloading Node only when host npm is unavailable, fixing npm ci failures on ladill-deploy-runner.
2026-07-07 00:46:54 +00:00
isaacclad c535aad60a Sync app launcher from registry
Deploy Ladill QR Plus / deploy (push) Failing after 3s
2026-07-07 00:22:00 +00:00
isaaccladandCursor 27e0aaea87 Propagate shared copy-button component and clipboard helper.
Deploy Ladill QR Plus / deploy (push) Successful in 42s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 23:04:26 +00:00
isaacclad b8cbfa24a7 Use mobile icon buttons on QR Plus dashboard.
Deploy Ladill QR Plus / deploy (push) Successful in 1m6s
Add header create action and sync mobile notification badge partial.
2026-07-03 22:41:00 +00:00
isaacclad 04d0cc7eb2 Sync app launcher from registry
Deploy Ladill QR Plus / deploy (push) Successful in 56s
2026-07-01 17:05:14 +00:00
isaaccladandCursor 31c292c5e5 Throttle platform SSO session checks to cut per-request auth latency.
Deploy Ladill QR Plus / deploy (push) Successful in 1m23s
Verify auth.ladill.com at most once every 90s; recommend Redis for session/cache in .env.example.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 16:51:12 +00:00
isaacclad 245a862b55 Add Queue to app launcher config and icon.
Deploy Ladill QR Plus / deploy (push) Successful in 28s
Propagated from ladill monorepo launcher sync.
2026-06-29 22:12:15 +00:00
isaacclad 8a524b28f6 Sync app launcher from registry
Deploy Ladill QR Plus / deploy (push) Successful in 35s
2026-06-29 17:53:18 +00:00
isaaccladandCursor 9eeabaac0d Cap launcher dropdown at 15 visible apps (5 rows).
Deploy Ladill QR Plus / deploy (push) Successful in 1m1s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 17:44:42 +00:00
isaaccladandCursor 60cce3a544 Hide launcher down arrow when scrolled to the end.
Deploy Ladill QR Plus / deploy (push) Successful in 23s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 14:48:31 +00:00
isaaccladandCursor d6a375bd25 Revert launcher scroll rail and fade; keep down arrow hint.
Deploy Ladill QR Plus / deploy (push) Successful in 58s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 14:02:06 +00:00
isaaccladandCursor 02d15e9c07 Make launcher scroll affordance visible on open.
Deploy Ladill QR Plus / deploy (push) Successful in 29s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 13:52:37 +00:00
isaacclad 1e77b603f7 Sync app launcher from registry
Deploy Ladill QR Plus / deploy (push) Successful in 36s
2026-06-29 13:29:48 +00:00
isaacclad b9ef75dd0d Always show launcher scroll indicator and cap at 18 apps.
Deploy Ladill QR Plus / deploy (push) Successful in 46s
Apply ladill-launcher-apps scroll styles unconditionally with a persistent
scrollbar track; propagate launcher blade and CSS across all Ladill apps.
2026-06-29 13:04:25 +00:00
isaaccladandCursor 3345d9e498 Use + icon buttons on mobile dashboards.
Deploy Ladill QR Plus / deploy (push) Successful in 26s
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>
2026-06-28 16:23:12 +00:00
isaaccladandCursor fc0d1550bb Place wallet widget after Billing link in mobile profile sheet.
Deploy Ladill QR Plus / deploy (push) Successful in 1m12s
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>
2026-06-28 14:07:25 +00:00
isaaccladandCursor 961aa8f3df Sync mobile profile wallet card and 24h session idle timeout.
Deploy Ladill QR Plus / deploy (push) Successful in 59s
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>
2026-06-28 12:46:20 +00:00
isaaccladandCursor 75de808a43 Hide header avatar on mobile and sync shared mobile nav partials.
Deploy Ladill QR Plus / deploy (push) Successful in 27s
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>
2026-06-28 12:04:33 +00:00
isaacclad 420380b3ae Sync app launcher from registry — add Frontdesk.
Deploy Ladill QR Plus / deploy (push) Successful in 29s
2026-06-28 01:46:33 +00:00
isaaccladandCursor 4e12ef4cd0 Sync app launcher from registry
Deploy Ladill QR Plus / deploy (push) Successful in 34s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 19:03:58 +00:00
isaaccladandCursor c8a259ac1b Sync app launcher from registry
Deploy Ladill QR Plus / deploy (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 18:28:04 +00:00
isaaccladandCursor fe9311001e Redirect legacy /q/* URLs to canonical ladl.link addresses.
Deploy Ladill QR Plus / deploy (push) Successful in 1m7s
External /q requests 301/307 to ladl.link; internal X-Ladill-Internal requests still serve content for platform proxying.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 17:19:04 +00:00
isaaccladandCursor 5372a4926f Wire LadillLink through QrCode model and remaining QR surfaces.
Deploy Ladill QR Plus / deploy (push) Successful in 52s
Public URLs, encoded payloads, slug preview, payment callbacks, and asset paths now use ladl.link instead of ladill.com/q/*.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 16:16:25 +00:00
isaaccladandCursor 1366015845 Use ladl.link URLs for all front-facing QR and short-link surfaces.
Deploy Ladill QR Plus / deploy (push) Successful in 36s
Public landing pages, asset paths, payment callbacks, and redirects now go through QrCode::publicPath() / LadillLink instead of ladill.com/q/* routes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 15:46:06 +00:00
isaacclad eebcf19c04 Sync app launcher from registry
Deploy Ladill QR Plus / deploy (push) Successful in 35s
2026-06-27 15:16:18 +00:00
68b43521e0 Add Accounting to the app launcher
Deploy Ladill QR Plus / deploy (push) Successful in 1m44s
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:49:14 +00:00
isaaccladandClaude Opus 4.8 296312ab4b Wire QR overview create-code links into the two-step add-funds modal
Deploy Ladill QR Plus / deploy (push) Successful in 41s
The dashboard 'Create code' / 'Create your first code' links were plain hrefs
to the create page, so a user with insufficient balance only met the top-up
modal after filling the form. Gate them with balanceGate + mount the modal so
they open Add funds directly when the wallet can't cover a QR code.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 06:37:28 +00:00
isaaccladandClaude Opus 4.8 b7adb69245 Point in-app wallet top-up at the billing API (key the app already holds)
Deploy Ladill QR Plus / deploy (push) Successful in 33s
qr-plus authenticates to the monolith with a billing service key, not an
identity key, so the modal's top-up now goes through BillingClient::topup ->
POST /api/billing/topup. Drops the unused IdentityClient::walletTopup.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 06:23:03 +00:00
isaaccladandClaude Opus 4.8 73faa20fff Two-step add-funds modal instead of wallet redirect on insufficient balance
Deploy Ladill QR Plus / deploy (push) Successful in 40s
When a user hits an action they can't afford (e.g. creating a QR code with
0/low balance), open an in-app two-step modal instead of bouncing them to the
central wallet page. Step 1 explains pay-as-you-go billing + shows the action
cost and current balance; step 2 takes an amount and starts a Paystack checkout
via the central identity wallet-topup API, returning the user where they were.

- service-topup-modal: rebuilt as two-step (billing explainer -> amount/pay)
- IdentityClient::walletTopup + WalletTopupController + POST /wallet/topup
- balanceGate.openTopup / qrCustomizer.redirectTopup now prefer the modal,
  falling back to the wallet page only when no modal is wired
- qr-codes index + create render the modal and open it on insufficient balance

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 23:25:06 +00:00
isaaccladandClaude Opus 4.8 bbef00b2f0 Add branded boot splash (Ladill Mail style) on app pages
Deploy Ladill QR Plus / deploy (push) Successful in 43s
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>
2026-06-25 22:14:57 +00:00
isaaccladandClaude Opus 4.8 6ed9c35628 Update POS launcher icon (app launcher + marketing)
Deploy Ladill QR Plus / deploy (push) Successful in 37s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 07:46:47 +00:00