Skip to content

Split HLS and DASH into optional library modules - #415

Merged
linroid merged 2 commits into
mainfrom
split-hls-dash-modules
Oct 6, 2026
Merged

linroid merged 2 commits into
mainfrom
split-hls-dash-modules

Conversation

@linroid

@linroid linroid commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

HLS and DASH were bundled into core and enabled for every SDK consumer. Move them into independently published library:hls and library:dash modules exposing HlsDownloadSource and DashDownloadSource, with the same platform targets as core.

Each module owns its parser and tests; core retains shared manifest fetching, URL/header handling and sequential transfer helpers. Apps and CLI register both sources with their existing HTTP engine, preserving their download behavior. SDK consumers opt into either source through additionalSources.

Capability reporting now advertises hls.finite and dash.finite independently and retains media.finite when both are installed. The browser extension checks the matching capability. Former media source types route by URL for stored and pre-resolved tasks. URL validation errors identify the active hls or dash source, including failures in original URLs, redirects and manifest references. Includes SDK documentation and Android CI coverage for both modules.

Validation passed:

  • Core, HLS, DASH and Ktor JVM suites: 475 tests, including independent registration and legacy source routing.
  • HLS and DASH tests on JS/Node.js and WasmWasi: 38 tests.
  • Browser-extension suite: 161 tests.
  • Full Android CI command: testDebugUnitTest plus core, torrent, HLS and DASH Android host tests. The capability test supplies an explicit temporary directory, so it does not require an Android application context.
  • compilePublishedMetadata.
  • Android app, desktop app, CLI and shared iOS simulator Kotlin compilation.
  • git diff --check.

The experimental desktop Native Image launcher was updated but was not built.

Publication verification also passed:

  • Published api, core, hls and dash to an isolated local Maven repository, with signing disabled for this local check.
  • Verified both modules' root, Android, JVM, iOS device/simulator, JS and WASI publications: POM fields, Gradle metadata and referenced artifacts, sources, javadoc jars, and core dependencies. Neither module depends on the other.
  • Compiled standalone HLS-only and DASH-only consumers against those Maven coordinates for common metadata, JVM, JS, WASI and both iOS targets.
  • A dry run of the release workflow's publishAndReleaseToMavenCentral task includes all HLS/DASH signing and publishing tasks. No artifacts were uploaded to Maven Central.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-06T02:06:03.309717Z 96c2672 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 96c2672ee8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread library/core/src/commonMain/kotlin/com/linroid/ketch/core/media/MediaUrls.kt Outdated
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Test Results

 1 390 files  +16   1 417 suites  +16   9m 22s ⏱️ -47s
 9 125 tests +41   8 896 ✅ +41  229 💤 ±0  0 ❌ ±0 
10 464 runs  +41  10 235 ✅ +41  229 💤 ±0  0 ❌ ±0 

Results for commit c4c180f. ± Comparison against base commit 905e89a.

This pull request removes 49 and adds 90 tests. Note that renamed tests count towards both.
com.linroid.ketch.core.media.MediaDownloadSourceTest ‑ download_oversizedManifestAndLivePlaylist_neverWriteOutput
com.linroid.ketch.core.media.MediaDownloadSourceTest ‑ download_oversizedManifestAndLivePlaylist_neverWriteOutput[jvm]
com.linroid.ketch.core.media.MediaDownloadSourceTest ‑ download_redirectedPlaylist_joinsSegmentsAndScopesCredentials
com.linroid.ketch.core.media.MediaDownloadSourceTest ‑ download_redirectedPlaylist_joinsSegmentsAndScopesCredentials[jvm]
com.linroid.ketch.core.media.MediaManifestTest ‑ dash_durationTemplate_expandsNumberAndRepresentation
com.linroid.ketch.core.media.MediaManifestTest ‑ dash_durationTemplate_expandsNumberAndRepresentation[jvm]
com.linroid.ketch.core.media.MediaManifestTest ‑ dash_negativeRepeat_stopsAtNextExplicitTime
com.linroid.ketch.core.media.MediaManifestTest ‑ dash_negativeRepeat_stopsAtNextExplicitTime[jvm]
com.linroid.ketch.core.media.MediaManifestTest ‑ dash_segmentList_resolvesBasesAndRanges
com.linroid.ketch.core.media.MediaManifestTest ‑ dash_segmentList_resolvesBasesAndRanges[jvm]
…
com.linroid.ketch.core.media.MediaUrlsTest ‑ mediaUrls_crossOriginReferences_cannotReceiveCredentials
com.linroid.ketch.core.media.MediaUrlsTest ‑ mediaUrls_crossOriginReferences_cannotReceiveCredentials[jvm]
com.linroid.ketch.dash.DashDownloadSourceTest ‑ canHandle_onlyOwnProtocol_acceptsQueryAndFragment
com.linroid.ketch.dash.DashDownloadSourceTest ‑ canHandle_onlyOwnProtocol_acceptsQueryAndFragment[jvm]
com.linroid.ketch.dash.DashDownloadSourceTest ‑ download_oversizedManifestAndDynamicManifest_neverWriteOutput
com.linroid.ketch.dash.DashDownloadSourceTest ‑ download_oversizedManifestAndDynamicManifest_neverWriteOutput[jvm]
com.linroid.ketch.dash.DashDownloadSourceTest ‑ download_redirectedPlaylist_joinsSegmentsAndScopesCredentials
com.linroid.ketch.dash.DashDownloadSourceTest ‑ download_redirectedPlaylist_joinsSegmentsAndScopesCredentials[jvm]
com.linroid.ketch.dash.DashDownloadSourceTest ‑ resolve_invalidUrls_reportProtocolType
com.linroid.ketch.dash.DashDownloadSourceTest ‑ resolve_invalidUrls_reportProtocolType[jvm]
…

@linroid
linroid merged commit 0a6a9c8 into main Oct 6, 2026
13 checks passed
@linroid
linroid deleted the split-hls-dash-modules branch October 6, 2026 02:24
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.

1 participant