Player text says Screw conveyor; code uses screw (BP_SCREW, piece id
screw, screwIntake...). No compatibility code for old saves or
blueprints. Suite outputs match before and after apart from names.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Silos show a wide fill window in the material's colour in both looks,
and the cursor label names the contents anywhere over the outline.
Aiming the drill beyond its reach keeps normal colours, marks where the
pulse stops, and drops the red circle and the out-of-reach toast.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Powder, liquid and gas no longer step diagonally between two solid
cells; flyers and diagonal tube intakes obey the same corner. World
generation settles with the rule off, so seeds make the same worlds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Tubes run in eight directions: a drag at about 45° lays a diagonal run, R cycles all eight.
- Diagonal runs carry grains at the straight rate (120 grains/s), join straight tubes and belts,
keep grains in at the corners, pass water, and carry bars level.
- New part ids 11-14 (saved ids are never renumbered); tube checks use an IS_TUBE table.
- New test/t_diag_tubes.js (85 checks).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- New Sloped wall piece: a half-block triangle in any wall material, at half a wall's cost.
Dragging walls or slopes at about 45° lays a diagonal line; the drag picks the slope's
orientation and T flips or turns it.
- Each slope fills one cell past its corner, so a diagonal run is sealed against grains and water.
- New test/t_slopes.js: a slope funnel passes 400/400 sand (square steps 379/400).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Smooth look: natural ground gets a soft seam where loose grains meet it; packed grains keep a
pebble texture and are slightly lighter. Pixel look and thermal lens: the same idea per pixel.
- play.py: the F-on-a-mold toast check records toasts the key press makes instead of counting
the ones on screen, which failed when an older toast expired at the same moment.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The lighting finds its own roof per column, skipping walls, belts, tubes, machines and molds,
and lets light through them like air, in both looks. Natural rock still shades; the
simulation's roof (steam condensing under a built roof) is unchanged. New test/t_light.js.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With the cursor outside the reach circle, blown grains aim at the circle's edge in the cursor's
direction instead of flying all the way to the cursor, and the blow preview stops there too.
New test/t_nozzle.js and a play.py preview check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
They stay on the owner's machine: .kandown/, tasks/, docs/kandown.md, NOTES.md, CLAUDE.md and
AGENTS.md are ignored, and the README and project map say so.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Areas within 150 grains of the bot start at once; the others 12 a tick, nearest first, and any
the bot flies toward start straight away. A Huge world is fully started after 17 s.
- Huge world, first 600 ticks: average 15.2 -> 5.5 ms/tick, worst 79.7 -> 16.2.
- New test/t_load.js.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- One helper each for wall and mold refunds, tube edges and lanes, pipe text, piece dimensions,
font lookup, reach circles and surface averaging.
- previews, smooth, notebook, materials, worldgen and selection split into topic files
(preview-drill, preview-selection, smooth-shaders, notebook-market, notebook-blueprints,
material-tables, worldgen-helpers, selection-pickers, selection-panels).
- Every suite's output identical apart from timings; seeds make the same worlds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The roof is rescanned only in area columns that changed since the last scan: a quiet Huge
world goes from 4.60 to 1.88 ms per scan (every 20 ticks).
- The heat pass skips react() for solids and powders below their first reaction threshold:
Huge world digging 2.54 -> 2.34 ms/tick, quiet 1.39 -> 1.18.
- Every suite's output is identical apart from timing lines; seeds make the same worlds.
- test/t_sim_optimizations.js checks the dirty roof against a full scan and the heat loop
against the reference loop byte for byte.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- SORTP 0.003 -> 0.06: ore sinks through 8 rows of ash in about 7 s near the bot.
- wakeBotPowder(): every 8 ticks, areas with loose grains within 100 grains of the bot get a
sorting chance; far away, resting piles still sleep.
- Sinking through burning fuel stays at 0.003, so buried burning piles still char and furnace
beds behave as tuned. World generation settles at the old rate: seeds are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- New test/t_physics.js: heaps, sorting, sinking, world edges; molten copper levelling, setting,
quenching, slag over copper, cavity filling; smoke, steam, fire, sealed pockets, the top row.
- Gas in a sealed pocket kept its area asleep and never faded or condensed: gas() keeps its area
awake while it lasts.
- A rain drop or blown grain landing on steam deleted the steam's water: it goes to the clouds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Liquids step up to 8 cells a tick toward a drop (fewer the thicker they are), and a top-layer
grain looks 4 times as far for one, so pools empty and thin film drains. A 100-wide pool
empties in about 50 s; the old code left 24-650 grains stranded on wide ledges.
- Only a top-layer grain stepping sideways wakes the row ahead, so settled lakes still sleep.
- World generation settles at the old speed: seeds make the same worlds as before.
- Cooled steam under a roof no longer stays steam for ever (its heat area slept).
- Raining clouds keep drifting at half pace and rain over a band either side, so a waterfall into
a hot shaft no longer rains straight back on its own lake.
- New test/t_water.js; t_weather rain-location checks; t_conveyors counts steam in flight;
t_molds seeds the random burning-bed check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hint and Clear button were inside the scrolling bag list, so a long
Ctrl list scrolled them away. They now sit in a footer under the list, and
Clear is a full-width, highlighted "Clear selection" button.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blowing out the last of a selected material removes it from the selection,
so an emptied selection picks up what you click again. Ctrl + wheel never
zooms the page and scrolls the bag list under the mouse. A bag click while
Ctrl is held adds to the selection even if the click lacks the Ctrl flag.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With anything selected a drag takes only the selection; with nothing
selected it takes what you click. Right click blows the selected materials
in the bag. Holding Ctrl lists every material found so far under "Not in
bag". Selections stay when materials run out; Clear button, clicking the
only selected row, or gamepad B clears.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A drag takes only the material it starts on (Shift: everything). The blow
selection is the hand: click or Q/E for one material, Ctrl+click for a mix.
Empty materials leave the hand, an empty hand blows nothing, and a pickup
fills an empty hand. Removes the pick-up marks and the F vacuum menu.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Also: board rule to write tasks from chat in our own words, task
descriptions rewritten that way, and a note on lost web-board descriptions.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pick-up takes everything unless something is marked; F with the Vacuum
(when nothing in reach can be used) or the card chips open a menu with
pick-up and blow toggles per material. The bag rows lose their buttons.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>