HomeGamesUpdatesPricingMethodology
Steam News15 February 20264mo ago

HOTFIX REPORT — Feb 14-15, 2026

CREW DEADHEAD MECHANIC (NEW SYSTEM) Files: CrewDeadheadMechanic.js, CrewPositionBoard.jsx Crew members are now physical. When they fly to Fort Lauderdale, they are IN Fort Lauderdale. No teleporting home.

Full notes

Full Airline Ops update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

4 fixes2 additions1 change0 removals
  • Store
  • Fixes
  • Gameplay
  • Events
  • Performance
addedCREW DEADHEAD MECHANIC (NEW SYSTEM) Files: CrewDeadheadMechanic.js, CrewPositionBoard.jsx Crew members are now physical. When they fly to Fort Lauderdale, they are IN Fort Lauderdale. No teleporting home. If there's no return flight, they stay stranded at $225/day (hotel + per diem) until the player sends a plane to get them. 6 wire points integrated: Flight arrival updates crew currentLocation to destination Daily tick charges $225/day per stranded crew member Crew picker only shows crew physically at departure airport Diversions move crew to the diversion airport Route cancellation warns about stranded crew Crew Position Board UI added to OpsCenter The Position Board shows all crew with location, status, days stranded, and daily bleed cost. Deadheaded crew highlighted in red at top. No automation, no solutions. The player figures it out. WebLogic automates it later as a $22M purchase.
fixedCLOCK SPEED — STALE CLOSURE FIX File: GameLoopEngine.jsx 7 references to worldState inside the setInterval were using the stale closure value instead of currentState from worldStateRef.current. This caused Simulation mode to run at 128x (Simple mode speed) instead of 12x on game start. Player had to click 1x or 2x to normalize. Fixed: all worldState references inside setInterval replaced with currentState.
changedGAMEMODE BOOT SEQUENCE FIX File: WorldStateContext.jsx Two boot paths now properly separated: NEW GAME: localStorage wins (player just selected it) CONTINUE: Save file wins (that's what they saved) Previously the save file could override the player's mode selection due to async race condition in loadFromFile. The isNewGame flag now gates which authority sets gameMode.
fixedSILENT CREW WIPE FIX File: GameLoopEngine.jsx dailyDeadheadTick returns { updatedCrew, newsMessages } but the wiring was reading .crew and .alerts (wrong property names). This set crew = undefined every end-of-day, silently wiping the entire crew array. The try/catch swallowed the error. Fixed property names.
fixedROUTE CANCEL CRASH FIX File: WorldStateContext.jsx onRouteCancelled_strandCrew is a void function that pushes messages into a newsFeed array. The wiring was destructuring its return value as { crew, alerts }, crashing on every route cancellation in simulation mode. Fixed to pass newsFeed array directly.
fixedRENDERER CRASH FIX (from earlier session) File: GameLoopEngine.jsx Milestone useEffect had [worldState, setWorldState] as deps. Main loop calls setWorldState every 100ms, effect fired every 100ms creating/destroying 5-second intervals 10x/sec. Over 2 minutes: ~1,200 effect cycles with stale closures accumulating, pushing renderer past limits. Fixed: useEffect uses worldStateRef, deps reduced.

Airline Ops changes

addedCREW DEADHEAD MECHANIC (NEW SYSTEM) Files: CrewDeadheadMechanic.js, CrewPositionBoard.jsx Crew members are now physical. When they fly to Fort Lauderdale, they are IN Fort Lauderdale. No teleporting home. If there's no return flight, they stay stranded at $225/day (hotel + per diem) until the player sends a plane to get them. 6 wire points integrated: Flight arrival updates crew currentLocation to destination Daily tick charges $225/day per stranded crew member Crew picker only shows crew physically at departure airport Diversions move crew to the diversion airport Route cancellation warns about stranded crew Crew Position Board UI added to OpsCenter The Position Board shows all crew with location, status, days stranded, and daily bleed cost. Deadheaded crew highlighted in red at top. No automation, no solutions. The player figures it out. WebLogic automates it later as a $22M purchase.
fixedCLOCK SPEED — STALE CLOSURE FIX File: GameLoopEngine.jsx 7 references to worldState inside the setInterval were using the stale closure value instead of currentState from worldStateRef.current. This caused Simulation mode to run at 128x (Simple mode speed) instead of 12x on game start. Player had to click 1x or 2x to normalize. Fixed: all worldState references inside setInterval replaced with currentState.
changedGAMEMODE BOOT SEQUENCE FIX File: WorldStateContext.jsx Two boot paths now properly separated: NEW GAME: localStorage wins (player just selected it) CONTINUE: Save file wins (that's what they saved) Previously the save file could override the player's mode selection due to async race condition in loadFromFile. The isNewGame flag now gates which authority sets gameMode.
fixedSILENT CREW WIPE FIX File: GameLoopEngine.jsx dailyDeadheadTick returns { updatedCrew, newsMessages } but the wiring was reading .crew and .alerts (wrong property names). This set crew = undefined every end-of-day, silently wiping the entire crew array. The try/catch swallowed the error. Fixed property names.
fixedROUTE CANCEL CRASH FIX File: WorldStateContext.jsx onRouteCancelled_strandCrew is a void function that pushes messages into a newsFeed array. The wiring was destructuring its return value as { crew, alerts }, crashing on every route cancellation in simulation mode. Fixed to pass newsFeed array directly.
  1. CREW DEADHEAD MECHANIC (NEW SYSTEM) Files: CrewDeadheadMechanic.js, CrewPositionBoard.jsx Crew members are now physical. When they fly to Fort Lauderdale, they are IN Fort Lauderdale. No teleporting home. If there's no return flight, they stay stranded at $225/day (hotel + per diem) until the player sends a plane to get them. 6 wire points integrated:

    • Flight arrival updates crew currentLocation to destination

    • Daily tick charges $225/day per stranded crew member

    • Crew picker only shows crew physically at departure airport

    • Diversions move crew to the diversion airport

    • Route cancellation warns about stranded crew

    • Crew Position Board UI added to OpsCenter

    The Position Board shows all crew with location, status, days stranded, and daily bleed cost. Deadheaded crew highlighted in red at top. No automation, no solutions. The player figures it out. WebLogic automates it later as a $22M purchase.

  2. CLOCK SPEED — STALE CLOSURE FIX FileGameLoopEngine.jsx 7 references to worldState inside the setInterval were using the stale closure value instead of currentState from worldStateRef.current. This caused Simulation mode to run at 128x (Simple mode speed) instead of 12x on game start. Player had to click 1x or 2x to normalize. Fixed: all worldState references inside setInterval replaced with currentState.
  3. GAMEMODE BOOT SEQUENCE FIX File: WorldStateContext.jsx Two boot paths now properly separated:

    • NEW GAME: localStorage wins (player just selected it)

    • CONTINUE: Save file wins (that's what they saved)

    Previously the save file could override the player's mode selection due to async race condition in loadFromFile. The isNewGame flag now gates which authority sets gameMode.

  4. SILENT CREW WIPE FIX FileGameLoopEngine.jsx dailyDeadheadTick returns { updatedCrew, newsMessages } but the wiring was reading .crew and .alerts (wrong property names). This set crew = undefined every end-of-day, silently wiping the entire crew array. The try/catch swallowed the error. Fixed property names.
  5. ROUTE CANCEL CRASH FIX FileWorldStateContext.jsx onRouteCancelled_strandCrew is a void function that pushes messages into a newsFeed array. The wiring was destructuring its return value as { crew, alerts }, crashing on every route cancellation in simulation mode. Fixed to pass newsFeed array directly.
  6. RENDERER CRASH FIX (from earlier session) FileGameLoopEngine.jsx Milestone useEffect had [worldState, setWorldState] as deps. Main loop calls setWorldState every 100ms, effect fired every 100ms creating/destroying 5-second intervals 10x/sec. Over 2 minutes: ~1,200 effect cycles with stale closures accumulating, pushing renderer past limits. Fixed: useEffect uses worldStateRef, deps reduced.
  7. PRE-SAVE SANITIZER (from earlier session) File: GameLoopEngine.jsx 7 checks with auto-fix run at top of every save: duplicate flight IDs, duplicate auto-returns, orphaned flights, double-assigned crew, NaN cash, self-routes, null array entries.

  8. CLOCK-DRIVEN FLIGHT PHASES (from earlier session) File: GameLoopEngine.jsx Game clock is now single source of truth for flight timing. buildPhaseSchedule() pre-calculates timestamps, getPhaseFromClock() replaces distance-fraction logic. FIDS shows DEP and ETA columns.

  9. GROUND HANDLING TURNAROUND (from earlier session) Return flights wait for actual turnaround time:

    • No contract: 45 min

    • Regional Handler ($1,800/mo): 35 min

    • Premium Handler ($4,500/mo): 25 min

  10. DUPLICATE CREW MODEL CLEANUP FileCrewModel.js / crew.js Removed 4 duplicate deadheadDays: 0 lines. Added currentLocation and deadheadDays fields to generateCrewMember with currentLocation defaulting to homeBase.

Source

Steam News / 15 February 2026

Open original post

Changelog.gg summarizes and formats this update. How we read updates.