The app is one binary for iPhone and iPad, so what was built for the
iPhone has to hold on an iPad too:
- Widgets: the trip, today and bookings widgets offer the iPad's extra large
size. The trip sets its countdown or its day beside the bookings or the
day's stops, today sets the day, its progress and weather beside the
timeline, bookings sets the next one as a card beside the rest. The other
widgets stay at the sizes they were designed for.
- The widget renderer draws every home-screen size of each widget as a 13"
iPad, an 11" iPad and an iPad mini give it (a mini's small widget is
smaller than an iPhone's), an iPad lock screen with the accessories and
the travel day's Live Activity, and that Live Activity at the iPhone's and
the iPad's widths. To draw it there, its lock-screen banner takes plain
values (TripDayBanner, now beside the today widget).
- Apple Wallet: an iPad cannot take a pass. The shell reports the wallet
feature only where PKPassLibrary and PKAddPassesViewController can add
one, so the UI shows no "Add to Apple Wallet" button there and hands a
.pkpass to the share sheet like any other file.
- Share extension: on an iPad it is presented over the full screen instead
of in a form sheet, and in a window of regular width its card stands
centred over the dimmed app, without the grabber, instead of rising from
the bottom edge. A narrow Split View window keeps the iPhone's card.
- Packing: a ring of what is in the bags, each bag against its weight limit,
the items still missing in their bag's colour, a nudge when departure is
two days or less away
- World map: the world as dots from the Atlas country shapes
(WorldGrid.swift, generated by WidgetPreviews/make-world-grid.py), the
visited countries glowing, the latest one ringed, continents as bars and
the latest countries with their flags; it needs no trip
- Travel group: who comes along as avatars, the latest chat messages as
bubbles and the open poll with its votes as bars
- The to-dos widget is about to-dos only; the packing ring moved out
The app sends the bags, the Atlas countries (an hour's cache) and the chat
and poll with the snapshot; all optional, as before.
- Names and descriptions of the four widgets in TREKWidgets/<lang>.lproj for
the 28 languages the app speaks, linted with the other property lists
- The preview renderer draws a cover photo state too, and the lock-screen
accessories as the system does, without a box of their own
- The large trip and today widgets put the stops right under the day and the
next booking at their foot instead of an empty middle; the large to-dos
widget names its two rings with their counts
- The trip and day for a travel day as a Live Activity: a progress ring, the
next stop large, the stops as segments, the Dynamic Island in the same green
- The place shows with a location arrow, and rows link through RowLink, which
the preview renderer draws without the Link it cannot render
Four widgets instead of one plain text block, drawn in the phone tokens
(warm paper by day, near black by night) with contour lines and a route arc
as the travel motif:
- Trip (small, medium, large, lock screen): the cover photo, a countdown ring
and a plane on its arc before the trip; the day of the trip as segments,
the weather and the next stops on frosted glass while it runs
- Today (medium, large): the day as a timeline in its category colours, with
a now line, the day's progress and the weather
- Bookings (small, medium, large, lock screen): flights, trains, hotels and
tables ahead as coloured tiles, the next one featured, status dots
- To-dos (small, medium, large, lock screen): to-dos and packing as nested
rings, the most pressing open to-dos with priority and due dates
The app now sends the destination, a small cover JPEG, the weather where the
trip is, the bookings ahead, the open to-dos and the packing count; every
new field is optional on both sides, so older binaries and servers keep
working. Timelines step every quarter hour so the now line moves without
the app. client/ios/WidgetPreviews renders every widget in every size, light
and dark, on the CI's Mac, uploaded as the widget-previews artifact.