Skip to content

Repository files navigation

Free Flight Tools

The landing page for a small set of free tools for cross-country paraglider pilots. Live at freeflight-tools.github.io.

Windmap Wind stations near you, drawn where they actually are. An XCTrack overlay plus a standalone list.
HX Call The phone number that says whether a Swiss HX airspace is active. Needs no data connection, only enough signal to dial.

The XCTrack widget skill

Building the two tools above turned up a lot of measured detail about XCTrack's Web page widget: what its JS bridge exposes, which settings a pilot must set, what the WebView can and cannot do, and the traps that each cost an afternoon to find. That is packaged as an agent skill so it is useful to anyone building a third widget, not just to us.

npx skills add freeflight-tools/freeflight-tools.github.io

Nothing in it is specific to wind or airspace. It lives in skills/xctrack-web-widget/, and everything in it was measured on device rather than inferred.

What's in here

index.html      the whole site
404.html        recovers a truncated link to a working tool
icon.svg        the family mark, a ridge in contour lines
img/            screenshots and the social preview cards
img/screenshots/     the full-resolution masters the web files come from
tools/og-card.html   regenerates img/og-hub.jpg
skills/         the XCTrack web widget skill, published to skills.sh

One file, no dependencies, no build step, same as the tools it links to.

Running it

python3 -m http.server 8080     # then http://localhost:8080

Regenerating the preview image

The 1200×630 card chat apps show when the link is pasted. Serve the repo root, then:

CH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
"$CH" --headless=new --virtual-time-budget=5000 \
      --window-size=1200,630 --screenshot=/tmp/og-hub.png \
      "http://localhost:8080/tools/og-card.html"
magick /tmp/og-hub.png -quality 86 -strip img/og-hub.jpg

Both commands. The card carries two full-colour terrain photographs, which put the png at 500 KB against ~130 KB for the two tool cards. WhatsApp is where these links get pasted and is the strictest client about preview size. JPEG q86 is 117 KB and identical at the size a client renders it; quantising the png made it larger, because the dither noise defeats png's compression.

Regenerating the tool screenshots

They are photographs of a phone running the widget over XCTrack's own map, not captures of the standalone pages: that is what a pilot actually sees, and it is the thing a stranger understands without reading anything. Take a new one on a device, keep the transparent surround, and drop the master in img/screenshots/. Then, from the repo root:

for n in windmap hxcall; do
  magick "img/screenshots/$n-widget-source.png" -trim +repage \
         -resize 780x -strip /tmp/$n-big.png
  cwebp -q 82 -alpha_q 90 -m 6 -quiet /tmp/$n-big.png -o "img/$n-widget.webp"
  magick "img/screenshots/$n-widget-source.png" -trim +repage \
         -resize 560x -dither FloydSteinberg -colors 64 -strip "img/$n-widget.png"
done

The webp is what everyone gets (~150 KB, full 780px). The png is the fallback for a browser without webp, so it is deliberately smaller and coarser: 560px and 64 colours holds it near 230 KB, where a straight 780px png is 1.5 MB. Regenerate the pair together, and update the width/height on the <img> if the capture's aspect ratio changes.

The four older files, img/windmap.png, img/hxcall.png and their -dark twins, were captures of the standalone list pages at 436px inside a card that rendered ~640px, so they were upscaled and soft. index.html no longer uses them; _gtpreview.html still does.

Translation

English is the source language and stays that way in the apps themselves: readings are read in the air, and aviation English is the right register for them. This page and the two setup pages carry an automatic translation widget instead. The slot for it is marked at the bottom of index.html.

It must never be added to app.html or widget.html in either tool. HX Call's whole point is working with no data connection, and a third-party script would put a network dependency inside that guarantee.

Licence

MIT. No warranty of fitness for flight preparation.

About

Landing page for Free Flight Tools — small free tools for cross-country paraglider pilots.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages