Skip to content

feat(kit): mark the generated sign-in screen with both products - #64

Merged
Bccorb merged 1 commit into
mainfrom
feat/sign-in-marks
Aug 26, 2026
Merged

feat(kit): mark the generated sign-in screen with both products#64
Bccorb merged 1 commit into
mainfrom
feat/sign-in-marks

Conversation

@Bccorb

@Bccorb Bccorb commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Closes #61.

What is on the screen

Two lines under the sign-in form:

Secured by Seamless Auth  ·  Made with Seamless Idea

linking to seamlessauth.com and seamlessidea.com.

How it is kept quiet

The issue's constraint was the hard part, not the markup. A generated application has to feel like its owner's, and a banner undoes that, so:

  • under the sign-in screens, not beside them, and after them in the DOM;
  • footnote size in the muted ink role, so both palettes and every kit carry it without a literal colour;
  • centred, no logo, no lockup, no interstitial.

Both links open in a new tab so that somebody part way through signing in does not lose the page, and both carry noopener without noreferrer. That second part is deliberate: the referrer is the only way either product ever sees that a generated application sent someone, and noreferrer is the reflex that would quietly throw it away.

Verified in the browser, not only in tests

Run against the react-vite template, since how it reads is the whole point:

  • desktop, dark: the marks sit well below the form, clearly subordinate to it and to the "Already have an account?" link above them;
  • mobile at 375px, light: the band is hidden, both marks still fit on one line under the card, and they are the last thing on the page rather than the first thing read.

Tests

Two, next to the component: both marks present with the right href, and the marks positioned after the sign-in screens in the DOM. The second is what the "not the first thing a visitor reads" requirement actually reduces to in a test.

Two decisions worth recording

  • No off switch. The templates are copied into the owner's project, so the lines can always be deleted by hand. Enforcing a paid removal belongs to the CLI, not to a prop on AuthFrame. The issue flagged this as a real trade rather than an obvious yes; this PR keeps the loop whole and leaves the pricing question open, and it stays cheap to revisit.
  • The component's doc comment used to say nothing here adds a link of its own. Rather than leave a comment that contradicts the code, it now names this as the one exception and says the weight is what keeps it from being a second call to action.

Checks

npm run validate passes, and npm run check is green in both templates (react-vite 20 tests, react-oauth 24 tests).

Every generated application is shared with the handful of people it was made
for, and every one of them signs in. That screen is the largest owned surface
the company has, it grows with the fleet, it costs nothing, and it said nothing
at all.

AuthFrame now carries two lines under the form, "Secured by Seamless Auth" and
"Made with Seamless Idea", linking to each product. They sit under the sign-in
screens rather than beside them, at footnote size in the muted ink role, with no
logo and no lockup: a generated application has to read as its owner's, and a
banner would undo the thing that makes personal software worth having.

Both open in a new tab so nobody mid-sign-in loses the page, and both carry
noopener without noreferrer, because the referrer is the only way either product
sees that a generated application sent someone.

The component's own doc said nothing here adds a link of its own. That is now
the one exception, and the doc says so rather than contradicting the code.
@Bccorb
Bccorb merged commit 2a39656 into main Aug 26, 2026
3 checks passed
@Bccorb
Bccorb deleted the feat/sign-in-marks branch August 26, 2026 04:07
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.

Secured by Seamless Auth, made with Seamless Idea, on the generated sign-in screen

1 participant