RepoDitor v0.1.1 — Cosmetics, Safety & Localization
Important
Unsigned Windows build
RepoDitor v0.1.1 is currently unsigned while code-signing approval is pending.
Windows SmartScreen may display an Unknown Publisher or unrecognized-app warning.
Download RepoDitor only from this GitHub repository and verify the published
SHA-256 checksum before running the installer.
RepoDitor v0.1.1
RepoDitor v0.1.1 is a substantial update focused on new save-editing capabilities,
stronger save safety, improved player identity, localization, appearance customization,
and a more polished Windows desktop experience.
Compared with v0.1.0, this release adds a dedicated Cosmetics / MetaSave workspace,
evidence-backed item refilling, active protection against editing while R.E.P.O. is
running, Steam avatar presentation, Dark/Light/System themes, five interface languages,
refined interaction feedback, improved packaging, and significant reliability and
release-engineering work.
RepoDitor remains an unofficial community tool and is not affiliated with semiwork.
✨ What's New
🎭 Cosmetics / MetaSave editing
RepoDitor now includes a dedicated Cosmetics workspace for supported MetaSave.es3
operations.
The workspace provides a compact overview of:
- known cosmetic catalog entries;
- owned cosmetics;
- locked cosmetics;
- saved presets.
Supported bulk actions include:
- Unlock All Cosmetics
- Lock All Cosmetics
- Clear All Presets
RepoDitor currently recognizes the observed cosmetic catalog covering IDs 0..546.
Unknown or future cosmetic IDs are preserved instead of being removed or rewritten.
Safe cosmetic locking
Lock All Cosmetics is intentionally guarded.
RepoDitor will not blindly remove cosmetic ownership when doing so could leave an
inconsistent MetaSave state. Cosmetics that are equipped, referenced by presets, or
otherwise unsafe to remove prevent the operation from proceeding.
The action remains atomic: if the requested bulk operation cannot be performed safely,
RepoDitor does not partially apply it.
Preset clearing
Clear All Presets clears the corresponding cosmetic and color preset slots while
preserving the surrounding MetaSave structure and unrelated cosmetic data.
Ownership data is not removed simply because presets are cleared.
Intentionally unsupported MetaSave operations
RepoDitor still does not expose operations whose game semantics have not been
established safely, including:
- arbitrary cosmetic equipment editing;
- cosmetic token editing;
- arbitrary preset creation or modification;
- guessed cosmetic names;
- direct per-ID mutation controls.
🔋 Evidence-backed Item Refill to Full
The Items workspace now supports Refill to Full for compatible item instances.
This feature was implemented using controlled save evidence rather than assumptions about
the game's internal values.
For a supported item, RepoDitor removes only the exact stored-charge entry associated
with that specific item instance when the observed save format establishes that absence
represents the game's default/full state.
The operation uses the normal pending-change workflow:
- select the item;
- choose Refill to Full;
- review the pending edit;
- explicitly save;
- RepoDitor runs its complete safe-write pipeline.
RepoDitor does not expose arbitrary numeric charge editing.
The following remain unsupported:
- arbitrary battery values;
- item creation;
- item deletion;
- item duplication;
- purchase-state modification;
- unverified battery-upgrade mutations.
🛡️ Protection while R.E.P.O. is running
RepoDitor now actively prevents editing while the game is running.
R.E.P.O. may keep save state in memory and write it back to disk later. Editing the
persisted save at the same time could therefore cause RepoDitor to operate on stale data
or allow the game to overwrite external changes when it exits.
RepoDitor now:
- detects the actual
REPO.exeprocess; - anchors process detection to the validated local R.E.P.O. installation;
- supports default and secondary Steam libraries;
- supports custom drives and validated custom installations;
- rechecks game state when appropriate during application use;
- checks again when the application regains focus;
- performs an authoritative check immediately before supported writes;
- blocks both Run-save and Cosmetics / MetaSave writes while R.E.P.O. is running;
- fails closed when process state cannot be verified safely.
The safety dialog provides Check Again after the game has been closed.
UnityCrashHandler64.exe by itself is not treated as evidence that the game is running.
This protection is additive to RepoDitor's existing write safeguards.
👤 Steam avatars and improved player identity
Player presentation has been improved across the desktop application.
The selected player can now display an optional Steam avatar, including in the
Upgrades workspace.
Avatar enrichment is deliberately non-critical:
- unavailable avatars never block save editing;
- private or unsupported profiles fall back safely;
- malformed responses fail softly;
- network failures do not prevent Players from loading;
- a deterministic fallback is shown when no valid avatar can be used.
Avatar data is presentation-only and is never written into the save.
🌓 Dark, Light, and System themes
RepoDitor now supports three appearance modes:
- Dark
- Light
- System
The selected preference is persisted locally.
System follows the Windows appearance preference so RepoDitor can automatically match
the operating system.
Theme selection affects presentation only and has no effect on save semantics.
🌐 Five interface languages
RepoDitor's own interface is now available in:
- English
- 日本語 — Japanese
- 한국어 — Korean
- 中文 — Chinese
- Bahasa Indonesia
The language selector now uses a RepoDitor-styled accessible menu with:
- native language names;
- compact flag indicators;
- keyboard navigation;
- focus restoration;
- outside-click dismissal;
- persisted locale selection.
The translation system was also reorganized internally into locale-specific modules with
alignment tests to help prevent missing or mismatched translation keys.
Translation boundary
Only RepoDitor-owned interface text is translated.
Game-derived strings remain exactly as stored or discovered, including:
- player names;
- item names;
- upgrade names;
- map names;
- values read from save files.
RepoDitor does not guess translations for game-owned identifiers.
🔊 Refined interaction feedback
RepoDitor now includes restrained desktop interaction feedback.
Selected controls provide subtle visual response together with a small local click sound.
The interaction sound:
- is bundled locally;
- requires no network request;
- is decorative rather than informational;
- fails silently if audio playback is unavailable.
RepoDitor also continues to respect reduced-motion preferences.
The goal is to make the interface feel more responsive without introducing distracting
or excessive animation.
⭐ Project utility controls
The top utility area now includes improved application and project controls such as:
- theme selection;
- language selection;
- access to the RepoDitor project;
- GitHub star information when available.
GitHub metadata is retrieved through a fixed and validated Electron IPC path.
The renderer is not given unrestricted network access, and failure to retrieve project
metadata does not affect save editing.
💾 Expanded safe-write protection
RepoDitor continues to use a deliberately conservative write pipeline.
Supported edits remain staged in memory until Save Changes is explicitly confirmed.
Before the original save is replaced, RepoDitor:
- validates the requested operation;
- verifies the source-file fingerprint;
- detects unexpected external changes;
- creates a timestamped exact-byte backup;
- validates the supported save schema and game semantics in Python;
- writes encrypted output to a temporary staged file;
- reopens the staged result;
- verifies the resulting data against the intended mutation;
- atomically replaces the original only after verification succeeds.
Run saves and MetaSave maintain independent:
- fingerprints;
- pending edits;
- backups;
- save sessions;
- write operations.
These safeguards reduce risk but cannot guarantee compatibility with every future
R.E.P.O. update.
🔐 Desktop security model
RepoDitor retains its narrow Electron security boundary.
The renderer continues to run with:
contextIsolation: true;nodeIntegration: false;- sandboxed renderer execution;
- narrow typed preload APIs;
- validated IPC contracts.
The renderer is not given:
- arbitrary filesystem access;
- arbitrary process execution;
- generic shell execution;
- unrestricted network access;
- raw decrypted save JSON.
Python remains authoritative for:
- save parsing;
- save validation;
- game semantics;
- encryption and decryption;
- backup handling;
- safe persistence.
🧱 Internal architecture improvements
v0.1.1 includes a significant internal organization pass intended to make future features
safer and easier to maintain.
Python functionality is now grouped more clearly around domain ownership such as:
- Items;
- Saves;
- Players;
- Cosmetics;
- Game discovery and process safety.
The desktop side also gained clearer feature-specific IPC and application boundaries.
These changes were structural and were designed to preserve existing save semantics.
🔐 R.E.P.O. save compatibility protections
RepoDitor's .es3 cryptographic compatibility behavior remains intentionally unchanged.
The existing game-compatible encryption parameters are treated as compatibility
requirements rather than modern security choices.
Regression coverage now explicitly protects those values from accidental "security
hardening" changes that would make RepoDitor unable to read or write game-compatible
saves.
📦 Improved Windows installation
RepoDitor now uses a conventional assisted NSIS Windows installer.
The installer:
- targets Windows x64;
- defaults to a current-user installation;
- allows the installation destination to be changed;
- creates the expected application registration and shortcuts;
- includes the bundled Python backend;
- includes required application and third-party license files.
End users do not need to install:
- Python;
- Node.js;
- npm;
uv.
Uninstalling RepoDitor does not intentionally remove R.E.P.O. saves or RepoDitor-created
.bak-* backups.
RepoDitor currently installs no automatic updater, background service, scheduled task, or
startup service.
🎨 Desktop branding and presentation
The production application now consistently uses RepoDitor's own branding and icon.
This includes:
- application/window icon integration;
- installer branding;
- removal of the default Electron native menu;
- clearer semantic icons throughout editor workspaces;
- responsive icon fallbacks;
- refreshed application screenshots using sanitized generated data.
No extracted R.E.P.O. artwork is redistributed with RepoDitor.
🧪 Reliability improvements
This release includes numerous smaller reliability fixes and regressions tests, including:
- fail-soft Steam avatar retrieval;
- corrected Cosmetics error handling;
- improved save-safety dialog behavior;
- corrected dialog scope so discovery remains usable before editing begins;
- improved dialog centering;
- preserved pending edits across navigation and safety checks;
- stronger Electron IPC validation;
- additional Cosmetics coverage;
- additional game-process safety coverage;
- additional player/avatar coverage;
- additional localization coverage;
- additional versioning and release-tooling coverage.
🏗️ Release engineering improvements
RepoDitor's release tooling has been significantly strengthened.
Centralized version management
Release versions no longer need to be manually updated in multiple places.
The repository now provides:
cd desktop
npm run update:version -- 0.1.2The updater synchronizes:
desktop/package.json;desktop/package-lock.json;pyproject.toml;- Python
__version__; uv.lock.
Release checks verify that all managed version sources agree.
Renderer and Electron E2E tests derive their expected version dynamically instead of
hardcoding individual release numbers.
Release validation
RepoDitor's release checks cover:
- version alignment;
- Python formatting and tests;
- renderer import boundaries;
- ESLint;
- TypeScript builds;
- component tests;
- Electron IPC contract tests;
- Electron E2E;
- packaged Electron E2E;
- Python sidecar packaging;
- package-content verification;
- Windows installer verification;
- bundle-size checks.
🔏 Code-signing preparation
The repository now contains a fail-closed official signed-release path prepared for code
signing.
The signed path does not silently fall back to an unsigned build when required signing
configuration is absent.
RepoDitor is currently still waiting for code-signing approval, so v0.1.1 is being
published through the explicitly confirmed unsigned release path instead.
The temporary unsigned workflow preserves the normal quality, package, E2E, installer,
and checksum gates while omitting only signature creation and signature verification.
It is intended to be retired once the final signing provider is integrated.
📚 Documentation and community improvements
The repository documentation has received a major refresh.
Updates include:
- rewritten project overview;
- current feature documentation;
- save-safety documentation;
- security architecture;
- Electron architecture;
- Python architecture;
- reverse-engineering documentation;
- asset-research boundaries;
- release procedures;
- installation and uninstall guidance;
- contribution guidelines;
- security reporting instructions;
- issue templates;
- pull-request guidance;
- third-party notices;
- sanitized current application screenshots.
Private security reports should use GitHub's private vulnerability-reporting flow rather
than public issues.
Real .es3 files and .bak-* backups should not be uploaded publicly.
✅ Validation
The v0.1.1 release candidate passed the project's automated release gates, including:
- Python lint and format checks;
- Python test suite;
- desktop import validation;
- ESLint;
- release-version alignment;
- production renderer and Electron builds;
- component and contract tests;
- Electron end-to-end testing;
- packaged application testing;
- Windows package verification;
- installer generation and verification;
- bundle checks;
- SHA-256 artifact generation.
The release workflow itself completed successfully before the public v0.1.1 artifacts
were published.
Automated tests use generated or sanitized fixtures and temporary files rather than real
user saves.
The final packaged application was also manually launched and tested before release.
📦 Installation
RepoDitor currently supports Windows x64.
Download:
RepoDitor-Setup-0.1.1-x64.exe
and:
RepoDitor-Setup-0.1.1-x64.exe.sha256
from this release.
Run the assisted installer and follow the setup wizard.
🔎 Verify the download
Place the installer and checksum file in the same directory and run:
Get-FileHash .\RepoDitor-Setup-0.1.1-x64.exe -Algorithm SHA256
Get-Content .\RepoDitor-Setup-0.1.1-x64.exe.sha256The hexadecimal SHA-256 values must match exactly, ignoring letter case.
A matching checksum confirms that the downloaded file matches the artifact published by
this repository.
Because v0.1.1 is currently unsigned, the checksum does not establish publisher
identity.
🔄 Upgrading from v0.1.0
Existing users can install v0.1.1 normally.
RepoDitor does not require a migration of existing R.E.P.O. saves.
The application does not store its own program files inside the game's save directory,
and uninstalling RepoDitor does not intentionally remove:
- R.E.P.O. save files;
- RepoDitor-created
.bak-*backups.
As always, keep backups of important saves before modifying them.
⚠️ Current limitations
RepoDitor intentionally remains conservative about unsupported game behavior.
Current limitations include:
- Windows x64 only;
- no automatic updater;
- Items supports only evidence-backed Refill to Full mutation;
- arbitrary numeric item charge editing is unsupported;
- item add/delete/duplicate is unsupported;
- Cosmetics exposes only documented safe bulk operations;
- arbitrary cosmetic equipment/token editing is unsupported;
- Maps remains discovery-only;
- game-derived strings are intentionally not translated;
- Steam avatars depend on optional external profile information;
- future R.E.P.O. updates may change save structures or semantics.
❤️ Feedback and security reports
Bug reports and feature requests are welcome through the repository's GitHub issue
templates.
For suspected security vulnerabilities, do not open a public issue. Use GitHub's
private vulnerability-reporting flow from the repository Security tab.
Please never publicly attach real .es3 saves or .bak-* backups.
Remove usernames, Steam identifiers, filesystem paths, machine details, and unrelated
personal information from logs and screenshots before sharing them.
Thank you for trying RepoDitor and helping improve the project.
Full Changelog:
v0.1.0...v0.1.1