1ed624eaf1
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 / conformance (pull_request) Successful in 8s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m20s
The landing now always opens in Russian (saved 🌐 choice still wins) —
browser-language detection made the indexed content nondeterministic
(Googlebot renders with en-US). landing.html gains the static Russian
SEO head: title/description, canonical pinned to the production origin,
Open Graph card (Telegram/VK link previews), twitter:card, JSON-LD,
theme-color and the favicon set; the SPA shell turns noindex and its
tab title becomes «Эрудит (Скрэббл)». New assets/icons generator
(same tile design as the VK loader) produces favicon.svg/ico,
apple-touch-icon.png and og-image.png into ui/public/, plus robots.txt.
17 lines
800 B
TypeScript
17 lines
800 B
TypeScript
import { mount } from 'svelte';
|
|
import './app.css';
|
|
import { setLocale } from './lib/i18n/index.svelte';
|
|
import Landing from './Landing.svelte';
|
|
|
|
// Entry for the standalone landing page (served at "/" by the gateway; the game SPA lives at
|
|
// /app/ and /telegram/). Mounts into the same #app node as the SPA's main.ts.
|
|
|
|
// The landing always starts in Russian — the primary audience and the language of the
|
|
// static SEO head (crawlers render with arbitrary navigator.language, e.g. Googlebot's
|
|
// en-US, so browser detection would make the indexed content nondeterministic). Set
|
|
// before mount so the very first paint is Russian; a saved 🌐 choice is applied in
|
|
// Landing's onMount once prefs load.
|
|
setLocale('ru');
|
|
|
|
export default mount(Landing, { target: document.getElementById('app')! });
|