Changelog

Stay up to date with the latest updates, features, and improvements.

Get every release delivered

vAMSYS v5.4.0

vAMSYS 5.4 is a major 5.0 release introducing the Pilot API, Pilot Passport, personal rosters, bonus points system changes, activity flight type exclusions, hot weather scoring exemptions, new autoreject rules, and significant performance improvements across the platform.

What's new

Some items are Launch Only

Some changelog items, even if configured in Beta environment, will not take effect until 5.4 is out to public release - 16th March at the earliest. For example:

  • Generated Roster Leg tracking
  • Staff Bonus Points
  • New Scorers/Autorejects
  • Activity requirement changes
    will work only when 5.4 launches

Pilot API

A brand-new OAuth PKCE API for third-party pilot-facing applications. Developers can build apps that authenticate pilots and access their data within the context of a specific Virtual Airline. The Pilot API offers over 40 endpoints across 10 granular scopes, covering:

  • Profile & Identity — pilot profile, rank, statistics, statistics breakdown, badges, holidays, preferences, location, and hub.

  • Bookings & Dispatch — list, create, and cancel bookings; generate dispatch URLs; link SimBrief OFPs.

  • PIREPs — browse flight history, view position reports and flight profiles, read and post comments.

  • Manual PIREP Claims — submit, view, and delete manual flight claims.

  • Activities & Rosters — register for activities, track progress, manage personal rosters.

  • Favourites & NOTAMs — toggle favourite aircraft and airports, browse and acknowledge NOTAMs.

Full OpenAPI documentation is auto-generated and available via the Scalar documentation viewer. OAuth clients are created and managed in Orwell.

Personal Rosters & My Rosters

Pilots can now save generated rosters from the Flight Generator as personal rosters. Personal rosters require a minimum of two legs and appear on the new My Rosters page alongside any registered curated rosters. Each roster includes progress tracking with real-time updates, dispatch integration for booking individual legs, and an interactive map showing the full route.

Registering for a curated roster now also adds it to My Rosters, giving pilots a single unified view of all their active rosters. Pilots can unregister from curated rosters directly from this page.

Bonus Points

Three new bonus scoring tiers can be applied to PIREPs, each configurable as fixed points or a percentage of the base PIREP score:

  • Staff Bonus — bonus points awarded on every PIREP filed by a staff member. Configured in PIREP & Reward Settings.

  • Badge Bonus — per-badge bonus points awarded on PIREPs when the pilot holds that badge. Configured on each badge individually.

  • Airport Manager Bonus — the existing Airport Manager bonus now supports percentage mode alongside fixed points.

All bonus types support custom display names.

Activity Flight Type Exclusions

Staff can now exclude specific flight types from pilot activity requirement checks. Excluded flight types do not count towards or against activity thresholds for both initial and ongoing requirements. Configure this in Orwell under Settings > Activity Requirements.

Hot Weather Flap Exemption

Parking flap scoring rules (Flaps Retracted Before Parking / Flaps Not Retracted Before Parking) now support a hot weather exemption. When the arrival airport temperature exceeds a threshold (determined from METAR data within 6 hours of arrival), an alternative flap range can be accepted. This prevents pilots from being penalised for leaving flaps extended in hot weather conditions. Configurable per scoring rule with minimum/maximum flap positions and optional bonus points.

Phoenix Dashboard Hide/Show Toggle

Each Phoenix Dashboard component now has a hidden toggle. Hidden components preserve all their configuration (size, position, settings) and can be quickly toggled back without re-entering settings. This makes it easy to seasonally enable or disable dashboard sections.

Flight Time on Activity Cards

Activity cards in Phoenix now display estimated flight time information. Tours and rosters show the total flight time, while airport-based events show a time range. This helps pilots gauge the time commitment before joining an activity.

Operations API Enhancements

  • OAuth Scopes — five granular scopes for Client Credentials tokens, allowing read-only tokens safe for public use. Fully backwards-compatible — existing tokens continue to work without changes.

  • See the separate Operations API changelog entry for full technical details including breaking changes.

Route Tag Review Autoreject

A new autoreject rule lets staff configure specific route tags (such as Exam or Checkflight) that automatically trigger PIREP rejection when a pilot flies a tagged route. Tags are configured per rule in the AutoReject Rules settings.

Engine Start Sequence Autoreject

Airlines can now automatically reject or flag PIREPs for review when engines are started in the wrong order. Configure the required start sequence (Engine 1–4) and set fleet-specific overrides for aircraft types that require different start orders. Uses the same violation detection as the existing Engine Start Sequence scoring rule. The required sequence is displayed to pilots on the Scores page.

Pilot Passport

A new section on pilot profiles that tracks every airport and country visited across your flights. See your exploration progress with country and airport completion percentages, per-country progress bars, and detailed airport visit histories including visit counts and first/last visit dates. Countries where all route network airports have been visited earn a gold star. Airports you have visited that are later removed from the route network are preserved as historical stamps — your visits are permanent.

What's improved

  • Curated Roster enhancements — curated rosters now support optional completion points (fixed or percentage), fleet-type-per-leg selection as an alternative to specifying individual aircraft, and points-as-percentage mode.

  • Roster name overrides — customise the "My Rosters" label, roster generator label, and roster type labels to match your Virtual Airline's terminology.

  • Orwell Profile link — staff can access Orwell pilot profiles directly from the Phoenix pilot profile page.

  • Dispatch information — callsign and flight number are now displayed in dispatch route information.

  • PIREP weight — all displayed flight counts throughout Phoenix now respect the pirep weight setting used during Transfer/Manual PIREP creation.

  • SimBrief OFP from booking detail — pilots can generate a SimBrief OFP directly from the booking detail page without returning to the dispatch screen.

  • Pilot search in Orwell — staff can now search for pilots by real name (in addition to username) across all pilot selection fields, including the Award Badge modal, Holiday management, Rank assignments, and Pilot Notes.

  • Dispatch Table columns — column visibility is now controlled entirely by the airline's dispatch box settings in Orwell. The pilot-facing column toggle has been removed for a cleaner, consistent experience.

What's fixed

  • Duplicate pilot accounts being created by repeated restore operations

  • ICAO/IATA airport lookup failing for lowercase input in route creation

  • Null flight distance on non-jumpseat routes — existing affected routes have been backfilled

  • Integer overflow when creating PIREPs through pilot invite with very large values

  • Leaderboard rank position mismatch in the My Position panel — deleted pilots and the system user are now excluded from ranking calculations

  • Route bulk actions could process an unlimited number of records — now capped at 500 and converted to batch SQL for reliability

  • Missing pirep_analytics_count column in Ranks pilot list

  • OpenAPI specification type mismatches causing documentation viewer errors

  • Hidden filter not working correctly in Fleet and Aircraft lists

  • API 500 errors caused by Spatie Data structure caching

  • Flight length arrival time calculation producing incorrect values

  • Various N+1 query issues: activity detail page reduced from 170+ to approximately 80 queries, with fixes also applied to the events listing and tour/roster tables

  • Hidden aircraft could be booked via pilot favourites, bypassing the visibility filter

  • Map sprite and glyph assets pointing to external URLs that intermittently failed — now self-hosted

  • Create Booking button becoming permanently disabled after form validation failure (e.g., passenger count exceeding maximum), requiring a page reload

  • Orwell edit pages crashing when a record was deleted while the page was open — users are now redirected to the listing page with a notification

  • Operations API scope enforcement not resolving wildcard tokens against the client's configured allowed scopes

  • Selected Engine Taxi In scorer falsely failing PIREPs when multiple engines were selected — the on-blocks timing check has been removed as it conflicted with multi-engine shutdown sequences

Performance

  • Column selection added to all Operations API index endpoint eager loads, reducing data transfer and query times

  • Covering partial index added for pilot listing by airline

  • Middleware audit: hot paths cached, dead code removed, OAuth logging made asynchronous

  • Three duplicate queries per page load eliminated from middleware and layout

vAMSYS v5.4.0-Operations API

This entry covers all changes to the Operations API shipping with vAMSYS 5.4. If you integrate with the Operations API, review the breaking changes section carefully and update your consumers. vAMSYS 5.4 Beta is not due to launch publicly till 16th March at the earliest.

Breaking changes

/routes pagination keys renamed

The GET /routes endpoint previously returned cursor pagination metadata using non-standard keys. These have been renamed to match all other cursor-paginated endpoints:

  • meta.next_page_url → meta.next_cursor_url

  • meta.prev_page_url → meta.prev_cursor_url

Consumers of GET /routes reading these keys must update to the new names. All other cursor-paginated endpoints already used the correct keys and are unaffected.

Viable upgrade path would be to update your various scripts to look for xxx_cursor_url and try to default to xxx_page_url if former is not available; This will make your scripts work with current 5.3 and will not error out when 5.4 goes out.

Action endpoints now wrap responses in data key

The following action endpoints previously returned fields at the root level of the JSON response. They now wrap all fields under a "data" key, consistent with every other endpoint in the API:

  • POST /registrations/{id}/approve and /reject

  • POST /transfers/{id}/approve and /reject

  • POST /ranks/reorder

  • POST /ranks/{id}/pilots/{pilot_id} (honorary rank)

  • POST and DELETE /hubs/{id}/pilots/{pilot_id}

Consumers reading response.message, response.email_sent, response.manual_pirep_queued, response.pilot_id, response.hub_id, or response.rank_id should update to read from response.data.* instead.

What's new

OAuth Scopes

Five opt-in OAuth scopes are now available for Client Credentials tokens. Existing tokens issued without scopes continue to work with full unrestricted access — no action required. New tokens that explicitly request scopes are restricted to matching endpoints only.

  • ops:read — all GET endpoints (fleet, routes, airports, pilots, PIREPs, bookings, statistics, activities, flight map).

  • ops:config:write — create, update, and delete fleet, aircraft, airports, hubs, ranks, badges, routes, parameters, containers, load factors, routings, alerts, and NOTAMs.

  • ops:flights:write — cancel bookings; manage PIREP comments, points, bonus points, need-reply flag, internal notes, times; select landings; manage pilot notes.

  • ops:moderation:write — PIREP accept, reject, and invalidate; pilot banning and deletion; registration and transfer approve/reject.

  • ops:activities:write — create, update, and delete events, tours, rosters, focus airports, community goals, community challenges, and activity registrations.

Scopes are configured per-client in the Orwell API settings panel. A token with only ops:read is safe to embed in client-side JavaScript for public displays. Tokens missing a required scope receive HTTP 403 with error "insufficient_scope".

New response fields

  • Booking responses — new user_route field containing the pilot's custom route string (or null).

Custom URI Schemes for OAuth

OAuth clients can now use custom URI schemes (e.g., myapp://callback) as redirect URIs, enabling native desktop and mobile applications to implement OAuth flows. Plain HTTP remains blocked; HTTPS and any custom scheme are accepted.

CuratedRoster enhancements

POST /rosters and PATCH /rosters/{id} now accept optional points configuration and fleet-level aircraft assignment per leg for CuratedRoster types:

  • Optional points — points, points_as_percentage, time_award_scale, restrictions.award_per_leg, and restrictions.activity_complete fields. Points default to 0 if omitted.

  • Fleet-per-leg — legs[].aircraft_type_id assigns a fleet type instead of a specific aircraft. For CuratedRoster legs, either aircraft_id or aircraft_type_id must be provided (previously aircraft_id was always required).

What's improved

  • All endpoints returning 422 Unprocessable Entity now document validation error responses in the OpenAPI specification.

  • Path parameters are documented with descriptions across all controllers.

  • Column selection added to all index endpoint eager loads, reducing query counts and response times.

What's fixed

  • GET /pireps/{id}/touchdowns returning 500 when the PIREP had no touchdown data.

  • PUT /badges/{id} returning 500 on every request due to an internal data class method error.

  • PATCH /parameters/{id} returning 500 when updating string or array fields.

  • GET /routes with fleet_id filter returning 500 due to an incorrect subquery reference.

  • PUT /ranks/{id} throwing a mass assignment error in certain update scenarios.

  • GET /ranks/{id}/pilots returning an error when pilots existed on the rank.

  • GET and PATCH /pilots/{id}/notes returning 500 due to a computed attribute eager-loading conflict.

  • Scope enforcement not resolving wildcard tokens against the client's configured allowed scopes — wildcard tokens are now properly resolved to the client's actual allowed scopes for per-endpoint enforcement.

  • OAuth Authorize page content being clipped when a client requests many scopes, making the Authorize button unreachable.

vAMSYS v5.3.38

What's improved

  • Automatic cleanup of orphaned transfer records
    Transfer records where the pilot has been deleted are now automatically cleaned up daily, preventing stale data accumulation.

What's fixed

  • Double-clicking the Create Booking button could create duplicate bookings

  • Live flight map ETA always showing as null

  • Community Goal tier calculation mismatch between displayed tier and actual reward tier

  • Reset Map button in Book Flight leaving the map in an unresponsive state

  • Freight and cargo amounts displaying incorrect values for imperial unit users in Community Goals

  • Transfer review page crashing when the transferring pilot has been deleted

  • Bulk PIREP reprocess attempting to process PIREPs without ACARS records

  • Community Goal and Challenge progress components failing to load rank informat

vAMSYS v5.3.37

What's fixed

  • Error when accessing activity logbook for newly registered pilots before their logbook record was created

  • SimBrief airframe sync showing duplicate success notifications when updating multiple airframes

  • Notification panel errors caused by corrupted session data

  • OAuth login failures when client ID was empty

  • Error when generating a new callsign from the booking sidebar

  • Pilot full name not displaying correctly in certain API and export contexts

  • URL validation errors when creating or updating records via API v3

vAMSYS v5.3.36

API Breaking Change

The flight-map endpoint (/api/v3/operations/flight-map) now excludes position reports by default for performance reasons. To include position history, add include_posreps=true to your request.

What's new

  • Preparation work put in place for Pegasus Addon API
    New API for Pegasus to identify addons via our backend API, instead of being hardcoded into Pegasus builds.

What's improved

  • API v3 Performance
    Pilots endpoint with statistics is now 10-25x faster. Flight map endpoint is 5-37x faster with position reports now optional for better performance.

  • Changelog entries now served from vamsys.co.uk and vamsys.io picks up new releases automatically

What's fixed

  • Route filtering on flight distance in Orwell causing invalid database queries

  • Badge selection allowing null badge submissions

  • Version service type error caused by stale cache entries

  • PIREP position reports not displaying on Orwell map

  • Several Dashboard boxes having some undefined widths, which are available for selection in Orwell

  • Aircraft icon URLs not using absolute origin and defaulting to basic icon on flight maps

vAMSYS v5.3.35
  • Added auto-switch airline when visiting airport/aircraft resources by a link (from say Pegasus) when said resource belongs to a different VA than the one you are currently logged into

  • Fix invalidated PIREPs not being aggregated in PIREP Analytics

  • Fixed undefined variable when deleting VA

  • Fixed Type Error in Position Reports API Endpoint

  • Add API v3 automated endpoint tests

vAMSYS v5.3.34
  • Fix Route Importer not recalculating flight length when imported value is empty

  • Fixed unhandled match case when dashboard component width is null

  • Fixed Community Goal rewards applying tier multipliers when tiers_enabled is false

vAMSYS v5.3.33
  • Remove API v2 URL endpoints, controllers and clases; Shut down protocol.vamsys.dev

  • Add API and webhook integration for upcoming Hangar v2

  • Fix PIREP reprocessing crash for older ACARS versions

  • Fix timestamp processing for older PIREPs where SimBrief used to send times in different format

  • Fix booking details validation when callsign editing is disabled

vAMSYS v5.3.32
  • Internal changes to logging in cloudflare worker processing position reports

  • Added Created/Updated date-time fields in Airport Export

  • Fixed Client Credentials grant not returning a token in Operations API documentation when redirect_url is included

  • Added honorary rank ID and whether honorary rank is preferred in Pilot API

  • Added multiple threshold support to Multiple Flights scorer

vAMSYS v5.3.31
  • Fixed Phoenix Flight List showing current time instead of Actual Departure time in certain scenarios

  • Added bidirectional route/aircraft filter in Roster/Curated Roster create/edit form in Orwell

  • Fixed Clock dropdown being invisible in Orwell in Safari

  • Added an option to hide aircraft from booking, lists and so on in Phoenix via toggle in Aircraft create/edit in Orwell

  • Added individual sortable start/end datetime columns in Orwell Routes table

  • Importers will now skip validation when it is asked to delete entries

vAMSYS v5.3.30
  • Fixed CommunityGoal flight time progress not updating when PIREPs filed

  • Improved Phoenix UI → PIREP View; Hid the link to Orwell Activity edit

  • Fixed live flight metrics not purging cache and not storing 0 values when there are no flight, making it seem there is always at least one live flight

  • Fixed some errors in Position Report API

  • Fixed undefined array key error in PIREP comment actions by hiding submit button for offsite appeals

vAMSYS v5.3.29

Refactored Phoenix PIREP view to modular panel architecture as used in Orwell

Other changes and fixes:

  • Fixed violation count PIREP evaluator for Community Goals/Challenges

  • Fixed some array to string conversions in Fleet API

  • Fixed orphaned transfers from pilots or users who no longer exist

  • Converted Next Departures from preset view to toggle button in Dispatch table

  • Fixed runway exit direction inversion in Runway Profile visualization

vAMSYS v5.3.28

Bugfix edition

  • Fix fuel used calculation to use takeoff fuel instead of ramp fuel in Orwell PIREP Review

  • Fix dashboard map bounds fitting for distant flights

  • Fix flight_time community goals to track seconds instead of floored hours

  • Fix for bonus point update in API

  • Fix community goals flight_time display to convert seconds to hours

  • Delay dispatch deletion by 5 minutes to prevent 404 errors

  • Filter out hidden routes on Event activity type pages

  • Fix Has Diversion flag for when diverting to departure airport

vAMSYS v5.3.27

Orwell → PIREP Review Rewrite

[Image: ]

Full overhaul of how Orwell PIREP Review page works and looks; We hope you will find it easier to read, information more clearly presented - and the actions you need to perform - conveniently located.

After a short initial test with VA Ownerss/Staff - similar layout and features will be rolled out to Phoenix PIREP View as well so Pilots can enjoy them too.

Other Fixes and Changes:

  • With local times enabled, Departure and Arrival times will sort according to local time, not UTC

  • Fixed an error when deleting an autoreject, which was already deleted

  • Improved Stabilized approach scorer event tracking to ignore events after landing

  • Fixed an error in Community Challenge team page when filtering by airports

  • Further attempts to fix point awarding API v3

vAMSYS v5.3.26

It’s been a very busy week - 5.3.26 brings substantial improvements to vAMSYS.

Dispatch Table Changes

Virtual Airlines can now fully customize the Dispatch Table defaults in Orwell Settings → Booking & Dispatch:

Column Management

  • Drag-and-drop to reorder columns as you prefer

  • Set which columns are visible by default for new visitors

  • Rename any column with custom labels (e.g., rename "Tags" to "Route Type")

Airport Display Options

  • Choose how departure and arrival airports are displayed independently:

Days of Operation Format

  • Abbreviated: Mon, Tue, Wed, Daily

  • Numeric: 1234567 (except when all 7 are picked, then it’s Daily)

Default Sorting

  • Set which column the table sorts by when pilots first visit

  • Choose ascending or descending order

Note: Pilots can still toggle columns and change sorting during their session - their preferences are remembered. These settings control what new visitors or expired sessions see by default.

Community Goals & Challenges

Community Goals are collective achievements where every pilot contributes. File qualifying PIREPs, and passengers, cargo, or flight count automatically adds to the Goal-wide total.

Community Challenges add a competitive twist: teams compete against each other (e.g., Team Longhaul vs Team Shorthaul, or Passengers vs Cargo, or Day-Time vs Night-Time, or East-Coast vs West Coast - options are endless!). PIREPs are automatically assigned to a team based on criteria you set.

Registration: Neither Activity type requires registration - all PIREPs are evaluated if they contribute towards Goal/Challenge. Pick what to count: Passengers, freight, flights, distance, or flight time. Set flexible filters: Specific airport groupings, distance ranges, fleets, online networks, landing quality requirements, night operations, and more Rewards

  • Participation points for every qualifying PIREP

  • Completion bonus when the Goal hits 100% or for winning team in a challenge

  • Tiered rewards based on contribution rank (Top 10%, 25%, 50%, 75%) — Elite Dangerous style

Note: For Community Challenges it’s up to you to create unambigious teams with the filters - PIREPs should only be attributable to Team 1, Team 2 or neither; If the filters set up make it possible to PIREP to apply to both Teams, it will be assigned to Team 1 goals.

Activity API & Webhooks

Just in time for January 4th 2026 retirement of API v2.

API v3 for activities dramatically expands on capabilities, bringing full parity with UI - all activities are retrievable, editable and so on - everything you may expect.

We have undertook some initial testing - and everything check out, but as always - be very cautious with APIs marked experimental - Tour/Roster/Goal/Challenge creation can be very complicated; Just as with Importers/Exporters - it’s always a good idea to create an activity manually and then look at the API ‘Show’ response to get a very good idea how data is structured.

Furthermore, 8 webhook events were added to help you track activity creation, update deletion as well as related registrations and logbooks.

Ability to register a pilot for Activity will come with the Pilot API

Other Changes

  • Fixed an issue with Phoenix Flight List sometimes throwing an error when one of the in-progress flights has an airport with no ICAO code

  • Fixed missing flags in marker popups in maps

  • Fixed a data collection issue in PIREP API when editing bonus points

  • Fixed Badges API documentation lacking proper details for badge rules

  • Improved PIREP Review page by collapsing Container listing in Flight Dispatch automatically

  • Improved Routings functionality with the addition of Tags; These can be entered via UI, Importer or API; Can be used to filter down Export or API.

  • Fixed Flex Temperature not showing in SimBrief OFP Preview in Dispatch page.

  • Added View in Phoenix button for Activities in the table.

  • Added ‘Positioning’ radio selector for Image elements in Custom Pages, letting to align left/right/center image. Optional - alignment is left by default.

  • Improved Route Create & Create Return in Orwell - it will copy over callsign, flight number and fleet selection to new create form.

  • Added livery_status return in List PIREPs data return

vAMSYS v5.3.26

For the next couple of days a Beta version is available at https://beta.vamsys.io

Community Goals & Challenges

Community Goals are collective achievements where every pilot contributes. File qualifying PIREPs, and passengers, cargo, or flight count automatically adds to the Goal-wide total.

Community Challenges add a competitive twist: teams compete against each other (e.g., Team Longhaul vs Team Shorthaul, or Passengers vs Cargo, or Day-Time vs Night-Time, or East-Coast vs West Coast - options are endless!). PIREPs are automatically assigned to a team based on criteria you set.

Registration: Neither Activity type requires registration - all PIREPs are evaluated if they contribute towards Goal/Challenge. Pick what to count: Passengers, freight, flights, distance, or flight time. Set flexible filters: Specific airport groupings, distance ranges, fleets, online networks, landing quality requirements, night operations, and more Rewards

  • Participation points for every qualifying PIREP

  • Completion bonus when the Goal hits 100% or for winning team in a challenge

  • Tiered rewards based on contribution rank (Top 10%, 25%, 50%, 75%) — Elite Dangerous style

Note: During Beta, PIREPs will not be allocated to any goals or challenges; Purpose of Beta is to make sure creation/editing/UI works.

vAMSYS v5.3.25

CDN

We’ve migrated some of our assets over to Cloudflare for storage, instead of building and storing them with each web server. This immensely improves our deployment timeline when we push new updates (~10 minutes to ~2 minutes), as our servers no longer need to worry about compiling them.

Unfortunately, our migration ran into a little stumble - we’re sorry for the short downtime earlier this evening.

vAMSYS 5.3.25 builds on 5.3.23/24, resolves remaining bugs within our reach and starts tackling some of the improvement suggestions.

In no particular order:

  • Improved - Statistics API:

  • Fixed Orwell → Settings → API v3 throwing timeout errors when APIs are heavily used

  • Fixed Route API create/update issue when creating a route with callsign_options entered as null

  • Fixed Route API update issue which failed the update due to an issue with parameter validity lookup

  • Fixed PIREP webhook failing on some occasions

  • Fixed Orwell → Settings → Webhooks failing to render sometimes by removing the View Page entirely - it does not do anything the Edit page doesn’t

  • Improved Orwell → Settings Webhooks by moving the docs into a modal; create Webhook into a modal

  • Improved Fleet table in Orwell by adding a column for Hidden in Phoenix, as well as adding a hidden filter, adjusting column grow and wrap properties

  • Fixed Freight exceeded notification message in Dispatch - it had KGs and LBs text mixed up

  • Fixed an issue when creating Tours/Rosters via Create & Create Another, where registration required toggle would not transfer over

  • Fixed a bug with On-Time Arrival/Dearture scorers - it was evaluating tolerance incorrectly

  • Fixed a bug with Taxi Overspeed autoreject rule - it would refuse to save even if all required options were selected

  • Improved Custom Pages by adding an option to have a dark theme image

  • Improved Stabilized Approach scorer by adding fields to populate Human readable Flap Values; If entered, there will show in Scorer Docs and PIREP Scores breakdown (new PIREPs only)

  • Improved Badges with a new option to create Activity Participation - Count badges; These will be awarded if Pilot completed >= number of activities in selected categories

vAMSYS v5.3.26

For the next couple of days a Beta version is available at https://beta.vamsys.io

Dispatch Table Changes

This Beta is for testing changes to Dispatch Table and it’s related settings.

Virtual Airlines can now fully customize the Dispatch Table defaults in Orwell Settings → Booking & Dispatch:

Column Management

  • Drag-and-drop to reorder columns as you prefer

  • Set which columns are visible by default for new visitors

  • Rename any column with custom labels (e.g., rename "Tags" to "Route Type")

Airport Display Options

  • Choose how departure and arrival airports are displayed independently:

Days of Operation Format

  • Abbreviated: Mon, Tue, Wed, Daily

  • Numeric: 1234567 (except when all 7 are picked, then it’s Daily)

Default Sorting

  • Set which column the table sorts by when pilots first visit

  • Choose ascending or descending order

Note: Pilots can still toggle columns and change sorting during their session - their preferences are remembered. These settings control what new visitors or expired sessions see by default.

vAMSYS v5.3.24

Carrying on from yesterday, addressing some of the remaining bugs before we move onto final tasks of the year:

5.3.23 hotfix applied yesterday shortly after 5.3.23 release:

  • Fixed Registration Rejected email sending when reason has special characters or new lines

  • Improved Container Importer to better validate before trying to iterate over junk data

5.3.24 changes:

  • Fixed Pilot Profile page in Phoenix - it was trying to load data for deleted Pilots instead of returning a 404

  • Fixed Routes API returning server error with no ID on Validation issues, instead of validation errors themselves

  • Fixed Routes API having different ‘meta’ structure than the other API endpoints

  • Improved Webhook page in Orwell to better show Requests/Successes/Failures

  • Fixed webhooks not sending on PIREP changes

  • Improved Pilot Profile → Statistics → Route Types chart to return actual route types, not PIREP Types

vAMSYS v5.3.23

Marketing Email Opt-In

5.3.23 adds Marketing module via a toggle at Orwell → Settings → vAMSYS Modules → Enable Marketing.

Once enabled, pilots can subscribe to receive marketing communications from your Virtual Airline. The Marketing System allows for GDPR compliant way for users to opt-in for such emails.

This module adds a few things:

On registration, there will be a checkbox to opt-in to marketing messages.

In Phoenix -> My Profile -> Preferences the Marketing Communications opt-in can also be toggled.

To help inform your existing pilots of the marketing communications, a dismissable alert will be shown for All Pilots who have not opted in or dismissed the alert.

Finally, a Marketing section in Orwell will list all the pilots who have opted in, together with some stats, export and Usage Guidelines

Following Usage Guidelines is non negotiable;

Other Changes

  • Rewritten Route API to be more robust and less error prone

  • Fixed a Typo in Discord Settings in Orwell

  • Added checkbox to agree to vAMSYS ToS on registration

  • Fixed stale cache in Route Importer causing issues with adding routes to airports which were just created

  • Fixed departure and arrival conversions when creating/updating routes via Importer or API

  • Fixed Discord notification errors and badge awarding on PIREP accept

  • Fixed foreach on null error in email template processing, especially when handling Pending Registrations

  • Fixed missing departure airport error in Dispatch table, when coming from Activity page

  • Fixed Jumpseat Airports not forced on when there are no onward destinations from current location

  • Added Jumpseat button to Dispatch table

  • Fixed Container creation when creating a new container via Route Create/Edit page

  • Fixed an issue with Rejecting Pilot Registration, not removing the rejected entry from the table

  • Fixed SimBrief Pax/Bag weight conversions/override when said override is done via SimBrief Airframe Profile

  • Fixed Activity registration button being visible outside of specified registration start and end times

  • Fixed an issue where fetching current weather runs into an error

  • Fixed orphaned ranks set as transfer rank targets causing issues

  • Improved ‘Airports’ section in Tour Activity page showing airport names of yet to be revealed legs

  • Fixed include_statistics parameter being ignored in List Pilots API endpoint

  • Improved Event type Activity page load performance

  • Fixed Event type Activity page Map and Route table ignoring callsign and fleet restrictions

There are still a few bugs left to resolve - will tackle them and more Could be Improved posts tomorrow!