Etiquette and Mission ship in the native app today and are
reachable from the Jumpseat Info menu, but they do not exist in the Figma file. There is no
page spec for either — the suite has 12 page-spec files and none mentions them, including
pages/flight-finder.html, which covers the rest of the Jumpseat area.
This was already half-recorded: jsff-screen-data-gap.html carries open question
#4, “Jumpseat sub-nav — Tabs (Flight Finder · Airline Policies · Etiquette · Mission)
— section nav; confirm membership/routes.” That question was never answered, and in
the meantime the two tabs were built.
Until this build the two tabs were dead. Tapping Etiquette or Mission moved the sub-nav highlight and did nothing else — the Flight Finder search form stayed on screen, so the strip claimed to have navigated when it had not. That reads as a broken page rather than an unbuilt one, which is why they were built rather than left pending design.
BannerPage + WebView
Banner reads “Jumpseat Info / Etiquette and Courtesy”. Body is a single WebView
rendering a hardcoded HTML string. The video is an <iframe> to the
streaming host, pillarboxed with black bars. Heading sits under the video in grey. Copy is
Word-exported markup at a fixed size — it does not respond to the OS text-size setting.
AlpaScreen + design-system type Title bar reads “Etiquette” with a back chevron; the app's top nav and tab bar are present. Poster thumbnail is full-bleed 16:9, no pillarboxing, and tapping it opens the briefing. Heading sits beneath the poster as in native. Copy uses the app type scale, so it grows with the OS text-size setting, and the bullets are a real list.
BannerPage + WebView Banner reads “Jumpseat Info / Mission”. Eyebrow and sub-head, committee seal, then three mission points numbered by hand as separate paragraphs. Two typos are visible in the shipped copy (see below).
AlpaScreen + design-system type
Same content and order. The three points are a real ordered list, so the numbering is
structural and screen readers announce it. Typos corrected. The
jumpseatinfo.org link opens in the system browser and is now https.
| Aspect | Native | Blazor | Reason |
|---|---|---|---|
| Chrome | BannerPage banner with icon + two-line title | AlpaScreen title bar + back chevron, top nav, tab bar |
Matches every other Blazor page. The banner slot still exists via PageBanner keys, which were already defined for both screens. |
| Typography | Hind webfont at fixed pt/px | App type scale (Futura PT) | The native WebView ignores the OS text-size bridge; this copy now scales with the rest of the app. |
| Bullets / numbering | Paragraphs with a bullet glyph typed in and a 45px inline indent; mission points hand-numbered | Real <ul> / <ol> |
Structure is announced to screen readers instead of implied, and the indent leaves the markup. |
| Video | Inline <iframe>, pillarboxed | Poster thumbnail, opens the briefing outside the app | Forced, not preferred — see the note below. |
| Styling | Word-export markup (MsoNormal, mso-fareast-font-family, tab-interval) and inline styles | alpa-jsinfo-* CSS block |
House rule: visual values live in the stylesheet, not inline. |
The video cannot play inline, and that is a platform limit rather than a choice.
Measured on device: <video src=…> fails outright
(networkState 3, error 4 SRC_NOT_SUPPORTED) because the URL ends
.mp4 but serves a player page, not a stream. <iframe src=…>
never loads in-page either: BlazorWebView treats a navigation to an external origin as an
external link and hands it to the system browser, so the frame stays empty and the app
backgrounds. The native page gets away with an iframe only because a plain WebView does not
intercept. Rather than ship an embed that renders as a dead black box, the poster is an
explicit control.
The poster image is a captured frame, not a served asset. There is no fetchable poster URL — four candidate paths all fail — and the player page is CORS-blocked, so it cannot be derived at runtime. The thumbnail therefore will not follow if the briefing is ever re-cut. Ask for comms: a proper poster asset, ideally alongside a direct-play stream URL.
Three errors in the shipped native copy were corrected rather than ported. They are listed so the change is visible and reversible — this is committee copy, and it is comms' call.
| Page | Native (shipped) | Blazor | Type |
|---|---|---|---|
| Mission | “undermined in any manner of under any circumstances” | “…in any manner or under any circumstances” | Typo |
| Mission | “apporpriate procedures, equipment, and training” | “appropriate procedures…” | Typo |
| Etiquette | “multiple jumpseat riders whenunoccupied cabin seats” | “…riders when unoccupied cabin seats” | Missing space (string concatenation) |
| Mission | http://www.jumpseatinfo.org | https://www.jumpseatinfo.org | Scheme |
The native Jumpseat Info menu has five entries: Airline Policy, Etiquette and Courtesy, Mission, Jumpseat Flight Finder, and Alaska Reciprocal List. The Blazor sub-nav has four tabs and no route for the Alaska list. This is a separate gap and is not addressed in this build.
| # | For | Question |
|---|---|---|
| 1 | Design | Do Etiquette and Mission belong in the Jumpseat sub-nav at all, or should they sit behind a single “Jumpseat Info” entry as they do natively? This is jsff open question #4, still unanswered — the build assumes the sub-nav. |
| 2 | Design | Is the Blazor treatment acceptable as the design of record for these two screens, or should they be drawn in Figma and rebuilt? They are currently the only member-facing screens with no design source. |
| 3 | Design | Is a poster thumbnail that leaves the app acceptable, given inline playback is not possible? If not, the alternative is dropping the video from the page and linking it from the copy. |
| 4 | Comms | Can we get a poster asset for the briefing, and ideally a direct-play stream URL? Both would remove the captured-frame dependency. |
| 5 | Comms | Confirm the three copy corrections above, or tell us to restore the shipped wording byte-for-byte. |
| 6 | Design | Should Alaska Reciprocal List join the sub-nav, or stay out of the Blazor Jumpseat area? |
| 7 | Design | Mission's eyebrow (“Preflight Your Jumpseat”) and sub-head (“No Pilot Left Behind”) are left-aligned body text carried over from the native page. Should they become a proper hero treatment? |
| Screen | Blazor route | Native page |
|---|---|---|
| Etiquette | /jumpseat/etiquette | JumpseatEtiquettePage |
| Mission | /jumpseat/mission | JumpseatMissionPage |