PURPOSE

Placeholder Ship Playground tab that renders a static notice explaining that the legacy planet-boss tooling was removed in Wave 0b and that boss encounter wiring will return in Wave 3 via engine/boss/encounter.ts. Keeps the boss tab slot present in the Playground tab strip without exposing any controls.

OWNS

  • Default-exported BossTab React function component.
  • A single rendered Panel containing one read-only message div with inline styling.

READS FROM

  • Panel and the TabProps type from ./PlaygroundShared.

PUSHES TO

  • Nothing. The component is purely presentational and produces no side effects, no store writes, and no engine calls.

DOES NOT

  • Does not read or use any field of TabProps (the props argument is bound to _props).
  • Does not touch missionRef, shipId, restartMission, buildMode, vfxState, levelConfig, or any other lifted Playground state.
  • Does not register knobs in the playground knob registry.
  • Does not import from engine/, data/, services/, or any Zustand store.
  • Does not expose any toggle, button, slider, or interactive control. The Panel’s open prop is hard-coded true and onToggle is a no-op.

Signals

  • The open={true} plus no-op onToggle pattern signals an intentionally non-collapsible placeholder.
  • The inline notice references engine/boss/encounter.ts as the planned Wave 3 re-entry point for boss wiring.
  • Inline style values (color: 'rgba(255,255,255,0.72)', fontFamily: 'Arial, sans-serif', fontSize: '14px', lineHeight: 1.45, padding: '8px 0') are local to this tab and not shared with the rest of the Playground.

Entry points

  • Default export BossTab is consumed by the Ship Playground tab host as the 'boss' member of the PlaygroundTab union defined in PlaygroundShared.tsx.

Pattern notes

  • Follows the same shell pattern as the other Playground tabs (Panel wrapper from PlaygroundShared, props typed as TabProps), but stripped down to a single static message.
  • Uses an underscore-prefixed _props parameter to satisfy the TabProps contract while signaling that nothing on it is read.
  • Inline styling is used directly instead of pulling from the shared style constants in PlaygroundShared.tsx, reflecting the tab’s temporary placeholder status.
  • Removal scope is tracked in-source via the Wave 0b / Wave 3 references in the notice text; the file is the single source of truth for the boss-tab pause.