Back to changelog

vAMSYS 5.4.13

What's new

  • Rank Transfer rejections can now email the pilot, with canned reasons for staff.
    Rejecting a rank transfer application previously only showed a staff-side confirmation; the pilot was never told why. Staff can now enter a reason on the review modal, or pick one from presets of the new Rank Transfer Review type, the same way PIREP and registration reviews already work. A new Transfer Rejected Email template in Orwell under Settings > Pilot controls what the pilot receives, with its own subject, rich text content, a {reason} placeholder and a preview button, following the same conventions as the registration emails. The email is only sent when a reason is given and your Virtual Airline has a support email and a customised template configured, exactly mirroring registration rejections; leave the reason blank and nothing is sent.
    The Operations API reject endpoint accepts the same optional reason and sends the same email under the same conditions. Transfer decisions are also now claimed atomically, so two staff members, or a staff member and an API client, deciding the same request at the same moment can no longer both process it or send the pilot a duplicate email.

  • New "Incurred any scoring penalty" Autoreject rule.
    The existing Negative Points rule only triggers when a PIREP's overall score finishes below zero, so a flight that picked up penalties but still passed never surfaced them to the pilot. The new rule triggers whenever any individual base scoring line item is negative, regardless of the net total, so you can make sure a pilot sees they were penalised even on an otherwise good flight. Manager, staff and badge bonuses, and the score offset applied to ineligible flight types, are deliberately excluded, so none of them can trigger it on a clean flight. It is parameterless and toggled on the Orwell Autoreject Rules page like every other rule. As part of this work, the violations count used by the community goal "no violations" and "maximum violations" filters was aligned to the same definition, so a flight type score adjustment, such as the offset applied to repositioning or training flights, no longer counts as a violation there either.

  • Manage the pilot Activity Whitelist through the Operations API. New endpoints to enable and disable a pilot's Activity Whitelist mirror the existing back office action, including clearing any active grace period when the whitelist is enabled. Both require the ops:flights:write scope and are deliberately idempotent, so a scheduled membership sync can call them on every run without tracking prior state.

What's fixed

  • Discord notifications after unlinking a server.
    Unlinking a Discord server left the badge award and PIREP review notification settings in place, so a Virtual Airline that unlinked with those configured kept posting badge awards and review notifications into the server it had just disconnected. Unlinking now clears every notification setting, and both notification paths require a linked server before sending, matching how every other Discord notification already behaved. This shipped as a hotfix and has been live since 17 August.

  • Booking pages for routes using an airport without an ICAO code.
    A small number of airports in the shared airport database have only an IATA code recorded, and the weather lookup on the booking page crashed when it met one, taking the whole page down. The booking page, and every other place that shows airport weather, now simply leaves that airport's weather blank and carries on normally.

  • Manual claims on an already claimed booking.
    A pilot whose booking had already picked up a PIREP another way, most commonly an ACARS flight whose booking record had not yet caught up, saw a server error when they also tried to submit a manual claim. They are now told the booking has already been claimed, on both the website and the API, and the claim button no longer appears on a booking that already has an active PIREP.

  • Sidebar chevrons out of sync with their panels.
    The vAMSYS menu and its sibling collapsible sidebar groups could show an open chevron over a collapsed panel after a page update elsewhere on the screen. The open and closed state is now re-applied after every navigation and page update, so the chevron and its panel always agree.

  • Pilot activity fields on the APIs gated on the wrong setting.
    The under_activity_grace, activity_grace_since and activity_whitelist fields on the Operations API and the pilot-facing profile endpoint are meant to be null only when an airline has no activity requirements at all, but they checked a legacy setting the settings screens never write, so most airlines with activity requirements enabled were getting null instead of real values. Both endpoints now use the same check the back office uses, and PIREP webhook payloads carry the corrected fields too.

  • Daily airport database import discarding ICAO codes.
    The OurAirports source data carries two candidate ICAO fields, and the daily import only ever read one of them, so an airport whose code lives in the other field, such as Odesa Intl, had its ICAO code wiped once a day regardless of what was already recorded. The affected airports had their codes restored on 31 August.

Don't miss the next one

Subscribe and we'll email you when we ship.

Unsubscribe anytime.