feat: Gemini AI assistant and local MCP server - #2375
Draft
makarworld wants to merge 23 commits into
Draft
makarworld wants to merge 23 commits into
makarworld wants to merge 23 commits into
Conversation
Unify Workshop browse inject, missing-dependency Download/Workshop actions, mod-list import, SteamCMD logging, and Russian wiki pages. Co-authored-by: Cursor <cursoragent@cursor.com>
Fix mod list parser empty ModsConfig, dependency dialog tests, and lupdate extraction for settings section labels. Wrap remaining hardcoded UI strings and fill locales/ru_RU.ts (1458 entries). Co-authored-by: Cursor <cursoragent@cursor.com>
Deduplicate missing-dependencies dialog docstrings, harden workshop URL parsing, and add targeted unit tests for dependency resolution, mod list parsing, dialog UI logic, and check_dependencies flow. Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce a non-blocking AI chat panel with tool calling against RimSort mod context, plus an optional HTTP MCP server for external agents (list/describe mods, queue downloads/sort/save/run, workshop search). Co-authored-by: Cursor <cursoragent@cursor.com>
makarworld
marked this pull request as draft
August 20, 2026 06:59
Add tools to search Russian localizations for active mods and validate Steam Workshop IDs before download. Relax validation for metadata-only API responses while rejecting cross-app IDs. Co-authored-by: Cursor <cursoragent@cursor.com>
Show tool call traces in chat, progress bar for localization search, live Steam API key override, and stricter system prompts to prevent hallucinated workshop IDs. Co-authored-by: Cursor <cursoragent@cursor.com>
Merge workshop-branch Russian locale base with new AI assistant strings and ignore .cursor in git. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Use setattr for method mocks in test_runner_panel.py to satisfy mypy. Add unit tests for mod list parser, dependency resolver, browser URL helpers, SteamCMD log tail edge cases, and wrapper console_log_path. Co-authored-by: Cursor <cursoragent@cursor.com>
Extract shared alternative package ID test setup into _make_alt_dependency_metadata so jscpd zero-threshold CI passes. Co-authored-by: Cursor <cursoragent@cursor.com>
Match zh-cn permalink/parent pattern so Russian pages map to /ru/faq/ and user-guide/. Add per-locale UI strings for nav external links, back-to-top, and GitHub edit link. Co-authored-by: Cursor <cursoragent@cursor.com>
Add Russian translations for DB Builder, Rule Editor, sorting algorithms, databases, CLI reference, and Acknowledgements. Minor copy edits to downloading-and-installing.ru.md. Co-authored-by: Cursor <cursoragent@cursor.com>
Disable parallel_localization for local Jekyll serve on Windows where fork() is unavailable. Use with: bundle exec jekyll serve --config _config.yml,_config_local.yml Co-authored-by: Cursor <cursoragent@cursor.com>
Previous regen used bare pyside6-lupdate instead of translation_helper.py, adding <location> tags and re-flowing every existing entry across all 10 locales (~18k lines of noise).
- fix log_message override signature, unbound-self test call, socket address types and generator-return annotations flagged by pyright - annotate bare dict/Callable generics and missing param/return types for mypy strict mode - dedupe repeated tool-schema, query-parsing and mod-lookup code in app/mcp; extract shared test fixtures/helpers to clear jscpd's 0% duplication threshold - apply ruff --fix/format across the diff
Snapshot before starting AI UI fixes plan (dropdown download selector, bubble sizing, i18n) so work can continue in an isolated worktree.
# Conflicts: # locales/ru_RU.qm # locales/ru_RU.ts
- MissingDependenciesDialog: replace plain "Download Selected" button with a dropdown (SteamCMD / Steam client), moved next to the other action buttons; wire the Steam client path through main_content_panel and main_window_controller. - AiAssistantPanel: size chat bubbles to their content (min/max width via idealWidth, height via document size), block internal wheel scroll, and size "+ mod" buttons to match their bubble width. - Compile ru_RU.qm from ru_RU.ts, add missing AiAssistantPanel / MissingDependenciesDialog / ModDownloadListWidget translations.
feat(ai): dropdown download selector, bubble autosize, ru i18n
- eventFilter blocked all wheel events on bubbles instead of forwarding them to the chat scroll area, so hovering a message froze scrolling. - Mod links in chat had no tooltip; reuse the existing enriched-details fetch (image/author/tags) that previously only fed the download list. - Pagination in _make_mod_link_buttons_row deleted old "+ mod" buttons via deleteLater without removing them from _mod_buttons, so a later style refresh touched an already-destroyed QPushButton and crashed.
This branch has not been deployed
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.
Summary
--mcp/ Settings → Advanced) exposing tools for external agents: list/describe/search mods, read logs, queue download/sort/save/run, andsearch_workshop_modsvia Steam Web API.Test plan
http://127.0.0.1:17342/mcplist_installed_mods/list_active_modsfrom an MCP clientsteam_apikeyconfigured, callsearch_workshop_modsuv run pytest tests/ai tests/mcp tests/windows/test_ai_assistant_panel.py tests/utils/steam/test_workshop_search.py