Skip to content
Documentation sections

What this screen is for

Signs an existing account in. On the mobile app this happens with email and password, a Google account, or (iOS only) an Apple account. The web panel's intended way in is not a password field: it exchanges a single-use code generated in the mobile app for a Firebase custom token, because a business owner who signed up with Google or Apple has no password on their Firebase account to begin with.

When you would use this

A reader whose account already exists but has no valid session on that device or in that browser lands here — when the app is freshly installed, after signing out by hand, or when the panel session expires and signs them out automatically.

Who sees it

Anyone without a valid session can reach this screen. A signed-in user whose email is verified never reaches it; the redirect rule sends them straight to the home screen instead.

Where it lives

The screen exists on both the mobile app and the web panel, but the two behave nothing alike: mobile signs in with a credential directly, while the panel's intended way in is a code generated in the app, not a credential typed directly — one is not the other's interface, it is a separate flow.

What you can do here

Sign in with email and password

Entering a registered email and password signs the account in; the fields cannot be left blank and the email is checked for a valid shape.

The panel's intended way in is the single-use code below, not this field.

Continue with Google

Picking a Google account signs in with one tap; an account that has never signed in before is created in the same step.

Mobile app only; the panel has no path to sign in with Google.

Continue with Apple

Picking an Apple account signs in with one tap.

Shown only on iOS; there is no such button on Android, and no equivalent on the panel either.

Forgot-password link

Leads to the password-reset screen.

Mobile app only; the panel's intended sign-in path has no password to reset, so there is no reset link here.

Register link

Leads a visitor with no account to the registration screen.

Mobile app only; the panel has no account-creation action at all.

Open a panel session with a single-use code

Once the eighth character is typed, the form submits itself; there is no separate submit button to tap.

Panel only; the mobile app has no such code-entry step — the code itself is generated on an entirely different screen (Settings).

What the server accepts and refuses

An unverified account is confined again on every sign-in

Not just at registration — the redirect rule fires on EVERY sign-in with an email/password account whose email is still unverified, and sends the account to the email-verification screen; this holds even if the account was created weeks earlier. An account opened with Google or Apple never hits this restriction, because the provider already counts it as verified.

A panel code is single-use and its deadline is exact

An entered code can only be used once on the server, and only before it expires; a missing, expired, or already-used code all return the same generic error, with no distinction exposed to the client — this is meant to stop anyone from learning whether a code exists by trial and error.