Dev Blog

Release notes and project updates for the Icarus Tool Portal.

dev-blog-2026-05-14 Pack Up Your Outpost

2026-05-14

Homestead Pack-Up, Take Your Base With You

If you've ever wanted to move to a new prospect without starting over, this one's for you.

Homestead Pack-Up packs your entire base into inventory and drops it into your destination save. You upload your source save, draw a rectangle around what you want to keep, upload your destination save, and hit apply. Your stuff shows up in gravestone overflow bags at your character's feet on the new map. Open the bags, place your benches, and go.

What gets packed: Deployables, storage containers (and their contents), crafting stations, beds, crop plots, drills, signs, traps, paintings, and the building pieces themselves. Walls, floors, foundations, beams. If it's inside the rectangle, it resolves back to the inventory item it came from and gets packed.

The map shows your character's position when you upload, and the tool auto-proposes a bounding box around everything packable near you. You can adjust it. Wider, narrower, wherever you want. If your base is dense, you might not need to touch it at all.

If you've packed a lot of items, you'll get multiple overflow bags. The system splits across them automatically. You don't have to think about it.

How it actually works

Every placed object in Icarus, every crate, every campfire, every wall segment, lives inside the prospect save as a UE4 actor with a 3D position and a setup row name that identifies what it is. I read the raw binary property stream from your save, walk through every actor, and check whether each actor falls within the rectangle you drew on the map.

For each actor inside the rectangle, I look up the setup row name in the game's data catalog. The same D_Deployables and D_Itemable tables that the game itself uses. That resolves it back to the inventory item it was crafted from. A Deployable_Crafting_Bench becomes an Item_Deployable_Crafting_Bench. A Bed_Fur_Interior becomes the fur bed item. If the actor is a container (crate, fridge, composter), I also extract every item inside it, with correct stack sizes and durability.

Once everything is resolved, I write a new gravestone overflow bag actor into your destination save at your character's feet and populate it with the packed items. If there are more than 150 items (the game's hard cap per overflow bag), I create additional bags. The items show up the moment you load the prospect. No console commands, no workarounds.

The catalog currently resolves 100% of packable actor types. 883 deployables, 69 crop plots, 26 beds, 17 drills, 9 signs, 8 traps, 4 paintings across a fully built Olympus test save.

Premium

This is a premium feature. It joins Prospector as the second premium tool on the portal. Premium is $4 for 28 days. One payment, not a subscription. If you're already premium, Homestead Pack-Up is live right now. Nothing extra.

Try Homestead Pack-Up

dev-blog-2026-05-08 Pets Get Smarter, Slinkers Get Bluer

2026-05-07

Pets editor: Max All / Reset All talent buttons

If you've ever fully talented a pet you know the click cost. Twenty-some taps minimum, more if you're juggling multiple mounts. Two new buttons in the talent tab header collapse that into one click each:

  • Max All sets every talent in the selected mount's tree to its catalog-defined max rank. Per-talent caps are respected, since talent ceilings vary across the tree and a flat "max value" doesn't apply.
  • Reset All clears every talent on the selected mount.

Both operate on the currently selected mount only, so other mounts on the save are untouched. Recovery mode disables them (matching the rest of the editor's edit endpoints). No confirmation modal, since max and reset are reversible by round-trip and the modal would just be friction.

13 new tests went in with the feature.

Pets recovery: the Download button now turns on like you'd expect

u/stubouyer flagged this one on r/IcarusTools last week. Quoting them directly because the report nails it:

The tool successfully restored a tame from a backup prospect file along with all their inventory which was a nice bonus. However to get the file to save for download I had to turn off the restore slider and click the Apply Updates again to turn the Save button on. Not an issue but a little unintuitive.

Exactly right. The recovery success branch was re-enabling the Apply button but not the Download button, even though the success toast itself told you to click Download next. One-line fix: enable the Download button on a successful recovery, parallel to the non-recovery save path. If recovery errors, the button stays disabled (nothing to download anyway).

Thanks for the report. Keep them coming.

Variation data corrections (Slinker, TundraMonkey, Boar, Storca)

The variation picker dropdown is fed from a generated data file. That file got cleaner this week.

The Slinker had a missing eighth variant. The Legendary M_CRE_Slinker_Blue phenotype was in the game's pak data but not in the editor's canonical list. Now it's there.

TundraMonkey rarity was wrong. Variant 0 was weighted 50 (Rare) when it should have been 2,000 (Common). Hand-typing error from a previous data-entry pass that never got caught. Corrected.

Stale mesh-name suffixes are gone. TundraMonkey's eight mesh names all carried a _FurCards suffix that pointed at the wrong primary mesh. Slinker variants 1 through 6 had a similar _Feathers artifact mid-name. Both were leftover from an earlier extractor pass that didn't know how to pick the primary mesh out of multi-key MeshMaterials slots. The new extractor handles that correctly, the data file got regenerated from live pak, and the strings are right now.

Chew is no longer in the creature list. It was a row-name duplicate of Slinker that crept in during data-table churn. Removed.

8 Boar phenotype variations and 8 Storca phenotype variations got added to the dropdown earlier in the week. Nothing you have to do, the editor auto-populates them from the data file.

Soon

Pack up your outpost. Move it to the next prospect.

dev-blog-2026-05-07 What's Actually In Your Save Files

2026-05-07

Got a question this week about whether the "blob" in Icarus save files is encrypted, and whether you can read or edit the world resources, tools, ore, or stackable items hidden inside it. The answer is short and the long version is worth writing down, so here it is.

Short answer: it isn't encrypted

The blob looks scrambled because it's base64-encoded zlib-compressed binary, not because it's locked. Once you base64-decode it and run it through zlib, you get a structured stream of UE4 (Unreal Engine 4) serialized properties in the engine's standard GVAS format. No keys, no cipher, no DRM. Just compression.

If you want a one-liner to prove that to yourself in Python:

import base64, zlib

with open("YOURPROSPECT.json") as f:
    blob_b64 = f.read().strip()  # whatever field holds the base64 string

raw = zlib.decompress(base64.b64decode(blob_b64))
print(len(raw), "bytes of UE4 property data")

A populated prospect tends to land in the low single-digit megabytes compressed and decompresses to tens of megabytes. Big, but plain.

What's actually inside

After decompressing, you get six top-level UE4 properties. The interesting one is StateRecorderBlobs, which is a list of game-state actors. The number and mix of those actors varies wildly by map, by how long you've played the prospect, and by what you've actually done. A fresh drop has almost none. A long-running outpost has thousands.

What I have parsed and operate on directly in my tools:

  • ResourceDepositRecorderComponent and ResourceDepositIceRecorderComponent: deep ore and ice deposit nodes (the kind you'd hit with a mining drill). My Cartographer tool reads these and plots them on the real terrain map.
  • OilGeyserRecorderComponent and EnzymeGeyserRecorderComponent: oil and enzyme geyser locations. Cartographer surfaces these as well.
  • CaveEntranceRecorderComponent: cave entrance positions. Cartographer plots these too.
  • DeployableRecorderComponent: anything you've built and dropped (crates, stations, lights, processors, etc.). Each carries a FoundationActorIcarusUID that resolves through the catalog (D_DeployablesD_Itemable) into the inventory-form item it packs back into. My homestead pack-up code currently resolves 883 of 883 deployables in my Olympus test save.
  • BedRecorderComponent, CropPlotRecorderComponent, DrillRecorderComponent, SignRecorderComponent, CharacterTrapRecorderComponent, PaintingRecorderComponent: the rest of the player-built actor types that the under-development homestead pack-up tool can pack up. Each resolves cleanly through the catalog the same way deployables do.
  • IcarusMountCharacterRecorderComponent: tamed mounts living on the prospect (separate file from Mounts.json, which holds workshop saved mounts). Same property layout as the mounts in the standalone file.
  • Player actors (BP_IcarusPlayerCharacterSurvival_C in ActorClassName): your character's full live inventory (backpack, hotbar, belt, equipment, ammo, exosuit, lantern, mount saddle and cargo), plus position, health, and stats, all serialized as a nested binary payload inside the actor's BinaryData. This is what Prospector decodes and edits.

What I can identify but haven't decoded the inner geometry of:

  • VoxelRecorderComponent and SpawnedVoxelRecorderComponent
  • BuildingGridRecorderComponent: the persistence backing for player-built bases (foundations, walls, roofs).
  • SplineRecorderComponent and BP_IcarusSplineActor_C: spline-tool placements. In Icarus, splines are the utility lines: electricity, water, oil, and fuel pipes.
  • Quest and world managers (IcarusQuestManagerRecorderComponent, WorldTalentManagerRecorderComponent, WeatherControllerRecorderComponent, etc.). I can read the named fields at the top level (mission name, completion bools, world talent row names).

For the full structural reference, see:

What about tools, ore, and stackable items?

This is the question that triggered the post. Different things you'd want to edit live in different places, and three of those places are inside the prospect blob you just decoded, not next to it.

Your live inventory while on a prospect (backpack, hotbar, belt, equipment, mount cargo) lives inside the prospect blob, as a nested payload on the player actor. My Prospector tool decodes that, lets you edit slots (add, remove, move, edit stacks, durability, item GUIDs), and re-encodes it back into the prospect file. Slot validation, item IDs, stack sizes, and dynamic-data indices are all handled for the items in the live game catalog (97% coverage at last sync).

Deep ore deposits live in the prospect blob too, in ResourceDepositRecorderComponent actors. Cartographer decodes those and plots them along with caves and geysers. Read-only today.

Account-level meta-progression (workshop currencies like Credits and Biomass, workshop unlocks, mission/achievement flags) lives in Profile.json, separate from any prospect. Prospector edits this in the Workshop tab.

Workshop loadout items and legendary bio-lab weapons live in MetaInventory.json, also separate from prospects. Prospector handles loadout, add/remove/transfer-to-backpack, and bio-lab weapon upgrades from there.

Mounts and pets are a fourth file (Mounts.json), and that's what my Pets editor handles.

So if you're trying to "edit ore," the answer depends on what you actually want:

  • Want a stack of iron in your backpack on an active prospect? Prospector, Editor tab.
  • Want more workshop credits or a workshop item unlocked? Prospector, Workshop tab (Profile.json).
  • Want to upgrade a legendary bio-lab weapon? Prospector, Bio-Lab tab (MetaInventory.json).
  • Want to know where the deep ore nodes are on the map? Cartographer.

If you want to dig in yourself

The two doc pages above cover everything I've published. The catalog has the live game data tables that the property names and enum values refer back to, so you can cross-reference an actor's RowName against the actual D_*.json table from the game's data pack.

If you find something I haven't documented, or you spot something wrong in what I have, open an issue or ping me on r/IcarusTools and I'll fold it in.

dev-blog-2026-04-30 Lost Your Pets? We've Got You.

2026-04-30

Lost Your Pets? We've Got You.

Suggested tag: dev-blog-2026-04-30 Suggested commit: 8276fe9 (latest main, includes everything below)


The big one this week: if you've ever lost pets to a boss raid, decay, or whatever else the planet threw at you, you can now bring them back from a world save backup. That's the headline. There are a couple of other quality-of-life wins underneath it.

Bring Your Pets Back (#138)

Pets killed in a boss raid don't have to be gone for good. There's a new Recovery Mode toggle on the Pets editor.

Important: you'll need a backup of your world save from before the loss, meaning the world save where the pets still existed. The portal can't conjure pets out of nothing; it copies them from a save where they're still alive.

Good news: Icarus already does this for you. The game keeps a rolling stack of ten automatic backups in your prospect folder, named {prospect name}.json.backup_1 through .json.backup_10. Pick whichever one is from before the raid. That's your recovery source.

Flip Recovery Mode on and the editor changes shape:

  1. Upload one of those .backup_N files directly. No need to rename it. The portal scans it for pet actors that belong to you.
  2. You can also upload your prospect's main .json If it's from before the loss.
  3. Pick a character if your save has more than one player on it. The portal matches owners automatically when it can.
  4. Pick the pets you want back. Each pet shows up as a card with the same look as the regular editor, just read-only.
  5. Recover. The portal copies the pet's actor data straight into your current Mounts.json and offers you the download.

A few things worth knowing:

  • It works for any creature, not just specific species. If the pet exists in your backup save and was yours, it can come back.
  • Duplicates are blocked. If a pet still exists in your Mounts.jsonThe portal won't let you accidentally clone it back in.
  • Recovery mode is fully read-only. All the normal edit buttons go quiet, so you can't trip over them mid-recovery.
  • Free for everyone.

If you've got a backup world save sitting in your artifact storage from a previous portal session, you don't even need to re-upload it. The portal sees it and lets you reuse it.

Tool-Created Mounts Not Loading? Fixed.

If you used the New Pet button to spawn a creature, then took the save back into the game and the mount just... didn't appear, that was a bug on our side. It's fixed now.

  • New pets you create going forward are fine.
  • Existing tool-created pets sitting in a Mounts.json will be quietly corrected the next time you upload, with a small toast letting you know. No action needed on your end.

If you've had a tool-created mount refuse to load in-game, re-upload your save. You should be set.

Where To Find Us Now

Quick housekeeping. There are now "Join us on Reddit" links in the top nav and the footer, pointing at r/IcarusTools.

That's our home base for tool announcements, bug discussion, and feature requests outside the bug report system. Come say hi.

Behind the Scenes (Briefly)

A couple of things that don't change anything you'll see directly, but are worth a line:

  • Cartographer now has usage metrics (#232). I had no visibility into how the Cartographer was actually being used: page visits, which maps people loaded, and share-link clicks. That's wired up now, which means I can prioritize Cartographer improvements based on what people actually do with it instead of guessing.
  • CI is roughly 45× faster. Internal-only, but it means fixes ship faster.

What's Next

Two open user reports are still on the board:

  • Black/orange cats spawning gray (#241). The variation isn't sticking with cats. Reproducible. Up next.
  • Maxed talent points not saving (#240). Reported a couple of weeks back; still on the list.
  • mounts.json parse error on upload (#262). A new one from this week. Investigating.

If you've reported one of these, I haven't forgotten. The pet recovery epic ate a chunk of the last week. Back to triage.


Thanks for using the portal. As always, bug reports that lead to fixes get premium credits.

More soon.

dev-blog-2026-04-23 Your Saves Stick Around Now

2026-04-23

Two big things changed for you in the last couple of weeks. If you use the portal regularly, both will feel obvious the next time you log in.

Your Work Is Saved

The biggest one: your uploads and edits now persist.

Before, the portal was session-scoped. You uploaded a save, you edited, you downloaded, and the moment your browser session expired, everything was gone. If you came back the next day to tweak something, you had to start over from scratch.

Not anymore. Every file you upload and every edited version you generate is now stored against your account. Log in next week, next month, whenever, and you will find all of it waiting on your profile page.

What this looks like in practice:

  • Profile page has a new Artifacts section showing your upload and rebuild history for each tool (Pets, Prospects, Prospector). Every file is downloadable. The download links keep working for as long as the artifact is retained.
  • Continue banner on each tool picks up where you left off. Open the Pets editor and if you have a recent session, it offers to resume instead of making you re-upload.
  • Bug reports now automatically attach the exact save files you had in session when you filed. I can reproduce issues without asking you to re-upload anything.

Free vs Premium: free tier keeps the most recent upload and rebuild per tool. Premium keeps everything, forever. When you cross the free limit, the portal quietly prunes the oldest file and keeps going. Nothing you care about disappears without warning.

This was a massive rebuild under the hood (eleven shipped tickets, a new database schema, dual-write migration so nothing got lost in the transition), but the goal was always that you wouldn't have to think about any of it. Upload, edit, download. Come back whenever.

Bug Fix: Currency Editing in Prospector (#231)

Thanks to B4DZZ for catching this one.

If you edited currency values (Credits, Biomass, Ren, Flake stacks) in the Workshop tab, the edits were saving correctly, but the Apply and Download buttons did not re-enable afterward. That left you stuck: the change was in, but you had no way to actually push the save back out.

Two root causes, both fixed. The editor now correctly marks Profile.json as modified on currency updates, and the button state refreshes after Workshop edits. Credits in the patch notes to B4DZZ for the specific repro that got me there.

Closing a Few Older Reports

A couple of reports from earlier in the month got formally closed this fortnight because the fixes had already shipped in the previous release:

  • Olympus Great Hunt branch unselection (#192). The fix from April 9th (#229) already covers Rock Golem on Olympus along with the other maps, just got around to confirming it on this specific report.
  • Bio-Lab items disappearing in-game (#185). The Transfer to Backpack feature and entitlement warning (both shipped April 9th) are the workaround for this category of issue. The items do not actually disappear; they fail entitlement validation. Transfer them directly into your prospect inventory instead.

Two other reports (#194, #195) got closed due to no response after follow-up questions. If either of those was yours and the problem came back, please reopen or file fresh; happy to dig in.

Behind the Scenes

Two pieces of plumbing that are invisible to you but matter anyway:

Dev blog RSS feed (#191). If you want these posts delivered automatically, point your RSS reader at /blog/feed. No more checking the site manually.

Stronger GDPR coverage (#220). When you use the "Export my data" or "Delete my account" features, the portal now also covers your cartographer maps and bug reports, not just your editor sessions. Closing a loop that was half open.

What's Next

  • Max talents not saving (#240) and black and orange cats spawning gray (#241). Two open user reports on the Pets tool. These are next up.
  • Cartographer improvements. The tool is stable but has room to grow. If you have ideas, file a bug report with the "feature request" checkbox.
  • Faster updates. My deploy pipeline currently takes about 40 minutes per change. I am working on getting that down to under 10, which means fixes land faster for you.

Thanks for using the portal. It passed 370 registered users this week, which is genuinely wild given I started this as a weekend project. Bug reports that lead to fixes still get premium credits. Keep them coming.

More soon.

dev-blog-2026-04-09 Bug Bounty Round & Bio-Lab Transfers

2026-04-09

Today was a bug triage day. I went through every open user-submitted report, triaged them, and shipped fixes for the ones I could resolve immediately.

Bug Fixes

XP Overflow Protection (#223)

A user created a level 50 Arctic Moa by entering an absurdly large XP value (somewhere around 10²¹). It worked at first, but the moment the animal ate silage in-game, the level reset to 0 and the talent tree wiped itself. Classic integer overflow: the game recalculated on a trigger event and the value wrapped.

The HTML input already had a max attribute set to INT32_MAX, but that's just a browser hint. Nothing stopped the value on the client or server side. I added three layers of clamping: the HTML max attribute, a Math.min in the JavaScript before sending, and a server-side clamp in the Python _set_prop() function. The cap is 1,147,483,647 (one billion below INT32_MAX), which gives plenty of headroom without flirting with the boundary.

UTF-16 File Encoding (#222)

A user uploaded their Characters.json and got a UnicodeDecodeError with 0xFF at position 0. That byte pattern is a UTF-16 Little Endian BOM. The parser was using utf-8-sig, which handles UTF-8 BOMs but chokes on UTF-16.

I wrote a _decode_json_bytes() helper that detects UTF-16 LE, UTF-16 BE, and UTF-8 BOM before falling back to plain UTF-8. Applied it to every JSON upload path in the portal: Characters.json, Profile.json, MetaInventory.json, and prospect saves. If your text editor saves JSON with a weird encoding, the portal handles it now.

Great Hunt Decision Point Reset (#229)

A user completed the entire top-row path of the Great Ape chain on Styx and wanted to go back and run an alternate path. The Prospects tool let them reset the completed missions, but the alternate paths stayed locked in-game.

This one took some reverse engineering. The game tracks Great Hunt progress in two places within the prospect save: MissionHistory (which missions are complete) and WorldTalentRecords (which path talents have been granted). Choice nodes in the chain use a ForbiddenTalent system: when you complete path E, the game grants the GH_APE_E talent, and paths C and D check for that talent to lock themselves.

The reset tool was stripping MissionHistory correctly but never touched WorldTalentRecords. The path talent stayed, so the game still saw the alternate routes as forbidden.

The fix walks the full chain from the earliest reset point and strips both mission entries and talent records. For the Ape chain, resetting from the decision point takes you from 7 talent records down to 2 (just the pre-choice hunts A and B), with all three paths reopened. This works generically across all Great Hunt chains on all maps (Rock Golem on Olympus, Ice Mammoth on Prometheus, Great Ape on Styx).

New Feature: Bio-Lab Entitlement Warning (#227)

Bio-Lab weapons and other station loadout items are subject to entitlement validation checks when sent up or brought down from the station. If you haven't unlocked the prerequisite (a specific hunt, a mission, DLC, etc.), the game silently removes the item. No error, no message. It just vanishes.

The portal now shows a one-time warning modal when you first open the Workshop tab, explaining this behavior. It persists in your browser so you only see it once.

New Feature: Transfer to Backpack (#228)

This is the workaround for the entitlement problem above. Items already present in your prospect (world) save are trusted by the game engine. They skip the station validation entirely.

There's now a "Transfer to Backpack" button in the loadout item detail modal. Click it, and the item gets copied from your MetaInventory directly into your character's prospect inventory. You need both a MetaInventory.json and a prospect save uploaded in the same session for this to work. The button is disabled if you haven't uploaded a prospect save yet.

Open Reports

Two reports are still under investigation. If you reported issues with dedicated server inventory edits not applying (#195), I've reached out asking for before/after save files to help trace the problem. And if the Apply/Download buttons weren't working for you after purchasing premium (#194), I've followed up on your report. Your account shows six successful applies that same session, so it may have been a temporary issue.

As always, bug reports that lead to fixes get premium credits. If you filed one of the issues above, check your account.

dev-blog-2026-04-07 Week 226 Data Sync

2026-04-07

Icarus pushed a game update last week (Week 226, "Workshop Modules") and I finally got around to syncing the portal this morning.

Data Catalog

42 of 287 data tables changed. The big additions are 12 new Envirosuit Modules in the Workshop (Oxygen, Food, Water, Heat/Cold Resist, Exposure, Melee, Tamed Damage, Stamina Regen, Item Wear, Projectile Highlight, and a Night-only buff module). There's also a new set of Bull cart saddles, a Slinker fast-tame saddle, durability rebalancing across all Lithium-tier tools, and what looks like the start of a new Great Hunt chain (Radiation Boss nodes showed up in the talent data).

Three meta resource packs were removed, and 131 missions got flavor text refreshes across every map.

Workshop Display Name Fix

While tracing how the new modules would show up in the Prospector, I found a pre-existing bug. Every single Workshop item in the editor was displaying raw internal names like "Meta Module Alpha" instead of their actual game names like "Strength Boost Module."

The cause: Workshop items go through an indirection layer. D_WorkshopItems references D_ItemsStatic, which references D_Itemable for display names. The code was skipping the middle step and looking up the wrong key in D_Itemable. It missed every time and fell back to humanizing the row name.

Five lines of code to fix. 237 of 335 Workshop items now resolve their proper display names. The other 98 don't have D_Itemable entries at all (they're meta items without player-facing names). Zero regressions.

Prospects Metadata Tool

I also built a script (scripts/update_mission_metadata.py) for the Prospects editor that syncs mission descriptions and flavor text from the data catalog. Previously this was a manual process with no tooling, so the metadata had drifted two builds behind. It's caught up now, and future game updates just need a --apply flag.

Pet Editor

Verified against the new data. All 550 talents, 20 breeds, and 31 creature types still match. No changes needed.

dev-blog-2026-04-02 Species Audit & Data Cleanup

2026-04-02

Today started with a user report that sounded simple: "SwampQuad (Stryder) mount doesn't spawn when summoned from orbit." Three hours later, I'd uncovered a much bigger data integrity problem hiding underneath.

What Happened

The initial debugging went deep. I pulled save data, compared portal-created mounts against game-native ones, traced the binary round-trip through the UE4 parser, and tested multiple patched files in-game. Nothing worked. The serializer was lossless, the template was generating valid blobs, and every field I patched made no difference.

The breakthrough came when I extracted the current data.pak and searched for Mount_SwampQuad in D_AIRelationships. It wasn't there. Not missing from my extraction. Not in a different table. Just not in the game.

The SwampQuad (Stryder) is a wild creature only. It has talent trees, bestiary entries, and a config entry pointing to Mount_SwampQuad, but no actual mount actor class exists. The portal was letting users create a mount that the game literally cannot spawn.

Once I knew to look, I ran a full audit of every species against the pak. Of the 31 species, 14 had invalid or nonexistent AI setup names.

What Shipped

Removed invalid species from create/swap lists:

  • SwampQuad (Stryder) and Blueback are not tameable. They had talent trees and bestiary data that made them look legitimate, but the game's actor relationship table never included mount entries for them.

Fixed creature naming:

  • Chew was displayed as "Dribbo." That's actually a different wild creature (Mini_Hippo). The game calls Chew "Draven." Fixed the name and updated the lore.

Reclassified Storca:

  • Storca was listed under Mounts in the create dropdown. The game data shows it as Tamed_Storca having no saddle. It's a combat pet, not a rideable mount. Moved it to the correct category.

Fixed Unicode filename downloads:

  • A separate user report: downloading an edited save with Cyrillic characters in the filename caused a 502 error. The fix adds proper RFC 5987 encoding for non-ASCII filenames across every download endpoint in the portal (pets, prospects, prospector, and data export). The user who reported this also figured out the workaround on their own, which made my job easier.

Lessons Learned

The species data was originally built from two sources: talent trees extracted from the pak files, and actor class names derived from naming conventions and wiki research. The problem is that talent trees exist for creatures the game hasn't made tameable yet. The SwampQuad has a full 22-talent tree, bestiary lore, and even a mission NPC config pointing to Mount_SwampQuad. All of that made it look legitimate when I was cross-referencing during development. But D_AIRelationships, which is what the game actually uses to resolve a mount's actor class at spawn time, never had an entry for it.

There were also plain naming errors. Chew was labeled "Dribbo" (that's the Mini_Hippo), Storca was categorized as a mount instead of a combat pet, and a few AI setup row names didn't match the real data. These accumulated because the original data was assembled by hand rather than validated programmatically against the pak.

Now that I have a fresh extraction pipeline running on the server, future species additions get cross-referenced  D_AIRelationships directly. Talent trees are useful for the editor UI, but they aren't proof that a creature is tameable. Only the actor relationship table is authoritative for that.

Issues Closed

  • #180 - SwampQuad doesn't spawn (not tameable, removed)
  • #212 - "Draven doesn't exist to pick it" (was mislabeled as Dribbo)
  • #221 - 502 on download with Cyrillic filename (Unicode encoding fix)

If you submitted any of these reports, thank you. Premium credits have been awarded.

dev-blog-2026-04-01 New Tool: Cartographer

2026-04-01

Upload any prospect save file and instantly visualize every ore deposit, cave entrance, and geyser, plotted directly on the in-game terrain map. Save and share your maps with a single link.


Quick Start

  1. Open Cartographer from the nav bar or homepage at https://icarus.eureakaendeavors.com
  2. Upload your prospect .json save file
  3. Explore your map instantly
  4. Save to generate a shareable link

How It Works

  • The parser extracts resource and structure data from UE4 save data
  • Terrain tiles are loaded from game files
  • Markers are rendered in real coordinates on the matching map
  • Map selection is automatic based on prospect metadata

Map Coverage

Terrain backgrounds available for:

  • Olympus
  • Styx
  • Prometheus (Ashlands and Icesheet null sectors coming soon with Issue #219)
  • Elysium

Resource & Marker Types

  • 15 ore types: Copper, Iron, Gold, Platinum, Coal, Salt, Titanium, Silicon, Sulfur, Exotic, Aluminium, Oxite, Stone, Uranium, Super Cooled Ice
  • ▲ Cave entrances
  • ◆ Oil & enzyme geysers
  • Cave ore deposits highlighted with dashed ring indicators

Interactive Map Features

  • Zoom and pan (mouse wheel + drag)
  • Filterable legend (toggle ore types and marker categories)
  • Select All / None controls
  • Click markers for:
  • Ore type
  • Grid reference
  • Depth
  • Remaining resources
  • Discovery status
  • Grid overlay (A–P, 1–16) matching in-game coordinates

Save & Share

  • Save maps to your account
  • Generate a shareable link instantly
  • Full interactivity for viewers (no login required)
  • Link previews include map name and owner
  • Manage maps from your profile (My Maps section)
  • Delete or copy links anytime
  • Limit: 20 saved maps per account

Known Limitations

  • Prometheus null sectors (Ashlands, Icesheet) appear as black void (terrain not yet extracted; Issue #219)
  • Outpost maps do not include terrain backgrounds

dev-blog-2026-03-31 Closing the loop.

2026-03-31

Last week, I mentioned that bug reports were a one-way street; you’d submit something, it’d turn into an issue on my end, and then… nothing. No visibility into what happened next.

That changes today.

Bug reports now have full conversation threads. When I respond, you’ll see it directly in the portal. No GitLab account, no email required. Just open the report from your profile.

You can reply right there as well. If I need more detail or you want to add context, your message goes straight back into the issue on my end. Neither of us has to leave our own interface.

Status updates are automatic. When an issue is closed, your report updates to “resolved” almost immediately. If the fix doesn’t hold, you can reopen it, and it syncs right back.

You’ll also see unread indicators for reports with new messages, so nothing gets missed.

Under the hood, this runs on GitLab webhooks for near real-time updates, with a reconciliation job every 30 minutes to catch anything that slips through. It should stay in sync; no silent drift.

Also fixed: the report form now prevents duplicate submissions from double-clicking.

This was the feature I called out last week as “in progress.” It’s live now.

If you’ve submitted a report before, check your profile; there may already be a response waiting.

dev-blog-2026-03-26 Thank you to everyone submitting bug reports

2026-03-26

Hi everyone, quick post to say thanks to those of you who've been submitting bug reports through the portal. It makes a huge difference when I can see exactly what went wrong, which tool you were using, and what you expected to happen.

A few fixes that went live today based on your reports:

  • Data Catalog: table browsing was broken (error when clicking into any table). Fixed.
  • Icons: missing item and talent icons across the Prospector and Pet editors. All 6,700+ icons are now loading.
  • Workshop downloads: MetaInventory.json was downloading your original file instead of your edited one. If you made loadout changes and got an empty inventory back... that was the bug. Fixed.

One thing I want to be upfront about: right now, when you submit a bug report, there's no notification back to you when it gets fixed. You report it, and then... silence. I know that's frustrating. Closing the feedback loop so you actually hear back when your bug is resolved; it is actively being worked on. It's not there yet, but it's coming.

In the meantime, if you submit a report that leads to a fix, I've been awarding free premium credits as a thank-you. Think of it as a bug bounty: you help make the tools better, and you get something back. If you've already submitted a report that led to one of today's fixes, you should already have tokens granted to your account.

If you run into anything, the bug report button in the portal is the best way to get it fixed. It creates a tracked issue, and I can usually turn fixes around within a day or two.

Thanks for using the tools, and for helping make them better.

dev-blog-2026-03-20 Why Your New Creatures Wouldn't Spawn

2026-03-20

Two users reported that newly created creatures wouldn't appear at the taming station. "You can only upload and change. Is that intended?"

It wasn't. Turns out there were two separate bugs hiding behind the same symptom.

The Clone Bug (#168)

When you clone a mount, the portal deep-copies the entire binary blob; all 40+ UE4 properties the game expects. But it was only updating the unique identifier (IcarusActorGUID) in the binary while leaving ObjectFName and ActorPathName as duplicates of the original. The game engine uses those paths to identify actors, so two mounts with the same path = collision = silent spawn failure.

The fix was surgical: update both path properties in the binary blob using the same suffix already computed for uniqueness. Six lines of code, one regression test.

The Create Bug (#169)

This one was worse. The "Create New Mount" feature was building mounts from a minimal 11-property template (\~550 bytes). A real game-spawned mount has 46 properties (\~7300 bytes). The game took one look at our barebones stub and said "nope."

The fix: store a canonical binary blob extracted from an actual game-spawned mount, and deep-copy it for every create. Swap the species fields, randomize sex and genetics, set sensible defaults, and borrow the owner identity from an existing mount in the save. The game gets a blob that looks exactly like a real mount, because it was one.

Created mounts now get:

  • Random sex
  • 7 random genetics (1–10)
  • Wild lineage
  • Food, water, stamina, and XP set to 1
  • Full property tree with correct UE4 types

Both fixes are live. If you had trouble with cloned or created mounts not spawning, try again; it should work now.

prospector-launch The Prospector is Live

2026-03-20

I've been working on this one for a while. The Prospector is a full character editor for Icarus, and as of today it's live on the portal.

Upload your Characters.json, and you get access to everything about your character. Talent trees across all four archetypes with click-to-edit ranks. Solo talents. Your full inventory with drag and drop, equipment slots, capacity tracking, and an item picker with every item in the game. XP editing. The works.

If you upload your Profile.json, you also get workshop talent editing, currency management, and the full loadout editor for your meta-inventory items.

And if you're into the endgame, the Bio-Lab tab lets you manage your legendary weapons. Add any of the nine weapons, configure upgrade slots with real in-game names and stat descriptions, and swap configurations without having to grind biomass to experiment. Every upgrade shows what it actually does, pulled straight from the game data.

The Prospector is a premium feature. It takes a membership to apply your edits, but uploading and exploring your character data is free. Take a look around before you decide. If the tools are useful to you, membership is $4 for 28 days, no subscription, no auto-renewal. If you find a bug on any tool in the portal, submit a bug report and get a premium token credit for your trouble when I confirm it.

Everything else on the portal that was free stays free. Pets, Prospects, the Data Catalog. That hasn't changed and won't.

dev-blog How I Broke the Portal Twice (and Made Sure It Can't Happen Again)

2026-03-19

This week, I broke the portal. Twice.

On March 16th and 17th, code changes went live that crashed the site. If you tried to upload a save file and got a 500 error during those windows, that was me. The root cause both times was the same: I'd restructured how the portal's components are organized (splitting each tool into its own independent package), and the production server didn't have the new pieces installed yet when the code landed.

The fixes themselves were quick — SSH in, install the missing packages, restart. But the real problem wasn't the bugs. It was that nothing stopped broken code from going live in the first place.

Here's how it worked before: push code, wait five minutes, it's live. No review, no tests, no safety net. That's fine when you're the only user and you're watching the logs. It's not fine when real people want to use the tools and expect them to be available.

So this morning I built the safety net.

Every change to the portal now goes through an automated pipeline — 395 tests that verify the editors work correctly, checks that all the components install and connect properly, and a database migration step that makes sure the schema is up to date. If anything fails, the change can't merge. No exceptions.

I also locked down the main branch. No more pushing directly to production. Every change goes through a merge request, the pipeline has to pass, and only then does it go live.

And for the "what if something still slips through" scenario: the deploy system now saves a snapshot before updating, checks the site health after restart, and if the health check fails, it automatically rolls back to the last working version. No human intervention needed.

Would both outages have been caught? Yes. The pipeline's very first check — "can all the packages install together?" — is exactly what failed both times. It would have blocked the merge before the code ever touched production.


Also shipped today

Bug Fixes

A user reported a crash when entering a very large XP value in the pet editor. Turns out the save file format uses 32-bit integers, and entering a number bigger than 2.1 billion would crash the serializer. Fixed in two layers: the editors now validate input ranges before you can submit them, and the serializer itself handles overflow gracefully as a safety net. The same validation was applied across all numeric fields in every editor.

Prospects Artifact Downloads

If you're logged in, your recent editing sessions now show download buttons on your profile page for Prospects saves, not just Pets. You can re-download both your original upload and the edited version.

Privacy Policy Update

The privacy notice on your profile page now accurately reflects that we retain your three most recent uploads per tool for logged-in users, so you can re-download them later.

v0.49 User Accounts, Bug Reporting & GDPR

2026-03-18

Steam Login

Sign in with your Steam account - no passwords to manage. Your Steam display name and avatar are pulled automatically.

User Profiles

View your account info, editing session history, and re-download your original uploads or edited files from your profile page.

In-App Bug Reporting

Hit a problem? Click Report a Bug in the footer of any page. Your report is automatically tracked in our issue system with your editing session attached - no need to dig up your save file.

GDPR & Privacy

  • Privacy consent prompted on first login - clear explanation of what we store
  • Export your data as JSON from your profile at any time
  • Delete your account - removes your personal data and anonymizes session history

Session History

Your uploads are now linked to your account. We keep your 3 most recent sessions per tool, with download buttons for both the original upload and edited output.

Bug Fix: GUID Deduplication

Mounts cloned before a recent fix could share internal IDs, causing the game to despawn one pet when another was called down. The editor now automatically detects and repairs duplicate IDs on upload.