generated from Labyricorn/labyricorn-project-template
fix: correct observation embedding and orphan waiting state
This commit is contained in:
@@ -2445,9 +2445,37 @@ body.surface-observation > main {
|
||||
body.surface-observation .observation-overlay {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
/* The NGN pane is already the surface viewport. Do not retain the console
|
||||
overlay's centered 16:9 box, transform, or its outside-pane letterbox. */
|
||||
width: auto;
|
||||
height: auto;
|
||||
transform: none;
|
||||
box-shadow: none;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* A secondary surface has no authority of its own. This is only shown after
|
||||
its attach request times out; the inactive Observation controls stay hidden. */
|
||||
body.surface-observation.surface-waiting::before {
|
||||
content: "WAITING FOR EXHIBIT OWNER\A Observation surface is not connected.";
|
||||
white-space: pre-line;
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 2;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
padding: 2rem;
|
||||
box-sizing: border-box;
|
||||
background: #010308;
|
||||
color: var(--tertiary-accent);
|
||||
font-family: var(--mono-font);
|
||||
font-size: clamp(.8rem, 1.4vw, 1.1rem);
|
||||
letter-spacing: .12em;
|
||||
line-height: 1.8;
|
||||
text-align: center;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* Exiting/returning to the console is NGN's job (pane lifecycle), not the
|
||||
surface's -- these controls would otherwise mutate the *console's* own
|
||||
view.observation overlay flag from a stray click (report SS7/SS8). */
|
||||
|
||||
@@ -337,6 +337,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
channelName: XZBTSurfaceMode.channelName(xzbtInstanceId),
|
||||
timeoutMs: 1500,
|
||||
onSnapshot: (values, stateRevision, registryRevision, presentation) => {
|
||||
document.body.classList.remove('surface-waiting');
|
||||
Object.keys(values || {}).forEach(target => applyPresentationState(target, values[target]));
|
||||
if (presentation && typeof presentation.tickerText === 'string' && presentation.tickerText) {
|
||||
const ticker = document.getElementById('observation-ticker-text');
|
||||
@@ -368,6 +369,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
// No console instance open on this channel (or a stale/unknown
|
||||
// ?xi=). Degrade to a clear waiting state rather than inventing
|
||||
// local authority (report SS9, Museum's proven behavior).
|
||||
document.body.classList.add('surface-waiting');
|
||||
console.warn('[SciFi-XZBT] Observation surface: no console instance found for xi=' + xzbtInstanceId);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user