Watching panel: the last row shows in full (0.108.74)

Paul, 6 November 2026: the sleep timer's last option showed only half. The
panel's row count now allows for its padding, its more lines and up to three
headings with their dividers.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-11-06 20:38:07 +00:00
co-authored by Claude Opus 5.5
parent 4594be7011
commit f28afd2a84
4 changed files with 8 additions and 6 deletions
+2 -2
View File
@@ -9,8 +9,8 @@ android {
applicationId = "tv.orbit.classic"
minSdk = 26
targetSdk = 36
versionCode = 233
versionName = "0.108.73-watching-bar"
versionCode = 234
versionName = "0.108.74-watching-bar"
}
buildFeatures { compose = true }
// The finished build for the TVs (Paul, 6 November 2026: the test build stuttered on the box). Not debuggable, so
@@ -62,9 +62,9 @@ internal class HttpsEmbyTransport(internal val deviceId: String = UUID.randomUUI
}
/** The sign-in headers for this kind of server. */
internal fun authHeaders(token: String?): Map<String, String> = when (kind) {
ServerKind.Emby -> mapOf("X-Emby-Authorization" to "Emby Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.108.73\"") +
ServerKind.Emby -> mapOf("X-Emby-Authorization" to "Emby Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.108.74\"") +
(token?.let { mapOf("X-Emby-Token" to it) } ?: emptyMap())
ServerKind.Jellyfin -> mapOf("Authorization" to "MediaBrowser Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.108.73\"" +
ServerKind.Jellyfin -> mapOf("Authorization" to "MediaBrowser Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.108.74\"" +
(token?.let { ", Token=\"$it\"" } ?: ""))
}
/** One picture from the provider, or nothing. Same fixed origin and no redirects, and failures are never shown or logged. */
@@ -496,7 +496,9 @@ internal fun EmbyPlaybackDialog(session: EmbySampleSession, plan: EmbyPlaybackPl
// list never pushes the bar off the screen (Paul, 6 November 2026).
trackMenu?.let { rows ->
BoxWithConstraints(Modifier.fillMaxWidth().weight(1f, fill = false)) {
val fits = ((maxHeight - 56.dp) / 34.dp).toInt().coerceIn(3, 12)
// Room kept for the panel's padding, its "more" lines and up to three headings with their dividers (Paul,
// 6 November 2026: the last row, the sleep timer's "After this programme", showed only half).
val fits = ((maxHeight - 150.dp) / 31.dp).toInt().coerceIn(3, 12)
TrackPanel(rows, trackCursor, Modifier.align(Alignment.BottomEnd), maxRows = fits)
}
}
@@ -39,7 +39,7 @@ internal class SecureMediaDataSource(private val session: EmbySampleSession) : B
next.instanceFollowRedirects = false
next.connectTimeout = 10_000
next.readTimeout = 20_000
next.setRequestProperty("User-Agent", "OrbitTV/0.108.73")
next.setRequestProperty("User-Agent", "OrbitTV/0.108.74")
next.setRequestProperty("Accept-Encoding", "identity")
session.mediaHeaders(address).forEach { (key, value) -> next.setRequestProperty(key, value) }
if (dataSpec.position != 0L || dataSpec.length != C.LENGTH_UNSET.toLong()) {