Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
33 lines
3.1 KiB
Diff
33 lines
3.1 KiB
Diff
--- a/addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c
|
|
+++ b/addons/core/Scripts/Game/ERR/00_Core/ERR_ChatClient.c
|
|
@@ -49,6 +49,7 @@
|
|
if (m_Command) m_Command.Remove(OnCommand);
|
|
m_Command = null;
|
|
ERR_AdminMenu menu = ERR_AdminMenu.GetOpenMenu();
|
|
- if (menu) menu.Close();
|
|
+ // A retained former controller must not close the current owner's panel.
|
|
+ if (menu && GetGame() && m_Controller == GetGame().GetPlayerController()) menu.Close();
|
|
}
|
|
}
|
|
--- a/tools/check.py
|
|
+++ b/tools/check.py
|
|
@@ -16,6 +16,7 @@
|
|
subprocess.run([sys.executable,str(ROOT/'tests/test_native_player_death_fixture.py')],check=True)
|
|
subprocess.run([sys.executable,str(ROOT/'tests/test_hq_planner_budget.py')],check=True)
|
|
subprocess.run([sys.executable,str(ROOT/'tests/test_observer_ownership.py')],check=True)
|
|
+ subprocess.run([sys.executable,str(ROOT/'tests/test_chat_client_ownership.py')],check=True)
|
|
subprocess.run([sys.executable,str(ROOT/'tests/test_native_observer_selector.py')],check=True)
|
|
subprocess.run([sys.executable,str(ROOT/'tests/test_ground_depot_loading.py')],check=True)
|
|
subprocess.run([sys.executable,str(ROOT/'tests/test_ground_depot_lifecycle.py')],check=True)
|
|
--- a/docs/current-status.md
|
|
+++ b/docs/current-status.md
|
|
@@ -1,4 +1,8 @@
|
|
# Current development status
|
|
+
|
|
+**2 October 2026 — old chat callbacks preserve the current administration menu:** a retained former local controller now removes only its own chat listener and timers; it cannot close a replacement controller's newly opened panel. Current-owner shutdown and mission-change cleanup remain intact. Independent actual-method tests compile and reproduce the old failure, then pass with the ownership check; all **280 registered regression programs pass**.
|
|
+
|
|
+The [hidden/muted normal escape](evidence/native-2026-10-02-chat-ownership/report.json) completes **63 assertions and one round**, with zero script/runtime failures, thirteen retained installed-resource errors, confirmed cleanup and unchanged source/external inputs. This is compilation and ordinary scripted-route evidence, not native controller-replacement or multiplayer qualification. [Review and preservation](evidence/chat-ownership-2026-10-02/review.json). Original missions, inherited changes and the existing 412-file playtest are unchanged; that package predates the observer and chat ownership fixes. Human play, real multiplayer, physical logistics, comparative FPS and clean release remain unfinished.
|
|
|
|
**2 October 2026 — partial-clue loss recovery checked on current source:** the [hidden/muted fixed-site fixture](evidence/native-2026-10-02-partial-document-loss/report.json) passes **76 assertions and one completion**. After ordinary partial discovery and deliberate loss of all four targeted documents, distant, unauthorized and obstructed observations remain rejected; a clear close approach identifies the radio once and permits entry into radio defence without replacement clues. This uses the existing LegacySites test catalog, teleports, damage protection and direct mission interfaces, then explicitly ends the round. It does not prove generated-site coverage, held interactions, defence completion or a full escape.
|
|
|