Skip to content

fix: let installed PWA rotate with the device#238

Merged
justmarks merged 2 commits intomainfrom
claude/fix-pwa-orientation-3S5Bh
May 9, 2026
Merged

fix: let installed PWA rotate with the device#238
justmarks merged 2 commits intomainfrom
claude/fix-pwa-orientation-3S5Bh

Conversation

@justmarks
Copy link
Copy Markdown
Owner

Summary

  • The web app manifest was pinning orientation: "portrait", which (on Android Chrome at least) prevented the installed PWA from rotating with the device.
  • Switch to orientation: "any" so installed PWAs follow the OS orientation — useful for phones in a car mount, tablets, and accessibility setups.

Test plan

  • Install PWA on Android Chrome, rotate device — confirm app rotates to landscape
  • Install PWA on iOS (Add to Home Screen), rotate device — confirm app rotates (iOS already ignored manifest orientation, so behavior should be unchanged)
  • Verify manifest is still served at /manifest.webmanifest and orientation field reads "any"

Generated by Claude Code

The manifest was pinning orientation to portrait, so installed PWAs
ignored device rotation. Switch to "any" so phones in a car mount,
tablets, and accessibility setups can follow the OS rotation.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
itinly Ready Ready Preview, Comment May 9, 2026 3:48am

… costs to overflow

The mobile trip-detail header was rendering the trip title twice — once
in the sticky `MobileHeader` strip and again as the carousel/timeline's
own larger title block immediately below. Drop the title from the
sticky header so only the prominent block remains.

While reshuffling header chrome:

- Surface "Scan emails" as a visible Mail-icon button (owner +
  edit-contributor only), instead of hiding it three taps deep in the
  overflow menu. It's the primary inbound flow for new trip data.
- Move the costs pill into the overflow menu as a "Costs · $X" item.
  The header was crowded once Scan moved up, and costs are a reference
  surface rather than a frequent action.
@justmarks justmarks merged commit 4cd320c into main May 9, 2026
3 checks passed
@justmarks justmarks deleted the claude/fix-pwa-orientation-3S5Bh branch May 9, 2026 03:51
justmarks added a commit that referenced this pull request May 9, 2026
…ties (#239)

* fix(mobile): unstick PWA orientation, add date range + slash-split cities

The PWA orientation fix in #238 only updated the manifest source. The
service worker was caching `/manifest.webmanifest` cache-first, so
Chrome's update probe kept seeing the old `orientation: portrait`
value and installed PWAs stayed locked to portrait. Bump SW_VERSION
to v7 to evict the stale runtime cache, and switch the manifest to
network-first so future manifest changes propagate without another
SW bump.

While in the mobile trip header:

- Surface the trip's date range next to the title (right-aligned,
  small + muted) so users can confirm they're looking at the right
  trip without scrolling into the day strip.
- Use the slash separator and exclude the home bookend from the
  cities row — a SEA → Tokyo → Kyoto → SEA itinerary now reads as
  "Tokyo / Kyoto" rather than "Seattle · Tokyo · Kyoto". The
  bookend logic is shared with `primaryLocationFor` via a new
  `tripDestinationCities` helper in `@travel-app/shared`.

https://claude.ai/code/session_01H5kv9m5n8eYqwnyGZzvgTW

* fix(mobile): use middle-dot separator on the cities row

Slash reads as a transfer-day notation ("Paris / Rome" = travel from
one to the other on the same day) elsewhere in the app, so reusing
it for the trip-level cities row at the top of the mobile carousel
muddied the meaning. Middle-dot is the same separator the row used
before slash-split and matches the rest of the app's chip / pill
separators.

https://claude.ai/code/session_01H5kv9m5n8eYqwnyGZzvgTW

---------

Co-authored-by: Claude <noreply@anthropic.com>
justmarks added a commit that referenced this pull request May 9, 2026
…ll CTA (#240)

* fix(mobile): unstick PWA orientation, add date range + slash-split cities

The PWA orientation fix in #238 only updated the manifest source. The
service worker was caching `/manifest.webmanifest` cache-first, so
Chrome's update probe kept seeing the old `orientation: portrait`
value and installed PWAs stayed locked to portrait. Bump SW_VERSION
to v7 to evict the stale runtime cache, and switch the manifest to
network-first so future manifest changes propagate without another
SW bump.

While in the mobile trip header:

- Surface the trip's date range next to the title (right-aligned,
  small + muted) so users can confirm they're looking at the right
  trip without scrolling into the day strip.
- Use the slash separator and exclude the home bookend from the
  cities row — a SEA → Tokyo → Kyoto → SEA itinerary now reads as
  "Tokyo / Kyoto" rather than "Seattle · Tokyo · Kyoto". The
  bookend logic is shared with `primaryLocationFor` via a new
  `tripDestinationCities` helper in `@travel-app/shared`.

https://claude.ai/code/session_01H5kv9m5n8eYqwnyGZzvgTW

* fix(mobile): use middle-dot separator on the cities row

Slash reads as a transfer-day notation ("Paris / Rome" = travel from
one to the other on the same day) elsewhere in the app, so reusing
it for the trip-level cities row at the top of the mobile carousel
muddied the meaning. Middle-dot is the same separator the row used
before slash-split and matches the rest of the app's chip / pill
separators.

https://claude.ai/code/session_01H5kv9m5n8eYqwnyGZzvgTW

* feat(mobile): expand timeline edge-to-edge in landscape, rename install CTA

Two small mobile polish items:

- Mobile timeline view: in landscape, override the day-column track
  variable to `minmax(7rem, 1fr)` so few-day trips fill the rotated
  viewport instead of leaving the right half of the screen empty.
  Portrait keeps the fixed 7rem track so pills `truncate` cleanly at
  narrow widths, and the wrapper still scrolls horizontally when
  `7rem × N` is wider than the viewport.

- Rename the user-menu "Add to Home Screen" item to "Install App" on
  both the Android (`beforeinstallprompt`) and iOS (Safari Share-sheet
  hint) branches — matches the conventional Chrome PWA install
  language. The iOS instruction text that quotes the literal Safari
  menu label ("Tap the Share button → Add to Home Screen") is left
  intact so users can still find the system control by name.

https://claude.ai/code/session_01H5kv9m5n8eYqwnyGZzvgTW

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants