# v1.15.2: Media Previews, Nested Replies, and Health Connect

## Improvements and Bug fixes

- Plays the track a media player page is *about*, instead of trying to play the
  page. A link to `e.nostr.build/a_<id>_mp3` rendered a permanently-buffering
  player: that URL answers `text/html` — it is the HTML player page, and the
  file it is about is named in its `og:audio`. Two separate defects produced it,
  and both are fixed. File-extension matching now requires a real dot, so a path
  ending in the *letters* of an extension (`_mp3`, or a prose slug like
  `/my-thoughts-on-mp3`) is no longer handed to the video player; and the
  preview pipeline reads `og:audio` / `og:video` and plays that file, with the
  page's `og:image` as poster.

  Reading a declaration is not trusting it: YouTube declares an `og:video` whose
  type is `text/html` — an embed page, not a video — so it is refused and keeps
  its link card.

- Loads nested NIP-22 replies in the feed, not only after a thread is opened.
  NIP-22 puts the direct parent in lowercase `e`/`a` and the conversation root in
  uppercase `E`/`A`, and a comment two or more levels deep carries only the root.
  The engagement subscriptions asked for the lowercase tags alone, so everything
  below the first level was invisible until `ThreadScreen` opened a subscription
  of its own. Each relay now gets a second, root-scoped filter.

  Kind 1619 (NIP-34 PR updates) moves with it: the spec gives it only
  `["E", <pull-request-id>]` and no lowercase `e` at all, so it had been sitting
  in a filter it could never match.

## Health Connect

- Adds a rationale screen explaining what Amethyst reads from Health Connect and
  why — the data types, their purposes, the seven-day and composer-only limits,
  and what it never does (no writes, no route or location). It opens from the
  workout composer, from Health Connect's own permission screen, and stands alone
  without an account, which is what Google Play requires of it.
- Stops blocking the UI thread on Health Connect reads, and memoizes source app
  names rather than asking `PackageManager` again for each record.
- Replaces the whole form when a second workout suggestion is picked, so the
  distance and calories of the first no longer leak into the second.
- Documents the integration for Play Console review, and in `PRIVACY.md`.

## Build

- Bumps `appCode` to 460.
