EDGEBUILDER / DOCS

Tests

Every test run on EDGEbuilder so far: how to run it again, what to expect, and what it showed. Each phase ends with the owner’s in-game test on the dev PC. The phase pages (B1, B2a, B2b) keep the full steps and every log reading; this page gathers them in one place. New tests are added here when they are first run.

EDGEdeck was called REDdeck up to 0.26.6; this page uses the new name throughout.

Last updated 2026-10-30.

At a glance

Test Kind Phase Last run Result
Type check and build Automated B1 on 2026-10-31 (0.5.0) Pass
Smoke test Automated, needs REDbridge and the game files B1 on 2026-10-31 (0.5.0) Pass (the arrange part; the bridge part unchanged since 0.4.0)
Page check in REDnode’s host By hand, no game B1 on 2026-10-31 (0.5.0) Pass
B1 Browse and drop In the game B1 2026-10-13 (0.1.1) Pass
B2a Position In the game B2a 2026-10-14 (0.2.0) Pass
B2b Camera In the game B2b 2026-10-14 (0.3.0) Pass
B2b retest In the game B2b 2026-10-16 (0.3.2) Pass
0.3.4 check on game 2.5 In the game B2b 2026-10-29 (0.3.4) Pass
Bake probe In the game, no EDGEbuilder Bake probe 2026-10-30 (REDbridge 0.11.0) Pass (both rounds)
B2c Mod assets In the game B2c 2026-10-30 (0.4.1) Pass
B3-1 Arrange In the game B3 Built 2026-10-31 (0.5.0) Waiting for the owner

Automated

Type check and build

npm install
npm run build

build type-checks with tsc --noEmit and bundles with esbuild. Expected: no errors; edgebuilder/mod.mjs, edgebuilder/app.js and dist/core.mjs written.

Smoke test

npm run smoke
# or, with a REDbridge and game folder it does not find by itself:
$env:EDGEBUILDER_BRIDGE = "<REDbridge.exe>"; $env:EDGEBUILDER_GAME = "<game folder>"; npm run smoke

It builds, then runs scripts/smoke.mjs against the REDnode-free parts. The bridge and index checks are skipped when no REDbridge or game folder is found.

Check Expected
Scene store Add, unique ids (cargo_crate_a, cargo_crate_a_1), save and load round trip in format 1, previews not saved, remove. An unreadable scene file is kept beside as .unreadable-<time> and never overwritten
Viewport math Projection within 0.5 px of a simulated camera, for both kinds of ProjectPoint answer (-1..1 with y up, and pixels with y down); nothing behind the camera projects; the picking ray goes through its point; turned and scaled boxes are hit at the right distance; axis drags and turns read back exactly; the camera’s heading and pitch round-trip
Kinds .mesh and .ent known, other files not
REDbridge Starts with the game loaded, over 100,000 files
Asset index Builds in a few seconds: 31,571 meshes and entities on game 2.31, one entry per path though some files are in two archives
Search cargo crate gives 19 cargo crate meshes; the first, cargo_crate_a.mesh, has bounds and 18 appearances; an entity search returns only entities; nonsense returns nothing
Index cache The newest index loads without knowing the game; a reload keeps the looked-at details

Run 2026-10-16 on 0.3.3: all passed (REDbridge 0.6.0, 583,798 files, index in 3.4 s).

By hand, without the game

Page check in REDnode’s host

Runs EDGEbuilder’s page in REDnode’s overlay host on the dev laptop, with no game. Setup in dev setup and CLAUDE.md, “Picking this up on another machine”:

# from <REDnode>\packages\overlay
..\..\node_modules\electron\dist\electron.exe --remote-debugging-port=9223 . --render=cpu "--apps-dir=<REDnode>\packages\overlay\apps;<this repo>" --apps=edgebuilder "--data-dir=<scratch folder>"

Drive the page by evaluating scripts through the DevTools protocol on 127.0.0.1:9223, and type with Input.dispatchKeyEvent (synthetic KeyboardEvents do not type into fields). Look with the kernel MCP server’s window_image or Page.captureScreenshot. Never a full-screen capture. The host does not grant REDbridge, so the bridge pill says “Allow REDbridge” and the index comes from the saved one.

Run Checked Found and fixed
2026-10-13, 0.1.0 Start, REDbridge in about 6 s, index in about 5 s and from its cache after; search cargo crate; pick cargo_crate_a.mesh (1.2 x 1.5 x 1.2 m, 18 appearances); drop refused without a game 0.1.1: a “No game” state instead of “Needs Codeware”; the page no longer overflowed its window; assets in two archives listed once
2026-10-13, 0.2.0 The page is 1920 x 1080 with the panel at x 1448; the Edit tint; “No camera yet” without a game; Selected fields and Apply; REDbridge through kernel.bridge() and the “Allow REDbridge” prompt; requires found Codeware An unreadable scene file was replaced on the next save; now kept beside
2026-10-14, 0.3.0 The page and the two new Settings switches  
2026-10-16, 0.3.3 Typing crate with real key events lands in the search box and searches (95 results); Drop at click switches Edit on, shows the crosshair and its message, Esc cancels; the help line sits at the bottom centre  
2026-10-30, 0.4.0 With REDcode’s service package beside it (--apps-dir also <REDcode>\extensions\redcode\rednode, --apps=edgebuilder,redcode) and LOCALAPPDATA pointed at a scratch folder with a stand-in REDcode\project.json: the five mod archives on the dev PC read (17 meshes and entities); chicken finds EvilClown’s kratoes_rubber_chicken mesh and entity first, tagged EvilClown, the archive in the tooltip; the Project tab lists the stand-in project’s files, a file added to it shows up within 2 s, picking one explains that its size comes later and Drop stays on; the project closed: “No REDcode project open”. Electron must start without ELECTRON_RUN_AS_NODE (VS Code’s terminals set it)  
2026-10-31, 0.5.0 With a working scene of four objects and a group written beforehand (no game, so no previews): the Scene list as a tree, the group’s row selects its two objects and shows its name in Group name; Ctrl+click adds the barrel (“3 objects”, Turn by and Scale by); Group nests the old group in Group 1; rename; Undo twice and Redo once step through the changes and their counts; the group’s arrow closes it; Apply with X 12 and Turn by 90 moves the group’s middle and turns it around it (the barrel at 12, 2); Clear scene, then Ctrl+Z from the keyboard brings the four back. Drops, the gizmo, the box and Duplicate need the game The five arrange buttons wrap onto two rows and the window scrolls: left as is

In the game

All on the owner’s PC (game on E:, installed with EDGEdeck, Vortex purged). Logs to send after each: red4ext/logs/rednode-mods.log (the [edgebuilder] lines) and red4ext/logs/rednode-overlay.log; from 0.3.2 also red4ext/logs/rednode-<date>.log when the cursor misbehaves.

Before any in-game test

Need Why
REDnode deployed: 0.15.1+ for B1, 0.17+ from B2a, 0.22+ for the cursor lock in 0.3.2 The world API, kernel.bridge() and requires, pointer lock
Codeware 1.14 or later REDnode’s world support
REDbridge 0.6.0 or later, fetched by EDGEdeck or by REDnode’s Mod Manager (Get REDbridge, REDnode 0.25.0 and later) The asset index and details
REDbridge allowed for EDGEbuilder (from 0.2.0) F10, Mod Manager, EDGEbuilder, Permissions, Allowed on. Until then the pill says “Allow REDbridge”
EDGEbuilder’s zip, added in EDGEdeck and deployed with the game closed EDGEdeck 0.21.1 and later put a new version in the old one’s row. A version under test comes from the release workflow’s artifact (Actions, Release, the run, edgebuilder-build) or npm run package; it gets a GitHub release on the releases page once its test passed
Both Settings switches on, unless a step says otherwise They persist: a test that turns them off leaves them off (this cost a retest on 2026-10-16)
A save outdoors, in an open spot Room to drop and fly
From 0.4.0: Solo allowed for EDGEbuilder F10, Mod Manager, EDGEbuilder, Permissions. Without it other windows stay while editing and the message line says so once

The Test timer cannot be pressed while Edit is on: REDnode has a tool layer for that now (REDnode #10), which EDGEbuilder does not use yet; from B2b the steps skip the marks and the log has the times. If V’s view gets stuck after EDGEbuilder stopped with Edit on, load a save.

B1 Browse and drop

Full steps: B1 test. Passed 2026-10-13 with EDGEbuilder 0.1.1, EDGEdeck 0.20.1, REDnode 0.15.1, REDbridge 0.6.0.

Step Expected Result
Open, the three pills World ready, REDbridge, about 31,500 assets As expected; REDbridge ready 4 s after start, index 2 s later
Search cargo crate, pick cargo_crate_a.mesh Path, size, 18 appearances As expected
Drop two crates with two appearances In front of V within about half a second 357 and 443 ms, “no real noticeable lag”
Drop an entity (vending machine) As in the game 416 and 418 ms
The game’s outline on a selected preview Shows or not Shows: B2 uses the game’s highlight
Delete Gone from the world and the list As expected
Load a save, Rebuild previews Previews gone, then back where they were All four back in the same second
Clear scene Everything goes As expected
Frame rate Holds with previews Game calls about 33 a second, under 1 ms a frame. The 30 to 65 fps flip in interactive mode is the game’s, from before EDGEbuilder opened

B2a Position

Full steps: B2a test. Passed 2026-10-14 with EDGEbuilder 0.2.0, REDnode 0.17.0, Codeware 1.20.3, REDbridge 0.6.0. “Everything seemed to work fine.”

Step Expected Result
Edit on A slight tint, help line As expected
The gizmo and box on a crate, walking around it They stay on the crate Viewport check 0.0 px; FOV 51, the game’s FOV is vertical
Drag arrows and the ring, Ctrl snaps The crate follows; 0.25 m and 15° steps 14 to 28 moves a second at about 38 fps; trailed “a little bit” (fixed in 0.2.2)
Keys G, R, S with axis locks, typed numbers, Esc As typed; Esc undoes As expected; S 2 rebuilt the crate at twice the size
Ctrl+E Drops to the ground Static and PlayerBlocker hit, Terrain missed; down 1.00 m
An entity: select in the world, S Only meshes scale As expected
Selected fields, Apply, Delete, Edit off As expected As expected
Frame rate while dragging Holds The same 38 to 39 fps with and without dragging
Found Fixed in
The gizmo stayed after Edit off 0.2.2
The object trailed the cursor 0.2.2: moves sent once a frame without waiting
A forgotten object from an earlier session 0.2.1 says so; a failed drop leaves nothing
Two EDGEbuilder versions on EDGEdeck 0.21.1
Other windows unclickable under Edit REDnode #7, #10 (since done in REDnode)

B2b Camera

Full steps: B2b test. Passed 2026-10-14 with EDGEbuilder 0.3.0, REDnode host 0.19.0.

Step Expected Result
Edit on No jump; the HUD hides; camera keys in the help As expected
Right mouse look, W A S D Q E fly, Shift, wheel speed The camera flies; V stays put As expected
Drop where I look Lands where the camera looks, facing it As expected
Middle mouse orbit, Shift pan, wheel dolly, F frame, drag from several angles All work; the gizmo stays on As expected; the viewport stayed 0.0 to 0.2 px off through every camera switch
Fly 200 m away The world stays loaded or not Stays loaded: the camera roams freely
Edit off and on V’s view and HUD back, then the camera from V’s view As expected
Load a save with Edit on Edit stays on, HUD hidden The HUD came back (fixed in 0.3.1)
Settings switches off Edit works from V’s camera, HUD stays As expected
Found Fixed in
The HUD came back after a save loaded with Edit on 0.3.1: the scene tier is checked every second
The cursor kept moving while looking, and the camera stopped over the EDGEbuilder window 0.3.1 hears moves on the whole page; 0.3.2 locks the cursor (REDnode #11)
The help line was wider than the room 0.3.1 wraps it
The cursor vanished now and then Not found; send the plugin’s own log next time

B2b retest in 0.3.2

Passed 2026-10-16 with EDGEbuilder 0.3.2, REDnode 0.24.0.

Step Expected Result
Load a save with Edit on The HUD stays hidden; The game set scene tier 1; hiding the HUD again once As expected
Right mouse and middle mouse in big sweeps The cursor vanishes and stays put; the view keeps turning across the EDGEbuilder window; the cursor comes back on release As expected
Esc while holding the right button The lock ends, Edit stays on As expected
Found Fixed in
First try: the HUD stayed and right mouse did nothing. The log said Builder mode on: V's camera: both switches were still off from the B2b test 0.3.3 says when a switch is off, and the log names the version
Switching Hide the game’s HUD on with Edit on did nothing 0.3.3: the switches apply at once
The help line under REDnode’s launcher 0.3.3: bottom centre
“Type to search” did not search when typing 0.3.3: typing on the Assets tab searches
Empty REDbridge and game folder fields in Settings 0.3.3 shows Automatic: ...
Asked for: drop where the next click lands 0.3.3: Drop at click

0.3.4 check on game 2.5

Passed on 2026-10-29, on game 2.5 with REDnode 0.45.0: every step as expected (the owner’s report). The first EDGEbuilder run on 2.5. EDGEbuilder 0.3.4 (0.3.3’s changes, and it finds the REDbridge EDGEdeck fetched), EDGEdeck 0.27.0 or later with Get REDbridge done (REDbridge 0.10.0 or later; 0.11.0 for 2.5’s sectors), REDnode 0.41.0 or later on game 2.5 (REDnode 0.38.1 and later load only on 2.5). Every earlier test ran on 2.31, so steps 8 to 11 repeat the basics on 2.5. EDGEbuilder 0.3.4 came from the release workflow’s artifact, and is released after this pass.

# Check Expected
1 Settings The REDbridge and game folder fields read Automatic: ...; the REDbridge one is under globalStorage\edgemodders.edgedeck
2 With Edit on, Hide the game’s HUD off and on; Use EDGEbuilder’s own camera off and on; Edit on with a switch off The HUD comes and goes at once; the view goes to V’s eyes, then the camera starts where V looks; the message line says which switch is off
3 Click the Assets list, type crate It lands in the search box and searches
4 Pick a crate, Drop at click, click the ground; again, then Esc The crate lands on the spot, facing the camera; Esc drops nothing
5 The help lines Bottom centre, clear of the launcher and the window
6 The B2b basics: look, fly, orbit, Edit off and on As in B2b (the camera code was reorganised for the live switches)
7 The log’s start line EDGEbuilder 0.3.4 starting
8 2.5: Drop in front of me, a crate (cargo_crate_a.mesh) and an entity (a vending machine) Both appear within about half a second; the crate is EDGEbuilder’s empty entity with a mesh, so this checks that entity on 2.5
9 2.5: select the crate, drag an arrow and the ring, S 2 The gizmo stays on the crate; it follows; it is rebuilt at twice the size
10 2.5: Ctrl+E on a crate lifted off the ground It drops to the ground; the log’s Drop to floor line says which collision groups hit
11 2.5: fly 200 m away and back The world stays loaded, the previews are still there

Bake probe

Passed on 2026-10-30, both rounds (results below). The first baked sector in the game: one crate, baked by REDbridge’s sector.build from a script, packed by REDbridge’s project.pack, deployed by EDGEdeck. EDGEbuilder is not involved, so it stays off for the whole test.

How it was made: npm run build, then node scripts/bake-probe.mjs <out folder> with REDbridge 0.11.0 (the one built in the REDbridge checkout; EDGEdeck had fetched 0.10.0, which writes 2.31 sectors). It writes <out>/project, the REDcode project the bake goes into, and <out>/mod with archive\pc\mod\edgebuilder_bake_probe.archive and edgebuilder_bake_probe.archive.xl. The crate is cargo_crate_a.mesh at (-1439.15, 1214.04, 23.07), not turned, scale 1: 2 m east of a crate dropped on a Watson street in B2b’s test. The streaming box reaches 100 m around it.

One change by hand: REDbridge 0.11.0 writes the .xl as a resource patch of the world’s streaming block. ArchiveXL 1.28 adds blocks to the world under streaming: blocks: (its WorldStreaming part), so the script writes that instead:

streaming:
  blocks:
    - edgebuilder\edgebuilder_bake_probe\edgebuilder_bake_probe.streamingblock
# Check Expected
1 Game closed; in EDGEdeck, EDGEbuilder bake probe on, deploy Two files in archive\pc\mod
2 Turn EDGEbuilder off in REDnode’s Mod Manager (or leave the game’s REDnode overlay closed), start the game, load a save Loads as usual
3 Go to (-1439, 1214, 23): beside the spot of the Watson street crate from B2b’s test One cargo crate stands there, on the ground, not turned
4 Walk 150 m away and come back It goes and comes back with the street
5 Walk into it, shoot it Whether it has collision (a mesh node may not: this is to learn, not a fail)
6 red4ext/plugins/ArchiveXL/ArchiveXL-<date>.log [WorldStreaming] Merging streaming block "edgebuilder\...\edgebuilder_bake_probe.streamingblock"... and All streaming blocks merged, no errors
7 Afterwards: the mod off in EDGEdeck and deploy, or leave it for the next bakes  

Round 1 results (2026-10-30, the owner’s report): steps 1 to 7 as expected. ArchiveXL 1.28.6 loaded edgebuilder_bake_probe.archive.xl and logged [ResourcePatch] Merging streaming block "edgebuilder\edgebuilder_bake_probe\edgebuilder_bake_probe.streamingblock"... and All streaming blocks merged, no errors: a baked sector loads in game 2.5.

Seen Why
The crate goes when V walks away while people and cars stay, and comes back on the way in The bake gives a node a streaming distance from its size: max(40, 11 x size), so 40 m for a crate. The game’s own crates in the sectors around it stream at 20 to 60 m (delivery_crate_* as instanced destructible meshes, crate_small.ent at 50 m); trash at 8 to 15 m. People and vehicles are spawned by other systems. Normal for a small prop; a scene can set a longer one per object (streaming.primary)
No collision: V walks through it The bake writes a mesh as worldMeshNode, which only draws. The mesh has collision data (meshMeshParamPhysics), but the game’s solid props come as other node types: instanced destructible meshes (4,550 in the 12 nearest finest-level sectors), entity nodes, or separate cooked collision nodes. Only 92 plain mesh nodes there

Round 2 (baked and passed the same day): the same mod, three objects in a row going west, 2 m apart, all on the ground at y 1214, z 23:

Object Where Tests
crate: cargo_crate_a.mesh, as in round 1 x -1439 The reference
crate_far: the same mesh, streaming: { primary: 120, secondary: 96 } x -1441 That a scene’s own streaming distance reaches the game
crate_entity: base\gameplay\devices\disposal\appearances\crate_red.ent (an entMeshComponent and an entPhysicalMeshComponent) x -1443 The bake’s entity node, and collision through an entity
# Check Expected
1 Game closed; deploy in EDGEdeck (the library entry was replaced with round 2) The two files replaced
2 Teleport as in round 1, look west Three crates in a row: two alike, then a red one
3 Walk into each; shoot each The two mesh crates: no collision. The red one: solid (it may be pushed or fall over: entPhysicalMeshComponent can be dynamic)
4 Walk east along the street, looking back, to about 150 m, then back crate goes at about 40 m, crate_far stays to about 120 m, the red one goes when its entity streams out. Rough distances are enough
5 The ArchiveXL log As in round 1

Round 2 results (2026-10-30, the owner’s report): every step as written. The ArchiveXL log is as in round 1. So:

Question Answer
Does a scene’s streaming reach the game? Yes: crate_far stayed to about 120 m while crate went at about 40 m
Does sector.build’s entity node work? Yes: crate_red.ent stands as a worldEntityNode
Collision Through an entity with an entPhysicalMeshComponent: solid. A worldMeshNode: none. Solid meshes need another node type; see the design’s Bake section

B2c Mod assets

Passed on 2026-10-30: 0.4.0 passed steps 1 to 8, step 9 found a fix, and 0.4.1 passed the retest (results below the steps). EDGEbuilder 0.4.0, from npm run package, added in EDGEdeck (it goes into the old row). REDnode 0.41.0 or later; REDbridge with #12 (0.12.0, or the build from REDbridge’s main the REDnode session deployed on 2026-10-30) for sizes and appearances; REDcode 0.10.5 or later for the Project steps. The smoke test passed with both REDbridge 0.11.0 (sizes skipped, the “needs 0.12.0” answer) and the main build (EvilClown’s meshes read from its archive). Browse lists installed mods’ and the open REDcode project’s meshes and entities; mesh previews are now REDnode’s mesh props, so steps 1 and 2 repeat the basics.

# Check Expected
1 The log’s start line, then a few seconds later EDGEbuilder 0.4.0 starting; Mods: 17 meshes and entities in 5 archives (the dev PC’s mods: EvilClown, EDGEmatA, SkippySkippy, zzz_rednode_box, the bake probe)
2 The basics with the new mesh previews: drop cargo_crate_a.mesh, select it, drag an arrow, S 2, Ctrl+E As in 0.3.4: it appears in about half a second with the outline, follows the gizmo, comes back twice the size, drops to the ground
3 Assets: the Mods tab; then Everywhere and type chicken Mods lists the mods’ files with their mod’s name; kratoes_rubber_chicken (mesh and entity) first, tagged EvilClown. cardboard_box_a_closed says zzz_rednode_box changes a game file
4 Pick kratoes_rubber_chicken.mesh Its size, about 0.1 x 0.1 x 0.6 m, and its appearance default
5 Drop it, and the .ent beside it Both appear (a rubber chicken). The mesh’s gizmo and outline box fit the chicken. The .ent has no size (its meshes are in its appearance file, as for many game entities): the message says the gizmo uses a 1 m box
6 The Scene tab “This scene needs: EvilClown”
7 Edit on with another package’s window open (the coords app, for example); Edit off The other window goes while Edit is on and comes back; the Test timer and the launcher stay. Without Solo allowed: they stay and the message line says how to allow it
8 With REDcode open on a project that has a mesh or entity under source\archive (EDGEfab’s first prop when it exists): the Project tab, pick a mesh Its files, tagged project <name>; the picked mesh’s size and appearances. Save a new mesh into it: it appears within a few seconds. Close the project in REDcode: “No REDcode project open”
9 Drop the project’s file before packing; then REDcode’s Pack and Play Before: the message says the game shows it once packed and loaded. After Pack and Play: it shows; the log has <id> spawned again after an archive swap for a preview that uses a swapped file, and a selected one stays selected

Results with 0.4.0 (2026-10-30, the owner’s report):

# Result
1 to 7 As expected: the mods indexed, the rubber chicken found, sized and dropped, “This scene needs: EvilClown”, solo mode with Edit
8 As expected, with REDcode on the project EDGEwave_Katana (a copy of the game’s w_katana__common__grip1_02.mesh at its game path). At first “0 found” on the Project tab: the Entities tab was on and the project has only a mesh. 0.4.1: the count names its filters (0 found, entities only, in the project)
9 The grip dropped before packing showed at once: the game has a file at that path. 0.4.1: the message says so for a project file at a game file’s path (asked of REDbridge, since the index does not cover weapons). After Pack and Play the grip came back and stayed selected, but at its drop spot and heading: it had been moved and turned since, and REDnode spawns again with the first spawn’s options (REDnode #27). 0.4.1: EDGEbuilder moves a respawned preview to its scene transform

Retest in 0.4.1: step 9 again (drop the grip, move and turn it, select it, Pack and Play: it stays where it was, selected, and the log has spawned again after an archive swap), and the two messages: the Project tab with Entities on, and the drop message for the grip.

Retest with 0.4.1 (2026-10-30, the owner’s report): passed. The grip, moved and turned, stayed where it was and selected after Pack and Play; the Project tab with Entities on and the drop message read as written. The owner asked for a shorter count: 1 mesh found, 4 entities found, without the tab’s own name; that wording comes after 0.4.1.

B3-1 Arrange

Built on 2026-10-31, waiting for the owner’s test. EDGEbuilder 0.5.0, from npm run package, added in EDGEdeck. REDnode 0.41.0 or later. B3’s first half: several objects at once, groups, duplicates, undo and redo (design, B3). Saved scenes, the Library and the service are B3-2. Start somewhere open with Edit on.

# Check Expected
1 The log’s start line EDGEbuilder 0.5.0 starting
2 Drop cargo_crate_a.mesh three times, a few metres apart (Drop at click). Click one, then Ctrl+click the other two Each click adds one: three outlined, three boxes, one gizmo at their middle. The Scene tab says “3 selected”, the Selected panel “3 objects” and their middle. A plain click on one selects it alone; a click on empty ground selects nothing
3 Shift+drag a box around all three A dashed yellow box while dragging; on release all three are selected. Shift+drag around nothing selects nothing
4 Drag an arrow, then the ring; then G, R, S with X, Y or Z and a typed number; Esc once in the middle of one They move together, turn together around their middle (the outer ones swing round), and S spreads them and makes them bigger. Esc puts them back
5 Ctrl+G “Grouped 3 objects as Group 1”. The Scene list shows Group 1 with the crates under it. Click one crate in the world: all three are selected. Alt+click one: only that one
6 Rename the group in Group name, Enter; close and open it with its arrow The new name in the list; the arrow folds the crates away and back
7 With the group selected, Ctrl+D; move the mouse; click Three copies appear on top of the originals and follow the mouse; the click places them. The Scene list has a second group with the same name and three new crates (cargo_crate_a_4 and on)
8 Ctrl+D again, then Esc The copies follow the mouse, then go away; the scene is as before
9 Ctrl+Z several times, then Ctrl+Y Each Ctrl+Z takes one step back: the copies’ place, the copies, the name, the group, the moves, the drops. Each Ctrl+Y does it again. The message says what came back or went; Undo and Redo on the Scene tab show how many steps are left
10 Select a group and a crate outside it, Delete; Ctrl+Z All selected go; Ctrl+Z brings them back, in their group and where they were
11 Clear scene; Ctrl+Z All gone; all back
12 Ctrl+Shift+G on a group The group opens: its crates stay where they are and are on their own in the list
13 Make a group, then load a save (or restart the game) and Rebuild previews The objects and the group come back; a click on one selects the group