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.