fix(ui): retry Mini App launch on backend failure; hide account linking #102

Merged
developer merged 1 commits from feature/tg-boot-retry-hide-linking into development 2026-06-21 19:38:37 +00:00
Owner

What

Two profile/Telegram refinements, agreed in dialogue.

Mini App launch failure no longer dumps the user to the web login

Inside Telegram, a failed initData auth (backend down mid-deploy) used to navigate('/login') — rendering the web (guest/email) login, i.e. the /app/ experience. The hash path stayed /telegram/, only the screen swapped, so it looked like a redirect to /app/.

Now bootstrap retries the launch a few times silently, then renders a dedicated boot-error screen with a Retry button (BootError.svelte, app.bootError). It never falls back to the web sign-in. A blocked account is still terminal (blocked screen).

Account linking hidden (kept wired)

The profile Link an account section (email + Telegram link) is hidden via hidden on .emailbox while sign-in is provider-only; the anonymous /app/ guest whose upgrade path this is comes later. Code kept; the two linking e2e specs are test.skipped — re-enable together.

Tests

  • pnpm check (0 errors), test:unit (305), build, bundle-size, full test:e2e — 148 passed, 4 skipped (the linking specs ×2).
  • New e2e: a bootfail initData makes mock authTelegram reject; asserts the Retry screen shows and the guest login does not (Chromium + WebKit).

Docs

docs/FUNCTIONAL.md (+ _ru) updated for both behaviours; i18n boot.* keys added.

## What Two profile/Telegram refinements, agreed in dialogue. ### Mini App launch failure no longer dumps the user to the web login Inside Telegram, a failed `initData` auth (backend down mid-deploy) used to `navigate('/login')` — rendering the web (guest/email) login, i.e. the `/app/` experience. The hash path stayed `/telegram/`, only the screen swapped, so it *looked* like a redirect to `/app/`. Now `bootstrap` retries the launch a few times silently, then renders a dedicated **boot-error screen with a Retry button** (`BootError.svelte`, `app.bootError`). It never falls back to the web sign-in. A blocked account is still terminal (blocked screen). ### Account linking hidden (kept wired) The profile **Link an account** section (email + Telegram link) is hidden via `hidden` on `.emailbox` while sign-in is provider-only; the anonymous `/app/` guest whose upgrade path this is comes later. Code kept; the two linking e2e specs are `test.skip`ped — re-enable together. ## Tests - `pnpm check` (0 errors), `test:unit` (305), `build`, `bundle-size`, full `test:e2e` — 148 passed, 4 skipped (the linking specs ×2). - New e2e: a `bootfail` initData makes mock `authTelegram` reject; asserts the Retry screen shows and the guest login does **not** (Chromium + WebKit). ## Docs `docs/FUNCTIONAL.md` (+ `_ru`) updated for both behaviours; i18n `boot.*` keys added.
developer added 1 commit 2026-06-21 19:23:46 +00:00
fix(ui): retry Mini App launch on backend failure; hide account linking
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 57s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m8s
e336638ca8
Inside Telegram, a failed initData authentication (e.g. the backend down
during a deploy) dropped the user onto the web login screen — the /app/
experience, which has no place inside the Mini App. bootstrap now retries the
launch a few times in silence and then renders a dedicated boot-error screen
with a Retry button (new BootError.svelte, app.bootError), never falling back
to the web sign-in. A blocked account is still terminal and goes straight to
the blocked screen.

The profile "Link an account" section (email + Telegram link) is hidden while
sign-in is provider-only; the anonymous /app/ guest whose upgrade path this is
comes later. The flow is kept wired (`hidden` on .emailbox) and its two e2e
specs are skipped, both to be re-enabled together.

Adds i18n boot.* copy (en/ru), a mock authTelegram failure hook plus an e2e
covering the retry screen, and bakes both behaviours into FUNCTIONAL(.md/_ru).
owner approved these changes 2026-06-21 19:38:14 +00:00
developer merged commit b54cb8878d into development 2026-06-21 19:38:37 +00:00
developer deleted branch feature/tg-boot-retry-hide-linking 2026-06-21 19:38:37 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/scrabble-game#102