The412Banner/winlator-contents

Component catalog index for BannerHub / Winlator clients. Hosts contents.json (mirror of nightlies_components.json). Component binaries live on The412Banner/Nightlies releases.

C++

69

145 commits

updated Sep 27, 2026

See the code

README

winlator-contents

Discord

Component catalog for Winlator-family Android clients. this is a combination of components from my nightlies repo full of stuff ive gsthered from arihany, nick, steven, coffincolors and more over time

What's here

A single JSON file: contents.json — a flat list of available components (Wine, Proton, DXVK, VKD3D, Box64, WOWBox64, FEXCore) and where to download them.

Each entry uses a four-field schema:

{
  "type": "Box64",
  "verName": "Box64-0.4.3",
  "verCode": "0",
  "remoteUrl": "https://github.com/The412Banner/Nightlies/releases/download/Box64/Box64-0.4.3.wcp"
}

Live URL

https://raw.githubusercontent.com/The412Banner/winlator-contents/main/contents.json

Where the binaries live

This repo only hosts the index. The component archives (.wcp, .wcp.xz) are published as GitHub release assets on The412Banner/Nightlies; every remoteUrl in the catalog resolves to one of those assets.

Updates

The catalog is refreshed as new components ship. Treat it as eventually consistent with the upstream release set.

Wrapper catalog (wrappers.json)

wrappers.json is the curated, downloadable graphics wrapper catalog (the libvulkan_wrapper.so ICD layer + BCn/compat layers) offered inside Bannerlator's Wrapper Version Manager (issue #132). It lists every wrapper from across the Winlator family (Bannerlator, WinlatorMali, WinNative, GameNative, leegao, Ludashi, Pipetto), each credited to its upstream.

Live URL:

https://raw.githubusercontent.com/The412Banner/winlator-contents/main/wrappers.json

Each entry:

{
  "id": "gamenative-wrapper",
  "name": "GameNative — GameNative Wrapper",
  "description": "…",
  "author": "GameNative",
  "license": "credit GameNative",
  "url": "https://github.com/The412Banner/winlator-contents/releases/download/wrappers-v1/gamenative-20260723.tzst",
  "file_size": "747484",
  "file_checksum": "D6F3A6371FD5E8ECEC1053EBFBE5638B",
  "version": 3,
  "gpuTargets": ["all"]
}
  • id — stable identifier; the app records it on install so it can recognise the wrapper later. Never change an existing id.
  • version — a monotonic integer, and the update signal: the app compares it against the version a user installed at, and shows "Update available" when this is higher.
  • file_checksum — UPPERCASE MD5 of the .tzst; the download is rejected if it doesn't match.
  • gpuTargets — all, or a list like ["mali","exynos"]; entries that don't apply to the user's GPU are dimmed with a "Mali only" chip (never hard‑blocked).

🔧 Maintenance ritual — when a wrapper gets a new upstream build

Do these together so users are actually offered the update:

  1. Upload the new .tzst as an asset on the wrappers-v1 release (use a build‑stamped name, e.g. gamenative-20260719.tzst, so old installs still resolve).
  2. Update the entry in wrappers.json: url, file_size, file_checksum (UPPERCASE MD5), and — critically — bump version (1 → 2 → …). The version bump is what makes catalog‑installed users see "Update available"; changing the binary without bumping version ships a silent, un‑signalled change.
  3. If Bannerlator also bundles that wrapper (i.e. it's a built‑in wrapper-*.tzst swapped in the app), bump the matching catalogVersion in the app's app/src/main/assets/graphics_driver/bundled_wrappers.json to the same number — otherwise the bundled slot falsely flags itself as out‑of‑date once the bundled‑slot update badge is wired.

Only bump version when the binary actually changes — it's a build identity, not an edit counter. Fork‑specific entries (e.g. bannerlator-gamenative, wmali-gamenative) reflect what those projects ship and move independently of the canonical upstream entry.

DroidDeck (the Linux Steam client app)

Valve's own Linux Steam client on an Android phone, no root. The app's releases are published here for anyone to download; its source is in the private DroidDeck repo. DroidDeck was called SteamDeck until 0.1.6.

  • Latest: DroidDeck 0.1.6 — the new name; a fresh install sets itself up (runtime on the loading screen, Proton Experimental (ARM64) offered right after sign-in); drivers on full pages with downloads; made for a controller. Install DroidDeck-0.1.6.apk. It has a new app ID, so it installs beside SteamDeck, not over it.
  • Linux runtime — the app fetches it from linuxfs.json (currently linuxfs-r9, ~790 MB) the first time you press Play.
  • Desktop packages — LXQt, Firefox and the emulators, from desktop.json.

Community

Join our Discord: https://discord.gg/n8S4G2WZQ4

Contributors

The412Banner

143 commits

claude

2 commits

The412Banner/winlator-contents

Component catalog index for BannerHub / Winlator clients. Hosts contents.json (mirror of nightlies_components.json). Component binaries live on The412Banner/Nightlies releases.

C++

69

145 commits

updated Sep 27, 2026

See the code

README

winlator-contents

Discord

Component catalog for Winlator-family Android clients. this is a combination of components from my nightlies repo full of stuff ive gsthered from arihany, nick, steven, coffincolors and more over time

What's here

A single JSON file: contents.json — a flat list of available components (Wine, Proton, DXVK, VKD3D, Box64, WOWBox64, FEXCore) and where to download them.

Each entry uses a four-field schema:

{
  "type": "Box64",
  "verName": "Box64-0.4.3",
  "verCode": "0",
  "remoteUrl": "https://github.com/The412Banner/Nightlies/releases/download/Box64/Box64-0.4.3.wcp"
}

Live URL

https://raw.githubusercontent.com/The412Banner/winlator-contents/main/contents.json

Where the binaries live

This repo only hosts the index. The component archives (.wcp, .wcp.xz) are published as GitHub release assets on The412Banner/Nightlies; every remoteUrl in the catalog resolves to one of those assets.

Updates

The catalog is refreshed as new components ship. Treat it as eventually consistent with the upstream release set.

Wrapper catalog (wrappers.json)

wrappers.json is the curated, downloadable graphics wrapper catalog (the libvulkan_wrapper.so ICD layer + BCn/compat layers) offered inside Bannerlator's Wrapper Version Manager (issue #132). It lists every wrapper from across the Winlator family (Bannerlator, WinlatorMali, WinNative, GameNative, leegao, Ludashi, Pipetto), each credited to its upstream.

Live URL:

https://raw.githubusercontent.com/The412Banner/winlator-contents/main/wrappers.json

Each entry:

{
  "id": "gamenative-wrapper",
  "name": "GameNative — GameNative Wrapper",
  "description": "…",
  "author": "GameNative",
  "license": "credit GameNative",
  "url": "https://github.com/The412Banner/winlator-contents/releases/download/wrappers-v1/gamenative-20260723.tzst",
  "file_size": "747484",
  "file_checksum": "D6F3A6371FD5E8ECEC1053EBFBE5638B",
  "version": 3,
  "gpuTargets": ["all"]
}
  • id — stable identifier; the app records it on install so it can recognise the wrapper later. Never change an existing id.
  • version — a monotonic integer, and the update signal: the app compares it against the version a user installed at, and shows "Update available" when this is higher.
  • file_checksum — UPPERCASE MD5 of the .tzst; the download is rejected if it doesn't match.
  • gpuTargets — all, or a list like ["mali","exynos"]; entries that don't apply to the user's GPU are dimmed with a "Mali only" chip (never hard‑blocked).

🔧 Maintenance ritual — when a wrapper gets a new upstream build

Do these together so users are actually offered the update:

  1. Upload the new .tzst as an asset on the wrappers-v1 release (use a build‑stamped name, e.g. gamenative-20260719.tzst, so old installs still resolve).
  2. Update the entry in wrappers.json: url, file_size, file_checksum (UPPERCASE MD5), and — critically — bump version (1 → 2 → …). The version bump is what makes catalog‑installed users see "Update available"; changing the binary without bumping version ships a silent, un‑signalled change.
  3. If Bannerlator also bundles that wrapper (i.e. it's a built‑in wrapper-*.tzst swapped in the app), bump the matching catalogVersion in the app's app/src/main/assets/graphics_driver/bundled_wrappers.json to the same number — otherwise the bundled slot falsely flags itself as out‑of‑date once the bundled‑slot update badge is wired.

Only bump version when the binary actually changes — it's a build identity, not an edit counter. Fork‑specific entries (e.g. bannerlator-gamenative, wmali-gamenative) reflect what those projects ship and move independently of the canonical upstream entry.

DroidDeck (the Linux Steam client app)

Valve's own Linux Steam client on an Android phone, no root. The app's releases are published here for anyone to download; its source is in the private DroidDeck repo. DroidDeck was called SteamDeck until 0.1.6.

  • Latest: DroidDeck 0.1.6 — the new name; a fresh install sets itself up (runtime on the loading screen, Proton Experimental (ARM64) offered right after sign-in); drivers on full pages with downloads; made for a controller. Install DroidDeck-0.1.6.apk. It has a new app ID, so it installs beside SteamDeck, not over it.
  • Linux runtime — the app fetches it from linuxfs.json (currently linuxfs-r9, ~790 MB) the first time you press Play.
  • Desktop packages — LXQt, Firefox and the emulators, from desktop.json.

Community

Join our Discord: https://discord.gg/n8S4G2WZQ4

Contributors

The412Banner

143 commits

claude

2 commits

Languages

C++

91.9%

Shell

6.4%

C

1.7%