Add on-screen feedback for the Shift copy-settings gesture, driven by a
single configurable color (visuals.toml [overlays].copy_config):
- eligible-target tint over every same-type building/site while a config
is cached (source included), shown only while a paste is possible;
- a brief selection-style outline flash on copy (source) and paste (target).
Flashes use a wall-clock countdown (frame delta), so they play for a fixed
0.3 s regardless of game speed and while paused, and fade independently per
building. Extract the footprint-rect resolution shared by the selection
highlight and the new feedback into footprintWidgetRect(). Pure rendering;
no simulation or selection state touched.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VGNNLeFWhVzvxkK9qVXP2K
Salvage ships flew to their assigned Salvage Bay with full cargo and
waited there forever without delivering. A Salvage Bay's
outputBuffer.capacity was never initialized (stayed 0), so
deliverScrapToSalvageBay always rejected the hand-over, cargo never
drained, and DeliverScrap stayed the winning behavior indefinitely.
Give the bay a config-driven output-buffer capacity:
- BuildingDef gains optional outputBufferCapacity; ConfigLoader parses
the new output_buffer_capacity key.
- salvage_bay in both buildings.toml files sets it to 20.
- initSalvageBayBuffer applies it on both operational-creation paths
(construction completion and placeImmediate).
- REQ-BLD-SALVAGE-BAY documents the config-sized buffer and hand-over.
- Tests: config parse assertion and end-to-end delivery hand-over.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VGNNLeFWhVzvxkK9qVXP2K