mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
app 1.15.1 -> 1.15.2, appCode 459 -> 460. That single edit drives Android's versionName/versionCode, Desktop and CLI packageVersion, quartz's Maven version and geode's RelayInfo.VERSION. Three substantive PRs since v1.15.1, plus Crowdin translations and the packaging syncs the bump workflows opened after the last tag: - #4092 media previews: an extension match now requires a real dot, so a player page whose path merely ends in the letters `_mp3` stops going to the video player, and `og:audio`/`og:video` are read and played with the page's `og:image` as poster. A declaration whose type is `text/html` -- YouTube's -- is refused. - #4095 nested NIP-22 replies: engagement subscriptions asked only for the lowercase `e`/`a` tags, so a comment two or more levels deep was invisible until ThreadScreen opened its own subscription. Each relay gets a second, root-scoped filter on `E`/`A`. Kind 1619 moves there too -- NIP-34 gives PR updates only an uppercase `E`, so it had been in a filter it could never match. - #4096 Health Connect: a rationale screen Play requires, reachable from the composer, from Health Connect's permission screen and standalone without an account; reads moved off the UI thread; source names memoized; and the workout form is replaced rather than merged when a second suggestion is picked. Verified on a Pixel 9 emulator before cutting, since two of the three are only observable on device: the og:audio track plays in a thread with real transport controls (00:30 / 05:00) where it used to buffer forever, and the Health Connect rationale opens from all three routes -- including the one that matters for review, where Health Connect's own permission screen launches our ViewPermissionUsageActivity through the START_VIEW_PERMISSION_USAGE-guarded filter. RELEASE_NOTES_ID deliberately stays on the v1.15.0 note: RELEASE_OPS has it repointed on x.y.0 only. Left alone deliberately: everything under */packaging/ and translators.json's tag, which the bump workflows and the Crowdin job write after the tag exists. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VgVDQQXAg4cmzsWHoJj61k
46 lines
2.3 KiB
Markdown
46 lines
2.3 KiB
Markdown
# 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.
|