SkyChart: Airline Executive · published
Chief flight inspector Casey the Macaw would like a word. Several words, actually.
New harvest pipeline pulls real climatology data: NOAA IBTrACS tropical cyclones, NOAA NGDC volcanic eruptions (VEI 3+), and 30 years of Open-Meteo ERA5 wind/pressure/precip/cloud.
Dormant WeatherSim autoload wired in, feature-flagged off. Old storm system still flies.
Harvest pipeline is dev-only — triple-locked out of shipped builds.
Planes pushed 55% toward white, so they stand out against their own route colors.
Performance Tuning screen now skips on subsequent campaigns when the hardware fingerprint matches.
Single-click a city properly clears stale route origins; drag-drop uses an atomic open call.
Pan speed now scales with zoom (up to +150%) and flick velocity (+60%).
ESC with no panels open opens the save/exit dialog on the first press.
All planes composite into a single CanvasGroup draw call (big GPU win late-game).
Route drag-preview line now tracks the cursor every frame and clears on release.
HUD button locks: tutorial/campaign can gate Routes, Finance, Company, Awards, Rivals, and Map.
Vertical pan is now 1:1 at every zoom level (previously yeeted you into the Pacific at low zoom).
Stripped a dev-tooling path leaking into shipped binaries across 30 locales.
Fixed a missing get_current_date() call that was crashing the HUD at boot.
Silenced spammy Not Enough Cash / Advanced to Month / Route closed warnings.
HUD now hides during Era/Difficulty/Mode/Airline/Performance setup screens.
Fixed eight broken tr() wrappers in Quarterly Report and Strategy Planner.
Music and Sound Effects are now separate audio buses with independent sliders in Settings.
Fixed spammy OptionButton PopupMenu disconnect errors during UI rebuilds (9 panels, 16 sites).
Repaired 29 broken translation wrappers across 7 panel scripts.
Menu music is now a proper two-track playlist with smooth crossfades.
Rewired volume so the Music bus handles all attenuation — no more double-applied volume.
763 UI strings wrapped for translation across 50+ scripts.
PO scaffolding for all 29 Steam-supported languages.
Language override selector added to Settings.
Community Weblate server is live with GitHub webhook auto-sync.
Tile loader now sniffs magic bytes (PNG/JPEG/WebP) before decoding — kills hundreds of log errors.
Fixed Steam overlay signal arity (3 args, not 1).
Virtual keyboard consumes save/load/back actions while open, so dialogs stop hijacking it.
AI rivals now log diagnostic squawks at every silent-exit checkpoint.
One-click "Buy All Hubs" button in Strategic Advisor's Hub Investments tab.
FAA-style weather avoidance: routes curve around active storms, deviation scales with intensity.
Geodesic simplification threshold 0.45 → 0.15, segment count 32 → 48 (smoother arcs).
Routes refresh every 8 seconds to track moving storms — airplane animator paths follow.
Right-click closes any DraggableWindow, same as ESC or B on the controller.
ScreenshotCapture autoload is now editor-only (no more F12 capture in shipped builds).
.vscode/ excluded from exports — no leaking dev paths.
Robust save loading: route color fields use safe .get() with defaults; missing cities/aircraft warn instead of silently dropping routes.
Accessibility pass: close button, HUD icons, and airline color picker all palette-routed with tooltips.
Upgrades scanner rewritten to use the main-thread snapshot pattern (zero GameManager reads in worker).
Added _exit_tree() cleanup so the Upgrades thread can't outlive the node.
Fixed HTTPRequest.use_threads missing macOS guard in tile_detail_layer.gd.
Fixed 9 style.bg_color.a = 0.5 value-type assignments across 5 files.
Scripted shorts pipeline: camera flyovers, staggered route spawns, aircraft stat cards, revenue charts.
Portrait and landscape render modes; AVI → MP4 via ffmpeg.
Recommender no longer skips every pair where any airline has a route — only skips pairs the player flies.
Added 5 missing demand multipliers to recommender projections (regional index, city boom, feeder, specialization, union membership).
Rival attraction constant replaced with difficulty-aware get_ai_demand_multiplier().
Maintenance rate tuned from 1.5%/mo → 0.5%/mo (~6%/yr) via a single MAINT_RATE_PER_MONTH constant across 8 files.
Carbon tax scales with fleet size: $30K × fleet × age_mult (was flat $100K/route).
Route renderer: viewport AABB culling + low-zoom line simplification + pan-triggered dirty flag. No more multi-second hangs on 2000-route saves.
world_map.gd: bucketed route visual cache + sparse delivery-ring tracking set.
Vertical map clamp tightened to 5% slack; 5 inline copies consolidated into one helper.
_disconnect_ui_signals() now walks every persistent child manager (event_manager, alliance_manager, market_dynamics, slot_auction_manager) — fixes menu-cycle crash on Windows.
RouteRecommender.cleanup() is now actually called from GameManager on window close — scan threads join cleanly on quit.
Snapshot cache invalidated by reassignment (_cache = {}) instead of in-place clear — no more racing with worker reads.
Trackpad pinch-to-zoom rewritten: multiplicative scaling, cursor-tracked anchor, softened velocity.
Help & Controls Help tab now scrolls with the right stick on controllers.
Tutorial action-set fix: WindowManager scans for any visible window in the overlay, not just known-by-name.
Steam overlay auto-pause: waits for the Steam ready signal, retries on the next frame.
Steamworks Auto-Cloud paths documented for Windows/Mac/Linux.
Main-thread snapshot pattern: workers now read ZERO GameManager state. Fixes Array refcount crash from worker reading active_routes mid-autosave.
Async callback API replaces the busy-wait loop.
New purchases take 1–6 months, depending on model size and global backlog.
Leased aircraft arrive in 1 month; hangar aircraft still deploy instantly.
Difficulty-scaled delivery time (0.5× Glider → 1.3× Supersonic).
New On Order tab in Fleet Overview with progress bars and a cancel option (15% restocking fee).
The world map shows a delivery progress ring at the midpoint of waiting routes; awaiting-delivery routes glow blue.
D-pad now passes through on all 5 controller configs (era/difficulty/menu navigation).
Select/View button remapped to open Settings on every screen.
Route culling removed — no more flight paths vanishing on zoom/pan.
ScrollContainer joystick input is disabled on the save screen (DraggableWindow already handles it).
Uses true map coordinates instead of wrapped screen position — every city lands dead-center now.
The 111× cost bug: route costs were being computed in km against a degree budget. Fixed — AI rivals actually fly now.
AI expansion chance rebalanced across difficulty (20% Glider → 50% Supersonic).
Early-era AI candidate search tripled + range pre-filter, so Forge Trimotors stop dreaming of Tokyo→London.
AI establishes 2–4 routes at game start (scaled by difficulty) and ramps dynamically when falling behind.
Route income now starts flowing from day one, rather than at the first-month boundary.
AI fleet caps, pricing aggression, war triggers, cash reserves, maintenance, and demand multipliers (1.05×–1.40×) all scale with difficulty.
Fixed 13 corrupted em-dashes in the tutorial.
Tutorial spotlight gracefully hides when the target window isn't open (no more full-screen highlights).
"Swap All" → "Upgrade All" name corrected across 4 docs.
AI receivership: keeps top 60% of profitable routes flying; airlines can emerge early if cash rebuilds.
The tutorial card shows a visible ⏸ Game paused by the tutorial indicator.
The tutorial auto-advances when the correct panel is opened via a keyboard shortcut.
Chapter 9 now pops a live Event Explainer demo (Jet Age 1958).
Era Objectives double-rebuild race fixed with a guard flag.
Tutorial text corrected: Legacy Lounge is on the era victory screen, not the main menu.
Controller cursor bumped to layer 110 — always on top of Save/Load and Quarterly Report windows.
Casey appreciates your patience. He has filed the paperwork in triplicate.