Schedule I Development Environment Manager
Schedule I Developer Environment Utility — v2.1.1
Date: 2025-09-14
Highlights
- DepotDownloader command hardening (no shell, masked passwords, input validation)
- Automatic MelonLoader install after DepotDownloader downloads (safe OSS unzip)
- Managed Environment UX: inline login, per-branch progress + cancel, repair status
- Setup Wizard UX: clear Steam login messaging, restored Next on integration step, dedicated MelonLoader prompt
- Version + packaging: v2.1.1, output to
dist-v2.1.1/, cleaner prepackage
Security
- Disabled shell execution for all DepotDownloader spawns (args arrays only)
- Masked sensitive
-passwordargument in logs and progress - Basic input validation: username, password, appId, branchId, paths
MelonLoader Integration
- Downloaded to temp via Node fetch and extracted using
extract-zip - Integrity check verifies
MelonLoader/folder andversion.dllexist - Auto-install toggle in Settings (default ON) and first-run prompt in Setup Wizard
Managed Environment
- Steam Session card shows inline login when needed; hidden when logged in
- Install/Reinstall runs DepotDownloader directly when configured and logged in
- Inline per-branch progress with Cancel; post-download auto-installs MelonLoader (if enabled)
- “Installed” only when
Schedule I.exeexists; otherwise “Needs Repair” - Stored Build ID + live Steam Build displayed; Update Available flagged by comparison
Setup Wizard
- Steam Login step: session-only credentials (not stored on disk), auto-advance to Copy
- DepotDownloader Integration step: Next button restored
- Removed redundant Cancel; kept inline cancel next to DD progress
- Auto-install MelonLoader prompt uses its own dialog title and buttons
Versioning & Packaging
- App version: 2.1.1
- Output directory:
dist-v2.1.1/ - New scripts:
clean(rimraf) andprepackageto rebuild into a clean directory - Windows dev icon:
Assets/icon.icofor title bar/taskbar; PNG fallback - Log filenames:
DD-MM-YYYY-HH-MM.log
Developer Notes
- New IPC:
melonloader:installin main process - Preload exposes
electronAPI.melonloader.install(branchPath) - Added dependency:
extract-zip