Skip to content

🦀 Native Workshop browser, catalog backend and three build variants - #112

Merged
PyXiion merged 72 commits into
mainfrom
design/native-workshop-browser
Oct 6, 2026
Merged

PyXiion merged 72 commits into
mainfrom
design/native-workshop-browser

Conversation

@PyXiion

@PyXiion PyXiion commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Greetings, PyXiion! The silicon-based contributor is here.

What this adds

Native QML Workshop browser (src/pxmodrim/ui/plugins/workshop/, src/pxmodrim/core/workshop/)

  • Discover, Mods, Collections and Installed tabs, catalog filters (game version, searchable known-tag picker, sort), detail pages with the same description renderer as Mod Info.
  • Dependency-aware downloads into Local mods that never subscribe or activate; background queue with progress in the header; stale-while-revalidate page cache (memory + disk).
  • Installed cards and detail pages get Activate/Deactivate; fully downloaded collections get Activate all / Deactivate all / Activate only this pack (same UX as the Steam web integration); colour-coded buttons; vote percentages, size and score on cards.
  • Listing grids are virtualised and hidden grids freed; the Installed list is reused for 5 minutes (memory stays flat while switching tabs: 308 -> 194 MB over three rounds on 2047 mods).

Catalog backend (cf-workers/, TypeScript Cloudflare Worker)

  • Public read-only catalog API over Steam with D1 stores, FTS5 search index, crawler, query-page cache and stale-while-revalidate. Production Wrangler config stays out of the repo; all migrations through 0007_collection_compatibility.sql must be applied before deploying.

Build variants (packaging/build.py, .github/workflows/build.yml)

  • NoWorkshop (no downloader, no Downloads tab, no browser, PxSteamDL not built), SteamWorkshop (downloader + web browser), NativeWorkshop (downloader + native browser, no WebEngine); CI builds all three on Linux, macOS and Windows and names artifacts by variant.
  • build.yml runs on v* tags and manual dispatch. The published branch previously completed the full build matrix; v0.3.0 will rebuild every variant from the merged release commit.

Verification

  • Final local just ci: ruff, formatting, pyright (0 errors), layer check, 763 tests pass; backend TypeScript check, bundled Worker dry run and 40 tests pass.
  • Real-display smoke runs of Discover, Mods, detail, collection pages, Back and shutdown on Wayland; memory measured with memray.
  • Final offscreen application startup loaded 2091 mods, initialized the native Workshop plugins and reported running version 0.3.0.
  • Not run locally: full Nuitka builds of the three variants.
  • Final release-focused review found no evidence-backed blocking correctness/security bugs.
  • Release metadata prepared for v0.3.0. Codacy binary-artwork exclusions address its observed SARIF UTF-8 formatter crash; source scanning remains enabled.

PyXiion added 30 commits October 5, 2026 21:26
Delegates converted the whole highlighted-uuid list from Python on every
binding evaluation. Look up membership through a slot instead.
Diagnostics emitted the summary (which re-applies the current sidebar
filter) before the new sidebar entries, so the filter used stale uuids.
PyXiion added 28 commits October 6, 2026 16:09
@PyXiion
PyXiion merged commit 3f9dfae into main Oct 6, 2026
5 of 6 checks passed
@PyXiion
PyXiion deleted the design/native-workshop-browser branch October 6, 2026 16:27
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