diff --git a/web/zebra-spaces.html b/web/zebra-spaces.html
index d511686..dd576d3 100644
--- a/web/zebra-spaces.html
+++ b/web/zebra-spaces.html
@@ -752,6 +752,12 @@ async function handleSignal(raw){
case 'peer-joined':
members.set(m.uuid, { uuid:m.uuid, pubkey:m.pubkey, handle:m.handle, role:m.role, joined_at: Date.now()/1000 });
logLine('', m.handle+' joined as '+m.role);
+ /* if the original host rejoined during their grace window, the room
+ * is rescued — drop the "space closing" status from our top bar */
+ if (m.role === 'host'){
+ hostUUID = m.uuid;
+ setStatus('connected as '+myRole, 'ok');
+ }
/* establish mesh PC if both us and them are speakers (or mods).
* present-member-offers: existing speaker offers when a new speaker
* arrives. deterministic by uuid string compare. */
@@ -862,6 +868,7 @@ async function handleSignal(raw){
{ const mm = members.get(m.new_host_uuid);
if (mm){ mm.role = 'host';
if (m.new_host_uuid === myUUID){ myRole = 'host'; setStatus('connected as host','ok'); onRoleChanged('cohost','host'); }
+ else { setStatus('connected as '+myRole, 'ok'); } /* clears the space-closing warning */
logLine('', (mm.handle||shortHex(m.new_host_uuid))+' is now host'); }
renderRoom();
}
@@ -1215,8 +1222,8 @@ logLine('', 'ready — pick a handle, type a rendezvous code, enter the space');