Rob: "You're calling it aeroplane in the app but it should be airplane."
Correct, and it was not only that word. This is a US aviation product — the syllabi are USAF and USN, the squadron paperwork is American, the pilots are flying American jets — and the prose had been quietly drifting British for a hundred releases. Briefs said aeroplane, mission cards said centreline, an accident summary said manoeuvring, the guide talked about the squadron programme.
All of it now reads American: airplane, centerline, maneuver, center, color, defense, practice, program, behavior, gray, license, organize, analyze. Around 1,300 words across the app, the missions, the briefs, the kneeboards, the guides and the docs.
Three things deliberately left alone. Metres stays, because it is a real DCS unit and appears in measured values rather than prose. The Wikipedia link for the Berlin Air Safety Centre keeps its spelling inside the URL — the link text now reads "Center", but changing the address itself would break a cited source. And DCS's own AirDefence unit names are the simulator's API, not our writing; renaming those would break the missions.
Nothing about how anything flies has changed. If you never noticed the spelling, this release does nothing to you.
---
Rob flew v1.104.0 and reported: "It didn't work." No card, ever — but lead's opening radio call still arrived. That is a useful failure: the same trigger set produced the text, so the wiring ran and the picture specifically did not draw.
Everything else checked out. The art ships inside the mission, the resource table is right, the actions point at your group, and the mission's own opening geometry satisfies the HOLD rule about thirteen seconds in. What was left were two numbers: the ladder was drawn at the bottom of the screen at 9% size, where the AAR refuelling indicator — the one picture this product has ever had confirmed working in a cockpit, by Rob, in the air — is drawn at eye level at 10%.
So the ladder is now in exactly that place, at exactly that size. The human-factors case for the bottom corner was a good one; it was also an argument, and an argument loses to the only evidence available. Eye level on the left is arguably better anyway — the bottom-left of a DCS screen is where the comms menu and the message log already live.
And a way to check it in five seconds. F10 → FORMATION: show the position ladder now draws a card immediately. Do it on the ramp before you release brakes. A card appears: the ladder works, fly the sortie. Nothing appears: the problem is picture rendering on your machine, and you have found that out standing still instead of twenty minutes into a formation ride. Lead's opening call now names the ladder and that F10 item too, so seeing the words and no card tells you which half is broken.
One message, one channel. With the ladder fitted, lead no longer says "you're out of position" in the corner. The card already said it, a second earlier, in the place you can actually read it — and having both meant the text was pulling your eyes to the corner the card exists to get you out of. If the art is ever missing, the old spoken calls come straight back; you never end up with neither.
Nothing about how the cards fly has changed. If v1.104.0 worked for you, this one moves the card to eye level and stops the corner nagging.
---
Rob: "The formation training sucks. It has a continuous display of information that happens quickly that is too difficult to watch and navigate."
Fair. Here is what it used to do. You left a sphere around lead and got one line of text in the top-right corner — "you're out of position" — and another when you came back. Three problems in one sentence: it was binary (ten metres out and a hundred read the same), directionless (never said which axis or which way), and late (it only spoke at the boundary, by which time the error is big and the correction has to be big too). A cue like that does not merely fail to stop the classic wingman wobble — it causes it. And it was in the one corner of the screen you cannot look at while staring at another airplane thirty metres away.
The position ladder. Now there is a small card low on your left — the same side lead is on, so it is a glance down rather than a look away — and it names the ONE input to make right now:
HOLD — in the slot, on speed, on height. Change nothing. ADD POWER — out the back and not closing. EASE OFF — closing on a position you are already in, or inside it. STEADY — the one people miss, and the one that matters most. You are out of position but already closing at the right rate. The correction you have in is working, so add nothing. It is drawn as a tick rather than an arrow because every other symbol on the card means "move". Putting a second correction on top of a good one is exactly how the fore-and-aft oscillation starts, and nothing in the old coach could ever have told you not to. COME UP / COME DOWN — and only ever once fore/aft is already clean. The brief has said "fix one axis at a time" for years; the coach now obeys it. OPEN OUT (red) and REJOIN — the safety cards, which never wait.
A ladder at the top of the card shows your range on lead — CLOSE, SLOT, OUT, LOST — so you can see how far out you are, not merely that you are. It updates at most once every three seconds so it cannot flicker, and the two safety cards are exempt. Don't want it? F10 → turn the position ladder OFF.
It does not show left/right, deliberately. The mission knows how far you are from lead, not which side — the check is a sphere. Drawing a lateral arrow would make the card look complete and make it a liar. Lateral comes from the sight picture, the way it does in the jet. For the same reason the energy sortie (where lead deliberately changes speed and height) gets the range-only ladder: a speed cue there would be measured against a moving reference, and it would also do the anticipating that sortie exists to teach.
Lead waits for you now. He used to fly a fixed script off a stopwatch, so the first turn arrived whether or not you had ever got aboard, and a slow join meant spending the whole sortie chasing a leader who had already gone. He now orbits at each of the first two route points until you have been in the slot for fifteen seconds, then rolls out and flies the profile exactly as before — still perfectly predictable, just patient. He gives up waiting after a few minutes and goes anyway, so a join you cannot make does not strand you. Not on the check rides: a check that starts when the candidate is ready is not the same test twice.
The check-ride debrief is cards now. It used to be eight to twelve separate messages fired two to six seconds apart into that same corner, where they stack and shove each other off the screen faster than anyone reads. Now it is one card at a time in the middle of the screen, eight seconds apart, in the order an instructor says them: the three items, the rejoin, any critical, then the overall. One thing on screen, at reading pace.
Rob: "When I generate a cold war mission with the F-4 in Germany it doesn't use the new map."
Two things. First, the only routed Cold War Germany F-4 missions that ship out of the box are the five Timing rides from Fassberg — and v1.103.0 had quietly excused them from the corridors to keep them short. That broke the rule this whole feature exists for ("any mission that includes waypoints should go through the corridors"), so it is reversed: the rides now fly the Heath road south over Celle to the Hehlingen VOR and through the Helmstedt gate (or the Heath road north to Uelzen and the Dömitz crossing), about fifty minutes wheels to wheels, with every corridor point on the clock. Fassberg and Celle got their own cluster — the Lüneburg Heath — so the ride no longer starts with a detour west to Wunstorf.
Second, v1.103.0's new on/off switch had landed on the same name as the older Air Corridors option (the "Fulda Gap" threat-axis lane), which silently stopped that option applying and logged a build warning. The switch is now published_corridors; Air Corridors work again.
If you are generating on the site rather than locally, the site is still whatever version was last deployed — fly deploy from the unzipped folder puts v1.103.1 up.
Rob: "Let's do the Germany map like the previous two."
What you get. On the Cold War Germany map, in the Cold War era, every routed flight plan is threaded through the Central Region of 1985. Your home decides the family of roads — the Eifel (Bitburg, Spangdahlem), the Hunsrück (Hahn, Büchel, Pferdsfeld), the Pfalz (Ramstein, Sembach, Zweibrücken) and Rhein-Main all go out over the Taunus VORTAC; the Rhineland (Nörvenich, Cologne, Gütersloh) takes the Ruhr road to the Minden Gap; the Weser fields (Wunstorf, Celle, Fassberg) fly the Leine and the Heath; the Elbe fields (Hamburg, Lübeck, Kiel) run down the river to Lauenburg. The target's sector picks the crossing: the Low Level Transit Route through the HAWK belt to Point Alpha in the Fulda Gap, the Werra at Herleshausen, the Harz road and the A2 to Helmstedt (Checkpoint Alpha), the Heath to Dömitz, the Elbe to Boizenburg, the Hof corridor to Hof. Fly red and it works the other way: from the Berlin ring (joining at Nauen, Neuruppin or Sperenberg — outside the Control Zone), from Merseburg or from Parchim, along the GDR's own flight lines — Rathenow, Genthin, Kelbra, Bad Langensalza, Perleberg, Osterburg, the Grenzsperrstreifen towns — to the same six gates. WP1 is the gate; the recovery is the road home.
The chart — eight terminal panels round a Central Region overview: the ADIZ 40 km deep, the HAWK belt in front of the Nike Hercules belt, the three 20-mile Berlin air corridors and the 20-mile Control Zone, the 250-ft Low Flying Areas, the ranges (Nordhorn, Bergen-Hohne, Munster, Unterlüss, Meppen, Todendorf-Putlos; Wittstock's "Bitburg East", the Letzlinger Heide, Lieberose, Retzow, Jüterbog), the 41. FRBr's SAM ring round Berlin, the GDR flight-restriction line, the 2 ATAF / 4 ATAF seam. Lanes in blue, green and amber; your road in red. The kneeboard and the brief carry it; the site serves it at /api/corridors/germany/chart.svg.
What is real and what is placed. The ADIZ width, the belts' distances, the Berlin corridors' geometry, the LFA and ED-R polygons, the Soviet ranges' printed positions, the navaids and the GDR reference towns are from the sources in SOURCES.md §3. The Low Level Transit Routes were never published — "activated for specified times only and changed frequently" — so every crossing gate and every road over the GDR is placed on a named checkpoint, river crossing or town and flagged ~; the border, the Elbe and the autobahns are schematic. In the modern era the map has no ADIZ, no belts and no corridors, and the flight plan stays the generic one.
Rob: "let's refer to this map detail as the authentic standard map detail. Let's now do the research and create it for the Syria map."
What you get. Every routed flight plan on the Syria map now flies the published structure and the roads the IAF and the coalition are reported to fly, the way Nevada flights fly the Nellis corridors. Your home field decides the family of roads: from Ramat David and the Galilee fields you go up the coast through the LLR01 training block to Rosh HaNikra and then over the Bekaa to Ras Baalbek, or offshore past Sidon, Beirut and Tripoli for the Latakia coast, or up J14 to Rosh Pina and over Hermon for Damascus; from Akrotiri the SIDs to IREFA and the Levant sea road to NIKAS; from Incirlik the Adana MTMA, the W74 Northern Watch road east to the Nusaybin gate, the Hatay gate for the Orontes valley, the Kilis gate for Aleppo; from Muwaffaq Salti the Amman TMA and L200 east to Al-Tanf. The target's sector — Lebanon, Damascus, the coast, the north, the east, central Syria — picks the road; WP1 is the entry gate; the recovery is the published one. The gates and every lane are on the F10 map, the corridor block is in the in-game brief and the PDF (with the map's own words — no "Bravo" here), and the kneeboard carries the Levant chart: a theatre overview with the sea and the borders, and four terminal panels — northern Israel, Akrotiri, Incirlik, Amman — each with its own departures and recoveries drawn as lanes. The chart is at /api/corridors/syria/chart.svg (the Automatic waypoints block links both charts).
What is real and what is placed. The airways, FIR fixes, TMAs and Israeli training blocks are from the AIPs of Israel, Jordan, Türkiye, Cyprus (UK Mil AIP for Akrotiri) and Syria. Israel publishes no strike routes, so every road over Lebanon, the Golan or the sea is a reported track placed on the named town, summit or coastline — flagged ~ on the chart, listed in the brief as curated, sourced in SOURCES.md §3. Syria's eAIP prints no restricted areas; the Al-Tanf 55 km zone and the Euphrates line are from the public record. The coast and the borders are schematic.
The standard itself. The chart machinery is now one data file per map, so the next map gets the same detail by writing its data: sea and land, terminal panels in a grid, an overview that hides what a panel already draws, per-panel label placement. Nevada is unchanged on the outside.
Rob: "the corridors overlap each other and is difficult to see. They're also pixelated." Two fixes, the way a real chart maker would make them.
Two panels. A local-area chart never draws the terminal area at range scale, because every departure and recovery converges on the field and becomes one smear. The chart is now a range overview — the areas, the transit corridors (Sally, Alamo, the west road, Mormon Mesa) as lanes, the gates, and the departures and recoveries only as dotted centerlines — and a Nellis terminal panel at four times the scale, where FLEX, the FYTTR arc, STRYK, MINTT, ARCOE, ACTON and DREAM each get their own lane. Lanes are color-coded: blue transit, green departure, amber recovery; your own road is red on both panels and everything else is ghosted. A lane two procedures share is drawn once and labelled twice.
Vector. The chart is now drawn as a display list and rendered two ways: as SVG for the site (/api/nttr/chart.svg — sharp at any zoom; the Automatic waypoints block links to it) and, for the kneeboard and the brief PDF, at three times the size and downsampled, so the lines are anti-aliased rather than stair-stepped.
The corridors are now a chart, not just a list of fixes. Nellis and the whole range drawn the way a local-area chart draws it: the restricted areas with the sectional's hatched border (R-4807A and R-4808N to their legal boundary descriptions, the Box cross-hatched), the Desert and Reveille MOAs dashed magenta, every corridor as a lane with its altitude block and an arrow for the departures and recoveries, the range gates as rings, the fixes as triangles, the roads the corridors follow (Sally is US-93; the west road is US-95), the towns and fields, a graticule and a scale bar.
Where you see it. A routed Nevada mission gets it as a kneeboard page (your road in amber, WP1 / IP / TARGET / EXIT plotted) and as page 4 of the brief PDF; the full chart is on the site from the Automatic waypoints block and at /api/nttr/chart.png. Outlines we drew from the published structure rather than a legal description are marked ~, and the legend says which is which.
Also fixed. The page number in the brief's footer sat on top of "Not affiliated with Eagle Dynamics" on every page since v1.97.0; it now sits in the gap.
Fix. Opening a mission with the AI timing package (Timing 3 — The Package, or any card with the package on) in the Mission Editor and saving it failed with "Package: all waypoints have locked speed and surrounded by waypoints with locked time." DCS will not accept a waypoint that has both its time and its speed locked between two timed points — a point flown to a time flies whatever speed meets it. The package's timed points now carry the time lock only. The missions flew correctly before; they simply could not be re-saved from the editor. Your own flight plan is unchanged.
On the Nevada map a routed flight plan now goes to the range the way a Nellis flight does. Not home → WP1 → target: the FLEX turnout out of the Bravo, then the road — the Sally Corridor up I-15 and US-93 to Alamo and in through Student Gap for a Phantom, the Alamo Corridor straight through R-4806E at FL190–FL210 for a Viper, the FYTTR departure and Indian Springs for the south range, the west road round the Box to Beatty and Tonopah — then WP1 at the range gate, IP, target, back out of the gate and home down a published recovery: STRYK at or above 9,500 direct Gass Peak, JAYSN via Beatty, MINTT or ARCOE from the north, ACTON from Elgin, ALAMO down the corridor. A dozen waypoints, every one named.
Everything else follows. The corridors and gates are on the F10 map with their blocks; the brief has a corridor block that says which road, why, the crossing restrictions and where every fact comes from (NELLISAFBI 11-250, the NTTR Addendum, the 99 ABW procedures, the community FLIP); the clock on the card runs through every corridor point; the timing coach still grades wheels-up, WP1, IP and target; the kneeboard puts the legs on one page and the clock on the next. Where a fix's published position is a chart we could not read, it is placed by geography, marked ~ on the map and listed as curated in the brief — the same rule the Berlin corridors follow. A target inside the Nellis terminal area, and every other map, keep the three-point route.
The Phantom's history chapter now sits in School 1. Chapter 0 — The Phantom: where it came from, what it taught is read in ground school, next to the aviation basics, before the first formation ride — because an aircraft's habits come from what it was built to be, and you should know that before you fly it. The FRS starts in the cockpit: Step, Start, Taxi, Go. The pipeline page, the squadron kit, the gradesheet and the program PDF all follow the same order. Nothing else changes; your progress ticks are kept.
The pipeline has its line. Learn it, fly it, fight it — the order every air force trains in, and now the tagline on the Train door, the pipeline page, the F-4E course, the "how this works" reading and the user guide. One line, spelled one way, everywhere the pipeline is introduced.
Every PDF and page the product generates now draws the Authentic Style specimen — the mission brief, the in-jet kneeboard, the track guides, the user guide, the squadron kit, and the What's new, Sources and Roadmap pages. One navy band across the top with the document's identity on the left and where you are on the right; the title in Bangers; sections in Barlow Condensed; prose in Source Serif; data in IBM Plex Mono; white paper, the v2.1 palette (navy #00205B, accent #1D4E89, panel #F4F6F8, ink #101828), and the semantic colors only where they mean something. The footer carries the form number, the page, and "Not affiliated with Eagle Dynamics".
Why it matters beyond looks. Before this release three renderers carried three furnitures and three sets of hex values; a brief and a guide from the same build did not look like the same product. Now one module owns the page and every document imports it — so the next document, whatever it is, arrives already in the style.
Bold in prose is real bold. The two variable fonts (Source Serif 4, Source Sans 3) now ship as cut static faces too, so a PDF's emphasis is set in the true 700 weight rather than faked.
Every phase now ends in a check ride. Rob: "each training session should have a check ride." A real formation block is a dozen sorties — each maneuver seen several times against a rising standard, a pre-check flown to the check profile with the instructor talking, then the check with him silent. Kept the framework, abbreviated it for a game: the graded rides, then a pre-check (the check profile, coach on, the check's own card at the end so you know what it will score), then the check — same profile, silent. Nobody is surprised on a check ride.
Formation 6 and 7 — Pre-Check and Check Ride: Fingertip. Lead flies level, a turn each way, a climb, two speed changes and a descent, then calls the pitchout and you rejoin. The mission grades what an instructor grades and in his language: per item, U / F / G / E — time in the 60 m band while lead is straight and level, turning, and changing energy (E at 90 %, G at 75 %, F at 50 %), the rejoin on the clock (E inside 90 s), and three critical items that make the check a U whatever else happened: inside 12 m of lead, lost for 30 s, not rejoined within five minutes. The card ends Q, Q- (qualified with discrepancies) or U (re-fly). The sim cannot see the wingline, the size of your corrections or the radio; the gradesheet leaves those to the instructor — or, flying alone, to you against the Standards.
Timing 5 — Check Ride. TOT 06:00:00 and the coach is silent: one hack, then the card. E inside ten seconds of each point, G inside the window, F early, U late; late at the target is a critical item.
The Refuelling Academy's qualification ride (ride 8) is now marked as the phase's check in the pipeline, with the fuel-transfer and night rides after it. The FRS check ride — the uncoached B'NAI — was already there.
The squadron kit speaks the same letters. The gradesheet now carries a Sim column and an IP column, both U / F / G / E, and a Q / Q- / U result for check rides.
Most training is piecemeal. A module ships with a handful of training missions, the user-files section has hundreds more in no order, and a virtual squadron hands a new member a Discord link. Sortie Starter had four good syllabus islands — the Refuelling Academy, the White Knights, Case III, Timing — and no pipeline. Now it has one.
Train is the fourth door, beside Fly Now, Library and Builder. It runs the order every air force runs: School 1 — Ground School and UPT teaches you to fly an airplane (two readings, five formation stages, the timing track, the boom lane of the Refuelling Academy — in any jet you own); School 2 — FRS, Know Your Jet teaches you this one (a history chapter, the contact phase, systems, the squadron's tactical checkout, the weapons deliveries, and a check ride flown with no coaching); School 3 — MQT, Fight the Jet is employment. Every ride is a Library mission you already know, with its brief and kneeboard, graded in-mission where the Mission Editor can see you. Units not built yet are shown as planned, with the reason — a syllabus that hides its gaps looks finished and is not.
The first course is the F-4E Phantom II: 25 units, 46 rides, three readings, four planned. Chapter 0 is The Phantom: where it came from, what it taught — the interceptor the Navy did not order, why the Air Force bought it, the missiles that did not work over North Vietnam, the gun and the slats, Israel and the SA-6, and the five things the airplane will teach you before the checkout says them. Written for this pipeline, with its sources.
Your record is yours. Tick a unit done when you have flown it to the standard on its brief; that lives in your browser and nowhere else. A squadron takes the squadron kit — the printed program, a gradesheet with one row per ride for an instructor to sign, and the readings — and downloads the missions from each track, so it always flies the current build.
Also fixed: a track pinned to one airframe (White Knights, Case III, Timing) no longer draws an empty "build your series" wizard on its panel.
Every flight plan now carries a clock. The kneeboard leg card used to print heading, distance, altitude, speed and leg time and leave you to add it up. Now each waypoint has groundspeed, leg time, cumulative time and an ETA as a clock time, and the same block is in the in-game brief and the PDF. The first leg is timed on a climb schedule rather than at cruise — the minute that used to make everyone late at the IP — and groundspeeds include the mission's winds aloft when there are any.
The clock is anchored the way a planner anchors it. In the builder, under Automatic waypoints, pick what the timeline hangs on: takeoff (wheels up 8 / 3 / 1 / 0 minutes after the mission clock starts, by start type), push (WP1 at a time you set) or TOT (the target at a time you set). With a push or TOT anchor the mission clock is solved backwards and moved so the time can be met, and the brief says so. Add a hold at WP1 of 2–10 minutes — the shock absorber every professional package uses to absorb an early arrival.
The file flies it too. Your waypoints carry the ETAs (advisory — DCS does not fly the player). Tick Package and a two-ship of your own type flies the same card two minutes ahead of you on locked ETAs: the one thing in the mission that really keeps the timeline, and you fit in behind it. Tick Timing coach and the mission grades wheels-up, WP1, IP and TARGET as early / on time / late against the card, then opens a scorecard a minute after the target (base 50; the anchor point counts double, ±30 s at a TOT, ±60 s elsewhere).
Four F-4E rides in the Library teach it — the Timing — The Clock on the Card track, from Fassberg on Cold War Germany, each 17–19 minutes to the target: 1 Fly the Card (takeoff anchor, stopwatch discipline), 2 Hit the TOT (05:45:00, thirty seconds either side, counts double), 3 The Package (push WP1 at 12:35:00 behind two Phantoms on locked times), 4 Absorb the Early (TOT 05:50:00 with a three-minute hold at WP1). Every ride is graded and scored.
And the say/do check watches it. After every build the card's ETAs are compared with the ETAs on the waypoints in the file and with the mission clock; a disagreement is a warning, and the four rides' hand-written briefs may quote only clock times the plan actually produces.
What DCS will get wrong now carries the two honest lines: your ETAs are advisory, and an AI package honors a locked time only within its speed envelope.
Two pages left the public site. The roadmap and the full engineering changelog were linked from the header and footer; they are working documents for the owner, not reading for pilots. Both now live in the admin section (Roadmap and Changelog tabs), nothing public links to them, and the old roadmap address only redirects there. What's new — the release notes written for the person flying — is unchanged and still one click away.
The radio and the paperwork now agree on your name. DCS's radio speaks a fixed table — for every western air force it is eight fighter names: Enfield, Springfield, Uzi, Colt, Dodge, Ford, Chevy, Pontiac — and ATC, AWACS and your AI wingmen use one of those whatever the brief says. v1.91.0 admitted the gap in every brief ("DCS will call you Enfield, not Gypsy"). Rob's answer was simpler: always map. So the flight now flies under a DCS name, the comms card prints that name, and the line is gone because there is nothing to admit.
The squadron's own callsign is not lost. VF-32's Gypsy, the Jolly Rogers' Victory, Misty for the Hun — they move to the brief as the heritage line: "VF-32 Swordsmen's own callsign is Gypsy. DCS's radio speaks only its eight names, so you fly as COLT — that is what ATC, AWACS and your wingmen will say." The mapping is stable: Gypsy is the same DCS name in every mission on every map, so a pilot who flies one squadron learns one radio name. Type one of the eight in the builder and it is used exactly as typed; the builder says so under the field as you type.
Nations whose radios speak numbers keep their numbers. A Russian MiG-21 flies as 231 in the file and on the card; a named callsign on such a nation becomes its bort number, with the name kept as heritage.
And a fix the mapping exposed. The mission file carries a callsign as an index into DCS's table plus a derived name string. Our generator's library wrote the name and left the index at 1 — so a jet whose file said "Springfield" was announced as Enfield in the sim. Both are set now.
We read the best missions on the market and turned what we learned on ourselves. Over the past day the generator's authors dissected 97 commercial missions (Fulda 1979, Reflected's Red Flag 81-2 and MIG Killers, Baltic Dragon's Raven One and The Rampagers) and 137 of their documents, file by file. The write-up is the Expert Mission Dossier. This release is the first set of things it changed.
Every mission now checks its own paperwork before it ships. Every gap we found in the experts' work was a number copied by hand from the world into the brief — a frequency no radio held, a start time two hours off the mission clock, a callsign the story uses and the file does not. We generate both, so after every build the mission recomputes its card from its world: every frequency on the comms card must be held by something in the file, the clock the brief prints must be the clock the mission starts on, and the name the brief calls you must be the name the sim will use — or the brief must say so. A disagreement is a warning you can see, and the test suite holds the whole library to zero of them.
It found one on the first run. WWII Mustangs and Cold War MiG-21s were flying with their wingmen on a UHF frequency their VHF radios cannot tune, and a card that said so. They now get a flight frequency inside their own band, and the one entry a VHF-only jet truly cannot reach (Guard 243.0) is marked on the card as not tunable in this aircraft instead of pretending.
Every brief now says what DCS will get wrong. All four expert campaigns carry this page; ours is generated per mission, so the first line is about your jet: "DCS ATC and AI wingmen will call you 'Enfield', not 'Gypsy' — the sim's callsign table is fixed." Then the AI limits the pros warn about too: loose formation, no overhead break, slow rejoins after a tanker.
Case III rides print a scorecard. A minute after the ride's last cue: base 50, every grade that fired with its points (+10 on time, −10 for exceeding 2,000 fpm below platform, and so on), and a "no busts" line if none did. Lifted from The Rampagers, which prints one at engine shutdown.
The radio readback gate — with an honest asterisk. Fulda 1979 gates every frequency handoff: the mission watches the radio, reminds you at 30 seconds if it is wrong, and only then moves on. That is the direct fix for "it says carrier on channel 2 but I had to tune it by hand", and it is built. But it can only watch a cockpit whose radio parameter we have verified, and today that is the F-4E (from Fulda's own triggers) and the F-16C. On the Tomcat and the Hornet the Case III card says, in as many words, that the check is not available yet and tells you Mother's frequency and channel to set yourself. When someone runs list_cockpit_params() on those modules and sends us the names, the gate turns on without another line of code.
The plan changed too. The roadmap now carries what the shelf taught us: the product should export a campaign folder the way every expert campaign ships (a .cmp, chained sorties with carried clock and fuel, score-keyed alternates, and a Doc folder with printed briefs, kneeboards and an inflight guide per map) — all derived from the recipe so none of it can disagree with the world.
Rob asked for Google Analytics on the site, to see how people actually use it. It is on, on every page, and it reports the things worth knowing: missions generated and from which of the three doors, Library cards opened, tracks opened, kneeboard exports, Fly Now rerolls, Contact opened, and which view you are in — because GA's automatic page view fires once and this app never navigates again, so without that last one two thirds of the site would be invisible.
The footer changed, and it had to. It used to say "No IP address, no account, no name — nothing that says who you are." That was true of our own counting and it is not true of a page running Google Analytics, which sets cookies and sends Google your IP, browser and device. Eight releases ago we made a point of removing Google Fonts so the page would stop telling Google your IP address just to draw letters; shipping the tag under the old wording would have left a false statement on the one part of the site where a false statement matters most. So the footer now says both things separately: what we collect, and what Google collects.
It also says the part people usually leave out — the off-switch does not stop Google. It never could. It turns off our counting, which is what it has always done, and the page says so instead of letting you assume otherwise. If you want to stop the Google half, a content blocker, your browser's tracking protection or Google's own opt-out add-on will all do it.
If you self-host this app, you report to nobody. The measurement id lives in an environment variable, not in the page. Unzip this build and run it and there is no Google request at all, because your copy has no id configured. That is deliberate: a hard-coded id would mean every self-hosted copy sent its visitors into our account, which is both bad numbers for us and a surprise for them.
---
Casmo: "i have zero idea how to do a case 3 recovery so i was flying around blind." The radios were the small half of that sentence. This is the other half.
Five rides, each starting where the last one ended, for the Tomcat and for the Hornet — ten missions in two tracks, VF-101 Grim Reapers and VFA-106 Gladiators, the real Fleet Replacement Squadrons.
A night recovery fails in one of four distinct places and each has a different cause. Bust the marshal departure and you never reach the ball, so twenty minutes of flying buys you exactly one attempt at the part you actually got wrong. One ride per gate means you can fly the piece you keep failing ten times in the span of a single full approach.
- 1 · The Stack — holding, and the thing that actually takes practice: stretching and shortening the legs so you depart at the assigned second. - 2 · The Push — 250 knots, 4,000 feet a minute, and the rate change at platform. - 3 · The Approach — dirty at 8, on speed by 6, 1,200 feet held until the glideslope comes to you. - 4 · The Ball — the last mile, over and over. It bolters you on the first pass on purpose, so the bolter pattern gets taught rather than discovered, and re-arms so the next pass is coached too. - 5 · Night CQ — everything, once, in weather, with every aid off.
The rides grade what DCS does not. Supercarrier will let you push half an hour before your approach time, descend at six thousand feet a minute below platform, and arrive at six miles a hundred knots fast without a word. Each of those now gets told to you on screen the moment it happens, with the reason it matters. Paddles still grades the last mile, because Paddles is better at it than any trigger.
Every number comes from CV NATOPS, read directly rather than through the community guides — two of which are wrong in ways that matter:
- Platform is an ALTITUDE, 5,000 feet, not a range. Guides quote a DME beside it and students hunt for a range gate and fly straight through the rate change. - The marshal radial hangs off the FINAL BEARING, the extension of the angled deck, about nine degrees to port of BRC — not off the BRC. Nine degrees at twenty-one miles is three and a half miles off the arc before you have started.
The cockpit half is written for your jet. The Tomcat card sets up the AN/ARA-63 — the Tomcat does have ICLS, which I had wrong before reading Heatblur's manual — the APN-154 in ACLS, AWL/PCD steering and the coupled approach on the nosewheel steering button, on speed at 15 units. The Hornet card is ILS on the UFC, Mode I coupled in pitch and roll with ATC holding AOA for the throttle, on speed at 8.1 units. Neither card mentions the other jet.
Requires DCS: Supercarrier, and says so on the ride, on the track and in the mission briefing. Marshal, the approach controller, ACLS and the LSO are module features — a Case III trainer on the free boat would be teaching a procedure the mission cannot run.
Two smaller fixes found while building it: your jet is no longer described as "parked and ready" when it starts airborne, and the "no loadout could be composed — your jet starts clean" warning no longer fires on missions whose jet is fully armed. That one had been shouting on every non-syllabus sortie.
---
Casmo, flying a Case III off the boat: "i have zero idea how to do a case 3 recovery so i was flying around blind. The radios didn't turn right tho. It says carrier on channel 2 but I had to manually tune it to the freq."
Two separate failures, both ours.
The radio. Your jet's presets were loaded into one radio. The Tomcat has two — the pilot's ARC-159 and the RIO's ARC-182 — and the RIO's set is the one most crews actually use to talk to the boat. It was still holding the factory table, where channel 2 is 258.000. The card said "Mother, CH2, 264.425" and was telling the truth about a radio you weren't keyed to, which is the same as lying. Every UHF radio in the jet now carries the full comm ladder, so channel 2 is Mother whichever one you're on. Same for the Hornet's COMM2 and the Phantom's second set. Radios that can't tune the band — the Hog's VHF sets, the Viper's COMM2 — are still left alone, because writing a UHF frequency into a VHF radio would be a new lie rather than a fix.
The boat card. The ICLS channel, the Link 4 frequency, whether ACLS is up and the BRC existed in exactly one place: small gray text on a kneeboard image inside the .miz. The brief you read while planning had those notes stripped out. You cannot dial an ICLS channel nobody gave you. The brief's comms table now carries the notes column, so the whole boat card — TACAN, ICLS, Link 4, ACLS, BRC — is in front of you before you start the sim, not after you're strapped in.
While we were in there, we checked the rest of the card against the mission rather than assuming: the carrier TACAN is a surface beacon with bearing (an air-to-air beacon shows the right channel on paper and gives a pilot in T/R nothing — the most common cause of "my carrier TACAN doesn't work"), the ICLS channel activated is the one printed, Link 4 is on the printed frequency, ACLS is claimed only on hulls that have it, the whole battle group transmits AM, and the 1944 Essex still advertises no landing system at all.
Next: the Case III training pack. Casmo's first sentence was the bigger one. Marshal stack, push at your approach time, the descent gates, dirty up, the ball — taught as a syllabus for the Tomcat and the Hornet, off the CV NATOPS numbers. That's the next release, not this one.
---
Rob: "Whats the wait? Do we need that much testing." Yes — and it should not have cost twenty minutes.
Every release runs the full suite before it packages anything: about 3,500 checks, most of which build a real .miz file and read it back. That work is CPU-bound and independent, so it splits across cores cleanly. The gate now runs it in parallel. Measured on the build box: 20 minutes 34 seconds down to 10 minutes 17 — the same 3,528 passed, 43 skipped. Not one check was removed, shortened, or sampled.
Two details, because getting this wrong is silent:
- The tests are handed out whole file at a time. Several test files share one generated mission between all their checks; splitting a file across workers would rebuild that mission once per worker and end up slower than doing nothing, while still printing a green result. - Parallel is optional. scripts/preflight.sh — the check you run yourself from an unzipped release — looks for the parallel runner and quietly runs the old way if it is not installed. Nothing about verifying a release now depends on installing anything extra.
The other half of the wait was mine: I was running the suite, then handing off to a release script that ran it again. It runs once now.
---
Rob: "the map is reversed with blue being land and water being brown." He was right, and it was not a color swap — the coastline itself was wrong.
The chart starts as a tan land plate and floods the sea polygons on top. The Persian Gulf's polygon traced the Arabian shore properly, then closed itself with three box corners instead of a coastline — and one of those corner lines ran straight across Iran at latitude 30. Everything inside went blue. Measured on the rendered page: 67.9% of the chart was sea. Iran and inland UAE were painted as water; the Gulf of Oman and the Strait of Hormuz were painted as land. Reversed, exactly as reported.
It has been re-traced as one honest coastline — Qatar and around the peninsula, east along the UAE to Ras Musandam, back down the Gulf of Oman side past Muscat, out into the Arabian Sea, then home along the Makran and Iranian coasts to the head of the Gulf. The chart now reads 31.4% sea. Seven island airfields — Kish, Lavan, Sirri, Abu Musa, both Tunbs and Sir Abu Nuayr — had no island drawn under them at all and floated in open water; they have one now. Two coastal fields, Bandar Lengeh and Bandar-e-Jask, had the shoreline cut inland of them. The same pass tidied three marginal cases on Syria, including RAF Akrotiri, which sat just off the end of Cyprus.
And the stray red aircraft. "Let's not add a single random red aircraft at the beginning of a mission in the blue area." The enemy fighter patrol was stationed somewhere between 40% and 65% of the way from your side of the map to theirs — and 40% is your half. Measured across two thousand seeds, it set up on the blue side of the line 42% of the time: a coin flip, not a rare case. On a Persian Gulf mission that put an enemy two-ship orbiting closer to your own airfields than to theirs before you had released brakes.
They now station between 55% and 80% — always in the half they are defending, and short of their own airfields where the SAMs already are. They will still come out to meet you; they just come from their own side of the water.
Both of these were invisible to a test suite of three and a half thousand tests and obvious from the cockpit, because nothing had ever written down that a coastline should match a coast or that the enemy should start on the enemy's side. Both claims are written down now, and eleven mutations prove it.
Rob: "Pattern Traffic is too limited, it should have the ability to add more aircraft numbers." The cap was four; it is eight now, and eight is a reasoned ceiling rather than a taste. Landing traffic flies a spaced conveyor — each aircraft 3.8 NM in trail behind the one ahead, starting 6 NM out — so aircraft number eight begins about 32 NM from the threshold: nine minutes from touchdown, the outer edge of "the field is alive as you walk out to your jet." Beyond that the tail of the queue is scenery nobody meets. Departing traffic was never capped by the number anyway — it is bounded by free parking stands, and the mission already tells you when the ramp runs out.
This building block also picked up its first test coverage ever — six guards, including one that reads all eight aircraft back out of a built mission and one that requires the picker in the Builder to offer exactly what the engine accepts. That last pair is how a cap nobody chose became a limit somebody hit.
A name in the footer. This tool now credits Tricker for flight testing and feedback — a long run of the changelog's fixes started as his squawks from the cockpit, and the footer and README both say so.
And a straight answer on waypoints. The product says "you are never given a flight plan you did not ask for," and lists two ways one appears: strike templates and the Automatic waypoints tickbox. But the White Knights rides have carried the squadron's own route since v1.76.1 — automatically, with no tickbox — because flying that exact ground track is the lesson. Both things were true and the description only told two-thirds of it. Every place the promise is printed — the front page, the user guide, the printed guide PDF, the roadmap, the hosting brief — now names all three cases and states plainly that there is no waypoint editor: where a mission needs a plan, the mission brings it.
"The other REX flight doesn't fly with me at all." Third report, same root, and the design finally admits it. A separate AI flight in DCS flies its own plan on its own clock — no schedule fix, no hold, no release could ever make it hold position on a human, because the engine offers no way to. The one native mechanism that flies WITH you is a wingman inside your own flight, and that is what the two-ship rides are now: one flight, REX 1-1 and 1-2. He starts when you start, taxis behind you, forms up after takeoff, rejoins when you call it, and attacks the target when you send him from the radio menu.
What that costs is said plainly on every card: he will not fly the two-ship geometry by himself. The delayed pop, the ninety-into-you, the trail — the printed numbers are yours to fly, and his bombs arrive on your command. What you get is an airplane that is actually there every time you look left, which after three scripted attempts is the honest trade.
"The navigation aids don't fly to the target." The gates drew, but the line they traced wasn't the lesson — the boxes render from the unit's active route point, and after minutes held on the ramp reading a brief, where DCS thinks you are on your plan is anybody's guess. The active gate is now pinned: set to the low level the moment you take the airplane, and advanced by the coaching's own phase flags as you earn each cue — the boxes and the WSO move from the same facts.
This also retires two whole bug classes: the wingman's shelter can't be double-booked (both stands are claimed when your flight is created, before the ramp is dressed), and there's no separate schedule to leak.
"On the coached mission, there should be training-mission gates." You are right, and my earlier split was wrong. I had put the gates only on the green variant, reasoning that one version should teach and one should check — but the no-aids version of this attack already exists: it is ride 9, the B'NAI check. Coached means every aid on. The track's coached ride now draws the navigation squares too, the brief says so on its coaching page, and gate- freedom is enforced where it belongs — on the check ride, by a test that fails if the gates ever leak there.
"There is a static plane in the same hangar as the second plane." Measured at the pack's own seed: a static F-4E at zero metres from REX 2, with its ground equipment sixteen metres away. The ramp dressing fills every parking stand that no aircraft has claimed, and your wingman used to be created after the dressing ran — so DCS assigned him a shelter that already had an airplane in it. He is now created before the ramp is dressed, claims his stand the same way your jet does, and a test reads the distances back out of every build.
Three reports in one message, and all three were real.
"The coached B'NAI mission doesn't have a target to bomb." True since the ride shipped. The mission scattered its target packages near the enemy airfields — under the 1980 lineup, sixty-plus miles north-west — while the flight plan ran its target leg the other way. The brief listed targets the route never visited, and the route bombed empty sand. Now a vehicle depot stands ON the target leg, exactly where the delivery sheet aims you, on every White Knights attack ride.
"The mission waypoints don't seem aligned." The route axis on Sinai was set before anyone launched from Cairo West — and from Cairo West it ran the 300-foot low level straight across Cairo, with the target leg in the Nile valley suburbs. Cairo International sits 28 NM out on almost exactly that bearing. The axis now runs west into the open desert, pointed at the threat the scenario names, and it keeps the Beni Suef checkout rides west of the Nile as well.
"The green navigation boxes don't exist." You meant DCS's helper gates — the green fly-through squares from the training missions — and here I owe you a correction twice over: I first built green rings on the cue cards, then told you real gates would need a Lua script. Wrong both times. The gates are a NATIVE Mission Editor trigger action, no script anywhere. The green variant — now "Green Rings & Gates" — draws them along the flight plan at the instant your brief ends, the same moment the coaching arms and your wingman starts his engines. The track's own ride 8 stays gate-free on purpose: one version teaches with every aid on, the other is the check.
Every fix read back out of the built missions: ten target vehicles within two kilometres of the target leg, every waypoint west of the field, one gates trigger on the green variant and none on the check ride. Nine new mutations, all caught.
Rob: "The coached mission AI plane doesn't take off, it just goes slowly down the runway." Two defects, and the first one is embarrassing in a very specific way: a units error.
The route was commanded at 112 knots. The library this product builds missions with measures waypoint speed in kilometres per hour; the White Knights route code handed it metres per second. Same number, wrong unit — everything divided by 3.6. So every waypoint on every ride, yours and the wingman's, was quietly commanded at 112 knots instead of 400+. You never noticed on your own jet because you fly it; the kneeboard prints the briefed airspeed, which was always right. The AI obeyed the waypoint. Asked to fly the whole sortie below rotation speed, he did the only honest thing available and drove down the runway.
And he had no departure leg. Every AI flight the mission library builds for itself — tankers, AWACS, escorts — gets a climb-out waypoint on the field between brake release and the first en-route point. The wingman didn't: his first instruction after parking was a turning point twenty miles away at three hundred feet. He has one now, same as everyone else.
Both are now guarded by tests that read the built mission back: every named waypoint must be commanded within five knots of what its leg sheet briefs, nothing en route may be under 250 knots, and the climb-out point must sit on the field. Four mutations recreate the bug from four directions; all caught.
Rob: "there is no wingman flying with me." He was right, and the reason is almost funny. REX 2 was there in every mission — a separate flight, warm on the same ramp, flying the whole attack on a fixed schedule. And the brief holds you in your seat for as long as you read. So your wingman started up, taxied, took off and flew the entire B'NAI by himself while you were on page three, and by the time you pressed SPACE he was gone. The mission was keeping both promises separately and breaking them together.
Now he waits. REX 2 is held on the ramp until the moment the last brief page hands you the airplane — the same instant, the same flag. You step, he steps. The brief's wingman page says so out loud.
And the green rings. A new Library card — B'NAI Attack — Coached, Green Rings — flies Proud Phantom ride 8 exactly as the track flies it: same route, same cues, same held wingman, with the you-are-here ring drawn in green instead of red. It is the same ride by construction: the color lives in the mission recipe, and a guard fails the build if the variant ever quietly changes anything but the ring.
For pack authors. docs/PACK_AUTHORING_PROMPT.md — drop-in instructions you can paste into any AI that teach it to build a valid .sspack from scratch: container rules, the full manifest, a runnable integrity snippet, and the exact rejection list. The document's own code block is executed by the test suite and compared byte-for-byte against the real installer, so it cannot drift.
Three things Rob reported in one sitting, and the last of them was the worst defect this product has shipped.
"Egypt is listed as a Red Force when it's supposed to be blue." It went further than the label. Every Proud Phantom ride asks to start at Cairo West — the base the 70th TFS actually deployed to in June 1980, which the track card names in as many words. Sinai's Cold War setup is the October 1973 order of battle, where Cairo West is Egyptian and hostile. The generator found the field on the wrong side, quietly moved you to the first field it did hold, and built the mission.
So all eleven rides took off from Hatzor, in Israel, with the White Knights flying under the Israeli flag, toward a Cairo West defended by an SA-6 and lined with parked MiG-23s. The exercise happened because of the 1979 peace treaty. The missions inverted it.
What's changed. Sinai now has two readings of the same decade. October 1973 is still there, untouched, for anyone who wants it. Proud Phantom, June 1980 puts Egypt on your side, Cairo West under your feet and the squadron back in USAF markings. Israel is on neither side, because in 1980 it was at peace with the country you are standing in. The threat is Libya — the real one, three years after the 1977 border war. Libya owns no airfield on this terrain, so the aggressor holds the three western fields, and the map data says so out loud rather than letting you conclude Alexandria changed hands.
And the reason it was invisible. A mission that names a home field it does not hold is now a build error that tells you what your side actually has. It is not a warning and it does not relocate you. When that check went in, 22 card/map/era combinations failed it — 21 were this bug, and the 22nd was an F-100 mission asking for "Nellis AFB" on a map where the field is called "Nellis". Dead for who knows how long. Fixed.
Also fixed, same sitting. The Library no longer shelves a syllabus that isn't published — a track card used to appear whether or not its pack existed, and once you uploaded the pack you got two cards for one course whose missions were not the same (the pack pins its seeds; the card rolled fresh ones). And the pack upload works: the file picker grayed out .sspack, the one extension the build tool produces, and the review page you land on after a successful upload crashed on a function deleted two releases ago — so every upload ended in an internal error for a pack that was already installed.
Rob: "The B'NAI coached mission looks good except the last screen doesn't exit when you press the space bar."
What was actually happening. It did exit. The hold ended, the seat unlocked, the controls came back and the coaching armed — everything the space bar is supposed to do, it did. What stayed was the picture. Page six of the brief sat over the canopy for the whole sortie, so the mission looked frozen while it was in fact running perfectly underneath.
Why it happened. Each page is drawn for ten minutes deliberately: a brief that times out while you are still reading it is worse than one that lingers. Pages one to five are never seen for ten minutes because pressing space draws the next page over them. Page six has no next page — so its ten minutes ran.
Why the obvious fix does not exist. DCS has no "remove picture" action. Showing something else is the entire mechanism. So the last page now draws a transparent one-second image over itself, and clears the message window with it. The brief disappears the instant you press space, and you are looking at Sinai.
Five mutations recreate the bug from five directions — deleting the clear, holding it as long as the page it replaced, leaving the text behind, clearing with a copy of page one, and timing the pages out from under a pilot who is still reading. All five are caught.
Rob: "the briefing pack pdf doesn't download." He was right, and it failed in the worst way available: the button looked perfectly normal and did absolutely nothing.
What was wrong. Generating from a Library card draws the Mission Kit panel inside the drawer, and the drawer's Briefing pack button was wired up on a 1.6-second timer — written on the assumption that a mission finishes generating in under 1.6 seconds. A plain starter does. A White Knights ride takes about 3.3, because it carries the coaching cards, the brief pages and the squadron's diagrams. So the timer fired before the panel existed, found nothing to wire, and left a dead button behind.
It failed on precisely the missions worth reading a brief for, and it failed silently — no error, no console warning, nothing to suggest the click had gone anywhere.
The fix. The Kit's buttons are now wired in the same statement that draws the Kit, in every place it can be drawn — the Builder, Quick Flight and the Library drawer. Nothing waits on a timer, so there is no window in which the button exists unwired.
Confirmed in a real browser both ways: on the shipped build the button reports itself wired to nothing and no request leaves the page; with the fix it wires immediately and the pack downloads. The two mutations that recreate the bug are now guards in the suite.
The product ships small again, and content arrives separately. No missions in the image, none in the release zip. You produce a pack, you upload it at /admin, it is live. That is the whole model, and the built-in syllabi now go through the same door as everything else — which is the strongest test that door could get.
The last in-request syllabus build is deleted, not cached around. For one release the four built-in tracks were baked into the image, which fixed four of the sixty possible combinations and left fifty-six armed. Now there is nothing to arm: a syllabus is either published as a pack — the download is a file — or it is flown one ride at a time, which is a single mission per request and has never been a problem. The whole-syllabus button only appears when a pack actually exists, and the endpoint says so in words rather than taking the machine down.
Uploading a pack takes over its Library card. A pack and a track sharing an id are the same syllabus, so you get one card, not two — you should never have to learn which of them you are looking at.
The four built-in syllabi are attached to this release as .sspack files. Upload them the same way you will upload your own. They are the White Knights Checkout and Proud Phantom, and both refuelling Academy lanes at their default aircraft and tanker.
The cost, stated plainly: a fresh deploy comes up with an empty Library until the packs are uploaded. That is what thin means, and it is why the download button is now gated on a pack existing rather than assuming content is there.
Also fixed: the pack bundle was cached on whole-second timestamps, so an author who corrected his mission titles within a second of the last download kept handing out the old words. Same second-resolution trap the mutation harness hit with Python's bytecode cache, in a different coat.
You can now build a set of missions yourself, drop the folder in at /admin, and have it become a Library card. The system opens every .miz, reads the theatre and the aircraft straight out of the file, pairs each mission with its brief by number, finds your guide and your card art — and then puts you on a review screen for everything a machine cannot know: the title, the premise, the era, the order, the mission names, and what a pilot must own to fly it. Save, and it is live. No deploy, no code, no waiting for me.
Then download the manifest it wrote and drop it back in your folder. From that point the folder describes itself: upload it here, or hand it to somebody else running their own copy, and it carries your words instead of another guess.
The format is written down and public. docs/PACK_FORMAT.md is the specification — what a pack is, what a reader must accept, what it must refuse, and the compatibility rules it promises. A .sspack is a file you can publish or sell. Unknown fields survive a round trip, a pack from a future version fails with a sentence rather than a stack trace, and every file is checksummed so a truncated upload is caught instead of handing DCS a mission it cannot open.
The four built-in syllabi are now packs too. The White Knights and both refuelling lanes ship as published artifacts with manifests, built once when the release is built — not reassembled from Python every time somebody presses Download. That is the same fix as v1.78.1 taken to its conclusion: the download does no work at all.
And the Library now tells you what you need before you download. "To fly this you need Sinai and the F-4E-45MC — Phantom II." That line was previously a display string that nobody checked; it is now read out of the missions themselves.
Packs carry their own version number, separate from the app's. Correcting a premise line is a pack republish, not a product release — which is the whole point.
Rob pressed "Download all 11 missions" on Proud Phantom and got nothing. Same on the Checkout. Individual missions were fine — it was the whole-track button, on the live site, returning a 502.
What was happening. That download built the entire syllabus inside the request: eleven missions, eleven brief PDFs and a printed guide. Half a minute of flat-out CPU on a developer machine, and minutes on the small shared vCPU the site runs on. /api/health went unreachable at the exact moment the download failed — the machine was being killed and restarted with your download still in flight.
The fix is to stop doing arithmetic nobody needed done twice. Those zips are deterministic: fixed seeds, keyed to the version, and a pinned track has no options to vary — so the file is byte-identical for every person who downloads it. It is now built once when the site's image is built, and the request just hands you the file. Proud Phantom went from thirty seconds of server CPU to 0.18 seconds and no work at all.
Both refuelling Academy tracks get the same treatment for the combination the plain download button uses. Change era, aircraft or tanker in the wizard and you fall off that and get a live build — the rare path, and the one that was never the problem. Pre-building every combination would be hundreds of megabytes for downloads almost nobody asks for.
The zips are not in the download package. They are about 46 MB a release, and a copy of the tool running on your own machine has a real CPU and rebuilds one in half a minute. The package is a recovery point, not a delivery van.
The coached B'NAI now opens with a six-page brief, and your controls are locked while you read it. Situation, target and threat, the attack, the pop, your wingman, and how the coaching works. SPACE turns the page. BACKSPACE goes back over the bit you missed. Nothing advances on a timer — each page sits there until you press something, so you can take as long as the page needs.
On the last page you get the airplane back, and only then do the cues go live. That ordering matters more than it sounds: the coaching used to arm itself ten seconds into the mission, which with a brief in front of it would mean the first call arriving while you were still on page two, being told who you are.
What the hold actually holds — plainly, because the difference matters. A mission file cannot press active pause. It is a keybind on your machine (LWin+Pause by default) and there is no Mission Editor action that reaches it; we would be lying if the card said otherwise. What a mission can do is take the stick off you, and that is exactly what this one does from page one until the handover. If you want the sky stopped as well as the stick, press pause yourself — the brief waits either way, and the kneeboard says all of this in as many words.
Nothing in the brief is retyped. Every figure it speaks — the pull-up distance, the roll-in, the apex, the release — is read live out of the delivery sheet at build time. Correct a number once and the brief, the kneeboard and the cue card all say the new one. A brief with its own copy of the pop numbers is just a fourth place for them to be wrong.
Three of the six pages carry the squadron's own drawing, cropped wider than the in-flight cue cards because a page you read sitting still should not be missing the left half of "TRACK POINT". The other three are type. We do not have a photograph of Cairo West in 1980 and inventing one would be the same mistake as redrawing the geometry.
Two bugs found on the way, both in the release system rather than the missions. The script that draws the cue cards had been failing for a whole release — and the release script was quietly swallowing the failure, then stamping the un-rebuilt files as up to date. Both fixed, and there is now a test that runs every generator for real and checks its output byte-for-byte against what is committed.
And one in what shipped yesterday. The coaching's "sequence is live" flag and its tenth phase flag were the same number. Two silent consequences: the cover-two call re-armed the sequence, and the re-attack's reset switched the coaching off — so the second run, which is the entire point of that ride, worked once and then died quietly. Fixed, and there is now a test that asserts the flag blocks cannot overlap, with room for phases nobody has written yet.
The B'NAI is the hardest thing in the syllabus and it was only ever tested, never taught. You read the card on the ground, flew it, and found out afterwards. That is a fine check ride. It is a poor teaching one: the geometry has about a dozen decisions in it, most of them two seconds wide, and you are at three hundred feet with no time to rebuild a diagram from memory.
Proud Phantom ride 8 is now the B'NAI with somebody in the back seat. Thirteen cues, one per decision — trail set, IP turn, run-in, pull-up, roll-in, apex, track, release, pullout, cover two, egress. Each one puts the squadron's own drawing low on your screen with a red ring around exactly where you are and one word across the bottom: PULL UP — 30. ROLL IN. PICKLE. The picture is the 70th's page, cropped — not a tidied-up redraw, because a redrawn diagram is a second source of truth for geometry nobody can check.
Then it re-arms and you do it again. About twenty seconds after you cross the egress point the whole sequence resets to the IP. Come back round and every cue fires again — same target, same geometry, same wingman two to three miles in trail — until the calls are telling you what you were already doing. Then go and fly ride 9, which is this same attack with nothing talking to you.
One bad pass cannot cost you the rest of the sortie. The cues run in order, so nothing arrives early — "pickle" on the run-in is the worst thing this feature could do — but the chain is built so a pop flown shallow still gets you to the pullout, the egress and the re-arm. The second run is the whole point of the ride, and it is not allowed to be something you can lose.
On the voice. Jester cannot say these lines. There is no Mission Editor action that makes the F-4E's AI WSO speak an arbitrary sentence, and no Lua goes inside our mission files — so a card promising his voice would be exactly the defect this whole track exists to avoid. Instead the cues carry a slot for a recorded WSO, played as a cockpit sound rather than a radio call, because a man leaning forward in the back seat is intercom and not a frequency. Until a take lands, every cue still shows its picture and prints its words, and the kneeboard says in plain language that this build has no voice in it.
What the coaching cannot see is on the card too. Mission Editor conditions can read your position, your altitude and your speed — that is the entire list. It knows you reached the pull-up point; it does not know whether you pulled to thirty degrees or fifteen. It is a metronome for a sequence you already studied, not a grader. The grade is the crater.
Rob flew Proud Phantom and found two things missing: there was no AI aircraft, and no air-to-ground munitions. Both were worse than reported. No ride had a counterpart — all twenty-one of them, not just Proud Phantom — while every kneeboard card printed a note explaining that he is a separate flight flying a scripted route. And every ride carried the air-to-air fit: four AIM-7Ms, three AIM-9P5s and a tank, on a card that told you to pickle six Mk-82s.
REX 2 now exists, as a separate flight. Not a second aircraft in your own group — a group of his own. Aircraft inside your group are your wingmen under the F-key structure, and that is not what the squadron's documents describe when they say the flight splits. He flies the same route you do, offset by the number the card prints: five to seven miles line abreast on the low-level rides, the B'NAI's own trail spacing on the B'NAI, seven miles of lateral separation on the splits, ten in the working area. The step-start and the forty-five-minute CQT turn are still single-ship, because they are single-ship rides — and their cards no longer claim otherwise.
The stores are the sheet's stores. Each delivery ride loads what its planning sheet actually calls for — six Mk-82 low drags on a MER for the low-angle and dive rides, Mk-82 Snakeyes on TERs for the high-drag sheet — with a period-correct AIM-7E-2 and AIM-9J fit alongside, not the modern missiles the generic loadout was handing out. There is a STORES block on the kneeboard, and your counterpart carries what you carry. A test compares the block on the card against the pylons in the built file, so the card cannot promise ordnance the aircraft does not have.
The guard that catches this kind of drift was itself weak when first written: it compared the card's promise against the same function the card uses to decide whether to print the promise, so both sides moved together and a broken version stayed green. It now compares the printed promise against the flight-plan module — the promise, the predicate and the airplane are three independent things that have to agree.
Every attack ride now carries the diagram from the guide, on the kneeboard. All five: the low/high split, the low/low split with separate aimpoints, the B'NAI, the echelon and the double 90 — each with its pop-up geometry, the minimum attack parameter circle around the target, and both egress options underneath.
They are the squadron's drawings, not redrawn ones. Redrawing would have meant re-deriving every angle by eye from a scan and inventing a second source of truth for geometry nobody can check. A pilot in the pop needs a picture, and the 70th already drew the right one. Each page names where it came from — document, section and date — because a diagram with no provenance is just a drawing.
The diagram is the last kneeboard page on purpose: the text pages are read once on the ground, the picture is read in the pop. They are in the printed syllabus guide too, after each attack's card.
Extracting them was less tidy than it sounds. The first cleanup pass removed the binder punch holes by fill ratio and ate the lettering with them — "DOUBLE 90" came out as "OU LE O". Bold sans capitals are solid enough to look like a hole. The filter is now calibrated against measured blob sizes, and a test asserts no solid disc survived and no letter was lost.
Rob read the syllabus against the document and found a ride missing. Section II of Conventional Tactics describes the split attack in two forms — low/high against a single aimpoint, and low/low against separate aimpoints — and v1.76.0 shipped only the low/low. The low/high geometry was sitting in the data with nothing flying it.
Proud Phantom is now ten rides, and all five of the guide's two-ship attacks are taught. The new ride 9 is the low/high: mutual support to 4.5 NM, lead turns 30° and pops immediately for a low angle off delivery, you turn 45° and pop for an almost 90° angle off delivery from above his frag, axes converging 120–150°. You buy the separation by delaying your roll-in, which is also what gives you the extra angle and the higher release parameters — one decision doing three jobs. The low/low follows it at ride 10 and now opens by saying what it adds: the same geometry, separate aimpoints, and both of you low.
And a guard that would have caught it. The syllabus now asserts coverage of the source: every attack geometry in the guide has a ride, and every delivery planning sheet has a ride. That test did not exist, which is why a reader found the gap before the suite did.
Three things the White Knights cards described and the missions did not contain. All three are the same defect wearing different clothes.
Every ride shipped with one waypoint — the parking spot. The B'NAI card described an IP, a two-to-three mile in-trail set-up, a pop and an egress on the opposite side; the file contained a place to start the engines. All twenty rides now carry a real flight plan, and the geometry comes out of the squadron's own paper: the low-level routes fly at the theatre floor and 400 KIAS with turn points 90° to each other, because that is the comm-out turn the WSO calls; the delivery rides put the IP at the planning sheet's own pull-up point; the attack rides split at the range the guide names. The combat quick turn correctly gets no flight plan, and the card says why.
The card was in the mission briefing only. A briefing is something you read on the ground. In a Phantom at three hundred feet with a WSO calling turns you have a kneeboard and nothing else, so the ride card is now paginated onto kneeboard pages after the usual four. Other cards are untouched at four pages — if you know the theater page is 03, it is still 03.
The flight was called Oyster. The card said REX, which is the squadron's own callsign, printed throughout the Standards document — "REX 1, loud and clear", "REX 2 BREAK RIGHT". It says REX now.
And the paint, which we cannot fix and therefore say. Every card now carries a YOUR AIRCRAFT block: Southeast Asia camouflage, FS 34079 / 34102 / 30219 over FS 36622, the blue and white checkered tail stripe, tail code MY, and the two airframes photographed at Moody in 1980. It also says plainly that DCS ships no 70 TFS livery — not in the User Files catalog, not on the forums, not on GitHub — and that the mission will not name a livery folder it cannot verify, because that produces a blank airplane. What is unverified is listed as unverified: whether the undersides were gray or wraparound, and the checkerboard geometry.
Two new tracks, built from a real squadron's own paperwork. Rob sent four documents issued to a new arrival at the 70th Tactical Fighter Squadron "White Knights", 347th TFW, Moody AFB, in January and February 1980 — Low Level Training (7 Jan), Conventional Tactics (27 Jan), Standards (6 Feb), and Weapons Information Sheet No. 1, all signed by Lt Col Barry M. Meuse. Twenty missions come out of them.
Squadron Checkout — eleven rides, Cold War Germany. The comm card with the squadron's own code names (RAYMOND, DIRT, DONNA, GOOD BYE, BOBBY, callsign REX), the tactical split at 1,000 ft and 300 KIAS, the tactical overhead with the local rule that #2 cannot fly west of the tower, a combat quick turn graded on a 45-minute clock, the two-ship low-level contract, comm-out turns, ridge crossing, threat reactions, a route abort ride designed to go wrong, intercepts and the squadron's sixteen BFM directive calls.
Proud Phantom — nine rides, Sinai. From June to 3 October 1980 the 70th flew twelve F-4Es out of Cairo West, which is a real airbase on the DCS Sinai map. The tanker drag out, the five delivery planning sheets, and the four two-ship attacks. The B'NAI — designed by the Israelis in 1973 for an SA-6 environment — is flown over the ground it was invented on, with an SA-6 in the mission.
The best detail is an argument between two documents. Your squadron's contract says formations work down to 300 feet. West Germany's floor in 1980 was 500 feet AGL outside seven designated areas. The card prints both numbers and says which governs — it never silently substitutes one for the other, because that would be putting words in a dead man's mouth. Fly the same ride in Egypt and the host-nation paragraph is simply absent.
About your AI counterpart, said plainly on every card. He is a separate flight on a scripted route, not a wingman in your flight. A DCS AI will not delay a pop five seconds, will not turn 90° into you and hold eight, and will not sit two miles in trail covering your six. Briefing that he will, and then not delivering it, is the one thing this product refuses to do.
Nothing is invented to fill a gap. Moody AFB is not in DCS and every card says where it is staged. Which range the squadron used in January 1980 is in no source we could reach, so the delivery syllabus lives on the Proud Phantom track where the base is documented. And the 347th never deployed to Europe in the Phantom — it was drafted into NATO contingency plans and committed to the Rapid Deployment Joint Task Force. The Germany track is the war it was assigned, briefed as the plan.
Reported from the cockpit: "the altitude seems too low for the terrain." It was. Mount Elbrus stands 18,510 ft and sits on Caucasus — the free map, and therefore the one most people fly the Academy on. The KC-130 and the KA-6D were briefed at 15,000 ft and the S-3B at 12,000, with you starting each ride a further 1,000 ft below the tanker. That is a refuelling track you can fly into a mountain, which is not a training aid.
Every track now clears the highest ground on its map by 3,000 ft, rounded up to a briefing altitude, and the 3,000 is measured for you rather than the tanker — you start low, so you get 2,000 ft of it. On Caucasus that puts the whole syllabus at 22,000 ft. The kneeboard card explains the raise rather than just printing a number you did not expect.
A tanker that cannot get up there is not offered, and says why. A Hercules asked for a 28,000 ft track over the Hindu Kush is a Hercules above its ceiling. It now drops out of the wizard for that map with the reason printed beside it — the same courtesy the era gate already extended to the KA-6D, whose silent absence you had to ask about once.
The printed syllabus was still quoting the tanker's book altitude. Two places in the guide — one in the PDF, one in the markdown — printed the tanker's normal working block instead of the track the mission actually flies. A test now reads the text back out of the generated PDF and fails if the briefed altitude is not the flown one.
Where the mountain heights come from is written down in SOURCES.md: Elbrus and Noshaq are cited summit elevations, the rest are labelled as our own conservative estimates, and a map we have not listed is assumed to be the worst one we know about. pydcs exposes no terrain elevation at all, so this is a table — and an honest table says which rows are measurements and which are judgement.
The KA-6D had no buddy store. Not "the wrong loadout" — no store at all. It was on a track, on frequency, with a TACAN and a full briefing, and physically unable to give anybody fuel. The A-6E is the only tanker in the set whose refuelling system is a pylon store rather than built in, and nothing was fitting it. It carries a D-704 now, and a test reads the generated mission file to prove the pod is on the airplane.
You start behind the tanker now. You weren't. Measured out of a built mission: the player was spawning due south of a tanker flying 229° — about 49° off its right rear quarter, very nearly abeam — and pointing due north, 131° away from the tanker's direction of flight, at three hundred knots. Two silent causes. The heading was read from the tanker's unit before DCS had assigned it, so it came back as zero; and the field that actually orients a spawned aircraft is psi, which only gets set automatically when a flight has more than one waypoint — a pre-contact air start has exactly one. Both fixed, and the guard measures relative bearing and heading out of the file rather than trusting the code.
The A-6 is faster. 270 → 290 KIAS, and the Tomcat's own floor went from 250 to 270 — a floor set below where the airplane is comfortable makes the "this tanker is too slow" warning stay silent exactly when it should speak. A Tomcat behind a Hercules is now correctly flagged as 35 knots slow.
One speed on the page. The guide's tanker section was printing the tanker's nominal figure and the speed it actually flies for your aircraft. Those are different numbers most of the time, and printing both is how a document stops being trusted. Only the flown number appears now, and a test checks it against the tanker's route speed in the generated mission for every combination the wizard offers.
You were right about the Intruder. The AI A-6E with a buddy store tanks perfectly well — that's exactly what our KA-6D is. It was only offered in the Cold War era, and checking why turned up an inconsistency of my own making: the S-3B retired in 2009 and I offered it in the modern era; the KA-6D retired in 1997 and I didn't. Both are retired carrier tankers, neither covers the whole 2000–2030 window, and the difference was a judgement I'd made by hand rather than a rule.
It's a rule now. Every tanker carries a service window, and one that only partly covers an era is offered with a label rather than hidden. So the KA-6D is available to the Navy in both eras, and it says: left service in 1997, before this era begins — offered anyway because the era buckets are coarse, Cold War ends in 1985 and modern starts in 2000, so this tanker's last years fall in the gap. Hiding it cost you a real DCS asset for the sake of a bucket boundary. Labelling it costs nothing and tells the truth.
The wizard now also lists tankers it didn't offer you and why, instead of silently omitting them — which is what made you ask in the first place.
The printed guide was missing things. The text was always regenerated for whatever combination you picked, so the numbers were current. But the position indicator's kneeboard card wasn't in it at all, and there were no pictures. Now there are two new pages: every one of the eleven indicator states printed at full size, so you can learn the panel on the ground rather than at the boom, and the indicator's own card. Plus a page on your tanker — the speed it actually flies for your aircraft, whether that's short of what your jet wants, and which tankers you weren't offered.
The artwork on that page is the same PNG files the mission carries, not a redrawn legend, so the page can't drift from what you'll see in the air.
Rob flew it. Four things were wrong, and one of them was the important one.
The tankers were too slow for the jets. The track speed was a property of the tanker — so a KC-130 flew the same 210 knots whether a Harrier or a Tomcat was joining, and the MPRS flew 250 for everybody. Now every receiver carries a speed band and the track is the tanker's own point clamped into it. Three things follow. The drogue tankers are faster across the board (MPRS 250 → 280, KC-130 210 → 230, KA-6D 250 → 270, Viking 230 → 250). A KC-135 now slows down for an A-10, because 300 knots is a fine boom track for a Viper and impossible for a Hog. And when the pairing simply cannot work — a Tomcat behind a Hercules is fifteen knots slow and no amount of wanting fixes it — the card says so, in those words, so you don't spend the sortie blaming your hands for the airplane.
The probe lane's default tanker changed to the KC-135MPRS for the same reason, and the tanker picker now prefers one that can actually fly your speed. Ashore you also stop being handed the boat's own Viking, which was happening because the sort ran on altitude and the Viking flies lowest.
The indicator moved to the left, at eye level — roughly where you already look for the ball — instead of sitting under the nose competing with the sight picture.
It's about half the size, and the artwork was redrawn rather than shrunk. It's now a ball between two datum bars for your height, one big chevron for closing or falling back, and a single word. Shrinking a card with three lines of prose on it gives you three lines of nothing.
It stops flashing. It only ever redrew on a state change, but that isn't the same as redrawing rarely — sit on a band boundary and you cross it several times a second. There's now a hard four-second floor between redraws. A real change can take a moment to appear; that's the trade, and it's the right one, because a flickering panel is one you learn to ignore.
You asked for the syllabus in the Phantom and the Tomcat. It's there — along with every other DCS aircraft that can actually take fuel.
Three steps, in the track card. Pick an era, pick your aircraft, pick your tanker. Each step only offers what the one before it allows, so you cannot build a combination that doesn't fly: no F-16C in the Cold War, no boom tanker for a Hornet, no KA-6D outside the era it existed in. Then download — and the eleven missions, the eleven printed briefs and the printed syllabus guide are all generated for the combination you picked, not for somebody else's default.
Boom lane: F-4E Phantom II, F-16C, F-15C, F-15E, A-10A/C/C-II. Probe lane: F-14B(U), F-14A and F-14B, F/A-18C, AV-8B, Mirage 2000C, JF-17, Su-33.
Cold War is now a real option, on the same free Caucasus map. The Phantom behind a KC-135, the Tomcat behind a KA-6D Intruder with a buddy store — the era-correct pairing rather than a modern jet with the dates changed.
Something we had wrong, and it was worse than a cosmetic bug. The list of aircraft that cannot refuel was a list of exact DCS type names — and almost none of them matched what the game actually calls those aircraft. "P-51D" versus "P-51D-30-NA". "MiG-15bis" versus "MiG-15bis_FC". "F-86F Sabre" versus "F-86F_FC". So the check quietly passed for a Mustang, a Huey, a Ka-50 and an F-5E: ask for a tanker in one of those and you'd get a KC-130 on station and a two-page refuelling procedure card for a capability the aircraft does not have. It's an allow-list now, and an aircraft nobody has confirmed gets no tanker rather than a fictional one. If your jet can refuel and we've missed it, that's a one-line fix — tell us.
And one that would have shipped the wizard broken. The F-14B(U) goes by three different names inside this product — one in a recipe, one on a Library card, one in the mission file — and only the third is the one the refuelling check ever sees. The Academy offered you the Tomcat and then built eleven missions with no tanker in any of them. Caught before release, guarded now.
And the coaching moved out of the corner. The messages used to arrive top right — which is where DCS puts text, and exactly where you cannot look when you are twenty feet from a tanker. Now there's a graphic at the bottom of the screen instead: a box, a marker that sits high or low, and chevrons for closing or falling back. It changes when you change, not once a second, and it's off entirely on the qualification ride. F10 turns it off any time.
It shows two axes and refuses to invent a third. Fore/aft and high/low are both things the mission can actually measure. Left/right is not — the position check is a sphere around the tanker, so it knows how far away you are and not which side you're on. We could draw a lateral arrow and it would be guessing. Your lateral position comes from the sight picture, the way it does in the jet, and the kneeboard says so rather than letting you assume otherwise.
The Rendezvous ride gets helper gates — the floating rings DCS's own training missions use. That ride and no other: a path in space is the right tool for finding him, and the wrong tool for everything after, where the whole point is to be flying the tanker rather than chasing a marker.
Twenty-two missions, two lanes, in order, with the mission itself telling you how you're doing.
Two tracks, grouped as one card each. Air-to-Air Refuelling Academy — Boom and Receptacle (USAF), flown in the Viper behind a KC-135, and Probe and Drogue (Navy / Marine), flown in the Hornet behind a KC-130. Eleven rides apiece, numbered 0 to 10, and the Library now shows them as one card with the syllabus inside instead of twenty-two loose cards in an alphabetical grid.
Ten of the eleven rides are graded, inside the mission. You'll get a call when you've held the close-in position on speed for fifteen seconds, and another at sixty. Fall out and a counter ticks. Come at him more than twenty five knots up inside a quarter mile and you'll be told — three times, and then never again, because after three you know. Everything else is on the F10 menu when you ask for it. Silence means you're doing it right.
And here's what it does not grade, said plainly on every card. It cannot see whether you plugged, how long you held it, or how much fuel you took — DCS mission triggers can't see a refuelling event or read your fuel. What it measures is position, speed and how long you hold both, which is the argument the whole track makes: refuelling is close formation flying with a fuel connection attached. You will not be handed a certificate we didn't earn.
Download the whole track in one go. Every ride as a .miz, a printed brief for each, and a printed syllabus guide — one zip. The Air Force guide and the Navy guide are different documents, because the two tasks are different: one has an operator flying half the problem for you, the other has nobody.
The throttle page you were missing. Pulse and counter-pulse, the baseline power setting, the close–stop–aft–stop drill, and the five throttle errors. Start linear and stay there — Eagle Dynamics' own guidance treats a curve as compensation for hardware limits, not a technique. Plus the VR setup that actually matters: physical lens spacing, a bound recenter, seat height, and don't reach for your stick curves when a tutorial's sight picture doesn't work for you — check your eye height first.
One number we had wrong. The card said "1 to 3 knots closure" and left it there. One knot is 1.7 feet per second, so that's 1.7 to 5 ft/sec — two to five times the roughly one foot per second the KC-46 literature describes for the final few feet. They aren't in conflict; they're different phases, and we were printing only the first. Both are on the card now, phase-labelled. Same for the pre-contact hold: fifteen seconds is the gate, sixty is our standard, and the card now says which is which and that the sixty is ours rather than anyone's manual.
Rob asked whether the refuelling research covered force feedback sticks and VR. It hadn't. It does now, and the answers were not the ones I expected.
Force feedback: we looked, and there is nothing. You'd expect a direct-drive base to help — no cam breakout at center means cleaner tiny inputs — but nobody has written down that it does. The main FFB discussion threads cover helicopters, warbirds and stall buffet at length and mention refuelling zero times. The one thread that asks the question directly ends with the community diagnosing the pilot's tanker speed, not his stick. So: if you've got one, great. If you're buying one to fix your refuelling, that isn't a supported reason.
But if you have FFB, one thing on our own card is wrong for you. We tell you to add an axis curve. VPforce's documentation says curves are incompatible with FFB and must be disabled — because on a spring stick DCS only reads your stick position, while on FFB it also writes it to represent trim, and a curve desynchronises the two. Use spring gradient and damping instead. Damping is arguably better than a curve anyway: it resists fast inputs specifically and leaves your slow deliberate ones alone. Not friction, not inertia — one adds a breakout, the other adds lag to exactly the reversals you're making. And trim before pre-contact, never at the boom, because your stick physically moves to the trim point.
VR helps — but not where people say it does. The mechanism is stereo depth, and depth resolution falls off as the square of range. The US Navy's own simulator requirement asks for accurate depth judgement between 5 and 100 feet. At 1 nm astern, stereo resolves kilometres — it is contributing nothing. So VR does not help you find the tanker or fly the rejoin; out there you're using angular size and closure rate, which any screen gives you. It helps in the last hundred feet, which happens to be the hard part.
That's not sim folklore, either: the KC-46's Remote Vision System — real boom operators working from camera displays instead of a window — has spent a decade failing on exactly this.
VR tips that are actually about VR: hold your head still at contact, because head movement is its own input. Don't zoom at the boom — zoom changes the projection and corrupts the stereo cue you came for. DCS's VR "IPD" is world scale, not eye spacing. Approach about 45° off for better closure perception. The right basket is harder because you lose the tanker's references.
And one known DCS defect, so you stop blaming your eyes: the KC-135's director lights are not lights. They're a pre-rendered texture — an ED beta tester confirmed it, it's been reported since 2021, and it's still open. A community mod brightens them. For what it's worth, a real KC-135 instructor says they're hard to see in the airplane too.
The thing nobody talks about is the throttle. The bottleneck is usually throttle resolution, not stick precision. A separate throttle unit wins on travel alone. Tune out the afterburner detent bump near 90%. Use speedbrake to get the engine into a livelier RPM band. And feet completely off the pedals — one instruction, no dissent anywhere.
Rob said the refuelling missions felt wrong. They were, and the reason was measurable: every tanker this product has ever generated was flying at about 217 KIAS. Boom refuelling for fighters wants the high 200s to low 300s. At 217 you are on the back of the drag curve fighting the airplane, which feels exactly like being bad at refuelling.
The cause was a unit mix-up worth naming: a pilot flies indicated airspeed and a mission file stores true. At 20,000 ft those differ by 37 %.
Six tankers now, each on a track its receivers can fly.
| Tanker | Track | For | |---|---|---| | KC-135 (boom) | 300 KIAS / 20,000 ft | F-16, F-15, A-10, F-4E | | KC-135MPRS | 250 KIAS / 18,000 ft | probe jets, ashore | | KC-130 | 210 KIAS / 12,000 ft | Hornet, Harrier, helicopters | | S-3B Viking | 230 KIAS / 12,000 ft | carrier, modern | | KA-6D / A-6E buddy | 250 KIAS / 15,000 ft | carrier, Cold War | | IL-78M | 250 KIAS / 18,000 ft | red side |
You can pick one, and if you pick one your jet cannot use you get told rather than quietly given a different one. Boom jets get booms, probe jets get baskets, and off the boat you get the air wing's own tanker — a Viking today, an Intruder with a buddy pack in the Cold War.
The refuelling cards now start you at the boom. One mile astern, a thousand feet below, already at his speed. Refuelling is thirty seconds of skill wrapped in half an hour of commuting, and the commuting teaches you nothing.
And there's a real procedure card, generated for the tanker you actually got. Five new missions: the join-up (where you are told not to plug — that's the point), pre-contact and contact, probe and drogue, night, and off the boat.
The most useful thing we learned isn't a number. What people call "chasing the basket" is pilot-induced oscillation: you correct for where you are instead of where you're going, the correction arrives late, it overshoots, you correct harder — and past a point your inputs are 180° out of phase and the wobble grows instead of settling. That turns "be better" into "reduce gain", which is something you can actually do: relax your grip, make one input and wait, look at the tanker rather than the basket, and put a curve on your stick. The F-16 does that last one for you in hardware when the AR door opens.
The card also gives you a finish line — hold pre-contact with zero closure for 60 seconds, close at 1 to 3 knots, hold a three-foot box — and an honest expectation: about thirty minutes a day for two weeks. It says "you are not the exception," because you aren't.
What it deliberately won't tell you: a curve number. Published advice for the same task ranges from 0 to 30 depending on your gimbal and stick length. Anyone giving you one figure is guessing about your hardware.
Rob asked a fair question about the last batch of missions: are they actually good? So every one of the 41 Library cards was generated and its contents checked against what its own brief promises. Not read — built.
One card was lying, and it was one of ours. bc_cas1 said, in capitals, "THE 9-LINE IS THE SORTIE. Read it back" — and there was no controller in the mission to read it back to. It also asked for an attack on a moving target when nothing in the mission moves. It now names both gaps and tells you how to fly it anyway: brief your own 9-line, out loud, in order, and hold yourself to it.
Two cards I accused were innocent, and they showed us the house style. f100_fulda_cas says "No JTAC datalink in this era — talk-on off the F10 picture and your own eyes." f100_victor_alert says "GCI only — no AWACS." Those cards name what's missing instead of staying quiet about it, which is better writing than either silence or a promise. The older cards were doing this before the newer ones forgot.
No card sends you to the Builder mid-brief any more. Three of them used to say "now open this in the Builder and change the BFM setup." That's a card admitting it didn't finish its job. The 6,000 and 3,000 ft perches are now their own cards — five new ones, so the full offensive and defensive ladders are each three clicks instead of one click and a config task.
Two cards promised an empty sky and had an aircraft in it. bc_tr1 — the very first ride of the B-Course, where trust gets built — briefed "nothing is trying to kill you" and contained an ambient enemy. Fixed, along with bc_sa1.
The NEW badge means something again. It was on 28 of 41 cards. It's now on 12 of 46, and a test keeps it under a third.
And the honest one we haven't fixed: nothing in the entire Library moves. Not one vehicle group drives anywhere, including on the cards named "armed recon" and "convoy overwatch". That's a real engine gap and it's now written down as the biggest one we have.
Twelve new training missions, and they all cite where they came from.
The F-16 B-Course track — eleven cards. Not invented: they follow AETC Syllabus F16C0B00PL, the Luke AFB Combined Wingman Syllabus that turns a pilot into an F-16 wingman. Every card names the sortie, the paragraph, and the asterisked tasks off the real gradesheet.
- TR-1 — the first ride. The G-awareness profile exactly as Luke flies it: 4 G warm-up, a 180 at 6–8 G, a 180 at 8–9 G, two AGSM cycles per hard turn. - AHC — fight's on to turn-circle entry, then stop. The sortie that makes BFM make sense. - BFM-1 / BFM-4 / BFM-7 — offensive, defensive, high-aspect. - ACM-1 — where one jet becomes a flight. - TI-1 — the first sortie where the radar is the weapon. - LASDT-1 — the 500 ft floor, and the three rules you brief before you push. - SA-1 — direct to the range, deliveries only. - SAT-2 — including the wounded-bird recovery nobody practices. - CAS-1 — the sortie where you stop deciding.
And the BFM perches were wrong. We shipped a three-perch ladder in v1.66.0 with our own numbers. The real course flies 9,000, 6,000 and 3,000 feet — and flies all three within each position, offensive and defensive. That is a better idea than ours and it comes with numbers. Six new setups now sit alongside the old four, which are frozen so existing share links keep building the identical mission. Measured in a generated mission: 8,999 / 6,001 / 2,999 ft.
Turning the Phantom. February 1967, TAC ATTACK, page 4. TAC had reviewed 22 F-4 accidents and lost control of the airplane in eleven of them — and the eleven rhymed: ten were maneuvering, eight were at 300 knots or below, all eleven had stores on, and eight were too low to recover. The crews were not beginners; seven averaged 175 hours in the type.
The card flies that article. How little G you actually have at 250–300 knots (about three, when you are used to pulling five). What the stores did to your stick — Category II testing found they cut the stick-force gradient in half. Why buffet is not a turn. And the closing line, which is the whole sortie: "Keep your speed up, Podner, and you won't get into trouble."
What we did not do: invent the numbers neither document contains. The syllabus has no dive angles, no release altitudes and — notably — no BFM floor value, so our 5,000 ft hard deck stays labelled as ours. The 1967 article's own complaint was that the F-4 Dash One had no V-G diagram; we are not going to draw one 59 years later. Both accountings are in the docs, and on the Sources page.
There's a Thanks list on the Sources page now, and it's yours to write.
Sources went in last release: pinned commits, licenses, the historical accounts behind every corridor. Thank-yous are a different kind of thing. They change, they're personal, and the person who should be writing them is the one who knows this community — not whoever last touched the build script.
So they aren't in the code. There's a Thanks tab in the admin section: add a name, say specifically what you're thanking them for, add a link if there is one, set the order. It shows up on /api/sources immediately. No deploy, and a release won't overwrite it.
Seeded with Eagle Dynamics, the pydcs authors, the DCS Retribution team, Sedlo, Stewmanji and the MOOSE project — starting points to correct rather than researched claims. There's a "restore the shipped list" button for when it goes wrong.
Also at /api/credits as plain JSON, if anyone wants the list without the page.
I went and read what Eagle Dynamics has actually shipped for DCS: Iraq, and it changed the answer to the question we'd just answered.
The map you can buy today is Iraq North — and ED built it for the war against ISIS. Their words: the initial northern region supports "the Global War on Terror and ISIS." Desert Storm and Iraqi Freedom are explicitly the southern region, which has not shipped and has no date; the Iran–Iraq war isn't a supported era at all, only a "we will evaluate expanding east." So the corridors we shipped last release were aimed at two wars the terrain doesn't model yet, and we'd skipped the one it does.
So there's a new era: War on Terror (2003–2020). It offers the same aircraft as Modern. The difference is not what you fly — it's that nothing flies back.
- No enemy air force. Not obsolete jets, not a few — none. The brief says so in as many words, because "we didn't list any enemy air" and "there is no enemy air force" are different pieces of information and only one of them is intelligence. - No SAMs either. The threat is truck-mounted and emplaced guns, dense and low, plus MANPADS. Your transit sits higher than a Modern mission, not lower, because that's where the gun line stops. - Red airfields are boneyards. Derelict Iraqi Air Force MiGs parked where they were left. They are scenery. They do not start up and fly. - Iraq and Afghanistan both get it, with the basing of the period: Al-Asad and Erbil against Mosul and Qayyarah West; Bagram, Kandahar and Bastion against the eastern valleys. - Six new corridors for it — Tigris Valley, Haditha Dam, Kirkuk–Hawija, Helmand Green Zone, Khost Bowl, Kunar Valley.
Dams and oil terminals are now targets you can pick. ED shipped nine named dams with unique 3D models on 22 July — Dukan, Haditha, Ramadi, Samarra, Fallujah, Hemrin, Kut, Alwand, Diyala — and Kharg Island's oil terminal with its flares and pipelines. Aiming a strike at a building someone modelled beats aiming it at four fuel tanks in a field.
The Cold War corridors got honest about the ground. Kharg Island Strike Lane, Southern Watch and Karbala Gap all cross the band ED hasn't detailed yet, so the brief now says so on the card instead of letting you find out at 500 feet. Jafati Valley moved to anchor on the Dukan Dam, which is both a real 3D model now and a few miles from where the Anfal air attacks actually fell.
A bug that had been there since the Threat Dial shipped. In WWII, the area threat belt places SAM sites — and WWII has no SAMs, so on the default tier it placed nothing, at any intensity. The flak in your 1944 mission was entirely airfield defense. Every era with no SAM inventory now falls to a gun belt instead, so expect meaningfully more flak between you and the target on Normandy, the Channel and the Marianas. That is the mission you were supposed to be getting.
And there's a Sources page now — linked in the footer, served at /api/sources. This product asserts a lot of specific things: a SAM's engagement radius, the heading a stand's painted lines run, the bearing of a 1981 raid, a contrast ratio. Every one of them is measured, cited, or an admitted estimate, and now you can check which. It also says plainly what we couldn't source and left out — the Baghdad "corkscrew" approach everyone repeats, for one.
Also: the Library's era filter is now built from the data instead of typed into the page, where it had been quietly listing three eras forever.
Iraq gets its air corridors. The map arrived last release with the corridor section empty, which was a strange thing to ship on the map with the most air history on the shelf. Seven lanes now, each one traced to a real operation:
Cold War — you fly the Iraqi Air Force.
- Kharg Island Strike Lane — south-east down the Tigris and out over the Gulf. HAWK on the island, F-14As overhead. The tanker war, 1984–88. - Jafati Valley — north-east into the Kurdish highlands toward Halabja. - H-3 Raid Track — north to the Jazira border ridges, the way the Iranian Phantoms came in April 1981. This time you're the one being visited.
Modern.
- Northern Watch (36th Parallel) and Southern Watch (33rd Parallel) — the two no-fly zones, on their real lines. The 36th runs between Erbil and Bashur; the 33rd runs just south of Baghdad airport. - Karbala Gap — the strip between the Euphrates and Lake Razazah, April 2003. - Western Scud Box — out to Ar Rutbah and the H-fields, 1991.
Pick one and the whole mission leans down it: the threat axis, the enemy CAP, the briefing. No waypoints, as ever. The research behind each one, including the four I found and deliberately left out, is in docs/iraq-air-corridors.md.
Afghanistan is now the official map data. We built our Afghanistan by hand back in v1.31.0 from our own export, and marked its projection "provisional" because we couldn't fully verify it. The official export exists now, so we took it. What you get: Zaranj, a 26th airfield in the south-west that we'd missed entirely, three more stands at Khost, and wider stands at Ghazni, Khost and Shindand — Shindand's went from 24 m to 41 m, which is the difference between a fighter and something with a wingspan. Nothing was lost; every airfield and every stand we had is still there, and all 460 hand-measured parking headings still land on real spots.
Our provisional projection, for the record, turned out to agree with the official one to a fraction of a millimetre. Over-cautious rather than wrong.
Your jet stops taking the tanker's parking spot. When you spawn on the ramp, the game hands your flight whichever free stand sorts first alphabetically — and stand "01" is usually the widest thing on the field. Across every airfield we ship, 22 of 144 were handing a single-seat fighter a stand built for a heavy. Fujairah International has exactly one, and it was going to the fighter. Now you get the tightest stand that actually fits you, and the wide-bodies get theirs.
One thing to know about share links. Afghanistan missions and the ramp positions on six other maps are generated from data that changed this release, so a share link made before v1.68.0 will produce a slightly different mission now — different parking spot, and on Afghanistan a different draw of SAM types. Same seed, same rules, new data underneath. Nothing is broken; it just isn't byte-identical to what it was.
The Iraq map is in. Twenty airfields from Al-Asad and Balad in the west to Kirkuk and Sulaimaniyah in the north, 1,397 parking stands between them — Balad alone has 213, which makes it the biggest single ramp in the product.
Two eras:
- Cold War — the Iran-Iraq years. Iraq flies from the western H-fields and the Baghdad belt; the eastern fields and Kharg Island sit on the other side. - Modern — coalition basing of the 2000s, with Balad, Al-Asad and Al-Taqaddum as the big western ramps.
Everything else works the way it does on every other map: ramp themes, threat tiers, kneeboards, share links.
Two quieter improvements you'd only notice by their absence.
The parking headings that make parked aircraft face the right way are measured by hand — 9,550 of them across ten maps. Nothing had ever checked that those measurements still pointed at real parking spots. Now something does, and it immediately found 26 that had been silently dead since the day they were taken. They were all duplicates of a measurement on the same stand, several of them pointing the opposite way, so nothing on your ramp changes — but the next time a map gets re-surveyed, we'll know.
And every map now has a test proving it builds. That sounds like it must already have been true; it wasn't. Each map-level test pinned one theatre, so a new or broken map could have shipped with nothing saying otherwise.
One merge is a fight. Three perches are training. Fly Now's BFM card now carries the ride you actually want, and each one arrives with a standards card in the briefing.
- 1 · Offensive perch — 1.2 nm at his six, 30° angle off, and he hasn't reacted yet. Can you convert without flying out in front of him? - 2 · Defensive perch — he's 1.2 nm astern and slightly high, closing. Can you deny the shot and force the overshoot? Check six early; nothing on your instruments is going to tell you. - 3 · High-aspect merge — 5 nm on the nose, both hot. Choose one-circle or two, and mean it. - Neutral fight — 2 nm abeam, no lesson, just a fight. Still there.
The difficulty knob is geometry, not the AI slider. Same bandit, same skill setting, three completely different questions. Turning DCS AI up to Excellent just means losing to numbers no real airframe pulls, and that teaches nothing — the bandit here is flown deliberately one notch below, and the brief says so.
Every ride now briefs its own standards: the objective, the picture you should see at t=0 (so you can tell whether the sim gave you the briefed setup), what good looks like, the three errors that actually happen — each with the cue that tells you it's happening — three debrief questions, and the gate for moving to the next rung.
One honest note in those cards: we don't invent a corner speed for your jet. Corner velocity is per-type, per-weight and per-fuel, so the card gives the band most fast jets live in and a method for finding yours in one flight.
And a confession. While measuring this, the old BFM card turned out to be briefing "2 nm abeam" while actually spawning the bandit 5.9 nm away and 149° off the nose — a library default was quietly relocating it. Every BFM brief this tool has printed until now was fiction. The geometry is now measured in the built mission by the test suite, on three airframes across three theatres, so a card that says 1.2 nm means 1.2 nm.
Rob: "Fly Now should provide instant action. Maybe that starts in the air." He was right, and the measurement was worse than the complaint.
Two of the four practice cards already spawned you airborne — BFM Merge puts you 25 seconds from a merge, which is the whole idea working. The other two quietly started you on the ramp: Kill the Guns with the target 133 km away, Beat the SAM with the ring 104 km away. In an A-10 that's taxi, take off and cruise for thirteen to eighteen minutes before anything happens — on a screen whose promise is a fifteen-minute session. The commute was the session.
Now all four start in the air, at the last moment before the problem is yours:
- Kill the Guns — airborne with the target off the nose, close enough to see it, far enough that finding it, setting up the wheel and rolling in are still your job. - Beat the SAM — airborne just outside the SAM's own envelope, RWR already talking. The standoff is measured from the actual ring, so an SA-3 and an SA-6 give you the same exercise rather than the same distance. You're never spawned inside it — that would be an ambush, not a drill.
Your airplane's numbers, not a fast jet's. Air starts used to spawn everything at 15,000 ft doing 430 knots — fine for a Viper, wrong for a Warthog, impossible for a Mustang. Spawn altitude and speed now come from the airframe you picked.
One fix under the hood you'd only notice by its absence: the settings that define each card were previously applied by the web page, not the server — so a shared link or anything outside the site could produce the ramp-start version of a card. That now happens in one place, and anything you deliberately choose still overrides it.
And "instant action" is a tested promise now: the build measures time-to-first- action for every card, on the slowest aircraft, and fails if any of them turns back into a commute.
There's a Contact link in the top bar and in the footer now. It opens a short form — your name, your message, and an email address only if you'd like a reply. Bugs, missing aircraft, mission ideas: all of it lands in one place that gets read.
Email really is optional. If you just want to report that something broke and never hear from us again, that's a perfectly good message and the form won't nag you for an address.
Pick what it's about — bug, feature request, mission idea, or something else — and we'll attach the app version and which screen you were on, plus your current mission settings if you were mid-build. That's what turns "the Syria map crashed" into something reproducible. There's a line above the Send button you can expand to see exactly what gets included; it's nothing about you personally.
If a message fails to send, your words stay in the box. Nothing you typed gets thrown away by a network hiccup.
No CAPTCHA — we keep the spam out with methods that don't make you prove your humanity to a grid of traffic lights, which is also what keeps the form usable with a screen reader and a keyboard.
The site now meets WCAG 2.2 level AA — the accessibility standard behind the ADA and the European Accessibility Act — across every screen, in both light and dark mode.
What changed for you. If you use a keyboard instead of a mouse, the whole site is now yours: every mission card, Quick Flight option, module tile and filter chip can be reached with Tab and activated with Enter or Space, with a clear blue ring showing where you are. Dialogs behave like dialogs — focus moves in, stays inside while they're open, Escape closes them, and focus returns exactly where you left it.
If you use a screen reader, the Library's six filter dropdowns now announce their names instead of "combo box", the search fields are labelled, and the status line that says "Generating…" and "Mission ready" is finally spoken aloud instead of changing silently.
If you just have ordinary eyes and a bright room: small blue and green text throughout — section labels, the NEW badges, mission-type tags, the "open theater" notes — moved to Apple's accessible color variants. The old shade was legal for big bold text but not for the 10-to-12-pixel labels we were using it on. Grayed-out cards no longer fade their own text into the background; they're marked with a dashed edge instead, so "you don't own this module" is still readable. And if your system asks apps to reduce motion, the hover animations now respect that.
Kept honest. An automated accessibility audit (axe-core) runs over seven screen-and-mode combinations as part of the test suite and fails the release on any serious issue — this can't quietly regress. Automated tools catch about a third of the standard, so the remaining manual checks are recorded in docs/wcag-audit-2026-08-12.md.
Rob's find: "When I select 100% fill for Nellis airfield, it doesn't populate completely." Correct — asking for a full ramp delivered about a third of one.
Two rules were fighting. Your fill percentage says how many stands get an aircraft; the squadron-variety rule says no unit parks more than six jets on one flight line (so ramps don't look copy-pasted). The variety rule was silently winning: once every squadron the theme could field had its six, the fill simply stopped — at Nellis that meant 79 aircraft on 233 stands no matter what you asked for. (It bites harder before your livery pack is verified, because without paint schemes every aircraft type counts as just one squadron.)
Now the explicit percentage wins, as it always claimed to. When your target still has room and every squadron is at its cap, the ramp opens another wave — the same units park additional rows, which is exactly what a real surge exercise looks like. Rows still come in blocks of two to eight, so the flight line keeps its squadron-row character instead of becoming a wall of one paint scheme.
The automatic densities (sparse/normal/busy) are untouched: there the variety rule still governs, because at 18–28 aircraft it never needed to stop anything. Measured after the fix: 100% fill at Nellis parks 245 of 247 stands; 50% parks exactly half.
Rob's read: the Library colors didn't match the Apple guide. Right again — the seven role colors (Air-to-Air, Strike, SEAD, CAS, Carrier, Training, Historic) predated the redesign and were still the old dark-theme palette wearing a light coat.
They're now Apple's own system colors — and specifically the HIG's accessible variants, because role labels render as small text and Apple's default shades don't hold WCAG contrast at that size. The mapping: cyan for Air-to-Air, orange for Strike, indigo for SEAD, brown for CAS (the mud-movers), teal for Carrier, green for Training, purple for Historic. Each has a matched dark-mode variant, so the cards read correctly in both modes. Red stays reserved for danger — no role wears it.
The Library also had a second, quieter problem: teal was moonlighting as its accent color — search focus, checkmarks, "NEW" badges, hover borders. There is one accent in this design, and it's blue. Everything accent-shaped in the Library now uses it; teal speaks only for the Carrier role. The big Generate buttons picked up the correct white-on-blue treatment along the way.
Like every palette decision since v1.59, these colors live in the design token file, contrast is computed by the test suite, and a new test pins the role palette inside the generated block — so it can't quietly drift back.
Rob's read: the design works, the icons didn't. He was right — color emoji were doing the icon work, and a cartoon toolbox next to Apple's grouped grays and hairlines looked like a sticker on a suit.
The site's icons are now Lucide — clean stroke-drawn glyphs in the same visual language as Apple's own SF Symbols (which are license-locked to Apple platforms; Lucide is the open equivalent, and its license ships in the download). They're drawn in a single line weight, they inherit whatever color the text around them has, and they adapt to light and dark automatically.
You'll see it everywhere the emoji used to be: the three entry cards, the Fly Now practice cards, the Library's role badges and search, the lock on content you don't own, the dice, the mode toggle, the download buttons, and the whole Mission Kit panel — archive, brief, kneeboard, DTC, flight plan, loadout, enemy air, station and warning rows all carry matching stroke glyphs now.
While in there: the last few chip and label colors still hardcoded from the old dark theme (the washed-out era/aircraft chips on Library cards) were moved onto the system palette, so they finally read on white.
The semantic shapes — ● normal, ◆ caution, ▲ warning — stay as text, on purpose: they're the redundancy coding that works in grayscale and under red cockpit light, not decoration. And a test now scans the UI for emoji-as-icon, so this cleanup is permanent.
Rob's call, and the palette question is settled: Apple's Human Interface Guidelines colors, keeping our typography stack. Iteration four, and the one that sticks.
The site now uses Apple's published system colors exactly as their own applications do. Light mode: the familiar grouped gray background, white cards with 10-pixel rounded corners, hairline separators, system blue as the single accent — the Generate button, selections, links — with Apple's semantic red, orange and green reserved for danger, caution and good. Dark mode is Apple's dark set: true-black ground, elevated dark panels, the brighter dark-mode blue. The toolbar is light and quiet, the way a Mac app's is.
What stayed ours, by Rob's explicit exception: the typography. Barlow Condensed headings, Source Sans text, IBM Plex Mono for every frequency and seed — and the Bangers heritage banners (GET AIRBORNE, MISSION LIBRARY) now outlined in system blue. The military documentation register also stays exactly where it was: kneeboards and briefs keep their Flightline paper — Apple's guide governs applications, not print.
One deliberate deviation, recorded in the token file: Apple's secondary-label gray fails accessibility contrast on white, so ours is one step darker.
Two rounds of feedback shaped this one, and Rob's spec finally landed in one sentence: a light theme, just not the cream-and-white combo. He likes the blue. So the light theme is now blue: every neutral on the page is navy-tinted — a cool blue-gray ground, white working surfaces, blue-slate secondary text, blue-gray rules — so the whole site reads as one blue system under the navy identity band, in daylight. No cream anywhere on screen (cream is a print surface; the kneeboards keep it). No flat gray either.
And the Bangers font is finally on stage. The design kit's heritage element — the outlined, slanted banner lettered like the hand-drawn CONTROL STICKS figure labels in a 1979 F-4E flight manual — now appears in exactly two places: GET AIRBORNE across the landing hero, and MISSION LIBRARY at the top of the Library. Two, deliberately: the kit's own rule is that this element is a one-to-four-word illustration banner, and repeating it everywhere would tip from heritage into costume.
Night mode is untouched and still one click away.
Rob's verdict on v1.57.0's light mode was blunt and correct: the cream and white combination looked terrible. Here's what was wrong and what changed.
Cream is a print surface. On a kneeboard or a brief there is exactly one layer — one page, one background — and warm paper is right. An app screen is layered: page, panels, cards, wells. Painting those layers cream, white and beige gives three near-whites with no edges, and the whole Builder read as mush. The design kit itself never does this — its own specimen puts a white page on a gray workbench, and that is what light mode is now: crisp white working surfaces on a neutral gray bench, with real borders.
While in there, the register got the rest of its discipline: sections carry an ink top-rule and proper condensed headings (the technical-manual idiom, not tiny tracked caps), selected cards are unmistakably selected, disabled cards are readable instead of ghosts, and there is exactly one navy identity band — the top bar. The Builder intro became a quiet note block and the bottom bar a ruled page footer, instead of three dark slabs sandwiching the content.
Also fixed: a leftover from the dark theme made every card flash near-black on hover in light mode.
Cream still lives exactly where it belongs — on the documents.
The site now matches the documents. Flightline Phase 2: the whole interface moved onto the same design system your kneeboards and briefs adopted last release — same token file, same fonts, same rules.
Paper by default. The site opens on warm manual paper with a navy identity band — no more dark theme unless you ask for it. Night mode is one click — the ☾ button in the top bar — and it isn't an inverted afterthought: it's the kit's cockpit-adjacent palette, phosphor green for good, instrument cyan for the active thing, built for a dark room mid-session. Your choice sticks on your machine and never travels in a share link.
Color means something now. The Generate button is navy, because navy is identity. Amber only appears when something is genuinely a caution — it is no longer the color of every button, status line and badge at once. Red stays reserved for danger. Progress messages are quiet; warnings look like warnings.
Flat, ruled, square. Shadows, glows and rounded corners are gone — the kit expresses hierarchy with rules, bands and spacing, the way a technical document does. The wizard rail's step markers are numbered squares now, the kit's procedure-step idiom.
Faster and more private, as a side effect. The fonts are served from the site itself instead of Google Fonts — so opening the page no longer tells Google your IP address just to draw letters. The same no-tracking stance our analytics has always had, now applied to typography.
The heritage layer — the slanted F-4E-style figure banners, the guide cover treatment, grayscale chart hatching — is Phase 3, and lands after Rob has flown this one.
Rob adopted a proper design system — Flightline Technical, a documentation standard built from DoD technical-manual research (MIL-STD-38784, NAVAIR conventions, a 1979 F-4E flight manual) — and this release moves every generated document onto it.
What you'll see. Warm manual paper instead of stark white. A navy title band on every page — the kit's section-identity color, straight off a technical order. Real typography with a role for everything: condensed industrial capitals for titles, a humanist sans for labels and procedures, a proper serif for the brief's paragraphs — the technical-manual convention — and IBM Plex Mono for every frequency, heading and part number. The fonts ship in the download (all open-licensed), so documents render identically on every machine.
The classification banner is gone, replaced by something better. The kit's research is blunt: don't imitate classification markings. In its place, every page now carries an identity rail — publication ID, product, map and era, and the exact engine revision that built it: DSS 1-1 · DCS SORTIE STARTER · CAUCASUS · REV 1.56.0. That's the share link made visible: everything that page describes, answerable at a glance. A small for simulation use only note stays in the footer, as a note rather than a costume.
Color now means something. Red appears only for danger and threats. Amber only for cautions. Navy is identity. And it's checked, not promised — the test suite now computes WCAG AA contrast for every text/surface pair in the palette, and fails the build if a future tweak makes a page unreadable.
The What's New and Roadmap pages match, and the user guide follows the same palette. Next release: the site itself — paper mode by default, the current dark look rebuilt properly as a night mode you can toggle.
Every document now looks like military documentation. The kneeboard pages and the briefing pack have been rebuilt against the real references — DD Form 175, squadron mission data cards, NATOPS-style publications. Black ink on white paper, ruled boxes, a classification-style banner on every page (UNCLASSIFIED // FOR SIMULATION USE ONLY — the look of the real thing without pretending to be it), a form number in the footer, all-caps field labels. The dark app-styled pages are gone, and so is the ink bill if you print one. Color survives only on the charts — blue own, red hostile — because real aeronautical charts are printed in color and everything else photocopies.
Download your kneeboard as files. After you generate, the Mission Kit offers Download PNGs: the same pages that ride in the .miz, as a ZIP with a README that tells you exactly where they go (Saved Games\DCS\Kneeboard). That makes them work in OpenKneeboard, on paper strapped to your leg, and in a squadron Discord — the pages were always generated, they were just locked inside one mission file.
A STORES page in the jet. Station by station, what is hanging on your aircraft, with the JOKER/BINGO figures. The engine has known your fit since v1.48.0 and printed it only on the desktop PDF; now it's on your knee.
Two honesty fixes. The comms page footer used to say "no waypoints placed" on every mission — untrue the moment you switch on automatic waypoints; it now tells the truth either way. And flight-plan headings are labelled HDG(T): they are true headings, and we would rather say so than print a magnetic number we cannot verify against the sim.
New kneeboard page: STORES. Station by station, what is actually hanging on your jet, plus the JOKER/BINGO fuel figures.
This is a fix more than a feature. The engine has composed your loadout since v1.48.0 — it picks a real fit for the mission type, era-legal and symmetric — and it printed that fit in exactly one place: the PDF briefing, which sits on your desktop behind the sim. In the air, the only way to find out what you were carrying was the rearm screen. Every other kneeboard tool leads with a loadout card, because "do I still have a Maverick, and which station is it on" is a question you ask in flight.
Station numbers are DCS's own, so they match the rearm dialog. Start with a clean jet and no card appears — a page listing nothing is worse than no page.
Headings on the flight-plan card now say TRUE. They always were. We publish true bearings and have no magnetic variation figure per theater we can verify against the sim, so the card says so rather than letting you fly a compass heading that is quietly several degrees off. Apply your theater's variation. Publishing a number we cannot check would be the worse of the two.
If you fly with player_arm off, nothing changes.
New tickbox on the Targets screen: "Automatic waypoints." Turn it on and the mission arrives with a flight plan — WP1 → IP → TARGET → home — on the F10 map, in your jet's nav system, and on a kneeboard leg card.
It is off by default, and that is the point. This tool has always worked on "we set the stage, you write the play," and a mission that hands you somebody else's route the moment you press Generate is not that. Nothing you have built before changes; nothing you build tomorrow changes unless you tick the box. Every share link you have ever sent still produces exactly the same file.
What you get when you do tick it.
The route is three points and a landing, which is the shape of the real thing. WP1 is a push point about half way out, offset to the side — nobody flies the straight line from their own airfield to the target, because that is the first line an enemy controller draws. IP is the initial point, five to nine miles short, angled so your run-in heading is not your transit heading; the IP is where you stop navigating and start attacking. TARGET is the aim point at attack altitude. Then you land back where you started.
Altitudes and speeds follow the era rather than the airframe's limits: a Mustang transits at 8,000 feet and 215 knots, a Viper at 19,700 and 430.
The kneeboard card is the part that matters if you fly something old. Half this roster has no moving map — a Sabre, a Spitfire, a MiG-15 pilot flies a heading and a stopwatch — so the card prints heading, distance, altitude, speed and time for every leg, plus the outbound total. It is the last page, so the comms, airfield and theater pages keep the numbers you already know them by.
The F-14B(U) loads it from the DTM page, like everything else in the cartridge. That slot has been deliberately empty since the cartridge shipped; now it carries your route when you ask for one, and stays empty when you don't.
It needs something to route to. Turn on strike target packages, or pick a card that places a target. Ask for waypoints without one and the mission tells you so rather than quietly giving you nothing.
None of this is binding. The target is where the brief says it is; everything between it and the runway is yours to change.
Rob's rule: no more than six parked aircraft from any one squadron on a ramp. Past six, the field moves on to a different unit.
It needed the rule. Before this release one seed parked twenty-two identical MiG-21s in one paint scheme at Templin, and across forty test missions, 440 separate runs of aircraft went over six. The ramp was already built out of squadron blocks — rows of matching jets, the way a real flight line looks — but nothing remembered what it had already parked, so the same unit could be drawn again for the next row, and the row after that. What should have read as "a squadron lives here" read as a copy-paste error.
What counts as one squadron. A named unit is obviously one — the 64th Aggressors at Nellis, RAF 31 Squadron at Akrotiri. Where there's no name, it's what you can actually see out of the canopy: the aircraft type plus its paint. Two F-16 rows in different squadron schemes are two squadrons sharing a field, which is normal and stays allowed. Two rows in the same scheme are one squadron parked twice, and that's what stops.
The named squadrons that used to place eight aircraft now place six — Akrotiri, Ramat David, Incirlik and Kandahar. The stands they give up go to somebody else.
Ramps are about 15% less full, and that is the price of the rule rather than a bug: roughly 19 parked aircraft per field where it used to be 23. The ceiling is now set by variety rather than by stands — a field can show at most six aircraft per squadron, so a theme built around three airframes tops out around eighteen no matter how big the base is. A few of the narrower themes (the Cold War naval ramp, the RAF fighter station, the modern bomber base) will look noticeably emptier. If you want those fuller, the fix is more aircraft types in the theme, and that's a content call — tell me and I'll widen them.
Rob asked for it by name, and it was missing. The rebuilt syllabus offered a choice of airframe per era and the Tomcat upgrade was not on either list.
It is now, in Cold War and Modern both — it served from 1974, so it belongs in the same eras as the F-14A and the F-14B. Lead flies one too, and there is already a written sight picture for it: glove vane against the horizontal stabiliser, which is a genuinely different reference from a Viper's.
Worth knowing why this one goes wrong more often than the rest of the roster. The F-14B(U) is the only aircraft in the tool that DCS's data library has no entry for — it is registered at start-up from a verified in-sim survey, inheriting the F-14B's flight data. Anything that looks aircraft up by name loses it silently. That is what produced the empty loadout back in v1.48.0, so this release adds a test that flies all five formation stages in it, in both eras, and checks lead is briefed to Tomcat speeds rather than a fallback.
Rob flew a formation sortie and there was no lead. He was right, and the reason is worth stating plainly: the AI leader was being built inside your own flight. In DCS the other aircraft in your group are your wingmen — they sit under your F-key command menu and the sim treats the group as yours whichever seat you occupy. So the airplane you were supposed to be learning from either never showed up as a separate aircraft or turned up as something you could order to go home.
Lead is now its own airplane. A separate flight called Formation Lead, single-ship, top skill, flying its own scripted route. You are Dash 2 in your own flight. Nothing about the sortie depends on you being polite to your own wingman any more.
### Lead talks to you now
The old sortie handed you a written brief and then left you alone for fifteen minutes with no way of knowing whether you were ten feet out of position or forty. Real instruction is a voice.
Lead now calls you on the radio when you drift out of position, and once more when you settle back in. One call per excursion, not a running commentary — being shouted at once a second is how people learn to tune the instructor out. The zone that decides "in position" is locked to lead's aircraft, so it follows him through the turns instead of grading you on where you are over the map.
### The syllabus was in the wrong order, so it was rewritten
The old four sorties started you in fingertip. That is backwards. Pilots fly route position almost all the time and close formation almost never, so the old stage 1 put a beginner at the highest-workload position they will hardly ever use.
Five stages now, each adding exactly one new thing:
1 — Route Position. Wide, comfortable, straight and level. Deliberately boring. This is where the sight picture gets built.
2 — Close Formation. Tighten it up, then hold it through turns both ways.
3 — Climbs, Descents and Speed. Lead changes energy state. By the time you see the change you are already late.
4 — The Rejoin. You start well outside and close it yourself, repeatedly. Closure control, and the skill most likely to hurt somebody on a server.
5 — Takeoff to Landing. New, and the one the old syllabus skipped entirely by air-starting everything. Start up on the ramp next to lead, get airborne together, rejoin after gear-up, fly the route as a pair, bring it home. This is the sortie a multiplayer squadron actually asks of you.
### It is not an F-16 tool
Rob's other point. Every card now offers a set of aircraft appropriate to the era rather than pinning one jet, and lead always flies the same type you do. Twelve or thirteen choices in Cold War and Modern, seven in World War II — which is new: formation flying is where the finger-four came from, and the syllabus works just as well in a Spitfire as in a Viper.
The deeper fix was the numbers, not the card list. Lead used to cruise at a hard-coded 12,000 ft and 300 knots. That is a reasonable fast-jet number and a nonsense one for a Yak-52, which cannot reach it — so "pick any aircraft" was never really on offer. Lead's altitude and speed now scale to the airframe: around 320 kt at 12,000 ft in a Viper, 185 kt at 8,000 in a Mustang or an L-39, 120 kt at 5,000 in a piston trainer.
If you flew the old Formation 1 and 2 cards, they have been replaced — start at Route Position, which is genuinely stage 1 now.
Rob downloaded a mission and found the F-4 asymmetric. He was right, and the previous release only fixed half of it.
v1.50.1 made the weapons symmetric — one type, loaded on matched pairs. What it did not touch was everything placed afterwards. Fuel tanks were dropped onto whatever station happened to be free, walking across the aircraft in order, so a Phantom air-to-air fit flew with one bag on the left wing and nothing opposite it. A drop tank is heavy and draggy; one of them on one side is a jet that flies sideways.
Fuel now goes on in pairs, or on the centerline. So do the air-to-air missiles: the rails used to be filled by taking "the outermost two stations", which picked two on the same wing whenever the outer pair couldn't carry missiles.
The targeting pod is still single, deliberately. It lives on its own station and nobody carries two — the Phantom's Pave Spike sits in the left forward Sparrow well on the real airplane as well.
This changes what your aircraft carries, so a mission you built before will build a slightly different — and level — loadout now.
Opening a Formation card in the Builder left the Start dropdown blank. Rob hit it wanting to fly Station Keeping in the F-14B(U): the card starts you airborne, but the Builder's Start control had no "air" option at all — so the setting had nowhere to land, showed nothing, and was lost as soon as you changed anything else.
Air start is now a normal choice you can pick yourself. It used to be something only a card could set, from back when nothing in the Builder needed it. The formation syllabus does need it, and a setting the engine accepts but the interface can't show is the worst of both worlds.
This affected every air-start card, not only the formation ones — the Fly Now tanking and merge cards had the same silent gap.
Rob's report: an F-4E strike fit came back with one laser-guided bomb, one iron bomb, one fuel tank and a Sidewinder. That is not a strike loadout, it is a tour of the weapons rack, and he was right that it looked random.
It wasn't random — it was worse than random, it was structural. Each station was choosing its own weapon independently, taking the first thing on its list it was allowed to carry. Stations don't all carry the same things, so a jet with varied stations came back with one of everything.
Now the jet picks one weapon and carries it properly. One primary store, loaded on matched pairs of stations, in even numbers — because an airplane is symmetric and hanging an odd store on one wing is a real handling problem. The same Phantom now comes back with four GBU-24s, a Pave Spike pod, two Sidewinders and a tank, which is a sortie somebody could actually fly.
A second weapon type is allowed, in pairs. Real close air support is mixed — an A-10 carries Mavericks and rocket pods — but it is mixed as pairs of each, never as one of everything. The Hog now gets two Mavericks, two rocket pods, a LITENING and a tank.
Also fixed along the way: jets were coming back with a fuel tank on every station that would take one (the F-16 had three tanks and two bombs), and a laser-guided weapon could be loaded with nothing to designate it — an expensive iron bomb.
This changes what your aircraft carries, so a mission you built before will build with a different — better — loadout now. Nothing else about it changes.
Four new Library cards, and they are a syllabus rather than four missions. You fly as Dash 2 on an AI lead — which the tool could not do until now. Every other mission puts you in front; formation keeping only works from behind.
Stage 1 — Station Keeping. Lead flies straight and level, one speed, for fifteen minutes, and does nothing else. It is deliberately boring. This is the sortie that builds the sight picture everything after it depends on.
Stage 2 — Level Turns. Gentle turns both ways with time to settle between them. You learn the asymmetry: on the inside you go low and reduce power, on the outside you climb slightly and add power before you need it.
Stage 3 — Climbs, Descents and Speed. Lead changes energy state. By the time you see the change you are already late, so this is the one that teaches anticipation.
Stage 4 — The Rejoin. You start a mile out and close it yourself, over and over, as lead maneuvers. Closure rate stops being an abstraction here.
Your brief is written for the aircraft you are flying. Formation is a sight picture, and a Phantom's sight picture has nothing in common with a Viper's — so the instructions name the actual references on the actual airplane. Line lead's wingtip rail against his ventral fin in the F-16C; his LEX against the canopy in the Hornet; the intake ramp against the wing leading edge in the F-4E. There are written references for the F-16C, F/A-18C, F-14A/B/B(U) and F-4E, and anything else gets the principles plus a note saying so.
Each brief also carries the standard you are aiming for and what your mistakes look like from the cockpit — sliding aft while adding lots of power means you are chasing; oscillating fore and aft means you are taking corrections out too late; creeping steadily closer is the classic one nobody notices themselves doing.
No threats, no tasking, no weapons. Being shot at while task-saturated teaches nothing. Fly each stage until it is boring, then fly the next one.
The cards fly the F-16C in the modern era and the F-4E in the Cold War. To practice in something else, open a card in the Builder and change the aircraft — the sight picture in the brief follows it.
Incirlik was parked with Russian aircraft. Rob flew a Syria mission out of Incirlik — a Turkish NATO base, correctly on the blue side — and found A-50s, Il-76s, Su-24s and MiG-29s sitting on the ramp next to its F-16s. The same thing was happening at Akrotiri and Ramat David, and on every map with an internationally-aligned base.
This was ours, introduced two releases ago alongside the Nellis Red Flag ramp. The new code worked out which side a base belonged to by an unreliable test, and got the wrong answer for exactly the bases that have their own national identity — so it dressed them from the opposition's roster. Turkish bases now look Turkish, RAF Akrotiri flies Tornados, Ramat David flies Israeli F-16s and F-15s, and there's a test that builds these missions and checks the ramps.
The Authentic Media logo has stopped appearing. It was showing up on the mission-start splash for anyone who hadn't set up a sponsor — which is everyone, by default. That was never a decision: the house logo was the fallback when no sponsor was configured, so an empty setup meant our own wordmark on your missions. Now nothing configured means no logo at all. There's a switch in the admin page if you want it back.
The site says BETA. It's next to the version in the header, and the front page says plainly what that means: it builds real, flyable missions, but it's a small tool covering a very large game and you'll find rough edges — and everything opens in the Mission Editor, so anything it gets wrong takes a couple of minutes to fix.
If you built a Syria, Persian Gulf or Sinai mission recently, rebuild it — the same share link will now dress the allied bases correctly.
The screenshots in the user guide showed a wizard that hadn't existed for three releases. The roadmap page said the product was at v1.37 — eleven releases ago. The guide's cover printed the wrong version. Every one of those was kept up to date by somebody remembering, and remembering had quietly failed everywhere at once.
Now the release itself checks. Every file that's generated from another one — the What's new page, the roadmap page, the PDF guide, the screenshots — is registered with a rule for how it stays current, and the pre-deploy check refuses to pass if any of them is behind. Not a warning; it stops the release.
Everything is regenerated by one command. Cutting a release rebuilds the pages, re-captures the screenshots from the live app in a real browser, rebuilds the guide PDF, runs all 994 tests and packages the download. There's no longer a list of steps to remember, which means there's no longer a step to forget.
What you'll actually notice: the guide's screenshots are the app as it is today — six screens, nothing collapsed, the new loadout controls, a Nellis ramp with tankers on it — and the roadmap page describes the product you're using rather than the one from eleven releases ago.
Nothing about mission generation changed in this release. Your missions build exactly as they did in v1.48.0, and your share links are unaffected.
Your aircraft has been spawning with empty pylons. Every mission, every aircraft, every time. We'd even written it up as a feature — "your loadout is yours to set in the Mission Editor" — but it was never a decision. It's the same missing data that left the enemy fighters unarmed until v1.44.0: DCS keeps its default loadouts in files that only exist inside a DCS installation, and there isn't one on a server, so the call that should have loaded them did nothing and said nothing.
Now the mission type arms your jet. Pick Air-to-air and you get missiles. Pick Strike and you get bombs and a targeting pod. SEAD gets anti-radiation missiles. Close air support gets rockets, cluster munitions and Mavericks. Every fit keeps a pair of air-to-air missiles on the rails, because nobody flies into a war with nothing to defend with.
It covers all 75 aircraft you can fly, in every era. A Cold War Tomcat gets AIM-54A Phoenixes and a modern one gets AIM-54Cs. A 1975 Phantom gets Sparrows and Sidewinders of the right generation. Nothing turns up that the aircraft can't physically carry on that station, and nothing turns up that hadn't been invented yet — both are checked against DCS's own data before the mission builds, not guessed.
Two controls, on the Flight screen, and no pylon-by-pylon dropdown. There's a tick-box to turn it off if you'd rather arm the jet yourself, and one dial: Light, Standard or Heavy. That's it. DCS already has a per-pylon picker and it's called the Mission Editor.
You're told what you're carrying — on the Mission Kit panel the moment the mission finishes building, and in a new Your loadout section of your briefing pack.
A few aircraft still start clean, and that's correct. The Yak-52, the Christen Eagle, the C-101EB, the Mosquito and the armed Gazelles either carry nothing or carry it built into the airframe where a mission file can't reach it.
Also fixed: a modern MiG-21 was carrying 1974 missiles. Weapons that went out of service decades ago could still be selected, because most of them had no service dates recorded at all — 105 air-to-air weapons, as it turned out. They do now.
On the F-14B(U) and the Red Rippers: the plumbing to put a squadron's markings on your aircraft didn't exist at all before this release — liveries were only ever applied to parked aircraft. It exists now, and VF-11 Red Rippers is set as the F-14B/B(U) default for modern missions, with a period-correct alternative for the Cold War since VF-11 didn't fly the B model until 1996. It won't take effect until you run scripts/dump_liveries.py against your DCS install once — the same step that switches your ramp skins on — because a livery name is a folder on your disk and there's no way to check it from here. Guessing is what broke parked aircraft in v1.46.4, and we're not doing it again.
Nellis had no tankers and no AWACS parked on it. Not "a few" — none. Build a Nevada mission today and count the KC-135s on the ramp; across eight test missions there were zero, and one heavy aircraft of any kind on the entire map. That is a strange thing to find on the base Red Flag is named after, and once we went looking it turned out not to be a Nevada problem at all. Cold War Germany was parking one or two transports across fifteen airfields. Normandy was parking none.
Big aircraft need big stands, and nothing was holding any back. A parking spot only counted as heavy-capable if it cleared a fixed size, and Nevada's terrain doesn't mark any of its stands as large — so out of 247 spots at Nellis, six qualified. Those six were then thrown into the same pool as the fighters, who arrive in squadron blocks four to eight jets deep and took them. The engine now asks the aircraft whether it fits the stand — a C-130 gets offered spots it genuinely fits and a B-52 no longer gets offered spots it doesn't — and holds a share of the big stands for the heavies before the fighter squadrons move in.
Nellis flies the Red Flag ramp. There was already a Nellis surge ramp in the data — tanker line, a Sentry, bombers, aggressors and allied visitors — and the map wasn't using it. It does now, in both eras. Groom Lake and Tonopah Test Range keep their own identity: they're test sites that happen to share a map with Nellis, and they don't get a Sentry parked on them.
A new control on the Airfields screen: tankers, AWACS & transports. Four settings from None through Normal to Exercise surge. Normal puts two or three tankers and usually a Sentry on the Nellis ramp; Exercise surge gives you the full tanker line — that's the Red Flag look. Small fields scale themselves down, so a test site never gets the same heavy line as a main operating base.
Your mission isn't any heavier. The same number of aircraft park on each ramp as before — the heavies take stands the fighters were taking, they aren't added on top. Frame rate is unchanged.
This changes what parks on the ramp, so a Nevada, Germany or Normandy share link you saved earlier will build a slightly different-looking ramp than the one you saved. Everything you fly against is unaffected.
This release adds no features and fixes no bugs. It adds 474 automated checks that run before any version of this tool can be published, and it is worth one page of your time because of what they cover.
Every one of them exists because something already went wrong. The bandits that spawned with empty pylons, the comms card that printed frequencies the mission didn't use, the nine Library cards that offered an era they couldn't build, the carrier missions that wouldn't download, the deck panel that appeared on maps with no sea, the Mission-type control that sat unreachable for four months, the parked aircraft wearing livery names we'd guessed at. Each one is now a test that builds a real mission, opens the finished .miz, and reads the answer back out. If any of them comes back, the build stops before it reaches you.
Three things are checked that could not be checked before. Every enemy weapon in the tool is verified against DCS's own list of what each aircraft can legally carry on each station, and against the year it entered service — so a 1985 missile can't turn up on a 1972 MiG. Every card in the Library is built, in every era it offers, on every release. And your mission is rebuilt in a separate, freshly started process to confirm it comes out byte-for-byte identical: that is the real test of a share link, because it's what happens on your friend's machine rather than yours.
The download now carries its own tests. The zip you download contains everything needed to run those checks yourself — python3 -m pytest tests from the unzipped folder — and the pre-deploy script runs them for you. This matters more than it sounds: the zip is the backup of record for this project, and until now it shipped the tool without the means to verify it.
We were writing livery names we had guessed at. The curated "nation-correct skins" pack was never verified against a real DCS install — its livery names are hand-authored guesses, and the data has always said so. The engine ignored that and stamped them onto every parked aircraft anyway, roughly 390 of them in one busy mission. A livery name DCS doesn't recognise doesn't fall back to the stock skin; you get a wrong or blank aircraft instead, which is what you were seeing.
The engine no longer writes them. Parked statics now use DCS's own default skins, which look right. To switch the nation-correct skins on properly, run scripts/dump_liveries.py --merge against your DCS install once — that reads the real livery names off your machine, including any paid or third-party ones, and the setting starts working. Until then every mission tells you plainly why the skins are stock.
The tanker and AWACS were not on the frequencies the card printed. Both spawned on 251.0 — the same frequency as each other — and only switched to their briefed frequencies a couple of waypoints into their orbit. If you tuned Texaco on 253.625 at mission start, nobody answered. They are now on the right frequency from the moment the mission loads. The carrier's Hawkeye had the same problem.
The carrier was worse: a unit-conversion bug had the whole battle group on 264.425 hertz instead of megahertz, so it was never on the briefed frequency at all.
Everything else checked out and is unchanged — your flight frequency, every cockpit preset behind the CHAN column, the carrier's CAP and plane guard, the tanker's TACAN, and the FARP pads. There is now a test that reads the finished mission and compares every line of the comms card against it, so the card can't drift from reality again.
The F-14B(U) can now fly Cold War missions. It was locked to the modern era because its service dates started in 1994. It's a community uprated Tomcat rather than a historical jet, so those dates were ours to set — it now covers the Cold War as well. The stock F-14B stays modern-only, and the F-14A is still the period-correct Tomcat if you want strict history.
It's listed as "F-14B(U) · Tomcat" — the same shape as every other aircraft in the list. It used to read "F-14B(U) Tomcat (Heatblur)", the only jet in the roster with a vendor name attached, and it doubled up the word Tomcat.
Fixed: the F-14B(U) warning appeared four times on every mission you built with it. Once is enough.
Carrier Qualification works again — and it was broken in a second way. Last release fixed a server error on carrier missions. This one fixes the rest: the card offered itself in the Cold War but was pinned to the F/A-18C, which didn't exist until 1987, so picking it in the Cold War got you an error instead of a mission. It now flies the F-14A in the Cold War and the Hornet in the modern era. Six other cards had the same problem — CAP/Alert-5, SEAD Range and four Fly Now cards all offered the Cold War while pinned to the F-16C — and two Fly Now cards offered WWII on a map with no WWII content. Nine broken combinations in all, now fixed, with a test that builds every card in every era it advertises so this can't come back.
Air routes have proper arrowheads. The arrow on the threat axis and on the historical air corridors was drawn as two thin lines angled back from the end, which looked like a bent whisker rather than an arrow at map zoom. They're now solid filled arrowheads, sized to the length of the lane.
Nothing in the Builder is collapsed any more. The last release put four sections behind fold-out headers on one screen, so you had to click four times to see what was even there — and because only one opened at a time, you could never see two together. That's gone. Every setting is laid out and visible.
It fits because the app finally uses your monitor. The Builder was squeezing everything into a 980-pixel column no matter how wide your screen was — on a 1920 display it was throwing away 708 pixels, on a 2560 display 1348. Now the column is wider and the busier screens lay out in two columns. The Support screen went from needing 1266 pixels with four things collapsed to 652 with everything open.
Six screens, each about one thing: Mission, Flight, Opposition, Airfields, Support & presentation, Review. Threats has its own screen again — how hard the mission pushes back is the biggest creative decision you make after picking the mission type, and it deserves the room. Airfields does too, because what parks on your ramps matters if you're building a scenario.
The left sidebar is now a live outline. It's wider, and under the screen you're on it lists every section with its current setting — so you can read the whole state of your mission from the sidebar without opening anything. Click any line to jump straight to it.
Three specific fixes you asked for: Air corridors no longer start folded shut. Pattern traffic moved out of Support and now sits next to your base on the Flight screen, where it belongs. And the per-base fill table — 87 controls — moved out of the wizard into its own panel behind a clearly labelled button.
Fixed: the carrier deck panel showed on maps with no sea. If you picked Cold War Germany you'd still see carrier deck configuration, even though there's no carrier to fly from. It now appears only when you're actually flying off a deck.
There's only one Generate button now. The orange bar along the bottom had its own GENERATE .MIZ that competed with the one on the Review screen — and on the theater screen, with the Next button too. Three things asking to be pressed and no way to tell which one you were supposed to use. The bottom bar is now just a status line showing what you've set up and what happened last; you build your mission from the Review screen, and that's the only place. The last step is called Review for the same reason: "Review & generate" made the Next button look like a third generate control.
Fixed: carrier missions wouldn't download. Any Cold War carrier mission with a tanker — including the Library's Carrier Qualification card — was failing with a server error instead of giving you the .miz. A punctuation character in one of the engine's warning messages was enough to break the download. Fixed, and pinned with a test so it can't come back.
You can finally tell the Builder what kind of mission you want. It never asked. The control had been orphaned since v1.19 and was unreachable, so every mission the Builder made was open tasking whether that's what you wanted or not. Now it's the second question, right after the era: pick Open tasking, Air-to-air, Strike, Close air support, SEAD, Carrier ops or Training, and the theater sets itself up to match — targets where they belong, the right kind of air defenses, tanker and AWACS when the mission wants them. A line underneath tells you exactly what your choice changed, and nothing is locked: every screen after it stays yours to edit.
Nothing hides below the bottom of the screen any more. On a 13- or 14-inch laptop the Back and Next buttons used to sit underneath the orange generate bar, so you'd land on a screen with no visible way forward and no hint that the page scrolled. Those buttons are now pinned in place and stay on screen wherever you are, at every window size.
The wizard is four screens instead of eight. Mission, Flight, The theater, Review. The theater screen opens with a plain-English summary of everything your mission set up — threats, support, airfields, map layers — and you open any one of them in place to change it. Everything is stated in words before you touch a thing.
Smaller things you'll notice: the descriptions on the option cards are no longer cut off mid-word with the rest hidden behind a mouse hover, the Air corridors section says "Show" and "Hide" instead of a bare arrow, and the Carrier screen no longer appears and vanishes from the sidebar as you toggle it.
Your saved share links are unaffected — they rebuild exactly the mission they always did.
Enemy fighters now carry weapons. Until this release every enemy CAP flight and every BFM adversary spawned with empty pylons. They flew a competent intercept, arrived at the merge, and had nothing to shoot with — and turning the Threat Dial up just produced more unarmed jets. That is fixed everywhere: each enemy flight now gets a weapons fit that matches its era and its job. A 1978 MiG-21 carries R-13Ms and R-60s. A modern MiG-29S carries R-27ERs, R-77s and R-73s. A Cold War F-4E comes with Sparrows and Sidewinders.
You never pick the enemy's loadout — but you're always told what it is. There's a new ENEMY AIR block on the theater chart in your briefing pack and on the airfield page of your in-jet kneeboard, and it appears on the Mission Kit panel the moment a mission finishes building. Each entry names what the bandit is carrying and what that means for how you fight him: short-range IR means deny the rear quarter and he has nothing but the gun; active radar means assume he shoots first. If a jet carries radar missiles and high-off-boresight IR, the brief says so separately — surviving to the merge isn't the same as surviving.
The Threat Dial now changes the fight, not just the head count. At the two lowest settings the bandits carry a lighter fit as well as flying at lower skill, so a training mission stays a training mission.
The merge is deliberately a knife fight. The BFM adversary gets IR missiles and a gun, never the long-range radar loadout — the point is the fight, not being killed twenty miles before it starts.
Your own jet is untouched, as always. Your loadout is yours to set in the Mission Editor.
Fixed: the admin Analytics tab returned a server error. The "missions per person" chart divided by zero whenever the window contained nobody it could attribute a mission to — which is every window on a site whose event log pre-dates v1.43.0, since those older events carry no anonymous id. The chart now says why it's empty, and if that page ever fails again it shows the reason instead of a blank error, so the Sponsor ads and Mission packs tabs stay reachable.
Nevada: the Groom Lake box is now the real one. R-4808N had been drawn as a simple four-corner rectangle, which is why it never lined up with the boundary the NTTR map draws. It now follows the published legal boundary — fourteen points that step around the Nevada Test Site — and the line is drawn thin so it reads as a boundary rather than a wall painted over the map. Heads up: Nevada missions regenerate slightly differently because of this, so an old Nevada share link won't be byte-identical to the one you saved.
The wordmark is a link home. It was the only dead end in the top bar once you'd picked a door. Tabs also got proper keyboard focus rings, and the browser tab now names the screen you're on, so history and pinned tabs are readable.
Honest, anonymous usage counting. Each browser makes up a random id about itself — not from your IP, not a fingerprint — so the tool can tell how many people use it and whether they come back. Do Not Track is honored without asking, and the footer has a one-click off switch that also forgets the id.
Mission packs. Drop a .miz or a zip of them into the admin page and they appear in the Library, briefs and all, without a redeploy. Packs live on the server's disk rather than inside the app, so they survive every update — you never have to re-upload after an upgrade.