Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed public/img/wall-1.png
Binary file not shown.
Binary file removed public/img/wall-1.webp
Binary file not shown.
Binary file added public/img/wall-10.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-10.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-11.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-11.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-12.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-12.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-13.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-13.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-14.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-14.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-15.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-15.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-16.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-17.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-17.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-18.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-18.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-19.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-19.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/img/wall-2.webp
Binary file not shown.
Binary file added public/img/wall-20.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-20.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/wall-21.png
Binary file added public/img/wall-21.webp
Binary file added public/img/wall-22.png
Binary file added public/img/wall-22.webp
Binary file added public/img/wall-23.png
Binary file added public/img/wall-23.webp
Binary file added public/img/wall-24.png
Binary file added public/img/wall-24.webp
Binary file added public/img/wall-25.png
Binary file added public/img/wall-25.webp
Binary file added public/img/wall-26.png
Binary file added public/img/wall-26.webp
Binary file added public/img/wall-27.png
Binary file added public/img/wall-27.webp
Binary file added public/img/wall-28.png
Binary file added public/img/wall-28.webp
Binary file removed public/img/wall-3.webp
Diff not rendered.
Binary file removed public/img/wall-4.webp
Diff not rendered.
Binary file removed public/img/wall-5.webp
Diff not rendered.
Binary file removed public/img/wall-6.webp
Diff not rendered.
Binary file removed public/img/wall-7.webp
Diff not rendered.
Binary file removed public/img/wall-8.webp
Diff not rendered.
Binary file removed public/img/wall-9.png
Diff not rendered.
Binary file removed public/img/wall-9.webp
Diff not rendered.
166 changes: 113 additions & 53 deletions public/img/walls-3x2/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,59 +2,119 @@
"recipe": "3x2-v1",
"generatorSha256": "80cdef4d48deab4f72bb399ca8ec798fb55c00a45f181942a74045794ec624d6",
"files": {
"wall-1.webp": {
"sourceSha256": "afb9e86deb2dc5008394220959313b9d522a31df619dd15dbccc0573d32b1d45",
"outputSha256": "d4036be93e1f5584fde0bab6ec47a65fbf6af72038a2fe89e351e8d45da046e5",
"width": 1672,
"height": 1115
},
"wall-2.webp": {
"sourceSha256": "e2d2d31f3fc2195f5f5e52bb0ea302579e13714dc14f05f17ecb0e5fb6e88c2f",
"outputSha256": "5fc19d83b917ffcd6490213c13da241b25badf5d8050247d9eebdcb2f4456a5b",
"width": 1672,
"height": 1115
},
"wall-3.webp": {
"sourceSha256": "0c4a15ee80a6e067a95e019422baa63e21fee0ee9359e23bd435d27cfb482d71",
"outputSha256": "98efcf269766bed323745d5a2c4f2732f5f39de81184bbcd48c8e2c657971c33",
"width": 1672,
"height": 1115
},
"wall-4.webp": {
"sourceSha256": "433524025bc0a7b4be5538ad090edfc0f898efc202119ae1eb780d061211a556",
"outputSha256": "fe0ee59fbb73c3e93d3f09c4d82b91f540bf8c1179e740ec3bbf6e4a29fbca57",
"width": 1672,
"height": 1115
},
"wall-5.webp": {
"sourceSha256": "3a0c5e3953eebc92232eea3c01cb71e97bc2a97c722890198028e6b4afcb0176",
"outputSha256": "7c8336812b520370f5f5b483b9985a2b391e4516f266658299a6136db10e85d9",
"width": 1672,
"height": 1115
},
"wall-6.webp": {
"sourceSha256": "5f6dc03feb9af4dd2825992d7acf0553a145e622dd19962c6f220429a357a08e",
"outputSha256": "577b0cd1266cf8cd5aa74003af5e8c87ade1e85512850f272e98f4bc802c4424",
"width": 1672,
"height": 1115
},
"wall-7.webp": {
"sourceSha256": "2827d6d5995244cbcc0a71b174c7f71f541588b31da9fdcab0b8259d2704569e",
"outputSha256": "b112c3c20cbcf6274efc1175e1b3958b05889630e7467eec72bffe40b58eda50",
"width": 1672,
"height": 1115
},
"wall-8.webp": {
"sourceSha256": "5c201c4f93d348ba192d3da288a583b786dd907ee681155c66cbc9878d57230e",
"outputSha256": "af5ed16cf3d2475365f07c0666b5e4e98a259b0c340bcfab2212bcb90dcb4ed8",
"width": 1672,
"height": 1115
},
"wall-9.webp": {
"sourceSha256": "9430a9e8db1e5075b12ef9bf45ae4b0ee8425f8910b3f3e85fb3da25d7db7a45",
"outputSha256": "005d0329e1000766f1e7a743c7eb5a537846bb071d54da217a75a113de8f909b",
"width": 1672,
"height": 1115
"wall-10.webp": {
"sourceSha256": "894a58cb9aa79e85973c89dc8519a797a556ab99eec048d82c9b716e4668105d",
"outputSha256": "ff349b2a7667a0cb5a8d43b14aaed77fac873984e86e0895c622bf88cfda3203",
"width": 1536,
"height": 1024
},
"wall-11.webp": {
"sourceSha256": "a8c89edd019ddd2884039feb8ed825af8975dc3a6caf01349f356b07cabb3223",
"outputSha256": "c916262e51fd7c30ed2acfa43cfa3473127cf2a933ccb6f2d429d063c25516b9",
"width": 1536,
"height": 1024
},
"wall-12.webp": {
"sourceSha256": "c749594a4423d8818e363d96abb24cebb1563ba9a88ec24246cb01b26fe32695",
"outputSha256": "de0cc4248a36cd752aa54609d0cef5b209728d875503a83da7a3396a0ac7b4d4",
"width": 1536,
"height": 1024
},
"wall-13.webp": {
"sourceSha256": "b663dfb177fb532bf8c736bb473544d0df6dc0daf293f7dffd54c93877e3d653",
"outputSha256": "9040fabdda5dd8d8b1c8cb0010ed75169c12702acd781b9ac52a7b7e73759df8",
"width": 1536,
"height": 1024
},
"wall-14.webp": {
"sourceSha256": "9ad9551ffb29a4801669160bac336a6a7c5ad884a973a3eeb081e1077ca75527",
"outputSha256": "1f6d32beba78412d03bc7edd5554fe03e305b00e8670c15935120b2171eae5c3",
"width": 1536,
"height": 1024
},
"wall-15.webp": {
"sourceSha256": "00845aa65e7506c2dcfc5b6c1e9de3c38fa624bb3bab5366641ce231473e1dfa",
"outputSha256": "565f518f88c4676e67b1c80dc6e406a2c058311d1fc52b9426683114814b009c",
"width": 1536,
"height": 1024
},
"wall-16.webp": {
"sourceSha256": "4b2aa1b3a3d68a48a5fc4f441acb76b6317b822a9752d5eeea640c723208e807",
"outputSha256": "99048cd11e82afb6e1b4e6358b23880d4435d73bbf42a2522b94b977a8fd4516",
"width": 1536,
"height": 1024
},
"wall-17.webp": {
"sourceSha256": "407d5854278e2e8258a309bc60a3391221a727e78e7e142223182ef9241c288d",
"outputSha256": "95b34c7bf338001ed8a026f59d23306f05e3ba93923ccd765ed84911b49cd14b",
"width": 1536,
"height": 1024
},
"wall-18.webp": {
"sourceSha256": "a11a71435672307815f89bcda3dbde09d46bc1420b1fe9902429bf54285c8dcc",
"outputSha256": "9f41817cd36514ec09128b0d4766938b518032b7f9c77694d33d9e0904e71d63",
"width": 1536,
"height": 1024
},
"wall-19.webp": {
"sourceSha256": "f0ed09704cecfbbb0ccad65489487d63a6588639c1102b7a01325616e8e721cc",
"outputSha256": "0ea65426d1fe9932aae9b8257ec2365a26d133a6b436047d219d179d438e1b06",
"width": 1536,
"height": 1024
},
"wall-20.webp": {
"sourceSha256": "d8474092e1e9c8faf24a51c576e30ddbdef4f53da101d7d4c3e6c95cd1226e7b",
"outputSha256": "7a252a147f6f76336a6abb93f9bda9a730e714bebb46ae4fca9095b738ee68a0",
"width": 1536,
"height": 1024
},
"wall-21.webp": {
"sourceSha256": "c661a2e8845d763f3ce8532883cb36fb13ddd0b04645fb4a53e64a28770170ff",
"outputSha256": "750d6efd55b308b9bfa734a4113e03e7f14f6f6855a4e7436f207edb84c74214",
"width": 1536,
"height": 1024
},
"wall-22.webp": {
"sourceSha256": "f4e7b480e8a087482562f9269a52877ba1ff0db04f0e3d14476cacbdcaad8e72",
"outputSha256": "87003890b64501abcce48722caa3a1c6f48ba0cc6c8ef18617577904b6177f4f",
"width": 1536,
"height": 1024
},
"wall-23.webp": {
"sourceSha256": "95b87340b9f8466ca1abe6333b0b082f3998ef9b6c3016a44198d17c07bd51ac",
"outputSha256": "9a034e7355388d75617aeebe69988e1f974f65ccc8dc7b55723ad8abf1a7d52b",
"width": 1536,
"height": 1024
},
"wall-24.webp": {
"sourceSha256": "e33af6dba602fdd00929a626c24e879e28677bf7fba33b6e3709986cfb7bf8f1",
"outputSha256": "7ecffabefc1ea87b04cb9e803a81af0c0caf35e1b5d6eef156c022e20dfd4fda",
"width": 1536,
"height": 1024
},
"wall-25.webp": {
"sourceSha256": "628bb722ec077115a24b549c89655a0eb32ba766afd4d8c7930727813dcd0c72",
"outputSha256": "b920b6a73e54a07ecf200a0063d7cfcbb816e509549b995e46f906f48c3e3227",
"width": 1536,
"height": 1024
},
"wall-26.webp": {
"sourceSha256": "b8c0b402bdf137233e66f5610e3365f677d16ffa6c4a4c55f160a719fa8faeb8",
"outputSha256": "60559c3f87f92b353096421ad21523214031db73d19ff1b282bf9aa787e6ef04",
"width": 1536,
"height": 1024
},
"wall-27.webp": {
"sourceSha256": "4ed7ee88de3446c6725f45f83438ecde501db40851e94f99599f99f6e04c7dfb",
"outputSha256": "1b00de938b2816536a0d4c976844028af9332cf13a210bb6e9696bc51e0b068e",
"width": 1536,
"height": 1024
},
"wall-28.webp": {
"sourceSha256": "02fa7b01518b08dac4bd08f3ea84e4468e2070e1fef9718bc21f0f596c815df0",
"outputSha256": "0b22a67c458261aee3ecc092a6abac5e7bd66f19ee736d5b66105563db57b20a",
"width": 1536,
"height": 1024
}
}
}
Binary file removed public/img/walls-3x2/wall-1.webp
Diff not rendered.
Binary file added public/img/walls-3x2/wall-10.webp
Binary file added public/img/walls-3x2/wall-11.webp
Binary file added public/img/walls-3x2/wall-12.webp
Binary file added public/img/walls-3x2/wall-13.webp
Binary file added public/img/walls-3x2/wall-14.webp
Binary file added public/img/walls-3x2/wall-15.webp
Binary file added public/img/walls-3x2/wall-16.webp
Binary file added public/img/walls-3x2/wall-17.webp
Binary file added public/img/walls-3x2/wall-18.webp
Binary file added public/img/walls-3x2/wall-19.webp
Binary file removed public/img/walls-3x2/wall-2.webp
Diff not rendered.
Binary file added public/img/walls-3x2/wall-20.webp
Binary file added public/img/walls-3x2/wall-21.webp
Binary file added public/img/walls-3x2/wall-22.webp
Binary file added public/img/walls-3x2/wall-23.webp
Binary file added public/img/walls-3x2/wall-24.webp
Binary file added public/img/walls-3x2/wall-25.webp
Binary file added public/img/walls-3x2/wall-26.webp
Binary file added public/img/walls-3x2/wall-27.webp
Binary file added public/img/walls-3x2/wall-28.webp
Binary file removed public/img/walls-3x2/wall-3.webp
Diff not rendered.
Binary file removed public/img/walls-3x2/wall-4.webp
Diff not rendered.
Binary file removed public/img/walls-3x2/wall-5.webp
Diff not rendered.
Binary file removed public/img/walls-3x2/wall-6.webp
Diff not rendered.
Binary file removed public/img/walls-3x2/wall-7.webp
Diff not rendered.
Binary file removed public/img/walls-3x2/wall-8.webp
Diff not rendered.
Binary file removed public/img/walls-3x2/wall-9.webp
Diff not rendered.
28 changes: 19 additions & 9 deletions public/img/walls.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
{
"walls": [
"/img/wall-1.webp",
"/img/wall-2.webp",
"/img/wall-3.webp",
"/img/wall-4.webp",
"/img/wall-5.webp",
"/img/wall-6.webp",
"/img/wall-7.webp",
"/img/wall-8.webp",
"/img/wall-9.webp"
"/img/wall-10.webp",
"/img/wall-11.webp",
"/img/wall-12.webp",
"/img/wall-13.webp",
"/img/wall-14.webp",
"/img/wall-15.webp",
"/img/wall-16.webp",
"/img/wall-17.webp",
"/img/wall-18.webp",
"/img/wall-19.webp",
"/img/wall-20.webp",
"/img/wall-21.webp",
"/img/wall-22.webp",
"/img/wall-23.webp",
"/img/wall-24.webp",
"/img/wall-25.webp",
"/img/wall-26.webp",
"/img/wall-27.webp",
"/img/wall-28.webp"
],
"loading": [
"/img/loading-1.webp",
Expand Down
11 changes: 6 additions & 5 deletions public/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ const factionArtReady = Promise.all(factionArtImages.map((image) => (
})
))).catch((error) => console.warn('[facções] preload parcial', error));

/* Wallpapers rotativos (wall-1..9): 1 por tela no fluxo home→setup→lado→personagem, sem
/* Wallpapers rotativos (wall-10..28): 1 por tela no fluxo home→setup→lado→personagem, sem
repetir; o offset rotaciona a cada acesso (localStorage) pra variar entre visitas.

Estes arrays são fallback do primeiro quadro. A fonte de verdade é
Expand All @@ -383,9 +383,11 @@ const factionArtReady = Promise.all(factionArtImages.map((image) => (
Servidos em .webp desde 07/08: os PNG de 2–2,6 MB viraram ~250 KB (ffmpeg libwebp q85,
comparado lado a lado antes da troca — texto do cartaz e grão idênticos). Os .png ficam
na pasta como fonte; wallpaper novo entra como PNG e vira .webp no mesmo commit. */
const WALLS = ['/img/wall-1.webp', '/img/wall-2.webp', '/img/wall-3.webp', '/img/wall-4.webp',
'/img/wall-5.webp', '/img/wall-6.webp', '/img/wall-7.webp', '/img/wall-8.webp',
'/img/wall-9.webp'];
const WALLS = ['/img/wall-10.webp', '/img/wall-11.webp', '/img/wall-12.webp', '/img/wall-13.webp',
'/img/wall-14.webp', '/img/wall-15.webp', '/img/wall-16.webp', '/img/wall-17.webp',
'/img/wall-18.webp', '/img/wall-19.webp', '/img/wall-20.webp', '/img/wall-21.webp',
'/img/wall-22.webp', '/img/wall-23.webp', '/img/wall-24.webp', '/img/wall-25.webp',
'/img/wall-26.webp', '/img/wall-27.webp', '/img/wall-28.webp'];
let _wallVisit = 0;
try {
_wallVisit = parseInt(localStorage.getItem('cs_wallK') || '-1', 10) + 1;
Expand Down Expand Up @@ -821,7 +823,6 @@ let heartbeatOff = false;
/* CONTADOR "N ONLINE" do rodapé do menu (pedido do dono, 06/08). GET /api/online lê a
view online_now (heartbeat < 2 min). `hidden` até ter número: rodapé nunca mostra
zero mentiroso quando o backend está fora/local. Atualiza a cada 60 s só no menu. */
{ const v = document.getElementById('mf-ver'); if (v) v.textContent = `CORO SOLTO v${VERSION}`; }
// o idioma por país resolve ANTES de traduzir o menu (o fetch começou no <head>)
await resolveGeoLang();
// EN por camada: varre o menu estático UMA vez (PT é a fonte; i18n.js explica o desenho)
Expand Down
14 changes: 6 additions & 8 deletions public/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -2031,12 +2031,10 @@ html[data-ui="legacy"] #splash-enter{font-family:var(--font)}
.ms-arrow{width:100%;height:26px;font-size:12px;line-height:1;background:rgba(var(--bg-900-rgb),.85);
border:1px solid var(--line-2);color:var(--am)}
.ms-arrow:hover{background:var(--am);color:#141216}
/* rodapé do menu: online + links de dev (substitui a frase de sátira) */
.menu-footer{position:fixed;right:min(4vw,42px);bottom:48px;z-index:60;
/* Links ficam na última linha; as redes sobem para perto da navegação. */
.menu-footer{position:fixed;right:min(4vw,42px);bottom:14px;z-index:60;
display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;justify-content:flex-end;
font-size:12px;color:var(--ink-300);text-align:right;max-width:min(70vw,760px)}
.menu-version{position:fixed;right:min(4vw,42px);bottom:14px;z-index:60;color:var(--ink-200);
font-size:12px;font-weight:700;letter-spacing:1px;text-align:right}
/* Bolinha virou LOSANGO: o redesign proíbe raio, e o losango já é o sinal de
"isto está vivo/é você" em três outros lugares (você no radar, thumb do slider,
canto do card selecionado). Trocar por quadrado puro perderia essa rima. */
Expand All @@ -2046,9 +2044,8 @@ html[data-ui="legacy"] #splash-enter{font-family:var(--font)}
.menu-footer a{color:var(--ink-200);text-decoration:none;border-bottom:0}
.menu-footer a:hover{color:var(--am)}
.menu-footer .mf-online{color:var(--verde,#7dc98f);font-weight:700}
/* `flex-basis:100%` dá linha própria sem sair do flex-wrap do rodapé. */
.menu-footer .mf-social{flex-basis:100%;display:flex;gap:10px;align-items:center;
justify-content:inherit;margin-top:2px}
.menu-footer .mf-social{position:fixed;top:clamp(46px,7vh,84px);right:min(4vw,42px);z-index:60;
display:flex;gap:10px;align-items:center;justify-content:flex-end;margin:0}
.menu-footer .mf-social a{display:inline-flex;width:30px;height:30px;border-bottom:0;
align-items:center;justify-content:center;border:1px solid var(--line-2);border-radius:7px}
.menu-footer .mf-social svg{width:16px;height:16px;fill:currentColor;display:block}
Expand All @@ -2065,7 +2062,7 @@ html[data-ui="legacy"] #splash-enter{font-family:var(--font)}
#main-menu{display:block}
.menu-footer{position:static;justify-content:flex-start;text-align:left;
max-width:none;padding:18px var(--s-5) 24px}
.menu-version{position:static;display:block;padding:0 var(--s-5) 24px;text-align:right}
.menu-footer .mf-social{position:static;flex-basis:100%;justify-content:flex-start;margin-top:2px}
}

/* =========================================================================
Expand Down Expand Up @@ -2369,6 +2366,7 @@ body[data-cine-screen] #cine-chrome{opacity:1}
.home-broadcast .home-service-strip .cs-item:hover,.home-broadcast .home-service-strip .cs-item:focus-visible,
.home-broadcast .home-service-strip .cs-item[aria-current="true"]{transform:none;background:var(--ink-100);color:var(--bg-900);border-color:var(--ink-100)}
.home-broadcast .menu-footer{right:clamp(52px,6vw,96px);bottom:18px}
.home-broadcast .menu-footer .mf-social{right:clamp(52px,6vw,96px)}
#main-menu:has(.mission-cut.open) .home-broadcast{opacity:.16;transform:translateX(-5vw);filter:saturate(.25);pointer-events:none}

/* MISSÃO — cartaz full-height à esquerda, console de decisão à direita. */
Expand Down
13 changes: 9 additions & 4 deletions scripts/fetch-decals.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,15 @@ cd "$(dirname "$0")/.."
URL="${DECALS_PACK_URL:-https://github.com/corosolto/client/releases/download/decals-pack-v2/decals-pack.zip}"
DEST="public/img/decals"

# Sentinela conta só o ACERVO baixável (exclui os `or-*.png`, que são obra própria
# VERSIONADA e vêm no clone — sem esta exclusão, qualquer clone fresco tem >0 PNG,
# o early-exit dispara e o pacote do acervo nunca baixa na Vercel).
if [ -d "$DEST" ] && [ "$(ls -1 "$DEST"/*.png 2>/dev/null | grep -cv '/or-')" -gt 0 ]; then
# Sentinela exige o acervo completo. `pixo-lajes-01.png` é versionado mas integra a
# mesma lista do acervo; os outros 196 chegam no zip. Qualquer contagem menor deixa
# mapas sem grafite em clone limpo, mesmo que a pasta já exista.
EXPECTED_DECALS=197
decal_count=0
if [ -d "$DEST" ]; then
decal_count="$(find "$DEST" -maxdepth 1 -type f -name '*.png' ! -name 'or-*.png' | wc -l | tr -d ' ')"
fi
if [ "$decal_count" -ge "$EXPECTED_DECALS" ]; then
echo "decals/ já configurado — nada a fazer."
exit 0
fi
Expand Down
2 changes: 2 additions & 0 deletions src/pages/about.astro
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
// Redirecionamento por idioma: cada página manda pro par quando o idioma
// resolvido não bate (mesmas regras do public/js/i18n.js).
import Layout from '../layouts/Layout.astro';
import pkg from '../../package.json';
import { ARMAS, MAPAS, PERSONAGENS, FACCOES } from '../data/jogo';
import { BRAND_FULL, BRAND_ALT, GAME_ID, abs } from '../lib/site';

Expand Down Expand Up @@ -67,6 +68,7 @@ const jsonld = [
<a class="btn-cta btn-2" href="/how-to-play">How to play</a>
</div>
<p style="font-size:12px;color:var(--bone-dim);margin-top:10px">Runs in a desktop browser. No installation, no sign-up.</p>
<p style="font-size:12px;color:var(--bone-dim);margin-top:4px">Current version: {pkg.version}</p>

<div class="tstat" style="margin-top:26px">
<div><b>{PERSONAGENS.length}</b><span>characters</span></div>
Expand Down
1 change: 0 additions & 1 deletion src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -705,7 +705,6 @@ window.__GEO_LANG__ = (function () {
</div>
</div>
</section>
<span class="menu-version" id="mf-ver"></span>

<!-- PAINEL DE SETUP - dois PASSOS no mesmo painel (data-step).
PASSO 1 = A PARTIDA: o mapa é o protagonista (cartaz grande, nome, modo, bots).
Expand Down
2 changes: 2 additions & 0 deletions src/pages/sobre.astro
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
// A FAQ também tinha número errado ("18 personagens" num parágrafo e "8" na
// lista); os números agora saem de src/data/jogo.ts, copiado do código do jogo.
import Layout from '../layouts/Layout.astro';
import pkg from '../../package.json';
import { ARMAS, MAPAS, PERSONAGENS, FACCOES } from '../data/jogo';
import { BRAND_FULL, BRAND_ALT, DESC_LONG, GAME_ID, abs } from '../lib/site';

Expand Down Expand Up @@ -74,6 +75,7 @@ const jsonld = [
<a class="btn-cta btn-2" href="/como-jogar">Como jogar</a>
</div>
<p style="font-size:12px;color:var(--bone-dim);margin-top:10px">Roda no navegador de desktop. Sem instalação, sem cadastro.</p>
<p style="font-size:12px;color:var(--bone-dim);margin-top:4px">Versão atual: {pkg.version}</p>

<div class="tstat" style="margin-top:26px">
<div><b>{PERSONAGENS.length}</b><span>personagens</span></div>
Expand Down
2 changes: 1 addition & 1 deletion tools/eval/ARCH.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
| Arquivo | Linhas | Símbolos |
|---|---:|---:|
| `public/js/game.js` | 7261 | 273 |
| `public/js/main.js` | 2813 | 259 |
| `public/js/main.js` | 2814 | 259 |
| `public/js/glbchars.js` | 969 | 68 |
| `public/js/characters.js` | 1169 | 41 |
| `public/js/vmattach.js` | 629 | 4 |
Expand Down
19 changes: 10 additions & 9 deletions tools/eval/redesign-check.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ const alvoPorMutante = {
'faccao-mostra-antes-da-arte': 'UIR39',
'troca-m-abre-pausa': 'UIR40',
'resultado-emenda-volta': 'UIR41',
'versao-menu-volta-rodape': 'UIR42',
'versao-menu-volta-home': 'UIR42',
'sem-autoria': 'UIR43',
'filtro-autor-morto': 'UIR4', // mistura comunidade nos OFICIAIS de novo (reverte o #368)
'sem-badge-oficial': 'UIR43',
Expand Down Expand Up @@ -317,9 +317,9 @@ css = muta('resultado-corta-personagem', css,
css = muta('resultado-emenda-volta', css,
'.me-wrap{position:relative;',
'.me-wrap::after{content:"";position:absolute;inset:0 0 0 44%;background:radial-gradient(ellipse at 88% 58%,rgba(73,168,70,.2),transparent 78%)}\n.me-wrap{position:relative;');
astro = muta('versao-menu-volta-rodape', astro,
'<span class="menu-version" id="mf-ver"></span>',
'<span class="mf-ver" id="mf-ver"></span>');
astro = muta('versao-menu-volta-home', astro,
'<!-- PAINEL DE SETUP - dois PASSOS',
'<span class="menu-version" id="mf-ver"></span>\n\n <!-- PAINEL DE SETUP - dois PASSOS');
css = muta('loading-volta-grande', css,
'width:min(86px,6.8vw);height:min(144px,15.2vh);pointer-events:none;',
'width:min(430px,34vw);height:min(720px,76vh);pointer-events:none;');
Expand Down Expand Up @@ -909,9 +909,10 @@ const resultadoFundoContinuo = !/\.me-(?:wrap|hero)::after\{/.test(css)
&& !/--me-accent-rgb/.test(`${css}\n${main}\n${game}`);
/* Aceita as duas árvores do menu (a da main fechava em </div></div>; a do
cinematic-ui fecha em </section>) — a cláusula real é a camada própria + CSS fixo. */
const versaoMenuNoCanto = /(?:<\/div>|<\/section>)\s*<span class="menu-version" id="mf-ver"><\/span>\s*(?:<\/div>)?\s*<!-- PAINEL DE SETUP/.test(astro)
&& /\.menu-version\{[^}]*position:fixed[^}]*right:min\(4vw,42px\)[^}]*bottom:14px/.test(css)
&& /\.menu-footer\{[^}]*bottom:48px/.test(css);
const versaoForaDaHome = !/id="mf-ver"/.test(astro)
&& !/\.menu-version\{/.test(css)
&& /\.menu-footer\{[^}]*bottom:14px/.test(css)
&& /\.menu-footer \.mf-social\{[^}]*position:fixed[^}]*top:clamp\(46px,7vh,84px\)/.test(css);
/* UIR20 — home ESTÁTICA com idioma por país. O Stateloop só publica build estático
e a home SSR não emite dist/client/index.html, então a decisão de idioma migrou
do frontmatter para o /api/geo-lang: o fetch começa no <head>, o i18n resolve
Expand Down Expand Up @@ -1021,8 +1022,8 @@ const resultados = [
'o jogo pausa antes do pointer lock sair; seleção usa enemyFaction e VOLTAR retoma a partida'],
['UIR41', 'resultado usa um único fundo preto contínuo atrás da arte alpha', resultadoFundoContinuo,
'nenhum halo ou degradê limitado à metade direita pode criar emenda no palco do personagem'],
['UIR42', 'menu preenche o viewport e fixa a versão no canto inferior direito', versaoMenuNoCanto,
'a versão fica em camada própria abaixo do rodapé, sem participar da fileira de links'],
['UIR42', 'home não exibe versão; links ficam na última linha e redes no canto superior direito', versaoForaDaHome,
'a versão saiu da home; rodapé e redes ocupam posições próprias'],
['UIR43', 'ficha do mapa traz autor, data e crachá OFICIAL/COMUNIDADE (sub-filtro de autor removido, #368)', autoriaNaFicha,
'MAP_AUTOR/MAP_DATA por mapa; byline renderiza; badge OFICIAL pra casa e COMUNIDADE pra fora; sem marcação morta de chips de autor'],
];
Expand Down
Loading
Loading