Development

Contents

Structure

PathResponsibility
src/components/main_window.vueMain window and commands
ramaccountmanager.vueRAM actions, folders, copying, dialogs
ramdesignerform.vue, src/data/ram-gui.jsonImported designer form rendering
accountmanager.vue, launcherpanel.vueProfiles, memory, launcher UI
localvaultgate.vueVault creation/unlock
src/stores/settings.tsSettings normalization/application
src/lib/window-layout.tsPosition and startup size
src/api/tauri.tsUI → native API
src-tauri/src/accounts.rsIdentity verification, sessions, Quick Log In
localvault.rs, profilesecrets.rsPassword/data protection
launcher.rs, client_windows.rsLaunching, process identity, recovery, windows
automation.rs, session_bridge.luauCapability, heartbeat, timers
session_cache.rsIsolated cache boundaries/cleanup
native_clipboard.rsNative → Windows clipboard
ws.rsRuntime socket, dispatch, logs
files.rsLocal folders, shortcuts, file commands
src-tauri/src/lib.rsCommand registration/module wiring
vendor_src/roblox-account-manager-uiImported forms and GPL license
scripts/package-release.ps1Reproducible package layout

Building

From extra_executor, beside package.json:

npm.cmd run build
cargo build --manifest-path src-tauri/Cargo.toml --bins --features custom-protocol

custom-protocol embeds the frontend for standalone use. This command creates debug binaries, not optimized releases. Embedded frontend needs no Vite server for normal launch. For optimized release/installer builds, use Rebuild-All.bat.

Package into a new directory:

./scripts/package-release.ps1 -OutputDirectory (Join-Path (Get-Location) 'artifacts/my-new-package')

By default this takes both debug EXEs, original bin/DLLs, docs/examples/license, portable shortcuts, and manifest. Existing output folders are not overwritten. ExtraExecutor uses Windows GUI subsystem; ExtraExecutor-console uses Console subsystem. Shared initialization: src-tauri/src/entry.rs. SHA256 describes packaging-time files; new logs/updated shortcuts may differ later.

node scripts/build-docs.mjs generates offline HTML from docs Markdown. Packaging runs it automatically. Packaged index: documentation/README.html.

Contracts

MCP and AI

Environment variables: POTASSIUMAIBASEURL, POTASSIUMAIAPIKEY (or OPENAIAPIKEY), POTASSIUMAIMODEL. Without base URL/key, a small local deterministic assistant is used, not a remote model. Native endpoint adds /chat/completions. Code default model gpt-4o-mini is an implementation value, not a current recommendation. Never embed keys in Roblox scripts or package documents.

Core tools include listclients, executescript, readconsole. Without pid, executescript targets all connected clients: supply pid for one client. Auth is Bearer token or x-potassium-token from local MCP settings, separate from ROBLOSECURITY/session capability.

Default local port: 8225, with independent configuration/authentication. Integration state is not Roblox state. Tools are registered in src-tauri/src/mcp.rs; inspect current tools/list, including newer workflow/game tools in the guide. Tab-level UI replies remain limited. AI code: ai.rs; integrations: integrations.rs. Check provider configuration against actual code rather than inventing a universal key.

Adding an original RAM action

  1. Find its control ID in ram-gui.json and original service handler.
  2. Implement native operation with vault/input/Roblox-response validation.
  3. Register invoke command and type it in api/tauri.ts.
  4. Add UI action, busy/error/success states, and clear messages.
  5. Button creation or packet delivery is not success evidence.
  6. Update status/instructions; verify live behavior separately when explicitly requested.

Bug handling

UI: reproduce with exact size/DPI → component → persistence/error handling. Runtime: launcher → process identity → attach → dispatch → runtime result. Authentication: official login → cookie availability → identity verification → encrypted save → refresh/filter.

Do not replace a missing execution engine with a decorative success state or erase vault as a general repair. Record what compiled and what was actually verified. Preserve GPL notices and corresponding source obligations for imported components.