∞ Infinite Space Platform Automation


Automatically creates infinite space platforms by copying existing platforms/requests with automatic activation.

Tweaks
a month ago
2.0
30
Transportation Logistics Environment

Changelog

Version: 2.0.7
Date: 2025
  Bugfixes:
    - CRITICAL: Fixed deleted/dead platforms appearing in dropdown and persisting across reloads
    - Added surface validity check to platform filtering (platform.surface.valid)
    - Platforms being deleted are now immediately filtered out (valid but surface destroyed)
    - Prevents selecting platforms that are in process of being deleted
  Technical:
    - Enhanced platform filter: platform.valid AND platform.surface AND platform.surface.valid
    - Added surface check in cache_platform_blueprint() for safe platform lookup
    - Eliminates "zombie" platforms that exist in force.platforms but are non-functional
Version: 2.0.6
Date: 2025
  Bugfixes:
    - CRITICAL: Fixed dropdown not refreshing when panel is toggled open
    - Panel now recreates (instead of just showing) when toggled, refreshing all data
    - Dropdown now always shows current platforms instead of stale data from panel creation
    - Debug messages now appear when panel opens (create_main_panel actually runs)
  Technical:
    - Changed toggle_panel() to recreate panel on open instead of toggling visibility
    - Panel close still just hides (performance), but open rebuilds everything
    - Preserves all state (debug checkbox, settings) by reading from storage
Version: 2.0.5
Date: 2025
  Bugfixes:
    - CRITICAL: Fixed platform dropdown data type inconsistency causing empty display
    - Changed first dropdown item from LocalisedString table to plain string for type consistency
    - All dropdown items now use consistent plain string format (matches working planet dropdown)
  Debug Features:
    - Added comprehensive platform enumeration logging (shows total/valid/dropdown counts)
    - Platform scan now logs each platform added with name and index
    - Panel creation now logs dropdown item count
    - All new debug messages conditional on debug_logging flag
Version: 2.0.4
Date: 2025
  Bugfixes:
    - CRITICAL: Fixed platform dropdown showing empty in new saves
    - Added platform_mapping and planet_mapping initialization to player_data
    - Dropdown handlers now regenerate mappings on-demand for robustness
    - Eliminates save-specific state dependency for dropdown population
Version: 2.0.3
Date: 2025
  GUI/UX Improvements (2.0.3.6):
    - Adjusted panel default position 150px to the right (x=370) for better screen placement
    - Removed preview label from naming section (cleaner interface)
    - Enhanced settings warning: explicit "60 platforms/second at value 1" warning with newline
    - Updated mod descriptions (info.json, README) to include naming pattern variables
    - Drastically simplified README from 197 to 44 lines (essential info only)
  Development (2.0.3.6):
    - Added package-mod.sh script for Factorio-compliant mod packaging
    - Automatically creates properly named zip files from info.json
    - Excludes dev files (.git, .DS_Store, install scripts, etc.)
    - Includes desc.jpeg in package and displays in README below Quick Start
  Bugfixes (2.0.3.5):
    - CRITICAL: Fixed platform creation only working when viewing target planet surface
    - Platform creation now works from any view: Remote View, space, any planet surface
    - Changed has_starter_pack_available() to check logistics on target planet (not player's current location)
    - Uses force.logistic_networks[surface_name] (API returns dictionary grouped by surface) instead of position-based search
    - Proper API usage: force.logistic_networks is dictionary[string → array[LuaLogisticNetwork]] keyed by surface name
    - Made SPA SUCCESS messages conditional on debug_logging flag (built entities, platform activated)
    - Complete console silence during normal operation - all messages now behind debug flag
Version: 2.0.3 (previous releases)
Date: 2025
  Major Changes:
    - Simplified to copy-only design (removed blueprint system entirely)
    - Quality now automatically inferred from source platform
    - Starter pack type inferred from source platform
  Improvements:
    - Fixed localization keys (removed custom section headers)
    - Fixed panel reset issue when selecting platforms
    - Much simpler GUI with only essential controls
    - Reduced code size by ~200 lines
    - Auto-activation: Platforms automatically unpause when construction completes
  GUI Changes:
    - Removed blueprint selector
    - Removed starter pack dropdown
    - Removed quality dropdown
    - Panel no longer resets when changing platform selection
  Technical:
    - Uses source_platform.starter_pack directly for quality inference
    - Removed force_data storage (no more blueprint tracking)
    - Added gui.update_status() for efficient status updates
    - Simplified player_data structure
  Bugfixes (2.0.3.1):
    - Fixed field name inconsistency (needs_blueprint vs needs_copy)
    - Fixed race condition where blueprint application would fail if surface/hub not ready
    - Added periodic retry mechanism (every 60 ticks) for pending platforms
    - Added comprehensive debug logging for blueprint application
    - Added error handling for import_stack() return values
    - Added force validation in periodic check
    - Fixed tile copying: changed always_include_tiles from false to true for contiguous ground
  Features (2.0.3.2):
    - Auto-activation: Platforms pause after blueprint application, then automatically unpause when construction completes
    - Smart timeout: Platforms activate after 5 minutes of no construction progress (handles unreachable ghosts)
    - Progress tracking: Monitors ghost entity count every 2 seconds to detect construction completion or stalls
    - Schedules preserved: Blueprint system automatically copies platform schedules (no manual intervention needed)
  GUI Improvements (2.0.3.3):
    - Enable Auto-Creation moved to top with bold text and colored indicator (green checkmark/red X)
    - Toggle button and panel now auto-hide when exiting remote view
    - Panel auto-closes when leaving remote view, remembers preference when returning
    - Fixed close/reopen bug where panel would auto-reopen after manual close
    - Shortened planet dropdown width to 150px
    - Added bottom description: "Completed platforms will be set on automatic."
    - Panel starts closed on save load, respects user preference
  Bugfixes (2.0.3.3):
    - CRITICAL: Fixed crash caused by invalid style "heading_1_label" (changed to "bold_label")
  GUI Improvements (2.0.3.4):
    - Changed disabled indicator from close_fat to not_available (much more visible red X)
    - Added "Enable Debug Logging" checkbox to panel for user-controlled debug output
    - All 16 print statements now conditional on debug_logging flag (12 debug + 4 success messages)
    - Updated mod settings description with explicit min/max range (60-3600 ticks / 1-60 seconds)
  Technical (2.0.3.4):
    - Added debug_logging flag to player_data (defaults to false)
    - Debug messages only show when explicitly enabled by user
    - Prevents console spam during normal operation
    - Platform creation and blueprint copy success messages now also conditional on debug flag (4 additional messages)
  Settings (2.0.3.4):
    - Lowered check interval minimum from 60 to 1 tick (allows ultra-responsive automation)
    - Added strong performance warning for values below 60 ticks
    - Updated range display: 1-3600 ticks (0.017-60 seconds)
Version: 2.0.2
Date: 2025
  Major Changes:
    - Completely redesigned GUI system to use floating screen panel
    - Panel now uses player.gui.screen instead of relative anchoring
    - Automatic visibility control based on controller_type (Remote View detection)
    - Panel appears when entering Remote View, hidden in normal play
    - Manual positioning at x=220, y=100 for optimal placement
  Improvements:
    - Added gui.update_panel_visibility() function
    - Panel visibility updates every 30 ticks (~0.5 seconds)
    - Much more reliable GUI visibility in Remote View
  Technical:
    - Removed relative GUI anchor system (was conditional and unreliable)
    - Uses defines.controllers.remote for Remote View detection
    - Floating GUI with manual location control
Version: 2.0.1
Date: 2025
  Bugfixes:
    - Attempted fix for GUI visibility (changed to relative GUI with anchor)
    - This version did not work correctly - see 2.0.2 for proper fix
Version: 2.0.0
Date: 2025
  Major Features:
    - Complete GUI integration into left panel (no more hotkeys!)
    - Native Factorio dropdowns for all configuration options
    - Platform copying feature as alternative to blueprints
    - Choose-elem-button for blueprint selection
    - Toggle button in top toolbar for easy access
    - Real-time status display in panel
  Changes:
    - Removed hotkey system (Ctrl+Shift+P)
    - Settings moved from mod settings to integrated GUI
    - Per-player runtime settings replaced with GUI controls
  Improvements:
    - Dropdown for planet/space location selection
    - Dropdown for starter pack type selection
    - Dropdown for quality level selection
    - Dropdown for platform copy source selection
    - Live preview of naming patterns
    - Status indicator shows pending platforms
  Technical:
    - Comprehensive Factorio API research for GUI integration
    - Entity cloning for platform copying
    - Dynamic dropdown population from prototypes
    - Proper event handling for GUI interactions
Version: 1.0.0
Date: 2025
  Features:
    - Initial release
    - Automatic space platform creation based on starter pack availability
    - Per-force blueprint system with auto-paste functionality
    - Customizable platform naming with pattern variables ({counter}, {tick}, {player}, {random})
    - Per-player configuration for planet, starter pack type, and quality
    - GUI for blueprint selection and configuration (Ctrl+Shift+P)
    - Runtime settings (no restart required for most changes)
    - Pattern validation with safe fallbacks
    - Multiplayer support with team-level blueprint sharing
    - Remote interface for mod integration