- Updated
IniHandlerto usedeepMergefrominiApi.tsfor INI saves over WebSocket. - Existing INI properties not specified in new settings are preserved.
- Documented deep merge behavior in
handlers/README.mdand requirements.
- Test INI save functionality to confirm deep merge works as expected for all INI property types.
- Update frontend to clarify that only specified settings are updated, others are preserved.
- Review requirements and plan files for any additional INI/config management changes needed.
- Refactored WebSocket message handling in
server.tsto use handler classes per domain (session, profile, base install, ini/config). - Each handler exposes a map of message type to function. Master handler map dispatches messages.
- Added documentation table in
handlers/README.md.
- Removed deprecated REST endpoint
/api/install-instancefromserver.ts. Instance installs are now handled exclusively via WebSocket and executed usingadminSocketClientfor admin permissions. - Updated
requirements.mdto clarify that all instance install actions must use WebSocket andadminSocketClient.
- Test all WebSocket message types for correct routing and behavior.
- Confirm all code paths use WebSocket for instance installs.
- Remove any remaining references to the old REST endpoint in documentation or client code if present.
- Consider further splitting or documenting handler context dependencies.
2025-07-06: User required all instance install actions to be handled via WebSocket and adminSocketClient for admin permissions. Modal and backend were refactored to use wsRef.current and WebSocket exclusively. REST endpoint for install-instance was deprecated and is now removed. Documentation and requirements updated to reflect the new workflow.
This plan outlines the recommended approach for implementing the features described in requirements.server-instance-management.md for the manage-instances branch. The goal is to deliver robust, maintainable, and extensible server process and base file management for Ark: Survival Ascended servers.
- Update ServerProfile: Add
autoStart,manuallyStopped, andbaseInstallIdfields. - Add BaseInstallProfile: Track
id,path,version,lastUpdated, and metadata. - Backend Config: Add
steamcmdPathandbaseInstallUpdateCheckInterval.
- Install/Detect SteamCMD: Implement logic to set and validate the SteamCMD path. Provide UI/config options for users to set/update the path.
- Disable base file actions if SteamCMD is missing: Show clear errors in frontend/backend.
- Automatic Detection of Base File Installs: For any server instance with a
directoryset, the backend should check the junction path of thesteamappsfolder (if it exists) to determine the base file install. Detected base install paths should be auto-added to the managed list (if not already present) and must be unique. - BaseInstall CRUD: Backend endpoints and frontend UI for adding, updating, and removing base installs are implemented. Auto-detected installs are included and duplicates are prevented. Users can now fully manage base installs from the UI.
- Steamapps & .acf Parsing: On base install add/update or auto-detection, check for
steamappsfolder and parseappmanifest_2430930.acfforbuildid. - Build ID & Update Checks:
- Periodic (configurable) backend polling of the SteamCMD API for the latest build id is implemented.
- Local build id is compared; base installs are marked as "update available" if out of date.
- Update status is exposed in frontend base install management and RCON window header.
- Prevent Updates While In Use: Block base install updates if any running server is using the install.
- Process Manager Service:
- Track running server processes, start/stop, and monitor exit events.
- On backend startup, auto-start servers as per profile settings and manual stop state.
- Track and expose process start time.
- Frontend Controls:
- Add right-click context menu in TabManager for start/stop (single/multi-select).
- Show process status in server list and RCON window.
- Multi-select disables output/player list, enables batch actions.
- Script Engine:
- Parse scripts line by line, supporting RCON commands,
wait <ms>, andupdate-base-install <id>. - Implement script execution queue per server, with status/cancellation support.
- Block
update-base-installif any server using the base is running. - Provide built-in restart/update script template.
- Parse scripts line by line, supporting RCON commands,
- Frontend Integration:
- Add "Execute Script" to RCON manager context menu (multi-select supported).
- Modal for script selection and execution.
- Show script status and allow cancellation.
- Robust error messages for all user actions.
- Audit logging for process and base install actions.
- Security: Restrict sensitive actions to authorized users (future-proof for RBAC).
- Design for future games/types: Abstract process and install management for easy extension.
- Unit/integration tests for backend services and critical frontend flows.
- Data model and config changes (complete)
- SteamCMD detection and config UI (complete)
- Base install CRUD, .acf parsing, and update check logic (complete)
- Server process manager and backend process tracking (complete)
/api/process-statusendpoint for real-time status of all managed servers (complete)- Frontend controls for process and base install management (complete: process status display, controls, and base install management UI)
- RCON script engine and frontend integration (next)
- Error handling, logging, and security improvements (next)
- Testing and documentation (next)
- Use TypeScript types/interfaces for all new models.
- Prefer async/await and robust error handling in backend.
- Use React context/hooks for frontend state where appropriate.
- Document all new endpoints and config options.
This plan is designed to deliver incremental value, with clear separation of concerns and extensibility for future features.