Panel/docs/features/WORKSHOP_SYSTEM.md
2026-06-11 15:18:01 -05:00

95 lines
3.5 KiB
Markdown

# Workshop System
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
## Current State
The current Workshop/content work is split across two module lines:
- `Panel/modules/steam_workshop` - active user-facing Workshop module
- `Panel/modules/addonsmanager` - Server Content module, no longer a Workshop entry point
Important files:
- `Panel/modules/steam_workshop/module.php`
- `Panel/modules/steam_workshop/main.php`
- `Panel/modules/steam_workshop/monitor_buttons.php`
- `Panel/modules/steam_workshop/workshop_admin.php`
## Current Implemented Behavior
Steam Workshop is handled by the dedicated `steam_workshop` module.
Server Content must not show a `Steam Workshop Mods` category or route users into `addonsmanager/workshop_content.php`.
## Database State
The dedicated module still uses its own Workshop tables and per-game XML files under `Panel/modules/steam_workshop/game_configs/`.
## What Exists Today
The dedicated module still provides:
- user-facing Workshop pages
- monitor-button access from Game Monitor
- per-game Workshop configuration files
- uninstall and admin support pages
- optional regex/config-file editing for games that need automatic mod-list updates
- post-install-only workflows for games that only need a move/copy script
## Legacy RPC Install Semantics
The dedicated `steam_workshop` module still uses the legacy `steam_workshop` agent RPC for installs.
Current rule:
- if `config/filepath` is blank, the Panel passes a blank `config_file_path`
- agents must skip the generated config-file editing block entirely
- post-install scripts still run
- `WorkshopModsInfo` still records installed items
- uninstall can rely on `WorkshopModsInfo` when no config file is managed
This keeps advanced regex editing available without forcing it for simple Arma/DayZ-style `@mod` installs.
## Main Limitations
- Some repository docs still describe the abandoned addonsmanager Workshop direction and should be treated as historical until updated.
## Scheduler Integration
Scheduler behavior for Workshop should be evaluated against the dedicated module, not inferred from `addonsmanager`.
## Troubleshooting
| Symptom | Meaning | Fix |
|---|---|---|
| `Steam Workshop Mods` appears under `Server Content` | Old addonsmanager Workshop category logic is still present. | Remove the `workshop_item` category from Server Content UI and use the dedicated `steam_workshop` module. |
## Recommended Mental Model
Use `steam_workshop` for Workshop. Use `addonsmanager` for normal Server Content items only.
## References Reviewed
- `Panel/modules/steam_workshop` remains the active module in this repository checkout.
- `game_path`
- `server_path`
- `workshop_app_id`
- `steam_app_id`
- `items`
- `item_details`
- `install_strategy`
- `target_path`
- `extra.copy_keys`
- `extra.keys_target_path`
Generated Workshop jobs validate numeric item IDs, keep writes under the server home, use SteamCMD through a temporary runscript, copy files into the resolved target path, and copy `.bikey` files for DayZ/Arma strategies when enabled.
Bundled handler actions:
- `install` - download with SteamCMD, copy/install into target path.
- `update` - validate/download with SteamCMD, copy/install into target path.
- `check_updates` - validate/download only; does not alter live mod folders.
- `download_only` - download/cache only and leave install pending.
- `validate_files` - SteamCMD validate/download only.
- `remove` - move the installed target folder into `gsp_server_content/workshop/removed/`; this does not require SteamCMD.