Releases: ISpooferMotion/ISpooferMotion-V2
Releases · ISpooferMotion/ISpooferMotion-V2
Release list
ISpooferMotion v2.5.13
v2.5.13
A follow-up to v2.5.12: the plugin could still fail to find the desktop app when the default ports were busy, because the app silently fell back to a random OS port no scan range could ever reach.
Fixed
- The desktop app bound a random port when 14285-14289 were occupied, so the plugin could never find it. The local plugin HTTP server tried the five default ports (14285-14289) and, if all were taken, asked the OS for any free port -- which lands in the 49152+ ephemeral range, far outside any Daemon Port Scan Range the Studio plugin can be set to. The app looked healthy but the plugin reported "No desktop app found" forever. This commonly happened when a previous instance didn't shut down cleanly and was still holding a port. The server now increments up through 14320 instead of going random, so it always lands on a port the plugin can reach; if every port in 14285-14320 is busy it fails loudly instead of going dark. The desktop app also detects which process is squatting on the default ports (via the Windows TCP table on Windows,
lsofon macOS/Linux) and shows a banner naming it and telling the user exactly which port to widen the plugin's Daemon Port Scan Range to.
ISpooferMotion v2.5.12
v2.5.12
Two real bugs that lost user assets (pasted image IDs discarded as animations, and recoverable multi-asset jobs aborted early), plus a full Settings panel redesign and a clearer "why won't the plugin connect" message.
Fixed
- Pasted image IDs were mis-typed as animations and discarded. IDs pasted into the spoofer default to
animationas their assumed type. When the actual asset behind such an ID was an image, the upload path rejected it because the payload type did not match the real AssetTypeId -- the asset was dropped with no attempt to correct the type. Now the upload path fetches the real AssetTypeId via the economy details endpoint on a type mismatch, reclassifies confirmed images asImage, and uploads them. Non-image mismatches still reject conservatively. - Recoverable multi-asset jobs were aborted by the fast-fail gate. The fast-fail guard aborted any job whose batch metadata AND batch download-URL calls both came back empty for the whole list. But batch endpoints return empty for many developer assets that are still reachable through discovery (digging into the creator's owned places for a place-context id). Real jobs of 10-30+ animations were dying in ~2s with a "broken cookie/place/key" message even though every asset was individually downloadable. Now the guard probes discovery reachability on a sample asset before aborting, and never aborts when a forced place id is present. Empty batches alone are no longer treated as a death sentence.
AnimationId(ContentId-typed) rejected the patch value. Modern Roblox typesAnimation.AnimationIdasContentId, which accepts a plainrbxassetid://string but rejects aContentobject. The patcher's coerce path only knew aboutContent-typed properties, so ContentId fields fell through and the assignment silently no-op'd (each followed by a successfulAnimationContentpatch as a side-effect, masking it). Now the coerce path has an explicitContentIdbranch that assigns the asset URI as a string.- Open Cloud API key was lost on restart. The
keyringcrate was declared with no features (keyring = "3"), and keyring v3 ships no default backend -- so on Windows it silently fell back to an in-memory mock store.set_password/get_passwordworked within a session but nothing was ever written to the OS Credential Manager, so every secret vanished on restart. The cookie masked it because auto-detect re-reads it from Roblox Studio's own credential entry each launch; the API key had no such fallback.windows-nativeis now enabled on thekeyringdependency so secrets persist to the Windows Credential Manager. The API key is also given its own keyring entry, written before the cookie-bearing blob so it survives even when that blob exceeds the Credential Manager's 2560-byte cap, andsaveSecretsis gated on the initial load completing so a racing cookie-auto-detect save can't overwrite a not-yet-restored key with empty.
Added
- Slider settings with hover tooltips. The in-Studio Settings panel is rebuilt: numeric inputs are sliders with a hover-tooltip that appears on hover-intent (short delay, warm window, grace period, fade) instead of always-visible descriptions. The Daemon Port range is a dual-thumb slider with two value boxes. Each slider shows a "Recommended: X" line. Units (e.g. MB) are rendered in the value box.
- Clear button and Open Logs. The logs panel has a Clear button. "Export Logs" is renamed to "Open Logs" -- Roblox exposes no clipboard API to plugins, so copy-to-clipboard is not possible; Open Logs reveals the log file in the OS file manager instead.
- Connect-failure reason in the plugin. When the plugin can't find the desktop app, the console now says why: either "No desktop app found on ports X-Y..." or "Found a server on ports X-Y but it isn't ISpooferMotion...". The reason logs once per disconnect episode, not every discovery cycle, so it doesn't spam.
Changed
- Daemon Port range is read live each discovery cycle. Changing the port range in Settings now takes effect without a plugin reload; the module-level defaults are only used if the setting is missing.
ISpooferMotion v2.5.11
Fix Content-property patch silent no-op + v2.5.11 Patch side now handles every known asset property by name in addition to reading current-value type, so a Content property whose readback errors or whose Content.fromUri isn't available no longer falls through to a raw digit assignment that Studio silently rejects. - coercePropertyValue: property-name lookup maps for CONTENT_PROPERTIES and NUMBER_ASSET_PROPERTIES cover the readback-fails case. Content values tried via Content.fromUri -> Content.new -> raw URI string in that order, so older Studio builds still succeed. - Also handles HumanoidDescription body parts + PackageLink fields explicitly (int64 not Content). - version bump 2.5.10 -> 2.5.11, changelog written in the usual voice.
ISpooferMotion v2.5.9
v2.5.9
Makes community asset-cache contributions reliable.
Fixed
- Community-cache writes no longer fail silently. The app now checks the API response and reports writes that the server rejects instead of discarding every result.
- Temporary API failures are retried. Timeouts, rate limits, and server errors receive up to three attempts with bounded backoff; permanent client errors fail immediately.
- Completed jobs now wait for cache contributions to finish. Writes run with limited concurrency instead of being launched as untracked background tasks that could be lost when the process exits.
- Legacy cache migrations are only marked complete after every entry is accepted. An incomplete migration remains eligible for another attempt on the next startup.
- Telemetry opt-out now takes effect immediately. Disabling telemetry no longer depends on the config server responding, stale config requests cannot re-enable contributions, and queued cache retries stop when contributions are disabled.
- Telemetry heartbeat now respects the telemetry setting. Turning telemetry off stops the heartbeat and clears its timer instead of continuing to send it in the background.
- Maintenance mode now clears after service recovery. A later healthy config response resets the banner instead of leaving the application stuck in maintenance mode.
- Community-cache endpoint validation is stricter. Plain HTTP remains available for local development, but only exact loopback hosts qualify; lookalike hostnames such as
localhost.example.comare rejected.
Internal
- Added local HTTP-server tests covering the POST payload, transient retries, and permanent-error handling.
- Duplicate asset discoveries within a job are collapsed to one contribution before upload, and endpoint refreshes no longer erase the useful in-memory session cache.
- Updated stale frontend fixtures for timestamped spoofing logs and the account switcher so the full test suite covers the current UI again.
- The community cache remains write-only. Asset resolution reads only the app's in-memory session cache and never fetches mappings from the remote API.
ISpooferMotion v2.5.8
Fix half-replaced animations + clearer error messages (v2.5.8) - plugin: scan AnimationContent alongside AnimationId. Roblox's runtime reads whichever is set, so patching only AnimationId left AnimationContent pointing at the original and the character played the un-spoofed animation. The daemon patcher already handles Content values -- just needed the scanner to capture the property. - messages: auto-triage when a whole job fails, replace "successfully resolved metadata for 0 assets" with a real warning, differentiate "blocked by Roblox" from "private", humanize "error decoding response body", fix the "a Animation" grammar, and make the "auto-replacement queued" line honest about needing the plugin loaded in Studio. - plugin version bumped to 2.5.8 to match app.
ISpooferMotion v2.5.7
Fix replacement race, wrong-type uploads, plugin categorization, and …
ISpooferMotion v2.5.6
Restore V1 spoofer download speed (v2.5.6) Fixes a regression where jobs with a few private assets stalled for 5+ minutes behind the shared rate limiter. Root cause was four V2-only divergences from V1's download algorithm, all reverted here: - Only run discovery when no place_id was supplied (was unconditional) - Removed retry-on-403 loop (403 is terminal for a URL/cookie combo) - Restored fully parallel graph queries (was throttled to 3 concurrent) - Retry budget back to 3 attempts / 30s timeout (was 10 / 45s) Also adds a progress heartbeat every 10 candidate URLs and a bail-out after 5 consecutive permanent failures so a stuck asset can't hold the shared rate limiter for a whole job.
ISpooferMotion v2.5.5
chore(release): bump version to 2.5.5, add changelog
ISpooferMotion v2.5.4
chore(release): bump version to 2.5.4, add changelog Performance fix for the per-asset social-graph discovery cache. See changelogs/v2.5.4.md.
ISpooferMotion v2.5.3
chore(release): bump version to 2.5.3, add changelog See changelogs/v2.5.3.md for the full list of fixes and features.