Selecting a messy power-pole area, rebuilding only the internal copper links into a cleaner row/column comb, and doing it safely and efficiently without disturbing unrelated wiring.
Mods introducing new content into the game.
Version: 0.1.40
Date: 2026-10-28
Changes:
- Minor Code cleanup
Version: 0.1.39
Date: 2026-10-13
Changes:
- Promoted the 0.1.38 validated S1+S2+S4 integration into the sole production path.
- Production Kruskal merge now maintains an incremental unresolved-network count instead of rescanning every network after each successful merge.
- Production Direct-Line and Kruskal sorts now use the validated inline/localised deterministic comparators.
- Production selection now memoises max copper-wire reach by pole prototype name + quality; the representative 24,029-pole workload reduced reach API calls from 24,029 to 10 in validation.
- Removed the combined-winners comparison setting, planner shadow, S4 replay benchmark and their runtime phases from the production path.
- Kept fused Direct-Line axis scan, cell-40 numeric residual buckets, Frozen Roots, fully fused inline Half-Scan, exact reach authority, validation, make-before-break and rollback unchanged.
- Profiler report format is now 10 and records production reach-memo API calls/cache hits.
Version: 0.1.38
Date: 2026-10-13
Changes:
- Kept the validated 0.1.37 production planner unchanged.
- Replaced the completed S1-S6 multi-shadow benchmark with one combined-winners integration A/B.
- Combined planner shadow stacks the individually successful S1 incremental unresolved-network count and S2 inline Direct-Line/Kruskal sort comparators.
- Retained only the successful S4 prototype+quality reach reference/memo replay; S3/S5 inconclusive paths and the rejected S6 pairwise traversal are removed from the active benchmark.
- Production-vs-combined planner order and S4 reference-vs-memo order alternate by job id.
- Exact topology, candidate-stream, semantic, iterator-work, network-state and per-pole reach gates remain mandatory.
- Profiler report format is now 9.
Version: 0.1.37
Date: 2026-10-13
Changes:
- Promoted the 0.1.36 fully fused Half-Scan residual scanner into production after 9/9 exact in-game comparisons and a representative ~5.9% idempotent 24k candidate-scan reduction.
- Replaced the completed single A/B with one opt-in multi-shadow S1-S6 benchmark so six next-step optimisations can be measured in one in-game profiling round.
- S1 full planner: incremental unresolved-network count during Kruskal merge.
- S2 full planner: inline/localised Direct-Line and Kruskal sort comparators.
- S3 read-only replay: direct numeric canonical pair key in the selected-connection snapshot loop.
- S4 read-only replay: prototype+quality wire-reach memoisation.
- S5 read-only replay: localised/indexed live connection-snapshot traversal while retaining the reference pair-key helper.
- S6 full planner: pairwise Direct-Line traversal that evaluates each aligned unordered pair once while resolving both endpoint directions.
- Planner and shared-shadow execution orders rotate by job id; production remains the only committing authority.
- Added exact per-shadow correctness gates and profiler report format 8.
Version: 0.1.36
Date: 2026-10-12
Changes:
- Kept the validated production planner unchanged after rejecting 0.1.35 circular cell pruning.
- Reused the development comparison toggle for a fully fused Half-Scan residual candidate benchmark.
- The shadow inlines the next_pair_half iterator state machine into fused candidate processing, removing one Lua iterator call/return per yielded residual pair without adding new data structures or per-pair calculations.
- Preserved the exact flat cell-40 buckets, Half-Scan order/duplicate handling, frozen roots, budget accounting, exact reach checks, table-record candidates and deterministic Kruskal behavior.
- Added exact candidate-stream, semantic and iterator-work equality gates; profiler report format is now 7.
- Removed the completed circular-cell-pruning shadow/runtime path.
Version: 0.1.35
Date: 2026-10-12
Changes:
- Kept the validated 0.1.34 production planner unchanged.
- Added an opt-in circular-cell residual Half-Scan A/B shadow.
- The shadow skips whole cells only when their AABB cannot intersect the source pole reach circle.
- Added exact sorted-candidate-stream, topology, semantic and cell-accounting comparison gates.
- Added counters for geometrically skipped cells and work avoided; profiler report format is now 6.
- Removed the completed 0.1.34 residual-rejection probe runtime path.
Version: 0.1.34
Date: 2026-10-12
Changes:
- Promoted the 0.1.33 fused Direct-Line axis scan into production after 9/9 exact in-game comparisons and a representative ~4.3% 24k axis-phase reduction.
- Removed the completed Direct-Line axis A/B shadows and comparison report.
- Reused the development profiling toggle for a read-only residual candidate rejection probe.
- The probe replays the exact Half-Scan pair stream without a second can_wire_reach pass and classifies residual pairs into same-component, different-network, geometry/reach-bound, and exact-reach-gate work.
- After unchanged production candidate generation completes, the report derives exact-reach rejects from exact-gate pairs minus accepted Kruskal candidates and verifies the replay stream against production iterator counters.
- Profiler report format bumped to 5; rolling last-20 session retention, per-job mod-version metadata, optional compact status messages, validation, mutation and rollback behavior are unchanged.
Version: 0.1.33
Date: 2026-10-12
Changes:
- Added a development-only same-job A/B for the Direct-Line axis hot path.
- Reference shadow preserves the current helper-based planner_can_reach path; fused shadow inlines numeric canonical pair-key generation and reach-cache handling while preserving candidate order, exact can_wire_reach calls, and new-edge-only Union-Find bookkeeping.
- Shadow execution order alternates by job id; unchanged production always runs last and remains authoritative.
- Added exact shadow-vs-shadow and shadow-vs-production state/counter checks plus separate LuaProfiler timings for setup, reference, fused and compare phases.
- Comparison setting defaults OFF; permanent rolling 20-entry production profiling and optional compact status messages are unchanged.
- Profiler report format bumped to 4 for the new optional comparison record.
Version: 0.1.32
Date: 2026-10-12
Changes:
- Added runtime-global boolean setting "Show Running/Completed status messages", default OFF for production.
- When enabled, successful jobs show only the compact Running and Completed pair introduced in 0.1.31.
- The setting is snapshotted at job start so each job gets both status messages or neither.
- Actionable exceptional/error messages remain visible regardless of the status-message setting.
- Profiler retention/timings remain independent of chat output; each job metadata line now records status_messages=true/false.
- Kept the exact PGCO mod version in every profiler job header/meta block.
- No optimizer/planner/validation/mutation/rollback behavior changed.
Version: 0.1.31
Date: 2026-10-12
Changes:
- Reduced normal successful on-screen output to exactly two compact messages: Running at job start and Completed at job finish.
- Running message includes PGCO version, pole count, apply/dry-run mode and surface name.
- Completed message includes PGCO version, pole count, apply/dry-run mode, add/remove counts and elapsed ticks.
- Removed normal planner-counter, LuaProfiler-total and profiler-file-path chat spam; detailed diagnostics remain in profiles.txt.
- Preserved actionable exceptional messages such as invalid selection, concurrent job and cancellation reasons.
- Added exact PGCO mod version and Factorio/base version to every retained profiler job header/meta block, not only the session header.
- Bumped profiler report format to 3 for the per-job version metadata.
Version: 0.1.30
Date: 2026-10-12
Changes:
- Promoted the 0.1.29 validated new-edge-only Direct-Line axis bookkeeping into production; duplicate/reverse desired-axis occurrences no longer repeat Union-Find find/union work.
- Removed the completed axis-bookkeeping A/B runtime path and development comparison setting.
- Kept normal coarse production LuaProfiler phase timing permanently available; no per-candidate/deep profiler calls were added to the production hot loops.
- Replaced unbounded profiler-file appending with one rolling profiles.txt retaining the latest 20 completed apply/dry-run jobs for the current Factorio runtime session.
- Added session metadata for report format/retention, PGCO version, Factorio/base version, Space Age version and sorted active-mod versions.
- Added per-job metadata for session sequence, player/surface, selection bounds, start/end tick, work/wire budgets and dry-run state.
- Rolling profiler history intentionally resets across runtime/save reload; the previous on-disk file is replaced on the first newly completed profiled job.
Version: 0.1.29
Date: 2026-10-12
Changes:
- Kept the validated 0.1.28 production selection, Direct-Line axis scan, residual planner, validation, mutation and rollback paths authoritative and unchanged.
- Replaced the completed axis-scan decomposition with a controlled read-only axis-bookkeeping A/B using the same captured reachable axis occurrences.
- Reference bookkeeping reproduces current production behaviour: desired-edge dedupe followed by Union-Find connectivity checks for every reachable occurrence.
- New-edge-only bookkeeping performs Union-Find find/union work only when add_desired_edge() inserts a new desired edge, skipping duplicate reverse-occurrence connectivity work.
- Reference/variant order alternates by job id; both use independent copies of identical pre-axis desired-edge and Union-Find state, and unchanged production runs afterward.
- Added exact desired-state/component/production equivalence checks plus counters for reference vs variant Union-Find occurrences and skipped duplicate bookkeeping.
Version: 0.1.28
Date: 2026-10-12
Changes:
- Kept the validated 0.1.27 production selection, planner, validation, mutation and rollback paths authoritative.
- Retired the completed snapshot/index construction probe and reused the development profiling toggle for Direct-Line axis-scan decomposition.
- Added an independent exact trace replay, cached-traversal replay, raw reach-call replay and desired-edge/Union-Find bookkeeping replay over the production-sorted Direct-Line groups.
- The real production direct_step_axis_scan implementation remains unchanged and is still the only axis path allowed to supply production topology/state.
- Added exact probe-vs-production counters for candidate checks, raw reach calls, cache hits, unique axis edges and unresolved-network result.
Version: 0.1.27
Date: 2026-10-12
Changes:
- Kept the 0.1.26 validated numeric nested selection-network grouping and all production planner/safety behaviour unchanged.
- Reintroduced the development profiling toggle as a read-only snapshot/index construction decomposition probe.
- Added separate LuaProfiler timings for per-pole snapshot-record construction, connector-cache construction, unit-number index construction, their aggregate build cost, and exact comparison overhead.
- The probe runs only after authoritative production selection has already been constructed/timed and never supplies state to production.
- Added exact record/cache/index equivalence diagnostics so the next optimization target can be selected from measured costs rather than guessed.
Version: 0.1.26
Date: 2026-10-12
Changes:
- Promoted numeric nested selection-network grouping directly into the authoritative production selection loop after the 0.1.25 in-game A/B matched reference/production in all supplied jobs and reduced representative 24,029-pole grouping time by about 90%.
- Connected networks now use numeric force_index -> network_id maps; isolated network_id==0 poles allocate unique internal networks directly without string keys.
- Preserved first-seen internal-network ordering, network sizes, original force/network metadata and per-pole network assignment semantics.
- Retired the completed string-vs-numeric selection-grouping comparison setting, benchmark tables and profiler phases.
- Planner, exact reach checks, validation, mutation planning, make-before-break commit, rollback, protected-wire, circuit-wire, original-network and dry-run behaviour are unchanged.
Version: 0.1.25
Date: 2026-10-12
Changes:
- Kept the validated production planner, production string-key selection grouping, and authoritative validation unchanged.
- Replaced the 0.1.24 selection decomposition probe with a controlled read-only same-job network-grouping A/B.
- Added a numeric nested grouping candidate using force_index -> network_id maps; isolated network_id==0 poles allocate unique internal networks directly without string lookup keys.
- Reference and numeric grouping run on the same connector-bearing input sequence with alternating order; neither benchmark supplies state to production selection.
- Added exact per-pole assignment/group-size/original-ID comparison against both the reference candidate and unchanged production selection.
- Existing planner, exact reach, validation, mutation, rollback, protected-wire, circuit-wire, original-network and dry-run behaviour is unchanged.
Version: 0.1.24
Date: 2026-10-12
Changes:
- Kept the validated production planner and authoritative production validation unchanged after rejecting the 0.1.23 inline-membership validation shadow on performance.
- Reused the development profiling toggle for a read-only selection-snapshot decomposition probe.
- Added separate timings for entity filtering, copper connector lookup, quality-aware max-wire-distance lookup, electric-network grouping, and snapshot/index table construction.
- The probe runs before the real production selection path, never supplies production state, and reports selected/network/reach equivalence against the production snapshot.
- Existing connection snapshot, planner, validation, mutation, dry-run, external-wire, circuit-wire, protected-wire, original-network and rollback behaviour is unchanged.
Version: 0.1.23
Date: 2026-10-12
Changes:
- Replaced the validation decomposition probe with a controlled same-job read-only validation A/B.
- Added a reference validation probe matching the current production map + final-set-compare algorithm and an experimental inline-membership single-seen-set variant.
- Reference and inline probe order alternates by job ID; unchanged authoritative production validation always runs last and remains the only validation path allowed to cancel or advance to mutation.
- The inline variant preserves fresh entity, connector, original-network, live-copper topology, removable ownership and duplicate-edge semantics while removing the second reconstructed removable map and final full snapshot-set loops.
- Added separate reference scan/set-compare/total and inline-total LuaProfiler timings plus exact result/counter comparison reporting.
Version: 0.1.22
Date: 2026-10-12
Changes:
- Kept the validated fused residual scan + table-record candidate production planner unchanged.
- Removed the rejected scalar-cache planner from runtime instantiation.
- Reused the development profiling toggle for a read-only validation decomposition probe.
- Validation probe reports entity-state, connector/network/connection-scan, and snapshot-set-compare timings separately.
- The diagnostic probe always runs before the authoritative production validation; only production validation can gate mutation/commit.
Version: 0.1.21
Date: 2026-10-12
Changes:
- Kept the 0.1.19/0.1.20 validated fused residual candidate scan with table-record Kruskal candidates authoritative; the rejected parallel-array candidate-buffer shadow was removed from runtime code.
- Added one same-job, non-mutating scalar-cache shadow that pays an explicit time-sliced O(n) setup pass for dense residual-pole x/y/network/reach-squared values.
- Production and shadow run sequentially from the same frozen snapshot with alternating execution order; only production may validate/mutate/commit.
- Added separate scalar_cache_setup profiling plus scalar_cache_mode/items reporting so acceptance is based on net planner time including setup cost.
- Half-Scan pair enumeration, numeric reach cache, exact can_wire_reach checks, table-record candidate order, deterministic Kruskal and all commit/safety semantics are unchanged.
Version: 0.1.20
Date: 2026-10-12
Changes:
- Promoted the 0.1.19 fused residual candidate-scan path after 7/7 exact-topology in-game passes, a 14.67% aggregate candidate-scan reduction and a 9.52% aggregate planner reduction.
- Added one controlled shadow that changes only residual Kruskal candidate storage/sort input from per-candidate record tables to parallel arrays plus a sorted integer-ID order vector.
- Both production and shadow use the same fused Half-Scan stream, numeric keys, exact can_wire_reach checks and deterministic axis/distance/unit-number ordering.
- Added candidate_record_mode profiling and candidate_buffer_compare exact-topology reporting; only production may commit.
- Comparison remains off by default and no legacy planner selector or superseded runtime planner is restored.
Version: 0.1.19
Date: 2026-10-12
Changes:
- Kept the 0.1.18 production-validated cell-40 numeric-spatial/numeric-group/numeric-pair architecture authoritative.
- Added one controlled fused residual Kruskal candidate-scan shadow while preserving the exact Half-Scan pair stream, frozen roots, exact can_wire_reach checks and deterministic candidate order.
- The shadow inlines hot per-pair geometry and numeric reach-cache handling to reduce Lua function-call/table-lookup overhead without changing candidate enumeration.
- Comparison alternates execution order and checks exact desired-edge topology; only the validated production baseline may commit.
- Reintroduced a single development comparison toggle for this experiment; no legacy planner selector or superseded planners are restored.
Version: 0.1.18
Date: 2026-10-12
Changes:
- Promoted the 0.1.17 numeric planner pair-key result after 8/8 exact-topology in-game passes and a 26.78% aggregate planner improvement.
- Extended the same collision-free job-local numeric canonical pair key to shared internal-edge snapshot, removable-edge ownership, validation and mutation-plan lookup maps.
- Removed the completed planner pair-key shadow/comparison setting; normal jobs now instantiate only the authoritative production planner.
- Production remains cell 40 + numeric residual spatial keys + numeric Direct-Line groups + Half-Scan + Frozen Roots + deterministic Kruskal.
- No topology, exact-reach, original-network isolation, protected-wire, make-before-break, rollback, dry-run or idempotence semantics changed.
Version: 0.1.17
Date: 2026-10-12
Changes:
- Removed the user-facing Active fallback planner setting; the validated production planner is now authoritative in code.
- Normal jobs now instantiate only the production planner; comparison jobs instantiate production plus exactly one current pair-key shadow.
- Superseded Boruvka, full-scan Kruskal, live-root Half-Scan and rejected Network/Component Bucket planners are no longer constructed for every selection.
- This removes unnecessary per-job Union-Find/table initialisation and protected-edge seeding while preserving the 0.1.16 planner pair-key A/B unchanged.
- Existing topology, exact-reach, network-isolation, protected-wire, make-before-break, rollback, dry-run and idempotence behaviour is unchanged.
Version: 0.1.16
Date: 2026-10-12
Changes:
- Promoted the 0.1.15 numeric Direct-Line group-key representation into the authoritative production planner after six exact-topology in-game A/B passes; no separate promotion-only regression was required by project decision.
- Production now combines cell 40, numeric residual spatial keys, numeric Direct-Line group keys, Half-Scan, Frozen Roots and deterministic Kruskal.
- Added an experimental shadow that changes only planner-local canonical pair keys used by desired-edge sets and reach caches from `a:b` strings to collision-free job-local numeric keys.
- Pair-key comparison alternates execution order, reports `pair_key_mode`, and compares exact desired-edge topology before the production baseline may commit.
- Existing shared connection snapshot, validation and mutation maps intentionally remain on their validated string keys in this A/B so planner-local pair-key cost is isolated first.
Version: 0.1.15
Date: 2026-10-12
Changes:
- Kept the production-validated cell-40 + job-local numeric residual spatial-key planner authoritative.
- Added a controlled Direct-Line group-key A/B: production retains flat string network+axis keys; shadow uses shallow numeric network->axis maps.
- The shadow changes no Direct-Line ordering, exact-reach checks, Half-Scan, Frozen Roots, residual spatial indexing or Kruskal semantics.
- Comparison execution order alternates between jobs and exact desired-edge topology equality is required before commit.
- Added group_key_mode and line_key_network_tables counters for profiler interpretation.
Version: 0.1.14
Date: 2026-10-12
Changes:
- Promoted the 0.1.13 in-game validated job-local numeric residual spatial cell keys into the active/committing cell-40 Frozen-Root Half-Scan production candidate.
- Production now pays and profiles the numeric spatial-key setup pass before residual index construction.
- Optional comparison mode now uses the previous flat string-key representation as the shadow regression reference; numeric production remains the only committing planner.
- Comparison remains disabled by default for single-planner committing-path validation and normal production use.
- No Direct Line, Half-Scan geometry, exact reach, Kruskal ordering, network isolation, protected-wire, make-before-break, rollback, dry-run or idempotence semantics changed.
Version: 0.1.13
Date: 12. 10. 2026
Changes:
- Added a controlled spatial-cell-key A/B benchmark at production cell size 40.
- Baseline keeps the validated flat string cell keys; shadow uses collision-free job-local numeric keys.
- Numeric shadow includes its bounds/setup cost in profiling and cannot mutate wiring.
- Comparison execution order alternates between jobs and exact topology equality is required.
Version: 0.1.12
Date: 2026-10-11
Changes:
- Promoted residual spatial cell size 40 into the active/committing Direct Line + Kruskal Half-Scan + Frozen Roots production candidate after the 0.1.11 narrow in-game sweep.
- Kept legacy/reference planners on their historical default spatial cell size rather than globally changing their behaviour.
- Cell-size comparison profiling now defaults off so the cell-40 committing path can be regression-tested by itself; the 16/32/36/40/44/48/52/56 sweep remains available as an optional diagnostic with cell 40 authoritative.
- No topology, exact-reach, Kruskal ordering, original-network isolation, protected-wire, make-before-break or rollback semantics changed.
Version: 0.1.11
Date: 2026-10-11
Changes:
- Narrowed the one-selection residual spatial cell-size benchmark after 0.1.10 bracketed the useful region around 32-48 tiles.
- Benchmarks cell sizes 16, 32, 36, 40, 44, 48, 52 and 56 from the same immutable selection snapshot.
- Keeps the validated cell-16 Direct Line + Kruskal Half-Scan + Frozen Roots flat-index planner as the only committing baseline.
- Retains rotating benchmark execution order and exact per-cell topology comparison.
- No candidate ordering, reach checking, safety, mutation or topology logic changed.
Version: 0.1.10
Date: 2026-10-11
Changes:
- Rejected the 0.1.8/0.1.9 Network/Component Bucket planner after in-game profiling showed it was slower despite reducing pair enumeration.
- Added one-selection, eight-way residual spatial cell-size benchmark for 8, 12, 16, 20, 24, 32, 48 and 64 tiles.
- Keeps the validated 16-tile Direct Line + Kruskal Half-Scan + Frozen Roots flat-index planner as the only committing baseline.
- Rotates benchmark execution order between jobs to reduce systematic first/last ordering bias.
- Adds per-planner cell_size counters, per-cell exact topology comparisons, and selected-pole min/average/max wire-reach context to profiler output.
- Comparison mode performs the complete cell-size sweep from one immutable selection snapshot; comparison OFF retains the existing explicit planner selector for regression use.
Version: 0.1.9
Date: 2026-10-11
Bugfixes:
- Fixed a non-recoverable reporting crash caused by the Factorio LocalisedString 20-parameter limit after 0.1.8 added network/component benchmark counters.
- Kruskal planner chat diagnostics are now emitted as plain formatted strings split across two lines, so additional profiler counters cannot exceed the LocalisedString parameter limit.
- No planner, candidate-generation, topology, mutation, safety or benchmark algorithm behaviour changed from 0.1.8.
Version: 0.1.8
Date: 2026-10-11
Changes:
- Promoted Direct line + Kruskal Half-Scan + Frozen Roots to the default active/committing planner after the 0.1.7 in-game A/B validation.
- Added experimental Network/Component Bucket residual index while preserving Direct Line, Half-Scan, frozen roots, exact reach tests, deterministic Kruskal sorting and merge behaviour.
- Experimental residual cells are partitioned by original electrical network and frozen Union-Find component so wrong-network and same-component groups are rejected before individual pole-pair enumeration.
- Added profiler counters for network/component bucket groups and members skipped before pair enumeration.
- Comparison mode now benchmarks validated Frozen-Root Half-Scan against the Network/Component Bucket variant with alternating execution order and exact desired-edge comparison.
Version: 0.1.7
Date: 2026-10-11
Changes:
- Promoted Direct line + Kruskal Half-Scan to the default active/committing planner after the 0.1.6 in-game A/B validation.
- Added experimental Half-Scan + Frozen Component Roots planner.
- The experimental planner precomputes each residual pole's Union-Find component root once after the Direct Line phase and uses cached integer roots during residual candidate enumeration instead of repeated uf_find calls.
- Added separate component_root_cache LuaProfiler timing plus root-cache item/check counters.
- Comparison mode now benchmarks validated Half-Scan against Frozen-Root Half-Scan while preserving identical spatial enumeration, reach checks, Kruskal sorting and merge behaviour.
Version: 0.1.6
Date: 2026-10-11
Changes:
- Promoted Direct line + Kruskal to the default active/committing planner after the 0.1.5 in-game A/B validation.
- Added experimental Direct line + Kruskal Half-Scan comparison planner.
- Half-Scan enumerates only the forward lexicographic half of residual spatial cells and uses index ordering only inside the home cell, eliminating reverse cross-cell visits while preserving the same candidate set.
- Added pair-scan-kind and half-scan-cell-skip counters to profiler reports.
- Comparison mode now benchmarks validated full-scan Kruskal against Half-Scan Kruskal by default and still alternates execution order between jobs.
Version: 0.1.5
Date: 2026-10-11
Graphics:
- Replaced the previous multi-pylon shortcut/selection-tool artwork with the selected simplified single-pylon + cyan row/column grid icon.
- Kept the existing blue shortcut style.
- Validated the 32x32 derivative for small-toolbar readability before packaging.
Version: 0.1.4
Date: 2026-10-11
Changes:
- Replaced the development comparison target: both planners now share the Direct Line row/column strategy and differ only in residual fallback.
- Kept Direct line + Boruvka as the default active/committing 0.1.3 baseline.
- Added experimental Direct line + Kruskal fallback: generate residual reachable candidate edges once, sort once with the same deterministic edge preference, then merge once with Union-Find.
- Added separate Kruskal candidate-generation, sort and merge LuaProfiler phases and counters.
- Comparison mode still alternates execution order, compares exact desired edge sets, and allows only the configured active planner to mutate wiring.
Version: 0.1.3
Date: 2026-10-11
Changes:
- Added dual-planner runtime comparison: Spatial 0.1.2 and new Direct line sweep run against the same immutable selection snapshot.
- Added runtime-global Active topology planner selector; only that planner may commit wire mutations.
- Added comparison toggle, topology edge-set comparison, alternating planner execution order, and separate LuaProfiler totals/counters per planner.
- Direct line planner groups/sorts aligned rows and columns directly and builds the spatial fallback lazily only when cardinal wiring leaves unresolved components.
- Added per-planner counters for line scans, spatial scans, exact reach checks, Boruvka work, and unresolved components.
- No new development dry-run setting; existing Shift/alternate-selection dry run remains unchanged.
Version: 0.1.2
Date: 2026-10-11
Changes:
- Full row/column comb behaviour: retain every nearest reachable cardinal neighbour instead of suppressing cycle edges through Union-Find.
- Union-Find now tracks connectivity only; Boruvka fallback runs only for residual disconnected components.
- Added profiler counters for axis edges and fallback edges to quantify how much work is resolved by the row/column fast path.
Version: 0.1.1
Date: 2026-10-11
Changes:
- Replaced the temporary copper-cable selection-tool / shortcut icon with a custom transparent power-pylon network icon.
- Updated selection-tool, shortcut, and small shortcut icon references to the bundled mod assets.
Version: 0.1.0
Date: 11. 10. 2026
Features:
- New Factorio 2.1 box-selection power-grid comb.
- Spatial hash + cardinal fast path + Union-Find/Boruvka fallback; no global candidate sort.
- Time-sliced planning and wire mutation with active-only on_tick registration.
- Preserves external copper connections, red/green circuit wiring, script-owned copper links and legacy out-of-reach links.
- Make-before-break commit with rollback of newly-added wires on add failure.
- LuaProfiler phase timings plus deterministic work counters and optional script-output report.
- Alternate selection performs a dry run/profile without wire mutation.