Skip to content

fix(portal): inline destination-URL validation on program create#40

Merged
keithfawcett merged 3 commits into
mainfrom
fix/program-url-validation
Jul 9, 2026
Merged

fix(portal): inline destination-URL validation on program create#40
keithfawcett merged 3 commits into
mainfrom
fix/program-url-validation

Conversation

@keithfawcett

Copy link
Copy Markdown
Contributor

The program form's Destination URL field bounced an opaque 400 when given a scheme-less value like yourbrand.com (the API requires z.string().url()). Observed 5× in a row from the first white-label customer.

Now: inline validation mirroring the API rule, plain-words error ("Must be a full URL starting with https://…"), a one-click Use https://yourbrand.com fix when the input is scheme-less but plausibly a host, and the submit button is gated on validity.

🤖 Generated with Claude Code

keithfawcett and others added 3 commits July 9, 2026 00:19
index.html ships hardcoded 'OpenPartner' + the platform favicon: the one
pair of brand marks no in-app setting, cache clear, or incognito window
can change. First real-world report came from a white-label admin who
'changed the name and logo but it still appears' — in the browser tab.

BrandDocument (mounted once in App) sets document.title, swaps the
favicon, and rewrites og:title from the public branding payload:
white-label → brand name + brand logo (or a brand-colored SVG monogram —
never the platform mark); branded non-white-label → 'Brand · OpenPartner';
platform surfaces keep the shipped defaults. usePublicBrand now keys its
cache by the /t/<slug>/ prefix so SPA navigation between platform and
tenant surfaces can't serve stale branding, and exposes brandColor.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The API requires a full URL (z.string().url()); typing 'yourbrand.com'
without the scheme bounced an opaque 400 — five times in a row for the
first white-label customer. The form now validates inline, says what a
valid value looks like, offers a one-click 'Use https://…' fix when the
input is scheme-less but otherwise a plausible host, and gates the
submit button on validity.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@keithfawcett keithfawcett merged commit 4e094c5 into main Jul 9, 2026
9 checks passed
@keithfawcett keithfawcett deleted the fix/program-url-validation branch July 9, 2026 07:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant