{"id":47808986,"url":"https://github.com/rwellinger/xp_pilot","last_synced_at":"2026-04-03T18:01:24.932Z","repository":{"id":348722172,"uuid":"1199576768","full_name":"rwellinger/xp_pilot","owner":"rwellinger","description":"X-Plane 12 plugin for macOS \u0026 Windows: Flight Logger with HTML logbook, Auto QNH sync, and Rain Blocker — all in one native plugin.","archived":false,"fork":false,"pushed_at":"2026-04-02T21:09:39.000Z","size":119,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T02:39:57.824Z","etag":null,"topics":["flight-simulator","plugin","x-plane"],"latest_commit_sha":null,"homepage":"https://forums.x-plane.org/files/file/99159-flight-logger-v120-lua-native-plugin-version-100-mac-intelarm64/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rwellinger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-02T13:43:14.000Z","updated_at":"2026-04-02T21:07:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rwellinger/xp_pilot","commit_stats":null,"previous_names":["rwellinger/xp_pilot"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rwellinger/xp_pilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fxp_pilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fxp_pilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fxp_pilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fxp_pilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rwellinger","download_url":"https://codeload.github.com/rwellinger/xp_pilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fxp_pilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31368156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flight-simulator","plugin","x-plane"],"created_at":"2026-04-03T18:01:22.862Z","updated_at":"2026-04-03T18:01:24.817Z","avatar_url":"https://github.com/rwellinger.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xp_pilot\n\n![Build](https://github.com/rwellinger/xp_pilot/actions/workflows/build.yml/badge.svg)\n\nA native X-Plane 12 plugin for **macOS (ARM + Intel)**, **Linux** and **Windows** that combines three quality-of-life features for general aviation and jet simulation:\n\n- **Flight Logger** — records every flight and generates an HTML logbook with route maps and landing analysis\n- **Auto QNH** — automatically keeps the altimeter in sync with actual sea-level pressure\n- **Rain Blocker** — suppresses X-Plane's 3D rain particle effect at high speed (\u003e120 kts)\n\n---\n\n## Features\n\n### Flight Logger\n\nRecords a complete flight from engine start to shutdown and saves it as JSON plus an HTML report.\n\n- Detects takeoff, airborne phase, landing, and shutdown automatically via a state machine\n- Samples track points every 10 seconds (lat/lon, altitude, speed, vertical speed)\n- Captures landing data at touchdown: descent rate (fpm), G-force, pitch, float time, flare quality, wind (headwind/crosswind)\n- Rates each landing: **BUTTER!** / **GREAT LANDING!** / **ACCEPTABLE** / **HARD LANDING!** / **WASTED!**\n- Thresholds are profile-based per aircraft category (see [Aircraft Profiles](#aircraft-profiles))\n- HTML reports include a mini route map and charts; an `index.html` lists all flights\n- Reports are stored next to the plugin: `data/flights/` and `data/reports/`\n\n![Logbook Window](logbook.jpg)\n\n### Auto QNH\n\n- Monitors the difference between actual QNH and the pilot's altimeter setting\n- Shows an on-screen warning when the drift exceeds ~1.7 hPa\n- Optional auto mode (toggle via menu) silently syncs both pilot and copilot baro to actual QNH\n- Shows a second warning if pilot and copilot altimeters disagree by more than 0.01 inHg\n\n| Command | Description |\n|---|---|\n| `xp_pilot/qnh/set_qnh` | One-shot: set both baros to current QNH |\n| `xp_pilot/qnh/set_flightlevel` | One-shot: set both baros to 29.92 inHg |\n\n### Rain Blocker\n\nSuppresses X-Plane's 3D rain particles above 120 kts groundspeed. Hysteresis: rain returns below 80 kts. Toggle via the plugin menu or the command `xp_pilot/rain_blocker/toggle`.\n\n---\n\n## Installation\n\nDownload the ZIP from the [releases page](../../releases) and copy the `xp_pilot` folder into your X-Plane 12 plugins directory:\n\n```\nX-Plane 12/Resources/plugins/xp_pilot/\n├── mac_x64/xp_pilot.xpl   ← macOS (ARM + Intel universal binary)\n├── lin_x64/xp_pilot.xpl   ← Linux (x86_64)\n├── win_x64/xp_pilot.xpl   ← Windows\n└── data/\n    └── flight_logger_profiles.json\n```\n\nFlight records and HTML reports are stored next to the plugin at runtime:\n```\ndata/\n├── flights/        ← JSON flight records\n└── reports/        ← HTML reports + index.html\n```\n\nNo FlyWithLua required. No license needed for OpenStreetMap usage in reports.\n\n---\n\n## Building from Source\n\n**Prerequisites:** CMake 3.21+, Xcode Command Line Tools (macOS), GCC/Clang + libGL-dev (Linux) or MSVC (Windows)\n\n```bash\nmake setup    # Download X-Plane SDK, Dear ImGui, nlohmann/json\nmake build    # Build the plugin (universal binary on macOS)\nmake install  # Install + code-sign to X-Plane (macOS only)\n```\n\n---\n\n## Plugin Menu\n\nUnder **Plugins → xp_pilot**:\n\n| Item | Description |\n|---|---|\n| Auto QNH | Toggle automatic QNH sync (checkbox) |\n| Open / Close Logbook | Open the in-sim flight logbook window |\n| Rain Blocker | Toggle rain suppression at high speed (checkbox) |\n\n---\n\n## Aircraft Profiles\n\nLanding quality thresholds are configured per aircraft category in `data/flight_logger_profiles.json`. The plugin matches the aircraft's ICAO type code against the `match` strings in order.\n\n| Profile | Butter | Great | Acceptable | Hard |\n|---|---|---|---|---|\n| `ultra_light` | \u003c 75 fpm | \u003c 150 fpm | \u003c 250 fpm | \u003c 400 fpm |\n| `light_ga` | \u003c 100 fpm | \u003c 200 fpm | \u003c 300 fpm | \u003c 500 fpm |\n| `medium_ga` | \u003c 125 fpm | \u003c 250 fpm | \u003c 350 fpm | \u003c 600 fpm |\n| `turboprop` | \u003c 150 fpm | \u003c 275 fpm | \u003c 400 fpm | \u003c 650 fpm |\n| `vlj` | \u003c 200 fpm | \u003c 350 fpm | \u003c 500 fpm | \u003c 750 fpm |\n| `heavy_jet` | \u003c 250 fpm | \u003c 400 fpm | \u003c 600 fpm | \u003c 850 fpm |\n\nThe `shutdown_trigger` setting controls when a flight is finalised: `engine` (all engines off), `beacon` (beacon light off), or `nav_light` (nav lights off). Default is `engine`; can be overridden per aircraft entry.\n\n---\n\n## Releasing\n\n### Versioning\n\nDev builds (`make build`) embed `SNAPSHOT` as the version string. Only release builds show the real version number from `VERSION.txt`.\n\n### Release process\n\n1. Ensure all changes are committed and pushed to `main`\n2. Run the release command:\n   ```bash\n   make release VERSION=1.3.0\n   ```\n   This will:\n   - Write the version to `VERSION.txt`\n   - Create a commit (`release 1.3.0`)\n   - Create an annotated git tag (`v1.3.0`)\n   - Push the tag to origin\n3. On GitHub, [create a release](../../releases/new) from the pushed tag\n4. The CI pipeline detects the `release` event and builds all three platforms with the real version number\n5. The resulting `xp_pilot.zip` (containing macOS, Linux, and Windows binaries) is automatically attached to the GitHub release\n\n### Local release build\n\nTo build locally with the real version (e.g. for testing before release):\n```bash\nmake release-build\n```\n\n---\n\n## Development\n\n```\nsrc/\n├── main.cpp            Plugin entry points, draw callback, menu\n├── flight_logger.*     State machine, data acquisition, JSON save\n├── html_report.*       HTML/index generation, JSON parsing\n├── logbook_ui.*        Dear ImGui logbook window\n├── auto_qnh.*          Altimeter monitoring and auto-sync\n└── rain_blocker.*      Rain suppression at high speed\n```\n\n`sdk/` and `vendor/` are populated by `make setup` and are not committed to the repository.\n\n---\n\n## Platform\n\nmacOS 12+ (arm64 + x86_64 universal binary) · Linux (x86_64) · Windows · X-Plane 12\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwellinger%2Fxp_pilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frwellinger%2Fxp_pilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwellinger%2Fxp_pilot/lists"}