feat(crew): restrict movement to room cell slots Add per-room cell slots and limit crew movement to unoccupied cells. - Add Cells field to Room and populate two slots per player room. - Shift enemy-ship cells by the same x-offset as rooms. - Build a cellSet lookup and gate moves on it, skipping occupied cells. - Add cellOccupied check so two crew cannot share a slot. - Render dim cell markers in render.go. - Cover cellSet and occupancy with tests; tighten hit-flash test timing.
combat: thread ship through shield/evasion readouts drawShieldsIndicator and drawEvasionReadout took no Ship and were calling NewPlayerShip() per frame to locate the Shields/Engines room. That allocates a 5-room slice each draw call and hides the coupling. Pass g.ship through instead — explicit interface (GPC1), zero alloc, and the renderer follows whatever layout main.go owns.
combat: render, input, restart - drawShip gains hitFlashT param; red flash overlay on hit - drawEnemyShip: full roleColor rooms, same flash rule - drawHullBars, drawWeaponCharge, drawShieldsIndicator, drawEvasionReadout, drawResultOverlay - Game gains combat/enemy/rng; updateCombat wired in Update - HUD clicks no-op after result; R key restarts when fight is decided
systems-power: hoist HUD cellBottom out of inner loop Reviewer flagged the per-iteration recomputation of cellBottom inside drawHud's column/cell loops; the value was loop-invariant. Hoist to a file-scope const and simplify the algebra. systems-power
systems-power: drawHud, room dimming, right-click input systems-power
crew-movement: wire input, tick, and render Add drawCrew to render.go (interpolated circle + selection ring + initial label). Extend Game with crew slice, walkable-tile map, selectedCrew, and dt-based tick; handle left-click for crew selection and BFS-path dispatch.
scaffold game loop and placeholder ship render