diff -ru a/babel.config.js b/babel.config.js --- a/babel.config.js 2026-07-01 19:17:00.000000000 +0000 +++ b/babel.config.js 2026-07-01 19:17:00.000000000 +0000 @@ -1,9 +1,3 @@ -import child_process from "child_process"; - -function git(command) { - return child_process.execSync(`git ${command}`, { encoding: "utf8" }).trim(); -} - export default { plugins: [ ...(process.env["NODE_ENV"] != "production" @@ -13,7 +7,8 @@ [ "transform-define", { - ENV_VERSION: `${process.env.npm_package_version} (${git("rev-parse --short HEAD")})`, + // FredyGames: built from a source tarball, without .git; the commit is fixed here. + ENV_VERSION: `${process.env.npm_package_version} (c70d63c)`, ENV_INCLUDE_SERVICE_WORKER: process.env["NODE_ENV"] == "production" && !process.env["SKIP_SERVICE_WORKER"], diff -ru a/src/index.html b/src/index.html --- a/src/index.html 2026-07-01 19:17:00.000000000 +0000 +++ b/src/index.html 2026-07-01 19:17:00.000000000 +0000 @@ -14,13 +14,11 @@ href="../assets/icons/icon-180.png" sizes="180x180" /> - - @@ -199,6 +197,21 @@ documentation.

+ diff -ru a/src/main.browser.ts b/src/main.browser.ts --- a/src/main.browser.ts 2026-07-01 19:17:00.000000000 +0000 +++ b/src/main.browser.ts 2026-07-01 19:17:00.000000000 +0000 @@ -18,9 +18,22 @@ wb.register(); } +// FredyGames: on the Portuguese pages of the site, Brazilian Portuguese is the default language +// (a language chosen in the settings still wins). +function siteLanguage(): string { + try { + if (window.top !== window && /^\/pt-br\//.test(window.top!.location.pathname)) { + return "pt-BR"; + } + } catch { + // a frame on another origin: keep the browser language + } + return navigator.language; +} + removeSplash(); startMainMenu({ - language: navigator.language, + language: siteLanguage(), useCustomHistory: false, workbox: wb, platform: "web", diff -ru a/src/main.shared.ts b/src/main.shared.ts --- a/src/main.shared.ts 2026-07-01 19:17:00.000000000 +0000 +++ b/src/main.shared.ts 2026-07-01 19:17:00.000000000 +0000 @@ -31,10 +31,8 @@ .addEventListener("change", setColorScheme); setColorScheme(); - if (window.location.pathname != "/") { - window.location.href = "/"; - return; - } + // FredyGames: the game is served from a subfolder (bundles/tessel//index.html), so it does + // not jump to the site root ("/") when the path is something else. StatisticsMonitor.instance.storageBackend = getStorageBackend(); await prepareI18n(config.language); diff -ru a/src/ui/shared/icons.ts b/src/ui/shared/icons.ts --- a/src/ui/shared/icons.ts 2026-07-01 19:17:00.000000000 +0000 +++ b/src/ui/shared/icons.ts 2026-07-01 19:17:00.000000000 +0000 @@ -61,8 +61,10 @@ '', gridIcon: '', + // FredyGames: the original book icon is from Font Awesome Pro (commercial licence); this is the + // "book-open" icon from Font Awesome Free 6.7.2 (CC BY 4.0) instead. bookIcon: - '', + '', anglesUpDownIcon: '', addTilesIcon: