Back to changelog

vAMSYS 5.4.10

What's new

  • Keep roster and tour flights bookable after a route ends

    Virtual Airlines that rebuild their schedule regularly were breaking their pilots' rosters: once a route was removed, the leg could no longer be booked or completed, and the roster was stuck for good. A new setting keeps a removed or ended route flyable for any pilot who already has it in an open roster, tour or event, until that activity is completed or discarded. The route stays hidden everywhere else, so it won't reappear on the booking map, the destination map or the dispatch table, and finished tours and past events don't hold routes. Aircraft assignments are also no longer discarded when a route is removed, only when it's permanently deleted, since a held route can't be flown without them.

  • Bulk rank recalculation

    Changing your rank requirements only moved a pilot when they next filed a PIREP, so restructuring your ranks meant waiting for everyone to fly or refreshing each pilot by hand. The Ranks page now has a button that re-sorts every pilot in the airline at once. It becomes available once the rank structure has actually changed since the last run, Discord role updates are spread out so larger Virtual Airlines don't hit Discord's rate limits, and rank-change webhooks stay off unless you opt in. The rank ladder itself is unchanged, and is now shared with the per-PIREP recalculation so the two can never disagree.

What's improved

  • Separate date and time fields on the dispatch departure

    The departure time was a single combined field, so changing just the time meant backspacing through the date first. It's now a date field and a time field, with the time field taking a straight click-and-type plus the browser's own stepper arrows and time picker. The Route Time button, the Time Setter and event slot times all keep both fields in step.

What's fixed

  • Discord role syncs were being dropped whenever Discord asked us to slow down. Three separate faults combined to lose role updates: the check meant to hold requests back stored and read its counters under different keys so it never held anything back, it misread Discord's "requests remaining" header and treated zero remaining as ten, and every enforced wait counted against the same five attempts as a real error, so a pilot's roles could be abandoned part-way through with nothing recorded. Waiting because Discord asked us to is no longer treated as a failure, jobs are bounded by a deadline instead, and genuine errors still stop after three attempts.

  • Repositioning and training flights were being sent to SimBrief with a full payload. Passengers and cargo were generated and passed to SimBrief for flights that carry nobody, so the OFP was planned for a full load. The booking itself stored no payload, which is why it wasn't obvious. These flights now generate no passengers and no cargo, and every place that decides whether a flight carries a payload reads the same rule, so the dispatch page, the booking and the SimBrief request can't disagree.

  • The Approach Analysis "Lateral Profile" chart was plotting runway centreline deviation mirrored. In both Orwell and Phoenix PIREP views, an aircraft right of the centreline rendered as left of it and vice versa, tooltip label included. The offset was measured against the reciprocal inbound course, as seen from the runway looking back down the approach, a frame that mirrors left and right relative to the pilot's view.

  • The community leaderboard was permanently excluding today's flights from the "last 7 days" view. The same work fixed a second, separate problem: on the 29th to 31st of a month following a shorter one (31 July, for example) the "last month" window collapsed to nothing and the Last Month leaderboard showed no data at all on those days.

  • Community leaderboard positions disagreed with the My Position card. The ranked table numbered rows by their position on the page, and removed pilots and the platform account were only excluded after paging, so hidden pilots still consumed position numbers and tied pilots were numbered sequentially rather than sharing a place. The table and the card now rank over the same filtered population. The row change arrow was also comparing each pilot only against the ten others on the current page rather than the whole leaderboard.

  • The route cost index was overriding a fleet or aircraft fixed-speed cruise profile on SimBrief dispatch. Where a fleet or aircraft SimBrief override specified a fixed cruise profile such as M78 or LRC, but the route carried a cost index, every dispatch path sent the route's cost index to SimBrief with cruise mode forced to CI, so the OFP was planned on a cost index that aircraft type doesn't use. A concrete speed profile on the aircraft (or the fleet, where the aircraft has no usable override) now wins outright and the route cost index is ignored for that dispatch. Route cost index values continue to apply exactly as before when the fleet or aircraft is set to CI, set to AUTO, or has no cruise override at all.

  • The flight map wasn't appearing on the Orwell PIREP review page for claims. It now loads correctly and displays any collected position reports.

  • The light/dark theme toggle had no effect on the airline select page, the login pages and other pages outside the main app layout.

  • The Dispatch Alternate Finder was excluding airports with clear skies whenever a minimum ceiling filter was active, including when following your fleet's alternate settings. Clear skies now pass the minimum-ceiling check.

  • Excessive decimal places in the Alternate Finder's visibility readout for older weather records, showing "6.2130905511811 sm" instead of "6 sm"

  • The bookings list in Orwell erroring when filtered by departure or arrival airport

  • The flight generator offering aircraft types whose routes had all been removed

  • Malformed scoring rule data silently emptying the rule parameter form in Orwell; the affected rules were repaired and the database now rejects bad data outright rather than storing it

  • The stored dispatch record disagreeing with itself when dispatching into a locked event slot

Don't miss the next one

Subscribe and we'll email you when we ship.

Unsubscribe anytime.