Explore planets without spoilers. Hides planet technology branches until your first rocket launch from Nauvis, with automatic support for modded planets and technology dependencies.
Small changes concerning balance, gameplay, or graphics.
Version: 1.0.34
Date: 2026-07-27
Features:
- compat-overrides.lua now supports a silent_planets list -- landing there still reveals the planet's technologies as normal, just without the chat message/popup announcement. Added Muluna to it, since its discovery is now permanently excluded (always visible) and therefore isn't a surprise to announce arrival for anymore.
Version: 1.0.33
Date: 2026-07-27
Info:
- Added permanent diagnostic logging for every way the translated-name lookup can fall back to the internal name (request_translation erroring, returning false, or Factorio reporting translated=false), printed to factorio-current.log. Added because 1.0.32's fix targeted a different failure mode (a stolen/mismatched translation event) than what was actually reported -- the readable column was showing an exact copy of the internal name, not unrelated text, which points at one of these fallback paths instead. Next occurrence should show exactly which one in the log, rather than needing another guess.
Version: 1.0.32
Date: 2026-07-27
Bugfixes:
- Fixed the actual cause of translated names never appearing in hidden-techs.txt/visible-techs.txt: the code assumed the next on_string_translated event for a player was always the answer to our own pending request_translation call, but that's a shared engine API -- any other translation happening for that player (Factorio's own UI, another mod) in the meantime could get consumed instead, silently corrupting the result. Now verifies the received localised_string actually matches what was requested (compared via helpers.table_to_json) before accepting it, ignoring anything else.
- Fixed a whole class of bug the same shape as 1.0.31's Muluna fix: compat-overrides.lua's exclude list (and the "extra exclude" setting) were only cleaned up AFTER the hiding cascade finished, so an excluded technology could still be marked hidden for the duration of that cascade and leak false-hiding to anything depending on it, before the cleanup ever ran. Exclusions are now checked directly inside both hiding passes (data-final-fixes.lua and control.lua), so an excluded technology can never enter the hidden set at any point, in either stage.
Info:
- Full audit of the whole mod against this changelog's claims, requested after 1.0.31 -- no other discrepancies found. Fixed a stale comment referencing the old data-updates.lua filename (renamed to data-final-fixes.lua back in 1.0.12).
Version: 1.0.31
Date: 2026-07-27
Bugfixes:
- Fixed "crafting Thruster fuel doesn't unlock Muluna" for real this time, confirmed via a diagnostic log dump rather than guesswork. 1.0.30 only excluded planet-discovery-muluna itself, but its own prerequisite, thruster-fuel, was still being hidden at data stage (enabled = false, confirmed directly in the log) and revealed later via script at runtime -- the same pattern suspected to break craft-trigger tracking. Since thruster-fuel could then never actually complete, planet-discovery-muluna could never become researchable either, no matter what we did to it directly. Excluded the whole chain now: fluid-barreling, thruster-oxidizer, thruster-fuel, and planet-discovery-muluna -- a single broken link anywhere in a prerequisite chain blocks everything after it, so every trigger-based technology in the chain needed to be excluded, not just the two ends.
Version: 1.0.30
Date: 2026-07-27
Compatibility:
- Excluded planet-discovery-muluna from ever being hidden, at the user's request. This is a genuine tradeoff, not a false-positive fix like the previous two exclusions: it's a correctly-detected discovery technology, but its craft-item research trigger doesn't complete once toggled enabled via script (see 1.0.29's notes) -- an apparent Factorio engine quirk with no safe workaround found (LuaForce.reset_technology_effects() would fix the trigger but has the documented side effect of re-enabling OTHER hidden technologies too). Excluding it means Muluna's discovery is visible from the start of a save (no progression hiding for that one planet specifically), in exchange for it working correctly.
Bugfixes:
- Fixed a regression this exclusion would otherwise have caused: is_known_discovery_planet() only checked storage.discovery_techs, which no longer contains an excluded discovery technology's planet. Landing on such a planet would then never be recognized as "arriving somewhere", permanently stopping the rest of that planet's own hidden tech tree from ever being revealed by a visit. It now also checks storage.tech_planets, so a planet keeps being tracked correctly even when its own discovery technology is excluded.
Version: 1.0.29
Date: 2026-07-27
Known issues:
- A discovery technology whose research_trigger is craft-item-based (e.g. Muluna's planet-discovery-muluna, which requires crafting Thruster fuel) can fail to complete even after crafting the required item, once its `enabled` state has been set programmatically by this mod rather than through normal game progression. Confirmed the technology and its entire prerequisite chain are NOT hidden by this mod in this situation (checked via the hidden_reason diagnostic) -- the tech tree itself is fully open. This looks like a narrower Factorio engine quirk around scripted-enabled craft-item research triggers rather than something fixable in this mod's code, and hasn't been reproduced/confirmed outside of Muluna specifically. Workaround: `/c game.player.force.technologies["<tech-name>"].research_recursive()` in the console completes the technology (and its prerequisites) directly, bypassing the trigger entirely.
Version: 1.0.28
Date: 2026-07-27
Bugfixes:
- Excluding a technology (compat-overrides.lua's exclude list or the "extra exclude" mod setting) now also retroactively re-enables it if an older version of this mod had already left it disabled before the exclusion existed -- e.g. space-platform-thruster/space-science-pack on saves that hit the Muluna tech-tree-rewrite issue (1.0.25, 1.0.27) on a previous version. Previously, excluding a technology only stopped the mod from touching it going forward; it did nothing to fix a save where it was already stuck hidden, so new games were fine but existing saves stayed broken until fixed by hand via the console.
Version: 1.0.27
Date: 2026-07-27
Compatibility:
- Excluded space-science-pack from ever being hidden. Same root cause as 1.0.25's space-platform-thruster fix (Muluna's own tech-tree rearrangement in its data-final-fixes.lua giving it a Muluna-specific prerequisite), found this time via the new hidden_reason diagnostic (1.0.26) instead of by manual report. Because so much of the tech tree depends on space-science-pack, this single false link had dragged dozens of unrelated technologies (tier-2/3 modules, kovarex enrichment, the atomic bomb, worker-robots-speed-6/7, the whole rocket-part-productivity family, and more) into being hidden along with it.
Version: 1.0.26
Date: 2026-07-27
Features:
- hidden-techs.txt (from /show-hidden-techs) now includes a third column with a short human-readable reason for why each technology was hidden (discovery effect, compat-overrides entry, which prerequisite or research ingredient triggered the cascade, etc.). Meant as a diagnostic aid for spotting false positives from mod interactions (like 1.0.25's Muluna/space-platform-thruster case) without having to manually diff the full technology list with and without the mod installed.
Version: 1.0.25
Date: 2026-07-27
Compatibility:
- Excluded space-platform-thruster from ever being hidden. Muluna rewrites the vanilla tech tree in its own data-final-fixes.lua (moving space-platform-thruster's place in the prerequisite chain relative to asteroid-collector and the planet-discovery technologies), which our cascade logic could misread as a planet dependency on some mod combinations (confirmed on a save with Muluna + Krastorio 2 Spaced Out installed together). It's a prerequisite FOR reaching other planets, not something a planet visit should gate, so it's now permanently excluded regardless of what any cascade concludes.
- compat-overrides.lua now supports a permanent "exclude" list (same effect as the "extra exclude" mod setting, but built into the mod) for cases like this.
Version: 1.0.24
Date: 2026-07-27
Tweaks:
- Reduced the delayed hidden-tech re-enforcement pass (the one guarding against other mods' own migration logic, e.g. Rubia's) from 1 second down to 0.1 second (6 ticks). A full second was never actually necessary for reliability -- every mod's handler for the same event runs synchronously within one tick, so re-checking even 1 tick later already guarantees running after all of them.
- Re-enabling Progressive mode (after having turned it off) now actively re-hides planet-specific technologies that aren't yet visited, instead of leaving everything that was revealed while it was off untouched. This was a deliberate design change from 1.0.23's behavior, made on request -- toggling the setting is something the player did on purpose, so re-hiding here is expected rather than an unwanted surprise. Already-researched technologies are still never touched either way.
Version: 1.0.23
Date: 2026-07-27
Bugfixes:
- Fixed the exact same "other mod re-enables its own technology on this event, whichever handler runs last wins" race (see 1.0.13, 1.0.22) still being possible specifically on mod updates to an existing save where the rocket had already launched -- that branch of on_configuration_changed only ever revealed things and never scheduled the delayed re-enforcement pass that 1.0.22 relies on, so a competing mod's own on_configuration_changed handler could still have the last word there. It's now scheduled from every branch, not just the pre-launch one.
- Re-enabling progressive mode (after having turned it off) now re-syncs planet-visit tracking from current research state, so newly visiting a planet afterward correctly resumes revealing things planet-by-planet again, instead of the mod staying effectively stuck in "everything visible" mode for that save until a fresh game.
Version: 1.0.22
Date: 2026-07-27
Bugfixes:
- Fixed hidden technologies (Rubia's in particular) becoming permanently unprotected after the rocket launches. enforce_hidden_techs() used to bail out entirely once storage.planet_techs_revealed became true -- correct for the old all-at-once reveal, but wrong under progressive mode, where Category-2 (planet-specific) technologies can legitimately need to stay hidden for a long time after launch, pending a planet visit. It's now planet-aware at any point in the game, not just before launch.
- Added a permanent guard against other mods' own migration logic (e.g. Rubia's sync_all_unknown_techs()) re-enabling technologies during completely normal play, not just right after a mod update. Our re-enforcement pass now also re-schedules itself on defines.events.on_technology_effects_reset, the same event those mods react to, instead of only firing once after on_init/on_configuration_changed.
Tweaks:
- Increased the delay before the "landed on a planet" announcement from 3 to 10 seconds -- 3 wasn't enough time for the landing animation to finish.
Version: 1.0.21
Date: 2026-07-27
Bugfixes:
- Fixed the "landed on a planet" announcement (chat + popup) firing for Nauvis too, and firing again on every subsequent visit to an already-visited planet instead of only the first time. Nauvis is now explicitly excluded (it's the starting planet, never "unlocked" by anything), and the announcement is now gated on this actually being a new visit.
- Delayed the "landed on a planet" announcement by ~3 seconds after the actual landing, so it no longer appears in the middle of the landing transition/animation.
Version: 1.0.20
Date: 2026-07-27
Bugfixes:
- Fixed 1.0.19's attempted fix for the same crash -- prototypes.planet doesn't exist either (confirmed this time directly against the official LuaPrototypes API reference, rather than guessing again): planet prototypes are exposed under prototypes.space_location (since PlanetPrototype inherits from SpaceLocationPrototype), not a dedicated prototypes.planet. Now uses prototypes.space_location[planet.name].localised_name.
Version: 1.0.19
Date: 2026-07-27
Bugfixes:
- Fixed a crash in on_player_changed_surface: LuaPlanet (the runtime instance returned by surface.planet) doesn't have a localised_name field -- only LuaPlanetPrototype does. Now looked up via prototypes.planet[planet.name].localised_name instead.
Version: 1.0.18
Date: 2026-07-27
Features:
- Added Progressive mode (new runtime-global setting "hide-planet-techs-progressive-mode", enabled by default, toggleable at any time from in-game mod settings). When enabled: the first rocket launch only reveals planet-DISCOVERY technologies (the ones with a genuine unlock-space-location effect) rather than everything at once -- each planet's own dependent technologies stay hidden until any player actually lands on that planet. A technology that requires more than one planet at once (a genuine "crossroads", e.g. it needs science packs from two different planets) only reveals once ALL of its required planets have been visited; landing on one of several required planets prints a short notice that more planets are needed. When disabled, behavior is unchanged from before -- everything reveals at once on rocket launch.
- Landing on a planet now shows its own chat message + popup ("Landed on <planet>! Its technologies are now available for research"), reusing the same generic text for every planet (no per-planet/per-mod custom text yet -- planned for later).
- compat-overrides.lua entries can now optionally specify which planet a technology belongs to (a plain planet name instead of `true`), used by progressive mode. Krastorio 2's core technologies are deliberately left as `true` (planet unresolved) since which planet they actually require depends on which other K2 planet mods are installed -- their planet is instead worked out automatically via the same prerequisite/research-ingredient cascade used for automatic detection, so it adapts to whatever mods are actually running rather than being hardcoded.
- Existing saves where the rocket was already launched before progressive mode was introduced use a best-effort heuristic to guess which planets were already visited (any planet with an already-researched technology tagged as belonging to it counts as visited) -- not perfectly reliable, but reasonable in practice.
Bugfixes:
- control.lua's own hidden-tech recomputation now also respects the "extra exclude" mod setting, matching data-final-fixes.lua's behavior at data stage. Previously a technology added to that setting could still get force-hidden again by the runtime re-enforcement pass.
Version: 1.0.16
Date: 2026-07-27
Features:
- Added a small centered GUI popup alongside the existing chat messages, shown at the two key moments: the welcome message (~30 seconds into a new game) and the planet-techs reveal. Reuses the same localized text as the chat messages, closes via its own button or automatically after 30 seconds.
- The planet-techs reveal (chat message + popup) now happens ~5 seconds after the first rocket launches from Nauvis, rather than instantly, as a small deliberate pause for the moment.
- Consolidated all of the mod's delayed/periodic internal timing (welcome message, delayed reveal, the hidden-tech re-enforcement pass added in 1.0.13, and now popup auto-close) into a single unified tick dispatcher, replacing several previously-separate on_tick/on_nth_tick registrations.
Version: 1.0.15
Date: 2026-07-27
Info:
- Version bump only, no code changes over 1.0.14. Needed because 1.0.14 was already published as a separate release targeting Factorio 2.1 (experimental), and the mod portal requires each release's version number to be unique across a mod's entire history, regardless of which factorio_version it targets. This is the 2.0.77 (stable) release; see the separate 2.1-targeted release for the experimental branch.
Version: 1.0.14
Date: 2026-07-27
Bugfixes:
- Fixed the 1.0.13 re-enforcement fix itself not persisting reliably. script.on_nth_tick registrations do not automatically survive a normal save close/reload -- they only exist for the session in which they were registered unless re-registered every time control.lua runs. Since the scheduling call only happened inside on_init/on_configuration_changed (one-time events), reloading a save before the scheduled tick (~1 second later) had elapsed would silently drop the pending re-enforcement, leaving anything Rubia (or another mod) re-enabled in the meantime stuck that way for good on that save. Added a script.on_load handler that re-registers the pending check on every load if one was still outstanding, so it can no longer be lost this way.
Known issues:
- Planet Rubia's technologies (including planet-discovery-rubia) work correctly, but can briefly flash visible for about 1 second when a world first generates or loads, before being hidden again. This is expected: Rubia's own migration safety net force-enables its technologies on startup, and our fix re-hides them ~60 ticks later to reliably run after it. Opening the technology tree in that first second may show Rubia's technologies before they get hidden.
Version: 1.0.13
Date: 2026-07-27
Bugfixes:
- Fixed Rubia's planet-discovery technology (planet-discovery-rubia) staying visible. Root cause found by inspecting Rubia's own source: Rubia's sync_all_unknown_techs(), which runs on its own on_init/on_configuration_changed/on_technology_effects_reset, unconditionally sets `enabled = true` on every technology it created (as a migration safety net) before re-hiding only the technologies that are part of its own known/unknown-tech pairing system. Its planet-discovery tech isn't part of that pairing system, so it stays enabled = true every time Rubia's handler runs -- which happens on the same events our mod also hooks, so whichever mod's handler happened to run later would win.
- Added enforce_hidden_techs(), which forces enabled = false on every technology in our hidden set (skipping anything already researched), plus a one-shot re-enforcement scheduled ~1 second (60 ticks) after on_init/on_configuration_changed via on_nth_tick. This re-application is guaranteed to run after every mod's own synchronous on_init/on_configuration_changed handlers have finished, regardless of inter-mod event handler ordering, so it reliably has the last word over technologies that another mod's own migration logic re-enables.
Version: 1.0.12
Date: 2026-07-27
Bugfixes:
- Moved all technology-hiding logic from data-updates.lua to data-final-fixes.lua. This mod's info.json declares no dependency on any specific planet mod, so data-updates.lua could run before another mod's own data-updates.lua defines its technologies (confirmed this reproduced even on a brand new save, ruling out save-state staleness as the only cause) -- at that point there was nothing yet in data.raw.technology to hide. data-final-fixes.lua is guaranteed by the engine to run after every mod's data.lua AND data-updates.lua have both finished, regardless of dependency order, so this is no longer load-order-sensitive.
Version: 1.0.11
Date: 2026-07-27
Bugfixes:
- Fixed the actual root cause behind technologies staying visible on existing saves (this affected everything in compat-overrides.lua, not just newly-added entries, and turned out to have nothing to do with mod versioning). Previously, hiding was only ever applied via data-updates.lua at the data stage, which only sets the DEFAULT enabled state for technologies on a brand new force -- it does nothing for a technology that was already `enabled = true` on an existing save before it was ever recognized as planet-related (e.g. before a compat-overrides entry existed for it, or before this mod was installed at all). The mod never had any code path that wrote `enabled = false` at runtime, only `= true` (for revealing after rocket launch), so nothing could ever retroactively fix an already-running save.
- build_hidden_tech_list() in control.lua now determines which technologies should be hidden purely from static criteria (space-location effect, prerequisites/research-ingredient cascade, compat-overrides exact names and prefixes), independent of each technology's current `enabled` state, and then actively forces `enabled = false` on every matching, not-yet-researched technology for every force. This retroactively corrects existing saves instead of only affecting brand new games.
- The prerequisites/research-ingredient cascade and the recipe-gating check were also de-coupled from the technology/recipe's current runtime `enabled` state (previously read from force.recipes[...].enabled, now read from the recipe prototype's own default via prototypes.recipe[...].enabled) for the same reason.
Version: 1.0.10
Date: 2026-07-27
Compatibility:
- Verified muluna-nanofoamed-polymers against Muluna's own locale/en/locale.cfg on GitHub -- confirmed correct, no typo.
Info:
- Version bump only, no further code changes over 1.0.9 -- testing on 1.0.9 showed technologies that have been in compat-overrides.lua since 1.0.6 (well before this update) still not hidden, which points at an old copy of the mod still being loaded rather than a code issue. If you have multiple folders/zips for this mod under different version numbers in your mods directory, delete ALL of them and install only this one before retesting.
Version: 1.0.9
Date: 2026-07-27
Features:
- Added /hide-planet-techs-reveal-now command (admin-only) to force-reveal all hidden planet technologies immediately, without launching a rocket. Intended for testing.
Compatibility:
- compat-overrides.lua now supports name-prefix rules in addition to exact names, so a whole mod's technology family can be covered by one entry instead of listing every technology individually.
- Added: calciner, diesel-automation (Pelagos dependencies); kr-alpha-core, kr-beta-core, kr-gamma-core (Krastorio 2 Spaced Out); rubia-unknown-technology-* prefix (covers all currently-known Rubia technologies).
Bugfixes:
- Fixed a crash in /show-hidden-techs and /show-visible-techs caused by calling game.write_file, which no longer exists in the Factorio 2.0 API (moved to helpers.write_file).
- Fixed the file output of /show-hidden-techs and /show-visible-techs always showing internal names instead of the translated readable names. The previous request/response matching relied on request_translation returning a request ID and on_string_translated carrying an id field -- neither exists in the API (request_translation only returns true/false). Translations are now requested one at a time per player instead, removing the need to match requests to responses at all.
Version: 1.0.8
Date: 2026-07-27
Features:
- Added /show-hidden-techs and /show-visible-techs chat commands. Internal technology names are printed to chat; internal name plus a human-readable name (translated into the calling player's own game language) are written to a file under script-output/hide-planet-techs/.
Version: 1.0.7
Date: 2026-07-27
Bugfixes:
- Fixed technologies staying hidden forever if the mod was added to a save where a rocket had already been launched before the mod was installed.
Version: 1.0.6
Date: 2026-07-27
Features:
- Added a curated compatibility list (compat-overrides.lua) for technologies that are gated through mod-specific mechanisms (e.g. scripted research triggers) our automatic detection can't see on its own.
- Added diagnostic log messages listing technologies with a scripted research trigger that aren't hidden by any automatic check, to help find future compatibility issues.
Version: 1.0.5
Date: 2026-07-26
Bugfixes:
- Fixed technologies that require a science pack which can only be produced via a recipe unlocked by a hidden technology (e.g. MAGLEV Trains from SE Space Trains) never being revealed after the rocket launch.
Changes:
- Hiding logic now also follows research-cost ingredients (science packs), not just technology prerequisites.
Version: 1.0.4
Date: 2026-07-26
Changes:
- Added mod icon and mod portal thumbnail.
Version: 1.0.3
Date: 2026-07-26
Bugfixes:
- Fixed a bug where only technologies literally named like "planet-discovery-*" were revealed after the first rocket launch; everything further down the tech tree stayed hidden forever (the runtime prerequisites table was being iterated with the wrong Lua function).
Changes:
- Technology detection now uses the game's own "unlock-space-location" effect instead of a hardcoded list of planet names, so modded planets are supported automatically.
- Added startup settings ("extra hide" / "extra exclude") to manually add or exclude specific technologies.
- Added a permissive (MIT) license.