Plugin system + Steam Workshop + Steam CMD#38
Open
PyXiion wants to merge 22 commits into
Open
Conversation
…ixes Add a JetBrains-like vertical icon rail switching whole-window views (Mods, Steam Workshop). Steam Workshop uses a parented QWebEngineProfile + WebView with simple placeholder swap, LocalStorage enabled, and badge injection via runJavaScript at loadFinished. Co-Authored-By: opencode <opencode@anomalyco.com>
…ntCreation - QWebEngineScript at DocumentCreation for inject.js (no flash, observer catches elements before paint) - New detail page IIFE: removes #SubscribeItemBtn, replaces with pxmodrim-subscribe-btn (Add to Queue / In Queue / Installed) - Expose window.__pxmodrim shared state for cross-IIFE communication - onStateChange callback syncs button state from Python→JS pushes - Cleanup IIFE: CSS hide + MutationObserver, targets #global_header and .sharedfiles_item_page_header
Not up to standards ⛔🔴 Issues
|
| Category | Results |
|---|---|
| UnusedCode | 4 medium |
| BestPractice | 4 medium |
| Documentation | 12 minor |
| ErrorProne | 4 medium 4 high |
| Security | 1 medium 1 minor 34 high |
| CodeStyle | 14 minor |
| Complexity | 7 medium 5 minor |
| Comprehensibility | 1 minor |
🟢 Metrics 645 complexity · 7 duplication
Metric Results Complexity 645 Duplication 7
AI Reviewer: first review requested successfully. AI can make mistakes. Always validate suggestions.
TIP This summary will be updated as you push new changes.
… bar - chevron-left icon (Feather chevron mirrored) - Toolbar with back, forward, reload IconButtons + QLineEdit URL bar - URL bar: Enter navigates to URL, auto-prefixes https:// if missing - Back/forward buttons update enabled state from page history - Wire page.urlChanged to sync URL bar text - _update_nav_buttons() called on loadFinished and urlChanged
Fragile :// check replaced with QUrl.fromUserInput which handles user-entered URLs correctly (auto-scheme, IPv6, etc). Also upgrade http→https for security.
- Plugin base + PluginRegistry with setup/init/shutdown lifecycle - SteamCmdUiPlugin registering rail view, wrapping UI interactions - SteamCMD service extracted with loading_state support - CoreContext extension points (register_plugin, add_rail_view) - Fix: validate downloads respects UIPrefs; teardown disconnects all signals - Fix: remove dead target_folder param; use RIMWORLD_STEAM_APP_ID constant - Fix: OSError propagates instead of SymlinkConflictError for OS failures - Fix: stray save_config on strategy toggle removed
…d fixes - Bundle qwebchannel.js as package data via importlib.resources instead of hardcoded Linux path; works cross-platform - Add retry limit (100 attempts / ~3s) to inject.js setupWebChannel to prevent infinite loop - Remove no-op except OSError: raise in ensure_symlink - Remove unreachable if forced: branch in steam_cmd_plugin - Use RIMWORLD_STEAM_APP_ID constant instead of hardcoded 294100 - Use NamedTemporaryFile for steamcmd scripts; clean up in worker after each batch
Co-authored-by: codacy-production[bot] <61871480+codacy-production[bot]@users.noreply.github.com>
Co-authored-by: codacy-production[bot] <61871480+codacy-production[bot]@users.noreply.github.com>
Sets QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor and QT_ENABLE_HIGHDPI_SCALING=1 before QApplication creation. Fractional scale factors (e.g. 1.25×, 1.5×) cause QtWebEngine to render at an integer buffer scale while the compositor upscales, producing pixelated content. This matches the workaround used by Anki and qutebrowser for QTBUG-113574.
Replaces the old QWebEngineView-based toolbar and navigation with a QML implementation (SteamWorkshop.qml) using QtWebEngineQuick. Adds inject.js for DOM cleanup, mod-status badges, and detail-page button replacement. Updates tests for the new QML architecture. Also fixes: - worker.quit() called after download completes (adds quit() to DownloadRunner protocol) - Worker thread cleanup in steam_cmd_service.py finally block
…ON escaping, fake_steamcmd .bat, QML wait
- steam_cmd_worker: suppress ProcessLookupError in os.getpgid() - steam_workshop_view: keep failed downloads in queue for retry - steam_cmd_service: narrow Exception to httpx.HTTPError/ValueError/OSError - main_window: already uses save_ui_prefs (no-op)
- Add route dispatcher for details/grid pages in inject.js - Implement dep tree UI with collapsible nodes, circular/limit handling - Add API strategy (async Python fetch via bridge) + DOM strategy fallback - Add queue-with-deps and queue-solo buttons on detail pages - Improve SteamCMD worker regex robustness and logging - Fix _is_safe_member path traversal check and symlink creation - Update tests for .workshopItemTitle usage in inject.js
PyXiion
commented
Jul 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements #6 and partially #28