Batch Request Combinator


Turn an item signal into one exact robot-delivered batch: requests stop before loading, so the chests empty without refilling.

Content
2 months ago
2.1
19
Logistics Trains Logistic network Circuit network

Changelog

Version: 0.1.5
Date: 2026-09-14
  Changes:
    - Rebuilt the combinator window with a fixed 856-unit native layout, a 150-unit entity preview, and one bounded body scroll pane.
    - Added read-only Input/Output connections and actual engine status, separate from the batch state and its READY/COMPLETE signals.
    - Added a persistent bottom-right Close button alongside the titlebar X. Configuration still saves immediately; both Close controls use the same cleanup path.
    - Preserved configuration locks, progress, warnings, item and chest details, setup confirmations, and contextual recovery actions. Existing open windows rebuild into GUI schema 19.
  Bugfixes:
    - Output connection status ignores the owned hidden helper, so an externally unwired output no longer appears connected.
    - Prevented joining a multiplayer game from triggering drain recovery and GUI rebuilding only on the joining peer. GUI confirmation and presentation state now survives joining and catch-up. Single-player load recovery is preserved.
  Info:
    - Experimental GUI and multiplayer-join correction release; batch quantities, planning, storage schema, and circuit handshake semantics remain unchanged.
    - The user accepted the earlier shown window and both Close controls in Factorio 2.1.17, English, 1920x1080, UI scale 1. Subsequent connection and multiplayer corrections have separate offline validation; native multiplayer is not yet verified.
    - Other native states, long-content scrolling, setup lifecycle, additional locales/scales, active save/load, multiplayer, and matched performance remain unverified. No exact 0.1.5 archive Factorio run is recorded.
Version: 0.1.4
Date: 2026-09-07
  Bugfixes:
    - Corrected capacity checks for filterable modded requester inventories so occupied slots count only when their exact item and quality filters match their contents.
  Optimizations:
    - Added a 60-tick retry delay after failed temporary inserter stack-size restoration, including error cleanup, while preserving the first next-tick restoration attempt.
  Changes:
    - Removed unused active-batch and inserter storage bookkeeping and cleared those obsolete fields during existing-save migration.
  Info:
    - Validation passed the offline regression suite, a 17-case automated Factorio 2.1.17 runtime run, the Debug Lab's automated six-case self-test, and an English 100%-scale manual FMTK check. Stateful save/reload, native robot-overdelivery edge cases, multiplayer, additional locale/scale checks, and matched large-factory profiles remain open.
Version: 0.1.3
Date: 2026-09-06
  Bugfixes:
    - Corrected inserter setup when disabling an unconnected input color from Factorio's default both-colors selection.
    - Preserved verifiable drain-restoration snapshots for surviving chests when another saved target disappears or has conflicting recovery data.
    - Initialized and verified owned requester-section multipliers so altered multipliers cannot silently change batch quantities.
    - Made deferred retry deadlines persistent and specific to each failed record, including native lookup exceptions, so blocked recovery no longer pauses unrelated cleanup.
    - Made offline Lua failures return a failing process status and added focused planning, request, drain, reconciliation, and state-transition regressions.
  Optimizations:
    - Pruned arithmetically impossible Single-tail planning domains before repeated propagation, preserving allocation policy and the existing search budget without adding a timeout.
    - Used direct native requester-section lookup for ownership verification and consolidated duplicate cleanup and validation code.
  Info:
    - Offline regressions passed. The gameplay code was manually tested through FMTK in Factorio 2.1.17 with no issues reported; automated in-game harnesses, save/reload recovery, multiplayer, and large-factory performance remain unverified for this update.
Version: 0.1.2
Date: 2026-09-06
  Features:
    - Added an ARMED-and-zero Configuration action that previews and configures eligible loading inserters for READY > 0, selects only circuit input colors connected to the combinator output, disables conflicting controls and filters, and preserves stack-size overrides.
  Changes:
    - Single setup requires exactly one eligible inserter per managed requester chest; No-tail and Parallel setup allow multiple inserters per chest.
    - Added a centered Factorio-native confirmation dialog with native button shapes and main-GUI text sizing; preview errors remain beside the Review inserter setup action.
  Bugfixes:
    - Prevented inserter setup from configuring inserters when either their requester chest or the inserter itself is reserved by an active batch, requester drain, or pending recovery, and added verified rollback after partial write failures.
    - Added a 60-tick retry backoff for blocked requester-section and drain-setting recovery records without slowing successful one-per-tick cleanup.
    - Routed exceptions from shared lifecycle output refreshes through fail-safe runtime error handling.
Version: 0.1.1
Date: 2026-09-04
  Features:
    - Added Parallel support for multiple compatible loading inserters pulling from the same requester chest, with independent temporary overrides and restoration.
    - Added the integrated Batch-Combinator Requester with a startup-configurable 48-to-5,000-slot inventory, a 5,000-slot default, fixed capacity across qualities, Factorio-native exact delivery, and separate electric-blue graphics.
  Changes:
    - Single now always requires exactly one connected loading inserter per managed requester chest.
    - No-tail now rejects nonempty monitored inserter hands before request creation while continuing to leave inserter configuration entirely player-owned.
    - Compatible non-exact requesters retain exact min/max requests until the main inventory is exact, logistic trash is empty, and native delivery and pickup activity is clear. Robot cargo-size surplus is normalized by Factorio instead of becoming a batch error.
  Bugfixes:
    - Kept normalized surplus out of staged, READY, and tail-plan quantities in No-tail, Single, and Parallel.
    - Made DRAINING stall progress depend on decreasing remaining contents instead of fluctuating targeted-activity counts, and limited destination checks to logistic storage.
    - Removed the inherited vanilla decider comparison symbol from the placed combinator so its mechanical batch counter remains visible.
  Optimizations:
    - Restored the empty, unfiltered large-requester capacity fast path and stopped No-tail from scanning inserters on READY polls until the source is drained.
    - Kept all staging checks on native requester point, inventory, delivery, and pickup APIs without enumerating robots.
  Graphics:
    - Added static electric-blue mechanical counter-drum combinator sprites, inventory icons, and requester-chest animation, with no activity-light overlay.
  Compatibility:
    - Bumped storage schema to 5, removed the unavailable standalone batch-combinator-requester from dependency metadata, and documented that both mods still cannot be enabled together because they define the same requester prototypes.
    - Fixed the integrated requester icon path and kept the combinator and requester inventory icons independent and unbadged.
  Gui:
    - Added bounded DRAINING wait diagnostics for missing logistic coverage, missing or unavailable logistic robots, unavailable storage, and ongoing logistic movement.
    - Unified state, error, warning, wait, and recovery text in one top card; gave every blocking error a plain-language title and exact corrective detail; kept numeric codes and full inserter requirements in Technical details; and renamed the ERROR action to Reset batch.
Version: 0.1.0
Date: 2026-09-02
  Major Features:
    - Added the Batch Request Combinator, which captures one circuit item request and stages its exact item-and-quality quantities across compatible requester chests before enabling loading.
  Features:
    - Added exclusive READY and COMPLETE circuit signals for loading control and managed-source completion.
    - Added Follow input and Snapshot input handling.
    - Added No tail flush, Single tail inserter, and Parallel tail inserters.
    - Added Abort batch and bounded automatic-tail retry recovery.
    - Added an explicit ARMED-and-zero maintenance action that previews and drains connected requester chests through temporary Trash unrequested control with verified restoration.
    - Added an optional per-combinator cleanup after Follow input returns to zero during REQUESTING, SETTLING, or READY; it drains only that batch's exact managed requester chests and is disabled by default.
  Gui:
    - Added the compact, modeless Factorio-native operating console with always-visible status and progress plus on-demand configuration, batch details, maintenance, diagnostics, errors, and recovery actions.
    - Added English and French localization with hover explanations for input and tail modes.
    - Added drain confirmation, amber progress, remaining-item reporting, and Stop draining controls.
    - Added an ARMED-only automatic-cleanup checkbox with a robot/storage consequence tooltip and a read-only active-batch value.
  Graphics:
    - Added the polished Batch Request Combinator thumbnail for the Mod Portal and in-game mod browser.
  Compatibility:
    - Added capability-based requester detection without hardcoded train-system, merged-chest, or requester prototype names.
    - Added current-version blueprint, copy, clone, and fast-replacement preservation for input sign, input handling, tail handling, and automatic-cleanup settings; older complete tags preserve their modes with cleanup disabled.
  Optimizations:
    - Added configurable staggered polling from 1 to 60 ticks with a default interval of 12, cached active-batch observations and item keys, direct recurring inserter-setting comparisons, bounded Single-tail planning, and no recurring GUI work while the panel is closed.
    - Reused requester points, inventory observations, validated hand results, successful cleanup state, and empty scheduler buckets while keeping requester-drain work off the idle path.
    - Kept automatic cleanup off the normal polling path; it performs no discovery, inventory scan, or requester write until an eligible interruption and then reuses the staggered DRAINING poll.
    - Kept Single-tail planning bounded as merged requester capacity grows and removed avoidable empty-map, inventory-snapshot, connector-lookup, and unchanged-error rendering work from recurring polls.
  Bugfixes:
    - Kept selected read-only configuration radios visibly checked without redundant Selected labels and reduced Start draining to the standard native green-button size.
    - Kept retained ERROR and ABORTED progress in the correct staged or loaded phase after loading had begun.
    - Removed owned requester sections before READY so loading cannot trigger replacement deliveries.
    - Prevented repeated chat notifications while the same combinator error remains unresolved.
    - Added fail-closed cleanup and recovery for replaced entities, changed wiring or settings, interrupted request transactions, and temporary stack overrides.
    - Added debug-mode automatic-inserter diagnostics with the exact failed rule, entity identity, unit number, and position.
    - Restored interrupted requester-drain leases before normal first-tick processing after load or configuration change and retained claims through every failed cleanup path.
    - Prevented conflicting saved requester-drain cleanup records from selecting or writing an unproven Trash-unrequested value.
    - Counted logistic-container trash slots during draining so cleanup cannot complete while uncollected items remain in the requester trash inventory.
  Info:
    - COMPLETE reports only that managed requester chests and monitored inserter hands are empty; destination or wagon capacity is not checked.
    - Automatic tail handling requires exactly one eligible READY-controlled inserter per managed requester chest.