@@ -49,8 +49,6 @@ class Console extends Page
4949
5050 public ContainerStatus $ status = ContainerStatus::Offline;
5151
52- public ?string $ nestNotice = null ;
53-
5452 protected FeatureService $ featureService ;
5553
5654 public function mount (): void
@@ -61,12 +59,10 @@ public function mount(): void
6159 try {
6260 $ server ->validateCurrentState ();
6361 } catch (ServerStateConflictException $ exception ) {
64- // nest conflicts render inline so the warning stays on this page
65- // and does not leak to the dashboard via the session banner
66- // queue. all other conflicts still use the global AlertBanner .
62+ // skip the session banner for nest conflicts, the nest manager
63+ // plugin renders an inline NestNotice widget at the top of the
64+ // page with brand-voice copy and the wake button .
6765 if ($ server ->status === ServerState::Nest) {
68- $ this ->nestNotice = $ exception ->getMessage ();
69-
7066 return ;
7167 }
7268
@@ -128,18 +124,16 @@ public static function registerCustomWidgets(ConsoleWidgetPosition $position, ar
128124 */
129125 public function getWidgets (): array
130126 {
131- // nest evicted servers have node_id=null so the console + chart widgets
132- // would crash on $server->node->getConnectionAddress(). hide every
133- // widget while the volume is roosting, the conflict banner from
134- // mount() is enough until the nest manager plugin's NestNotice
135- // component lands in phase f. plugin widgets registered via
136- // registerCustomWidgets (top/aboveConsole/belowConsole/bottom slots)
137- // are also skipped, including any telemetry or accounting hooks that
138- // expect to run on every console render.
127+ // nest evicted servers have node_id=null so the panel-core widgets
128+ // (ServerOverview, ServerConsole, *Chart) crash on $server->node->X.
129+ // return only the Top-slot plugin widgets, which is where the nest
130+ // manager plugin registers NestNotice. AboveConsole / BelowConsole /
131+ // Bottom plugin widgets are also skipped because they typically
132+ // depend on a live wings node.
139133 /** @var Server $server */
140134 $ server = Filament::getTenant ();
141135 if ($ server ->status === ServerState::Nest) {
142- return [];
136+ return static :: $ customWidgets [ConsoleWidgetPosition::Top-> value ] ?? [];
143137 }
144138
145139 $ allWidgets = [];
0 commit comments