Compare commits

...
Author SHA1 Message Date
Said Turksever f45d4bcc93 fix: resolve review findings and refresh PR #1523 against main 2026-11-03 16:17:24 +00:00
Said Turksever 3689d2e6ca docs: complete review bookkeeping for #1523 2026-11-03 16:10:09 +00:00
Said Turksever 6af7cef3a3 Merge remote-tracking branch 'upstream/main' into codex/pr1523-current-main 2026-11-03 15:11:27 +00:00
Said Turksever 25340f735c test: cover Minimal HUD banner and attribution clearance 2026-11-03 15:07:58 +00:00
Said Turksever 2a6a3922af Keep the Minimal HUD readout clear of the attribution row
The bottom-left MGRS / lat-lon readout sat 5.4rem up while the Cesium /
Esri credits row, logo included, reaches about 6.75rem, so the two
overlapped. Raise it to 7.25rem and drop the Scope-off override: the
backplates add no vertical padding, so both modes now leave the same gap.
2026-11-03 14:46:32 +00:00
Said Turksever 11602742a8 Document the Minimal HUD banner removal (#1523) 2026-11-03 14:31:16 +00:00
Said Turksever 657277dbf9 Hide the bottom MGRS banner in the Minimal HUD layout
The bottom-left readout already shows MGRS and lat/lon, and the centred
bar sat across the globe.
2026-11-03 14:30:55 +00:00
7 changed files with 88 additions and 52 deletions

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).
+8
View File
@@ -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
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
Display > HUD > Layout includes Cyber, also available through the HUD voice
+75 -1
View File
@@ -5,7 +5,8 @@
* 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,
* 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 path from 'node:path';
@@ -666,6 +667,79 @@ try {
await settleTextBackings(false);
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);
} finally {
await browser.close();
-4
View File
@@ -384,10 +384,6 @@ body:not(.ui-clean-view):not(.recording-mode) #cesium-credits {
bottom: calc(2vh + 5.4rem);
}
#intel-hud[data-variant='minimal'] .hud-bottom-bar {
bottom: calc(2vh + 8.9rem);
}
@media (max-width: 900px) {
#command-dock #location-bar .location-toolbar-label {
overflow: hidden;
+2 -11
View File
@@ -467,18 +467,9 @@ body:not(.ui-clean-view):not(.recording-mode):has(
bottom: calc(2vh + 6.5rem);
}
/* Clear the attribution row, whose logo stands about 1.75rem tall. */
#intel-hud[data-variant='minimal'] .hud-bottom-left {
bottom: calc(2vh + 5.4rem);
}
: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);
bottom: calc(2vh + 7.25rem);
}
@media (max-width: 900px) {
-8
View File
@@ -247,10 +247,6 @@ body.recording-mode #cesium-credits {
bottom: calc(2vh + 7.5rem);
}
#intel-hud[data-variant='minimal'] .hud-bottom-bar {
bottom: calc(2vh + 11.5rem);
}
@media (max-width: 980px) {
#command-dock {
grid-template-areas:
@@ -281,10 +277,6 @@ body.recording-mode #cesium-credits {
#intel-hud[data-variant='minimal'] .hud-bottom-left {
bottom: calc(2vh + 12rem);
}
#intel-hud[data-variant='minimal'] .hud-bottom-bar {
bottom: calc(2vh + 16rem);
}
}
@media (max-width: 720px) {
-28
View File
@@ -310,11 +310,6 @@
bottom: 12vh;
}
#intel-hud[data-variant='minimal'] .hud-bottom-bar {
display: flex;
bottom: calc(12vh + 4rem);
}
#intel-hud[data-variant='minimal'] .hud-summary-wrap {
max-width: 280px;
}
@@ -374,29 +369,6 @@
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'])
#title-bar
h1::before {