You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ambient auto-fill re-picked modules on every solve, so a plan could
rearrange itself behind the player's back: research unlocking a better
tier silently re-tooled rows, and counts drifting across a whole-building
boundary flapped fills while editing goals. Modules map to machines you
physically filled — the plan shouldn't change them uninvited.
Now the solve only ever uses the doc's stored picks. Each solve computes
a per-row SUGGESTED fill (same direct algorithm: prod where allowed,
else fewest speed modules to the smallest whole building count, rest
efficiency, sized against the module-less baseline with beacon/TURD
speed included) and returns it without applying:
- rows whose stored fill differs show a sparkle hint — click applies it
as ordinary stored picks (gate the ambient hint in Settings)
- the modules dialog previews the suggestion with its own apply button
- the block toolbar applies every suggestion at once, confirming when
that would overwrite rows that already have modules
- new rows start empty; the "A auto-managed" state is gone
- the assistant's drafts adopt the suggestions as explicit picks
BREAKING CHANGE: modules are no longer applied automatically. Rows that
relied on ambient auto-fill show empty fills (with the hint) until
applied — the block toolbar's sparkle button restores them in one click.
The `autofill` setting now only controls hint visibility.
Copy file name to clipboardExpand all lines: app/src/components/block/block-toolbar.tsx
+15Lines changed: 15 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,7 @@ import {
8
8
Hammer,
9
9
History,
10
10
Power,
11
+
Sparkles,
11
12
Star,
12
13
}from"lucide-react";
13
14
import{Badge}from"#/components/ui/badge.tsx";
@@ -43,6 +44,7 @@ export function BlockToolbar({
43
44
blockEnabled,
44
45
onToggleEnabled,
45
46
onCopySetup,
47
+
autoFill,
46
48
onExport,
47
49
onOpenHistory,
48
50
showInGame,
@@ -60,6 +62,8 @@ export function BlockToolbar({
60
62
blockEnabled: boolean;
61
63
onToggleEnabled: ()=>void;
62
64
onCopySetup: ()=>void;
65
+
/** whole-block module auto-fill: rows with a differing suggested fill + apply */
66
+
autoFill: {count: number;onApply: ()=>void};
63
67
/** download this block as a shareable JSON file (#82) */
64
68
onExport: ()=>void;
65
69
/** open the snapshot-history drawer (#85) */
@@ -126,6 +130,17 @@ export function BlockToolbar({
126
130
>
127
131
<CopyclassName="size-4"/>
128
132
</Button>
133
+
{autoFill.count>0&&(
134
+
<Button
135
+
variant="outline"
136
+
size="sm"
137
+
onClick={autoFill.onApply}
138
+
title={`Auto-fill modules — apply the suggested fill (prod where allowed, else speed to the whole-machine floor, rest efficiency) to ${autoFill.count} row${autoFill.count===1 ? "" : "s"}`}
0 commit comments