gdharness 1.1.18 → 1.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/cli.js CHANGED
@@ -8725,7 +8725,8 @@ function classRemedy(entries) {
8725
8725
  }
8726
8726
  const declaring = declaringScripts(entries);
8727
8727
  const reload = declaring.length === 1 ? `editor_rescan with reloadScript set to ${declaring[0]}` : `editor_rescan with reloadScript, a call each for ${declaring.join(" and ")} since it takes one script,`;
8728
- return `For ${entries.map(written).join(", ")}, run ${reload} first. In the one project that has ` + "reproduced a stale enum member, twice, the reload cleared it at once both times, and the one " + "plain editor_rescan tried left the diagnostic standing.";
8728
+ const oneAtATime = declaring.length === 1 ? "" : " Take them one at a time: a rescan that brings in a class also reloads every script naming it and lists them under dependentsReloaded, so a script listed there needs no call of its own.";
8729
+ return `For ${entries.map(written).join(", ")}, run ${reload} first.${oneAtATime} In the one project ` + "that has reproduced a stale enum member, three times, the reload cleared it at once each time, " + "and the one plain editor_rescan tried left the diagnostic standing.";
8729
8730
  }
8730
8731
  function failedReloadNote(failed) {
8731
8732
  const missing = (before, after) => before.filter((name) => !after.includes(name));
@@ -17537,7 +17538,7 @@ var init_tool_definitions = __esm(() => {
17537
17538
  value: {
17538
17539
  ops: ["set"],
17539
17540
  blank: true,
17540
- description: `set: the value, fitted to the property's type. "" writes an empty string. A property typed as or holding an object takes a path naming one the game holds, the way call's args do, and holds that instance. A typed list or map, such as Array[int] or Dictionary[String, int], takes a JSON list or object with each element fitted to its element type, and an element that cannot become one is refused by its index or key.`
17541
+ description: `set: the value, fitted to the property's type. "" writes an empty string. A property typed as or holding an object takes a path naming one the game holds, the way call's args do, and holds that instance, or null, which the text null also means, to empty it. A typed list or map, such as Array[int] or Dictionary[String, int], takes a JSON list or object with each element fitted to its element type, and an element that cannot become one is refused by its index or key.`
17541
17542
  },
17542
17543
  method: {
17543
17544
  type: "string",
@@ -843,7 +843,12 @@ static func _sort_of(container: Variant) -> String:
843
843
  ## call or the write was made on, and handed over as that instance rather than a copy: a method
844
844
  ## given a piece of the game's state acts on the piece the game keeps, and a slot written with one
845
845
  ## holds the game's own.
846
+ ##
847
+ ## The text null names no object, which is what an object slot or parameter takes to be emptied. A
848
+ ## caller's null arrived as that text in #772 and #783, and was looked up as a node called "null".
846
849
  func _object_named(node: Node, node_path: String, given: Variant, declared: String) -> Dictionary:
850
+ if given is String and str(given).strip_edges() == "null":
851
+ return {"object": null}
847
852
  var found: Dictionary = Paths.object_at(_host.get_tree().root, node, node_path, given)
848
853
  if found.has("message"):
849
854
  return found
package/build/index.js CHANGED
@@ -26274,7 +26274,8 @@ function classRemedy(entries) {
26274
26274
  }
26275
26275
  const declaring = declaringScripts(entries);
26276
26276
  const reload = declaring.length === 1 ? `editor_rescan with reloadScript set to ${declaring[0]}` : `editor_rescan with reloadScript, a call each for ${declaring.join(" and ")} since it takes one script,`;
26277
- return `For ${entries.map(written).join(", ")}, run ${reload} first. In the one project that has ` + "reproduced a stale enum member, twice, the reload cleared it at once both times, and the one " + "plain editor_rescan tried left the diagnostic standing.";
26277
+ const oneAtATime = declaring.length === 1 ? "" : " Take them one at a time: a rescan that brings in a class also reloads every script naming it and lists them under dependentsReloaded, so a script listed there needs no call of its own.";
26278
+ return `For ${entries.map(written).join(", ")}, run ${reload} first.${oneAtATime} In the one project ` + "that has reproduced a stale enum member, three times, the reload cleared it at once each time, " + "and the one plain editor_rescan tried left the diagnostic standing.";
26278
26279
  }
26279
26280
  function failedReloadNote(failed) {
26280
26281
  const missing = (before, after) => before.filter((name) => !after.includes(name));
@@ -31194,7 +31195,7 @@ var TOOL_SPECS = [
31194
31195
  value: {
31195
31196
  ops: ["set"],
31196
31197
  blank: true,
31197
- description: `set: the value, fitted to the property's type. "" writes an empty string. A property typed as or holding an object takes a path naming one the game holds, the way call's args do, and holds that instance. A typed list or map, such as Array[int] or Dictionary[String, int], takes a JSON list or object with each element fitted to its element type, and an element that cannot become one is refused by its index or key.`
31198
+ description: `set: the value, fitted to the property's type. "" writes an empty string. A property typed as or holding an object takes a path naming one the game holds, the way call's args do, and holds that instance, or null, which the text null also means, to empty it. A typed list or map, such as Array[int] or Dictionary[String, int], takes a JSON list or object with each element fitted to its element type, and an element that cannot become one is refused by its index or key.`
31198
31199
  },
31199
31200
  method: {
31200
31201
  type: "string",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gdharness",
3
- "version": "1.1.18",
3
+ "version": "1.1.20",
4
4
  "mcpName": "io.github.Aureliolo/gdharness",
5
5
  "description": "A harness for driving a Godot 4 project from an agent: editor addons, a runtime bridge into the running game, an MCP server in front of them, and a CLI that installs and diagnoses the Godot side.",
6
6
  "type": "module",