Skip to content

Project Architecture

Joe edited this page Jun 8, 2026 · 1 revision

Project Architecture

The toolkit patches IMVU Classic assets without modifying IMVUClient.exe.

IMVU Classic Files

Relevant default paths:

%APPDATA%\IMVUClient\
  IMVUClient.exe
  library.zip
  ui\chrome\imvuContent.jar

library.zip contains Python runtime code used by IMVU Classic. imvuContent.jar contains embedded Gecko UI assets.

Repository Layout

Path Purpose
src/imvu_toolkit/ Installable Python package
src/imvu_toolkit/patches/emoji/ Emoji patch parser, transforms, and apply/restore entrypoint
src/imvu_toolkit/patches/dpi/ Registry that exposes DPI patch scripts through the CLI
src/imvu_toolkit/tools/ Registry that exposes utility scripts through the CLI
emoji_assets/js/ JavaScript injected into IMVU chat
patches/dpi/ DPI patch scripts kept in legacy script form
scripts/ Probes, scaling helper, catalog generator, release helpers
tests/ Pytest suite with fixtures for transforms and integration behavior
docs/ Reference docs and this wiki

Root-level scripts such as patch_imvu_emoji.py are backward-compatible wrappers.

CLI Shape

The package exposes:

python -m imvu_toolkit emoji install
python -m imvu_toolkit emoji restore
python -m imvu_toolkit emoji generate-list
python -m imvu_toolkit tools scale-window
python -m imvu_toolkit dpi clean-layout

The dpi and tools subcommands pass extra flags through to legacy scripts. Use -- before script-specific flags:

python -m imvu_toolkit dpi clean-layout -- --restore

Patch Safety

The patch model is deliberately conservative:

  • Detect whether IMVU is running before mutating files.
  • Create timestamped backups before replacing targets.
  • Use patch markers so re-runs can detect existing changes.
  • Restore from newest matching backups.
  • Fail fast when expected source signatures are missing.

Release Pipeline

CI runs Ruff and pytest on Linux for pushes and pull requests. On pushes to main or master, the Windows build job creates dist/IMVU-Emoji-Installer.exe as an artifact.

Pushing a v* tag runs the release workflow:

  1. Build the installer on Windows.
  2. Extract release notes from CHANGELOG.md.
  3. Append SHA256 and VirusTotal information.
  4. Publish the GitHub Release with the .exe asset.

Related Docs

Clone this wiki locally