icarus pet editor

Icarus Pet Editor

A web-based save editor for Icarus pets, mounts, and farm animals. Served at /pets on the portal as a Flask Blueprint.


Project Details

Field Value
GitLab Project icarus/pets
GitLab Project ID 1
Slug pets
Repository https://git.eurekaendeavors.com/icarus/pets
Visibility private
License GPL v3
Portal route /pets
Depends on icarus/core

What It Does

Users can upload an Icarus save file, modify their pets and animals, and download the modified file — all in the browser, with no installation required.

Supported features: - Edit pets, mounts, and farm animals (26 creature types) - 457 talents — view, assign, reset - Phenotype editing (colour, pattern, size) - Species swap - Session-based: no user accounts, no persistent storage of save data


Deprecation of .exe Releases

The previous desktop application (IcarusPetEditor-vX.X.X-win64.zip) is deprecated. The web Blueprint replaces it entirely. No further .exe releases will be made.

The icarus/pets repository retains the full history of the desktop application, including all prior releases. The Tkinter GUI code and CI/CD pipeline for .exe builds will be removed as part of the web migration.


Integration into the Portal

The icarus/pets repo is structured so the Flask Blueprint can be installed directly into the portal:

icarus/pets
├── pets/              # Flask Blueprint
│   ├── __init__.py
│   ├── routes.py
│   └── templates/
├── pyproject.toml     # pip install -e ../pets
└── tests/

The Blueprint registers at /pets in the portal's app factory. It depends on icarus/core for all UE4 save parsing and serialization.


Accessibility (WCAG 2.1 Level A)

Feature Notes
Upload error alert links to input via aria-describedby Error div id="uploadError" included conditionally
Error alert contains Fix this issue link anchored to #savefile Guides keyboard/screen reader users to the affected field
Talent card aria-label includes creature name Format: "<Creature>: <Talent> — <Desc> — rank N of M"
aria-label updated on rank cycle Label stays current after each click via cycleTalent()

Tests

26 tests in tests/test_pets.py: - Upload page rendering, form structure, and accessibility attributes - Upload validation (no file, wrong type, invalid JSON) - Full upload → session flow and editor page rendering - Talent cycle, reset, and species swap API endpoints - Session gating (404 without active session)


Git Clone

git clone https://icarus.eurekaendeavors.com/pets.git

Existing users on the old URL are migrated transparently via 301 redirect. See Git Clone Proxy for details.

Back to Docs