Interface LaravelUi5\Sdk\Shell\Navigation\Contracts\ShowInNavigation

Marker interface: an infrastructure module that OPTS IN to the LeanShell navigation.


Ui5Infrastructure modules are platform plumbing. In the SDK's navigation policy they are hidden from the shell nav by default — most infrastructure (an auth/login flow, diagnostics) has no user destination. An infrastructure module that DOES expose a navigable app (e.g. the Partners console) declares this marker to appear. NavigationBuilder checks it only in combination with Ui5Infrastructure:

if ($module instanceof Ui5Infrastructure && !($module instanceof ShowInNavigation)) { continue; // infra, not opted in → not in the rail }

The two markers are kept independent (this one does NOT extend Ui5Infrastructure) so the "only for infra" rule stays a NavigationBuilder policy, not a type constraint: on a non-infra business module this marker is simply a harmless no-op (business-module visibility is a product decision — they always appear). Core stays neutral: it describes that infrastructure may expose navigation targets; this SDK marker is where the "hidden unless opted in" policy lives.

This interface has no methods by design — implementing it is an explicit opt-in.


Two boundaries to know:

  1. Opt-in trap (infra only). A future SDK infrastructure module with a navigable app that forgets this marker silently vanishes from the rail. The surface is infra-only and the failure is self-diagnosing (app missing → marker missing); infrastructure-hidden-by-default is the intended default.

  2. Unreachable to Core-only modules. This is an SDK type, so a Core-only module (e.g. AuthModule, which is deliberately SDK-free) cannot implement it and can never appear in the SDK LeanShell nav. Fine today — the only Core-only infra module is Auth, which we want hidden. If a Core-only infra module ever needs to be navigable in an SDK host, this flag must graduate to Core.

  • LaravelUi5\Sdk\Shell\Navigation\Contracts\ShowInNavigation
    • LaravelUi5\Sdk\Launchpad\LaunchpadModule implements Ui5Infrastructure, ShowInNavigation
    • LaravelUi5\Sdk\Partners\PartnersModule implements Ui5Infrastructure, ShowInNavigation
    • LaravelUi5\Sdk\Settings\SettingsModule implements Ui5Infrastructure, ShowInNavigation