Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,10 @@ git add -A && git commit -m "HammerForge 0.3.1" && git push origin release
Development tooling should not appear in anything users see, not just in what
they install. `tools/capture_ui.py` cuts `project.godot` back to the HammerForge
plugin alone before capturing, so nothing you have enabled locally shows up in
the editor's main-screen bar, and puts the file back afterwards. If you add
tooling that is visible in the editor, extend that swap rather than cropping it
out of the image.
the editor's main-screen bar, and puts the file back afterwards, along with your
HammerForge prefs, which hiding the onboarding card resets. If you add tooling
that is visible in the editor, extend that swap rather than cropping it out of
the image.

A picture in a docs page can be raw HTML, for a width or a light and dark pair,
written with its path from the page's own file so it also shows on GitHub.
Expand Down
1 change: 1 addition & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ An agent that speaks MCP drives the open level through `hammerforge_mcp/` and a
- Done (17 Oct): the 16 Oct sweep's backlog. Relays and lights answer their inputs and a zero-delay wire loop stops (#1209, #1218); each level fires through its own dispatcher (#1211); doors open the Quake way with every leaf (#1210, #1217); the navmesh runs through doors and around props (#1196, #1197, #1239); Bake Changed and Bake Selected see entity data, ties, paint and their own earlier output (#1198, #1199, #1208); cordons, the spawn check and the game export agree (#1204-#1207); cuts and Merge keep a brush entity whole and Merge builds a convex solid (#1194, #1200, #1251); Validate measures generated stairs and the player holds to its 0.4 m step (#1212, #1215, #1216). Every palette action now runs in CI through the real plugin in ten edge states (#1261).
- Done (18 Oct): structures updated and detached by `generator_id` (#1302) and prefabs placed from the library (#1301), both through `hf_run_command`; a prefab copy placed turned, or rebuilt by a variant switch or propagate, turns its doors' move angle and its spawn's yaw with it (#1312); a redone Detach leaves no structure or array tag on the old pieces, and a copy that seeded an array of its own still reaches its own array (#1306, #1309). Cordons on the bridge (#1300): `hf_get_cordons` lists them, `hf_set_cordon` adds one round brushes or at a box, or moves, names or switches one by index, and `hf_remove_cordon` takes one out, each one undo step that holds the cordons, which no level state does, so a refused or undone `hf_batch` puts them back with the rest. The dock is told of every edit. `hf_bake` with `cordons: true` bakes only what they take, into the same file, and says so in its answer, the file's metadata and `last_bake` (#1317).
- Done (21 Oct): floor paint on the bridge (#1299). The paint system has calls in cell space, with no screen or mouse in them: a rectangle of cells painted or erased on a layer, the walls of its painted cells raised to a height, a room stamped from a corner and a size, and the connector between two layers confirmed where their painted cells meet, each rebuilding the chunks it touched. Four Paint entries carry them as bridge forms, `paint_ramp`, `paint_raise`, `paint_room` and `paint_confirm_connector`, taking a layer by index or name and cells as `[x, z]`, each one `MCP: ...` step that `hf_undo` takes back and an `hf_batch` op; `hf_list_commands` lists the level's layers beside them. The Rect stroke, the room stamp and the ghost confirm share the rectangle and the confirm with the bridge, so there is one of each.
- Done (21 Oct, sweep): `hf_set_spawn` turns the marker with the yaw it writes, and `hf_undo` puts both back (#1295); a whole bake stays current across `hf_set_cordon`, `hf_remove_cordon` and their undo and redo (#1319); `hf_set_spawn` and `hf_validate` judge the spawn by the whole level and warn when a bake cut to the cordons would leave it floating, as does `hf_bake` with `cordons: true` (#1321); the cuts `hf_bake` applies are the agent's own step, so `hf_undo` takes them back (#1353); one field rule for params, structure settings and generator creates, with an enum by index or label in any case (#1341); the batch ops built from one list and checked against the dispatcher's (#1342); the guide shows the Agent Bridge panel with an agent connected (#1335).
- Next: what the not-yet list above names.

## Done (Viewport Visual Clarity and Lifecycle Safety)
Expand Down
1 change: 1 addition & 0 deletions changelog.d/docs-sweep-2026-10-21.behind.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- The Agent Bridge guide says the cuts a bake applies are the agent's own undo step, the roadmap lists the 21 Oct bridge fixes, and the capture docs say the prefs come back.
7 changes: 4 additions & 3 deletions docs/HammerForge_Agent_Bridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -262,9 +262,10 @@ across `hf_set_cordon` and `hf_remove_cordon`, and their undo and redo, since it
set the cordons aside; a bake cut to the cordons goes stale on any step, and so
does a whole bake on a batch that holds a cordon op among others.

A bake applies the level's pending subtract cuts. No undo step records that, so
after a bake that applied cuts the agent cannot undo back past it. You still can,
with the editor's own history.
A bake applies the level's pending subtract cuts, and records that first as a
step of the agent's own, `MCP: apply pending cuts`, so `hf_undo` puts the cuts
back to pending and `hf_redo` applies them again. The bake itself is still no
step. The editor's own history holds the same step.

The starter level's floor goes into `<scene>_mcp.tscn` with the level. It is a
large CSG box with collision, top at y = 0, the same one the editor shows and Test
Expand Down
5 changes: 3 additions & 2 deletions tests/test_undo_sweep.gd
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ extends "res://tests/support/plugin_sweep_case.gd"
## its step records the level, so its undo leaves the counter ahead, which only
## skips numbers. A counter wound back below where it was could hand out an id
## twice, so that is still a failure. The baked container is the bake's product:
## Bake and Quick Play record history, not an undo step, so undoing the step
## before a bake leaves it standing, as the editor does.
## Bake and Quick Play record history, not an undo step, and an undo past a bake
## restores a level that had no bake yet, which takes the output down with it,
## as the editor does. The cuts a bake applies are a step of their own (#1353).

const PaletteSweep = preload("res://tests/test_palette_action_sweep.gd")

Expand Down
Loading