Files
scrabble-game/ui/src/landing.ts
T
Ilia Denisov 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
feat(landing): Russian default + SEO head, icons and OG card
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.
2026-07-02 01:25:19 +02:00

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')! });