Skip to content

Packages: a category for every app, groups and variant labels - #64

Closed
PatrickSt1991 wants to merge 1 commit into
feat/catalog-categoriesfrom
feat/catalog-categorize
Closed

PatrickSt1991 wants to merge 1 commit into
feat/catalog-categoriesfrom
feat/catalog-categorize

Conversation

@PatrickSt1991

Copy link
Copy Markdown
Collaborator

Stacked on #63 (base branch feat/catalog-categories), so the validate bot checks these files against the new schema. GitHub retargets it to main once #63 merges; merge this one right after.

Every package gets a category, based on its description and the upstream README. Forks and builds of the same app are folded with group and labelled with variant:

Category Apps
media (15) Beam, Chorus2 + TeX (Kodi), Fladder, Flixor, ImmiTV, Jellyfin + Bonfire, Pelagica, PlayerAVPlay, Reiverr, Sonance3, tacplayer, Tessel, TVideoPlayer, Velvet TV
iptv (13) AquaPlay, EN TV Player, HackTV, IPTV Manager, OpenIPTV, OTTplay FOSS, React IPTV, RÚV, RÚV Live, StreamVault, TVapp, TVapp (Fixed), VexonTV
streaming (11) AniLiberty, AniUltimatium, Kick TV, Kick TV 2.0, Nuvio, Nuvio Native Legacy, Reelo, Stremio, TizenTube, Twitch, YouTube for Tizen
games (8) Chiaki, Doom, GameBoy Emulator, Moonlight (4 repos), OpenTTD
casting (4) AirTizen, FCast, go2rtc, RTSP Camera Viewer
tools (5) HyperTizen, iperf3 TV, Overscan, Tailscale, TizenBrew
other (4) Audio Recorder, Fireplace, Sportlink Club Viewer, TizenFeed

Groups: Moonlight (OneLiberty · Chrome, MrPhaze62 · No Gamemode, ToypoodleGaming, brightcraft · Tizen, brightcraft · Tizen ForceGM), Nuvio (Official web app plus the native legacy builds per Tizen range), RÚV (Sarpur, Barnaefni, Unglingar, Menntun, Útvarp, Sjónvarp live), Kodi (Chorus2 web UI, TeX web UI). Overscan, Sonance3, StreamVault and YouTube for Tizen fold by their own assets.

Kick TV and Kick TV 2.0 are different apps by different authors and stay separate. The README table is re-rendered with the Category column.

Every package gets its category, based on its description and the upstream
README. Forks and builds of the same app are folded:

- Moonlight: OneLiberty, MrPhaze62 (No Gamemode), ToypoodleGaming and
  brightcraft (Tizen, Tizen ForceGM) share group "Moonlight"
- Nuvio: the official web app and the native legacy builds per Tizen range
- RÚV: the five VOD/kids/teens/education/radio apps plus RÚV Live
- Kodi: the Chorus2 and TeX web-UI wrappers
- Overscan, Sonance3, StreamVault and YouTube for Tizen fold by their assets

README table re-rendered with the Category column.
@PatrickSt1991
PatrickSt1991 deleted the branch feat/catalog-categories October 8, 2026 08:22
@PatrickSt1991
PatrickSt1991 deleted the feat/catalog-categorize branch October 8, 2026 08:23
PatrickSt1991 added a commit to Apps2Samsung/Apps2Samsung that referenced this pull request Oct 8, 2026
## Why

The app list has grown to 80 rows (7 providers, 72 community files, the
custom-file row) in one alphabetical dropdown, and a good part of that
is variants of the same app: five Moonlight builds, six Nuvio, five
Overscan, six RÚV. This adds a category filter above the list and folds
those variants into one entry with a variant picker, on both heads.

The data comes from the community bundle itself:
tizen-community-packages
[#63](Apps2Samsung/tizen-community-packages#63)
adds `category`, `group` and `variant` to every package and ships a
`catalog.json` next to the `.wgt`/`.tpk` files in each release;
[#64](Apps2Samsung/tizen-community-packages#64)
fills them in. The fixed providers get their category from
`third-party-apps.json` (follow-up PR against `main`). Without a catalog
the list is exactly what it is today, so this can merge before either.

## What

**Core**
- `CommunityCatalog` model for the release's `catalog.json`;
`AddLatestRelease` keeps that asset's URL before narrowing to
installable files and downloads it on request.
- `CommunityAppList.Expand` replaces the per-asset expansion both heads
had inline. Files that share a group fold into one `GitHubRelease`
(`HasVariants`) whose assets carry a `Variant` label; every entry gets a
`Category`.
- `AppCategories`: the seven ids (media, iptv, streaming, games,
casting, tools, other), their en.json keys and English fallbacks.
`ProviderEntry.Category` for the fixed providers; unknown or missing
lands in Other.

**Desktop**
- New "Category" row above the app list: "All categories (57)" plus
every category that has apps, with counts. The custom-file row is never
filtered out; the selected app stays selected while its category is in
view.
- The second dropdown reads **Variant** for a folded community app
(Moonlight: "OneLiberty · Chrome", "brightcraft · Tizen ForceGM", …) and
**Version** otherwise, and shows the variant label in front of the file
name.
- First label reads "App" instead of "Release".

**Android**
- Same category picker. The variant picker lists variant labels only,
one line each, since a `Picker` shows a single line; the file name is in
the catalog view.
- Labels moved above their picker so it gets the full card width. Next
to the label the picker kept about 160 dp on a 360 dp phone once the
round "?" and rescan buttons took theirs, and names like "Jellyfin -
AVPlay - 10.10z SmartHub" were cut off. Those two buttons are now text
actions on the label line: "App details" and "Rescan".

Bundled manifests (desktop assets, mobile Raw) get a category per
provider. New en.json keys: `lblVariant`, `lblCategory`,
`lblAllCategories`, `lblAppDetails`, `lblRescan`, `category*`.

## Checked

- Core + desktop build (Release), localization check passes.
- `CommunityAppList.Expand` run against the catalog from #64 and the
asset list of `community-651`: 72 files become 50 entries (8 groups:
Kodi 2, Moonlight 5, Nuvio 6, Overscan 5, RÚV 6, Sonance3 2, StreamVault
2, YouTube 2), the IPTV filter yields 11, and without a catalog the same
72 files give the flat 72-row list with no variants.
- The mobile head is not built locally (no maui-android workload here);
the PR's Mobile (Android) job covers it.

---------

Co-authored-by: Patrick Stel <patrick.stel@embracecloud.nl>
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