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
4 changes: 2 additions & 2 deletions .github/workflows/release-extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ jobs:
run: |
set -euo pipefail
cp ./*.py blender_manifest.toml LICENCE README.md staging/
cp -R blender semantic extensions examples staging/
cp -R blender semantic extensions examples editor staging/
# Only these code directories are part of the extension (no tests or .git).
test -d staging/blender && test -d staging/extensions && test -d staging/semantic
test -d staging/blender && test -d staging/extensions && test -d staging/semantic && test -d staging/editor
find staging -name __pycache__ -type d -prune -exec rm -rf {} +
python3 - <<'PY'
from pathlib import Path
Expand Down
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,39 @@ To change the generated group, edit the text, select the generated group node, a

See the [Get Started guide](https://denikryt.github.io/NodeForgeDocs/latest/GET_STARTED/) for the complete beginner workflow.

## Text Editor completion (prototype)

Enable **NodeForge** in the Blender Text Editor header to show completion and
signature hints while editing. The toggle applies to Text Editors in the current
Blender window manager. No external editor or language server is required.

- Type `from packages import math`, then `math.` to list installed package
functions. Namespace aliases such as `from packages import math as m` work.
- Type `from local import ...` or `from local.some_folder import ...` to browse
available Local names. Imported Local functions and directory aliases such as
`from local import shapes as s` support `s.` completion.
- Type a function call such as `math.layout_grid(` or `my_shape(` to see its
declared parameters. Parameters appear once each on separate rows; long
signatures scroll to keep the active parameter visible. The popup shows
the return type, or separate named and typed outputs for multi-output calls.
After a comma, type a parameter prefix to complete `parameter_name=`.
Top-level `def` signatures in the current Text datablock are also available
before the file is saved.
- Use **Up/Down** to navigate suggestions, **Tab** to insert the selected name,
and **Esc** to dismiss the current popup. The **Refresh** icon beside the
toggle reloads the installed package and Local inventories.

The prototype derives package members and Local selection from the compiler's
resolved environment, and extension signatures from Extension API declarations.
For `.nf` sources, signature display currently recognizes explicit `input_*()`
assignments with literal names; computed labels and inferred inputs may not be
shown. Source-backed return types are inferred lazily by the existing semantic
frontend for the selected function and cached; if analysis fails, source output
labels remain available with unknown types. Extension result tuples are listed
in order. Core DSL name completion covers all registered built-ins, while
parameter hints and return types cover a small subset. The helper never builds
Geometry Nodes. It does not provide diagnostics or type-aware overload ranking.

## The language at a glance

A small script can mix group inputs, ordinary expressions, built-in Geometry Nodes wrappers, local functions, and direct access to Blender nodes:
Expand Down
2 changes: 1 addition & 1 deletion __init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""NodeForge Blender addon package."""

NODEFORGE_VERSION = (0, 72, 7)
NODEFORGE_VERSION = (0, 73, 0)

bl_info = {
"name": "NodeForge",
Expand Down
2 changes: 1 addition & 1 deletion blender_manifest.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
schema_version = "1.0.0"
id = "nodeforge"
version = "0.72.7"
version = "0.73.0"
name = "NodeForge"
tagline = "Compile a procedural DSL into Blender Geometry Nodes"
maintainer = "nachitima"
Expand Down
5 changes: 5 additions & 0 deletions dev/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -532,3 +532,8 @@ lifecycle.
- Require integration tests to pass before publishing the saved release ZIP and deploying the saved Pages artifact.
- Bundle the latest published Math and L-System package ZIPs at release build time, using each package's minimum NodeForge version for compatibility checks.
- Centralize bundled-library IDs and Release repositories in one registry shared by the Extension workflow and tests.
- Added opt-in Text Editor completion for Core names, installed package namespaces, Local imports/directories, and local `def` functions.
- Added cursor-positioned signature and keyword-argument hints, keyboard selection, and explicit catalog refresh; reuses compiler-selected catalog identities without building nodes.
- Added focused pure-Python and Blender 5.2 UI/insertion regression checks.
- Refined Text Editor popup: one vertical row per parameter, bounded layout, active argument, and typed results including multiple outputs; source output types reuse semantic callable preparation on demand.
- Include Text Editor modules in the Extension release ZIP and adapt package-backed completion tests to the current package installer.
1 change: 1 addition & 0 deletions editor/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Read-only NodeForge editor intelligence and Blender Text Editor integration."""
Loading
Loading