Skip to content

JSON Formatter: filter to a node by path or from the tree - #19

Merged
fadeltd merged 1 commit into
mainfrom
feat/json-node-filter
Oct 29, 2026
Merged

fadeltd merged 1 commit into
mainfrom
feat/json-node-filter

Conversation

@fadeltd

@fadeltd fadeltd commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Added

  • JSON Formatter: a Filter field narrows the output and tree to one node; takes JSON Pointer, dot path, jq or $. paths
  • Filter from a selected tree row, widen to the parent, or clear
  • A path that doesn't resolve says where it stopped
  • selectPath, detectPathFlavor and formatPath in @fadeltd/devtools-core/json

A Filter field above the JSON output narrows both the text output and the tree to one node. It takes a JSON pointer (/items/0), a dot path (items[0]), a jq path (.items[0]) or a JSONPath-style $.items[0]; blank or / shows the whole document. Selecting a row in Tree view and pressing Filter fills the field with that node's jq path, the up arrow widens to the parent in whichever flavour was typed, and the X clears it.

The filter runs last, on the value after embedded-JSON expansion and key sorting, so a path can reach inside an expanded payload. Copy and the copy shortcut take the narrowed output. In the narrowed tree, copied paths stay absolute to the whole document, and each new subtree opens with its own default expansion.

A path that does not resolve explains where the walk stopped, in the flavour that was typed: ".items has 3 items; there is no [5]", "/a is a number, so it has no children". A malformed path reports the parse error instead of throwing.

Engine: selectPath, detectPathFlavor and formatPath in @fadeltd/devtools-core/json, with tests that every tree row selects back to the same node from all three flavours. parseDotPath now also reads a $. or $[ root; toDotPath never writes one, so existing round-trips are unaffected.
@fadeltd fadeltd self-assigned this Oct 29, 2026
@fadeltd fadeltd changed the title JSON: filter to a node by path or from the tree (A-17) JSON: filter to a node by path or from the tree Oct 29, 2026
@fadeltd
fadeltd merged commit 3f6ae2f into main Oct 29, 2026
1 check passed
@fadeltd
fadeltd deleted the feat/json-node-filter branch October 29, 2026 07:46
fadeltd added a commit that referenced this pull request Oct 29, 2026
…og placement

The tagging step added in #16 found the release commit with `git log | awk '{ print; exit }'`. awk stopped at the first line, git log died of SIGPIPE, and under pipefail the exit 141 failed the step right after the release commit was pushed. #17, #18 and #19 each got a release commit (v0.8.0 + core-v0.2.0, v0.9.0, core-v0.3.0) but no tag, no GitHub release and no deploy; the site is still on v0.7.0. The "Bypassed rule violations" line above the failure is the usual notice that the Actions bot went around the PR rule on main, and every earlier release printed it too.

Tagging is now its own step that runs on every merge. It walks back from main to the newest release commit whose tags and GitHub releases all exist, then, oldest first, tags each later release commit, creates its GitHub release from the changelog as it stood at that commit, and deploys the newest site tag. No pipe in it stops reading early, and the stray-tag check is kept. Merging this PR tags v0.8.0, core-v0.2.0, v0.9.0 and core-v0.3.0, and cuts and deploys v0.10.0.

The A-17 entry moves from [0.9.0] back to [Unreleased]. The branch was cut before Release v0.9.0 landed, and the squash merge kept the new line beside the pinned-tools entry, which by then sat under 0.9.0, so #19 released nothing. A new CI step on pull requests, scripts/check-changelog.ts, fails when a merge would put any of the PR's [Unreleased] lines into an already released section; replayed on #19's merge it fails, on #18's it passes. Corrections to past release notes are not flagged.

Also: the CI tarball check uses a here-string instead of `echo | grep -q`, release.ts no longer emits the notes output nothing reads, and CLAUDE.md and CONTRIBUTING.md describe the catch-up, the rebase rule and the two workflow pitfalls.
fadeltd added a commit that referenced this pull request Oct 29, 2026
…og placement (#20)

The tagging step added in #16 found the release commit with `git log | awk '{ print; exit }'`. awk stopped at the first line, git log died of SIGPIPE, and under pipefail the exit 141 failed the step right after the release commit was pushed. #17, #18 and #19 each got a release commit (v0.8.0 + core-v0.2.0, v0.9.0, core-v0.3.0) but no tag, no GitHub release and no deploy; the site is still on v0.7.0. The "Bypassed rule violations" line above the failure is the usual notice that the Actions bot went around the PR rule on main, and every earlier release printed it too.

Tagging is now its own step that runs on every merge. It walks back from main to the newest release commit whose tags and GitHub releases all exist, then, oldest first, tags each later release commit, creates its GitHub release from the changelog as it stood at that commit, and deploys the newest site tag. No pipe in it stops reading early, and the stray-tag check is kept. Merging this PR tags v0.8.0, core-v0.2.0, v0.9.0 and core-v0.3.0, and cuts and deploys v0.10.0.

The A-17 entry moves from [0.9.0] back to [Unreleased]. The branch was cut before Release v0.9.0 landed, and the squash merge kept the new line beside the pinned-tools entry, which by then sat under 0.9.0, so #19 released nothing. A new CI step on pull requests, scripts/check-changelog.ts, fails when a merge would put any of the PR's [Unreleased] lines into an already released section; replayed on #19's merge it fails, on #18's it passes. Corrections to past release notes are not flagged.

Also: the CI tarball check uses a here-string instead of `echo | grep -q`, release.ts no longer emits the notes output nothing reads, and CLAUDE.md and CONTRIBUTING.md describe the catch-up, the rebase rule and the two workflow pitfalls.
@fadeltd fadeltd changed the title JSON: filter to a node by path or from the tree JSON Formatter: filter to a node by path or from the tree Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant