Let the lender word the application ribbon
`t("application.ribbon")` becomes the FALLBACK rather than the answer. A lender can set its own wording on the labeling page, which reaches this site through th...
Drop the homepage and the BlueLeven demo images
These were deleted in the working tree but never committed, so the repository still carried them and any fresh checkout brought them back. app/page.tsx was the...
Range the application against the rail instead of centring it
The form column's content was centred in its half, which left a wide margin on both sides and no relationship between the questions and the rail that numbers th...
Let the document scroll, so the scrollbar is the browser's own
Third attempt at this, and the first two were aimed at the wrong thing because the harness was lying. Puppeteer launches Chrome with --hide-scrollbars by defaul...
Put the scrollbar where the artwork cannot paint over it
The last fix reserved the scrollbar's space but it still could not be seen, and the reason was not the scrollbar. BackgroundStage is `position: fixed` with the ...
Give the pane a real scrollbar, and the gap the lender's colour
The scroller had an OVERLAY scrollbar: Chrome's default for an inner scroll container, taking no layout space and fading out when idle. On a document you tolera...
Pin the background and the support bubble, and point the way on
The pane could not both anchor `position: fixed` children and scroll them, and was being asked to do both. Its transform is what makes it their containing block...
The mortgage application sits in a pane, under its own ribbon
Ports the shell from kamo-login and kamo-register: a card inset 15px from the browser edge with a 14px radius, a soft shadow, and a red ribbon across its top-ri...
The chat bubble knows the applicant's name as they type it
Somebody who has just filled in "First name" and opens the chat to ask a question should not be asked who they are a second time, and the agent picking that con...
The support bubble uses the key its product was published with
The chat key is per-PRODUCT, not per-deployment. A lender picks a web chat integration when they publish an application, and the public endpoint resolves that i...
Declare the chat site key, empty until one is issued
The chat bubble needs a public site key, and these are origin-locked β the marketing site's own would be refused on apps.<domain>. So the variable is declared a...
Twenty-two languages, and the chat bubble
The application is the one surface on this platform whose reader has never signed in to anything and may not read English. It now offers the same twenty-two lan...
The *** never ran, and seven things around it
**The *** could not work.** This fork of Capcha declares its endpoint attribute as `challenge`; I had set `challengeurl`, upstream's name. The widget was theref...
The mark returns to the rail, governed by the Apps Site Logo Overlay
Reverts the relocation in 47e6e39. The invisible-logo problem it worked around is real β a mark drawn in the company's own brand colour can vanish on a rail pai...
Move the lender's logo off the brand rail β it was disappearing into it
Caught on the live page for a real customer. ABC Mortgage's logo is navy and orange; their brand colour is that same navy; the rail is painted in it. So the mar...
Send the first-time-buyer answer with the application
The question was on the form and the answer went nowhere β there was no column for it until the shared library gained one. It changes which programmes are worth...
Rebuild the mortgage application as a real, white-labelled form
The page this replaces was a prototype wearing a production URL. It posted to `http://localhost:8082`, so no application it ever collected reached anything. It ...
Prove the deploy by digest, not by tag
The preceding commit stops `set image` being a silent no-op. This asserts the outcome: after the rollout, the tag is resolved to a digest at the registry and th...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.