mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 11:24:00 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f45d4bcc93 | ||
|
|
3689d2e6ca | ||
|
|
6af7cef3a3 | ||
|
|
25340f735c | ||
|
|
2a6a3922af | ||
|
|
11602742a8 | ||
|
|
657277dbf9 |
No files matched your search
@@ -0,0 +1,3 @@
|
|||||||
|
- The Minimal HUD layout no longer draws the centred MGRS / LAT / LON banner
|
||||||
|
across the globe; the bottom-left readout still shows the same position, and
|
||||||
|
now sits clear of the map attribution row instead of overlapping it (Said Turksever, #1523).
|
||||||
@@ -263,6 +263,14 @@ that names Operator restores the default Tactical layout. Operator was the
|
|||||||
only layout that showed the HUD's top banner bar, so its markup and styles are
|
only layout that showed the HUD's top banner bar, so its markup and styles are
|
||||||
removed too.
|
removed too.
|
||||||
|
|
||||||
|
Minimal no longer shows the centred MGRS / LAT / LON bar near the bottom of the
|
||||||
|
globe (November 3, 2026, #1523): the bottom-left readout already carries the
|
||||||
|
same position, and the bar sat across the globe. That readout now sits 7.25rem
|
||||||
|
(plus 2vh) up, clear of the Cesium / Esri attribution row it used to overlap,
|
||||||
|
with Scope on or off. `scripts/qa-scope-hud.mjs` checks the hidden banner and
|
||||||
|
clearance above the rendered attribution row at desktop and intermediate
|
||||||
|
widths in both Scope modes, plus the existing compact phone treatment.
|
||||||
|
|
||||||
## Cyber HUD — September 30, 2026
|
## Cyber HUD — September 30, 2026
|
||||||
|
|
||||||
Display > HUD > Layout includes Cyber, also available through the HUD voice
|
Display > HUD > Layout includes Cyber, also available through the HUD voice
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
* Optional: QA_BASE_URL, QA_SCREENSHOT_DIR (screenshots stay outside the repo).
|
* Optional: QA_BASE_URL, QA_SCREENSHOT_DIR (screenshots stay outside the repo).
|
||||||
* Proves a fresh boot defaults to Scope ON at 100%, native checkbox click/Space,
|
* Proves a fresh boot defaults to Scope ON at 100%, native checkbox click/Space,
|
||||||
* feather 0/11/100/200, layout independence,
|
* feather 0/11/100/200, layout independence,
|
||||||
* share/scene restore, and visible text backing including rotated metadata.
|
* share/scene restore, visible text backing including rotated metadata,
|
||||||
|
* and Minimal's banner removal and coordinate/attribution clearance.
|
||||||
*/
|
*/
|
||||||
import fs from 'node:fs';
|
import fs from 'node:fs';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
@@ -666,6 +667,79 @@ try {
|
|||||||
await settleTextBackings(false);
|
await settleTextBackings(false);
|
||||||
checkSceneChrome(`narrow ${layout}`, before, await readSceneChrome());
|
checkSceneChrome(`narrow ${layout}`, before, await readSceneChrome());
|
||||||
}
|
}
|
||||||
|
await page.select('#hud-layout-select', 'minimal');
|
||||||
|
for (const viewport of [
|
||||||
|
{ width: 1600, height: 900 },
|
||||||
|
{ width: 1024, height: 700 },
|
||||||
|
{ width: 820, height: 700 },
|
||||||
|
{ width: 390, height: 844 },
|
||||||
|
]) {
|
||||||
|
await page.setViewport(viewport);
|
||||||
|
for (const enabled of [true, false]) {
|
||||||
|
await page.evaluate(
|
||||||
|
(enabled) =>
|
||||||
|
window.__godsEyeView.styleManager.applyVisualState({
|
||||||
|
scope: { enabled },
|
||||||
|
}),
|
||||||
|
enabled,
|
||||||
|
);
|
||||||
|
await settleTextBackings(enabled);
|
||||||
|
// Wait for the responsive shell and the real attribution logo to settle.
|
||||||
|
await page.waitForFunction(
|
||||||
|
(mobile) =>
|
||||||
|
document.body.classList.contains('mobile-shell') === mobile &&
|
||||||
|
[...document.querySelectorAll('#cesium-credits img')].some(
|
||||||
|
(img) => img.complete && img.naturalWidth > 0,
|
||||||
|
),
|
||||||
|
{},
|
||||||
|
viewport.width <= 720,
|
||||||
|
);
|
||||||
|
const geometry = await page.evaluate(() => {
|
||||||
|
const banner = document.querySelector('#intel-hud .hud-bottom-bar');
|
||||||
|
const coordinates = document.querySelector(
|
||||||
|
'#intel-hud .hud-bottom-left',
|
||||||
|
);
|
||||||
|
// The fixed host has zero size; Cesium positions its actual row inside it.
|
||||||
|
const credits = document.querySelector(
|
||||||
|
'#cesium-credits .cesium-widget-credits',
|
||||||
|
);
|
||||||
|
const coordinateBox = coordinates.getBoundingClientRect();
|
||||||
|
const creditBox = credits.getBoundingClientRect();
|
||||||
|
return {
|
||||||
|
bannerHidden: getComputedStyle(banner).display === 'none',
|
||||||
|
coordinatesVisible:
|
||||||
|
coordinateBox.width > 0 && coordinateBox.height > 0,
|
||||||
|
coordinatesHidden: getComputedStyle(coordinates).display === 'none',
|
||||||
|
creditsVisible: creditBox.width > 0 && creditBox.height > 0,
|
||||||
|
gap: creditBox.top - coordinateBox.bottom,
|
||||||
|
bottom: getComputedStyle(coordinates).bottom,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const name = `Minimal ${viewport.width}px Scope ${enabled ? 'ON' : 'OFF'}`;
|
||||||
|
check(
|
||||||
|
`${name}: centred coordinate banner stays hidden`,
|
||||||
|
geometry.bannerHidden,
|
||||||
|
geometry,
|
||||||
|
);
|
||||||
|
if (viewport.width <= 720) {
|
||||||
|
check(
|
||||||
|
`${name}: phone keeps its compact HUD treatment`,
|
||||||
|
geometry.coordinatesHidden &&
|
||||||
|
geometry.creditsVisible &&
|
||||||
|
geometry.bottom === 'auto',
|
||||||
|
geometry,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
check(
|
||||||
|
`${name}: coordinate block clears the full attribution row`,
|
||||||
|
geometry.coordinatesVisible &&
|
||||||
|
geometry.creditsVisible &&
|
||||||
|
geometry.gap >= 7.5,
|
||||||
|
geometry,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
check('runtime has no uncaught browser errors', errors.length === 0, errors);
|
check('runtime has no uncaught browser errors', errors.length === 0, errors);
|
||||||
} finally {
|
} finally {
|
||||||
await browser.close();
|
await browser.close();
|
||||||
|
|||||||
@@ -384,10 +384,6 @@ body:not(.ui-clean-view):not(.recording-mode) #cesium-credits {
|
|||||||
bottom: calc(2vh + 5.4rem);
|
bottom: calc(2vh + 5.4rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
#intel-hud[data-variant='minimal'] .hud-bottom-bar {
|
|
||||||
bottom: calc(2vh + 8.9rem);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 900px) {
|
@media (max-width: 900px) {
|
||||||
#command-dock #location-bar .location-toolbar-label {
|
#command-dock #location-bar .location-toolbar-label {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@@ -467,18 +467,9 @@ body:not(.ui-clean-view):not(.recording-mode):has(
|
|||||||
bottom: calc(2vh + 6.5rem);
|
bottom: calc(2vh + 6.5rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Clear the attribution row, whose logo stands about 1.75rem tall. */
|
||||||
#intel-hud[data-variant='minimal'] .hud-bottom-left {
|
#intel-hud[data-variant='minimal'] .hud-bottom-left {
|
||||||
bottom: calc(2vh + 5.4rem);
|
bottom: calc(2vh + 7.25rem);
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-scope-mask='off']
|
|
||||||
#intel-hud[data-variant='minimal']
|
|
||||||
.hud-bottom-left {
|
|
||||||
bottom: calc(2vh + 6.5rem);
|
|
||||||
}
|
|
||||||
|
|
||||||
#intel-hud[data-variant='minimal'] .hud-bottom-bar {
|
|
||||||
bottom: calc(2vh + 9rem);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 900px) {
|
@media (max-width: 900px) {
|
||||||
|
|||||||
@@ -247,10 +247,6 @@ body.recording-mode #cesium-credits {
|
|||||||
bottom: calc(2vh + 7.5rem);
|
bottom: calc(2vh + 7.5rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
#intel-hud[data-variant='minimal'] .hud-bottom-bar {
|
|
||||||
bottom: calc(2vh + 11.5rem);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 980px) {
|
@media (max-width: 980px) {
|
||||||
#command-dock {
|
#command-dock {
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
@@ -281,10 +277,6 @@ body.recording-mode #cesium-credits {
|
|||||||
#intel-hud[data-variant='minimal'] .hud-bottom-left {
|
#intel-hud[data-variant='minimal'] .hud-bottom-left {
|
||||||
bottom: calc(2vh + 12rem);
|
bottom: calc(2vh + 12rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
#intel-hud[data-variant='minimal'] .hud-bottom-bar {
|
|
||||||
bottom: calc(2vh + 16rem);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 720px) {
|
@media (max-width: 720px) {
|
||||||
|
|||||||
@@ -310,11 +310,6 @@
|
|||||||
bottom: 12vh;
|
bottom: 12vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#intel-hud[data-variant='minimal'] .hud-bottom-bar {
|
|
||||||
display: flex;
|
|
||||||
bottom: calc(12vh + 4rem);
|
|
||||||
}
|
|
||||||
|
|
||||||
#intel-hud[data-variant='minimal'] .hud-summary-wrap {
|
#intel-hud[data-variant='minimal'] .hud-summary-wrap {
|
||||||
max-width: 280px;
|
max-width: 280px;
|
||||||
}
|
}
|
||||||
@@ -374,29 +369,6 @@
|
|||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
:root[data-scope-mask='off']
|
|
||||||
#intel-hud[data-variant='minimal']
|
|
||||||
.hud-bottom-bar {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-scope-mask='off']
|
|
||||||
#intel-hud[data-variant='minimal']
|
|
||||||
.hud-bottom-bar {
|
|
||||||
width: fit-content;
|
|
||||||
max-width: calc(100vw - 120px);
|
|
||||||
gap: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-scope-mask='off']
|
|
||||||
#intel-hud[data-variant='minimal']
|
|
||||||
.hud-bottom-bar
|
|
||||||
.hud-readout {
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root[data-scope-mask='off']:not([data-ui-theme='cyber'])
|
:root[data-scope-mask='off']:not([data-ui-theme='cyber'])
|
||||||
#title-bar
|
#title-bar
|
||||||
h1::before {
|
h1::before {
|
||||||
|
|||||||
Reference in new issue
Block a user