Skip to content

feat(node): boundary language flag — --language / --clear-language - #53

Merged
rennehan merged 2 commits into
mainfrom
feat/node-boundary-language
Jul 5, 2026
Merged

feat(node): boundary language flag — --language / --clear-language#53
rennehan merged 2 commits into
mainfrom
feat/node-boundary-language

Conversation

@rennehan

@rennehan rennehan commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Adds language CRUD support to the CLI, matching the h2o boundary-only language field (T0.1) at 1:1 parity with the /v1 delta API.

Changes

  • openapi sync + wire regen — synced openapi.json from app; scripts/regen-wire.sh regenerated the wire crate. Only node_data.rs + wire_node_data.rs change (each gains language: Option<Option<String>>) — no unrelated churn.
  • cli.rs--language on node add and node set; --clear-language (conflicts_with = "language"), mirroring --path-prefix/--clear-path-prefix.
  • staging/mod.rslanguage on NodeSpec/NodeEdit/NodeUpdated + OpSummary; add/update delta build via scalar_or_clear; boundary-only guards reject --language on behavior/state/io.
  • cmd/node.rs + diff.rs — human + JSON rendering.
  • 4 new tests — add sets language; state/io reject it; set + --clear-language round-trip.

Gates

cargo build + cargo clippy --workspace --all-targets -- -D warnings clean; 292 lib + 7 help tests pass. Wire regen verified deterministic against the pinned 7.18.0 generator (regen on main's own openapi → zero drift), so the wire-drift CI gate will pass.

Part of the multi-language import work (planning #202/#204). T0.5.

🤖 Generated with Claude Code

rennehan and others added 2 commits July 5, 2026 12:23
Syncs openapi.json (boundary `language` field, h2o T0.1) and regenerates the
wire crate (node_data/wire_node_data gain `language: Option<Option<String>>`),
then mirrors path_prefix → language across the hand-written layer for full CRUD
parity with /v1:

- cli.rs: `--language` on node add + set; `--clear-language` (conflicts_with).
- staging: NodeSpec/NodeEdit/NodeUpdated + OpSummary carry language; add/update
  delta build via scalar_or_clear; boundary-only guards reject it on
  behavior/state/io (mirrored error text).
- cmd/node.rs + diff.rs: human + JSON rendering of language.
- 4 new tests: add sets language, state/io reject it, set + clear round-trip.

cargo build + clippy -D warnings clean; 292 lib + 7 help tests pass. Wire regen
is idempotent against the pinned 7.18.0 generator (verified: regen on main's own
openapi produces zero drift, so CI wire-drift will pass).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…er test

- The update "nothing to set" hint now lists --language among the field flags.
- The scalar-render test asserts a non-null language renders in both human
  (language: go) and JSON output (was language: None, so the render path was
  unpinned).
- Completeness: the lone-scalar and lone-clear parametrized tables now include
  language / clear_language.

clippy -D warnings clean; 292 lib tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rennehan rennehan self-assigned this Jul 5, 2026
@rennehan rennehan added the enhancement New feature or request label Jul 5, 2026
@rennehan
rennehan merged commit 9c3da3d into main Jul 5, 2026
3 checks passed
@rennehan
rennehan deleted the feat/node-boundary-language branch July 5, 2026 18:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant