2 Commits
0.0.10 ... main

Author SHA1 Message Date
5b57e0c39b Disable recursive search for dependacies 2025-09-19 12:57:27 -04:00
e36994be55 update readme 2025-09-17 00:40:27 -04:00
2 changed files with 73 additions and 3 deletions

View File

@@ -1,3 +1,73 @@
# SeaLoader
A Modloader based off of the workshop
SeaLoader is a minimal, dark-themed helper app for Sea Power that fetches a scenarios required Steam Workshop mods, resolves names, checks for transitive dependencies, and enables matching mods in your `usersettings.ini`. It also supports subscribing to missing mods, scanning the Steam Workshop folder for installed content, and self-updating.
## Features
- Fetch required mods from a Workshop URL and resolve their names
- Recursive dependency expansion: also fetches each required mods own requirements
- Two-pane UI:
- Installed Mods (from Steam Workshop folder) with status: Enabled, Disabled, or Disabled (Not in INI)
- Scenario Required Mods with Installed/Missing status
- Enable Matching Mods: writes to `[LoadOrder]` and appends missing workshop IDs as new `ModNDirectory=<id>,True`
- Subscribe Missing Mods: opens Steam deep links per mod; step-by-step flow with remaining count
- Refresh: reload Installed Mods and re-fetch Required Mods (if URL provided)
- Guided flashing to lead the user through steps (URL → Fetch → Subscribe/Refresh → Enable)
- Game Path persistence: remembers the Steam game path next to `usersettings.ini`
- Version display and update check (Gitea API + RSS fallback), with clickable link
- Auto-update install (EXE only): download zip, replace EXE safely, relaunch
## Requirements
- Windows 10+
- Python 3.10+ (for running from source) or the packaged EXE
- Steam client installed and logged in (for Subscribe Missing Mods)
## Run from source
```bash
python -m pip install -r requirements.txt
python sealoader_gui.py
```
## Usage
1. Game Path: Click Browse and select your Sea Power install folder (e.g., `.../steamapps/common/Sea Power`).
- If previously saved, SeaLoader loads it automatically on start.
2. Paste a Workshop URL and click Fetch Required Mods.
- The right list shows all required Workshop IDs and names, including transitive dependencies.
3. If some are Missing:
- Click Subscribe Missing Mods. A per-mod dialog will open; it shows how many remain.
- After subscribing, click Refresh to reload Installed Mods and re-fetch required.
4. Click Enable Matching Mods to enable all installed required mods.
- A backup `usersettings.ini.bak` is created.
Statuses in Installed Mods:
- Enabled: Present in INI and enabled
- Disabled: Present in INI but disabled
- Disabled (Not in INI): Found in workshop folder but no INI entry yet (Enable adds it)
## Self-update
- SeaLoader shows current and latest versions in the footer.
- If a newer version exists, a modal dialog appears with options:
- Download: opens the release page
- Auto-Install (EXE only): downloads `SeaLoader_Windows_x64.zip`, replaces `SeaLoader.exe`, and relaunches
- Latest version is discovered via Gitea API with RSS fallback: `releases.rss`.
## Build (Gitea Actions)
- Workflow: `.gitea/workflows/release.yml`
- On release: stamps `sealoader_version.py` with the tag, bundles PNGs, and builds onefile EXE via PyInstaller
- Uploads `SeaLoader_Windows_x64.zip` as the release asset
- Runner: Windows; steps use `powershell`
## Files
- `sealoader_gui.py`: GUI application
- `steam_required_ids.py`: Workshop scraping, ID resolution, recursive expansion
- `sealoader_version.py`: version stamp used by the update checker
- `requirements.txt`: dependencies (requests, beautifulsoup4)
- `.gitea/workflows/release.yml`: release build pipeline
## Troubleshooting
- Footer icons not visible in EXE: ensure `SeaLoader.png` and `hrsys.png` are present at build; the workflow includes them via `--add-data`.
- Update checker says unavailable: RSS fallback is in place; ensure `SEALOADER_GITEA` and `SEALOADER_REPO` env vars are correct if using a mirror.
- Subscribe Missing Mods not opening Steam: ensure Steam client is running and youre signed in.
- INI not updated: verify `usersettings.ini` path and that `[LoadOrder]` exists. SeaLoader will append new entries if needed.
## Credits
Created by HudsonRiggs.Systems.

View File

@@ -13,7 +13,7 @@ from typing import Dict, List, Tuple
import tkinter as tk
from tkinter import messagebox, ttk, filedialog
from steam_required_ids import extract_required_item_ids, resolve_workshop_names, expand_required_ids_recursive
from steam_required_ids import extract_required_item_ids, resolve_workshop_names
from sealoader_version import __version__
@@ -452,7 +452,7 @@ class SeaLoaderApp(tk.Tk):
def task():
try:
base_ids = extract_required_item_ids(url)
ids = expand_required_ids_recursive(base_ids)
ids = base_ids
# Reuse installed cache to reduce API calls
names_map = {i: self.installed_names_map[i] for i in ids if i in self.installed_names_map}
ids_to_lookup = [i for i in ids if i not in names_map]