Latest Results
feat: Add graph path traversal and dependency discovery (#8625)
* feat(path-traversal): implement node selection and path visualization components
- Add NodeSelector for selecting source and destination nodes with advanced options.
- Create PathEdge component for rendering edges with labels and highlight effects.
- Implement PathFlowGraph to visualize paths between nodes using dagre for layout.
- Develop PathTraversalPage to manage state and handle user interactions for path traversal.
- Introduce utility functions for formatting relationship names and generating colors based on node kinds.
- Add DependencySelector for selecting dependencies in impact mode.
- Create a dedicated page for path traversal with responsive layout and error handling.
* feat(graph-path-traversal): add graph path traversal feature with interactive visualization
- Implemented backend support for path traversal using Neo4j's variable-length path matching.
- Added frontend components for visualizing paths and dependencies using React Flow.
- Introduced filtering options for node kinds and namespaces to enhance user experience.
- Created a dependency discovery mode to find all connected nodes of specific kinds.
- Enhanced UI with context menus, keyboard navigation, and URL persistence for user selections.
- Added unit and E2E tests to ensure functionality and prevent regressions.
- Updated documentation and changelog to reflect new features and usage instructions.
* fix: sort imports in graphql queries and schema
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: format path traversal query files with ruff
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor(path-traversal): address PR 8625 review
- Use RelationshipDirection enum for PathRelationshipData.direction
- Rename node_filter to kind_filter; match against labels for generic support
- Default-branch query now rejects paths with a twin deleted edge
- Convert Cypher queries to %-formatted strings (no {{}} escapes)
- Extract shared extract_path_data helper in path module
- Rename DependencyQuery/InfrahubDependencies -> ReachableNodesQuery/
InfrahubReachableNodes across backend, frontend, schema, and tests
- Split GraphQL resolvers into path.py + reachable.py; drop lazy import
- ReachableNodes query projects explicit fields, returns all shortest
paths per target instead of collapsing to one
- Drop unused db_id; trim excessive comments
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* refactor(path-traversal): use object terminology on the frontend
Infrahub's UI uses "object" for data instances (things at /objects/:kind/:id).
Aligns the path-traversal frontend with that convention while keeping React
Flow's node terminology for the visualization library.
- PathNode -> PathObject, ReachableNode -> ReachableObject
- GraphQL aliases on the client rename wire fields: paths.nodes -> paths.objects,
reachable_nodes -> reachable_objects (backend GraphQL schema unchanged)
- Rename files and components: node-picker -> object-picker, node-selector ->
object-selector, get-reachable-nodes -> get-reachable-objects, reachable-nodes.query
-> reachable-objects.query, useGetReachableNodes -> useGetReachableObjects
- User-visible labels: "Source/Destination Node" -> "Source/Destination Object",
"Paste node UUID" -> "Paste object UUID", "Select a node" -> "Select an object"
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Add frontend review + get latest changes from develop (#9064)
* add review
* update review
* Merge branch 'develop' of github.com:opsmill/infrahub into ple-frontend-review
* lint and fix package
* fix dependencies
* generate graphql schemas
* update test
* update graphql
* chore(changelog): align with develop, keep only path-traversal fragments
Remove changelog fragments consumed by the 1.9.0 release (squashed in by
mistake) and restore the post-release fragments that exist on develop tip.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore(changelog): align with current develop tip
Drop fragments consumed by releases up to and including the latest cut on
develop, and pick up the post-release fragments now present on develop tip.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Start to use infrahub components and update specs for more incoming work (#9099)
* use get object
* upde dep
* kind multi select
* update kind select
* update specs
* update specs for missing fields
* update specs for forms
* fix import
* fix types
* lint
* Improve path traversal components and code (#9136)
* docs(path-traversal): add forms-refactor design and implementation plan
Brainstormed design and bite-sized implementation plan for migrating the
path-traversal forms onto react-hook-form + nuqs, splitting the 535-line page
into per-mode panels, and adding UUID auto-detect to the shared
RelationshipComboboxList so the ObjectPicker can drop its mode toggle.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(shared): add isUuid helper
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(relationships): auto-detect UUID search and switch to ids filter
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* refactor(path-traversal): move pure formatters into format-paths module
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* refactor(path-traversal): drop ObjectPicker mode toggle, switch to id-only API
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(path-traversal): add path-mode panel, form, results, URL hook
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(path-traversal): add dependencies-mode panel, form, results, URL hook
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* refactor(path-traversal): split page into per-mode panels, drop legacy selectors
The mode URL value 'impact' is renamed to 'dependencies' to match the
user-facing tab label. Old deep links using ?mode=impact fall back to the
default 'path' mode.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* refactor(path-traversal): flatten cache key to object-shape
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* test(path-traversal): cover deep-link auto-run, validation, UUID search
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* add api layer and cleanup
* fix types
* fix backend
* fix modals
* fix object picker
* allow peer creation
* filter objects in picker
* add loader
* improve object picker
* betterer
* skip path traversal e2e tests
* lint
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* add toolbar and floating form panel (#9151)
* new response format
* update graphql schemas
* add entity
* update format
* cleanup
* chore
* improve get kind color
* fix numbers fields
* improve forms
* generate types
* spec for schema-based traversal planning
* update spec to fix dev link validation hopefully
* ignore specs/ dir for lychee link checking
* try different lycheeignore format
* try lychee.toml
* UI polish for path-traversal forms and kind multi-select (#9275)
* ensure kind is prefilled
* improve kind ulti select
* improve field for kinds
* update label
* rename relationship placeholder
* lint
* props
* update text
* improve label for accessibility
* improve ui
* betterer
* update test
* un-update lychee.toml, remove dead links from spec
* Refine path results sidebar and node styling (#9280)
* updat format paths
* update path results
* improve focused objects
* update utils
* update paths results and dependencies
* improve copy to clipboard
* update docs
* schema-based graph traversal planning models (#9286)
* phase 1: empty files and directories
* phase 2A: update imports
* phase 2B+C new plan and filter data models
* remove non-existent links from spec
* shrink constants
* use has_permission instead of resolve_permission
* cleanup links and ruff
* remove unnecessary test
* clean up docstrings
* always exclude DEFAULT_EXCLUDED_NAMESPACES
* add schema-based planning logic for graph traversal (#9287)
* schema-based route planning
* removed unused `allow_schema_revisits` from graphql input for now
* prevent immediate self-loop when allow_schema_revisits is False
* fix mypy in test
* test linting
* do pruning within each step of the plan
* use case instead of dict
* simplify schema-based route planner (#9314)
* update spec and plan for latest changes, including cypher strategy
* remove allow_schema_revisits, cypher query won't support it right now
* simplify route planning data structure
* update spec a little more
* uncheck tasks not completed in this PR
* cypher query for schema-based planning (#9316)
* cypher query for schema-based planning
* update docstring formatting
* improve cypher response format
* remove registry import from query class
* tests and wiring for PathTraversal and ReachableNodes queries (#9331)
* tests and wiring for PathTraversal and ReachableNodes queries
* move test fixture
* update cypher variable names to fix cypher rename warning
* rewrite path traversal query renderer to improve performance (#9368)
* rewrite path traversal query renderer to improve performance
* reduce max_paths to 5000
* update graphql schema
* update unit test
* prevent loops in paths
* allow 0 max paths
* pass max_targets, max_paths, at into render()
* catch query initialization errors and reraise as graphql
* simplify planning a little
* update imports
* add max results and max paths to dependencies search (#9393)
* chore(frontend): update betterer results after develop merge
The DynamicRelationshipFieldProps type changed on develop (added
filterQuery/peerField), shifting the tsc error text Betterer stores
per issue. Issue count is unchanged (214); only the embedded
signatures drifted, which fails betterer's CI mode.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* set max paths for PathTraversal to 100
* linting
* rename placeholder
* use card
* type
* use card
* cleanup class
* reuse buttons components
* fix doc
* betterer
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Paul Leménager <pa-lem@hotmail.fr>
Co-authored-by: Aaron McCarty <aaron@opsmill.com>
Co-authored-by: Aaron McCarty <ajtmccarty@pm.me> Latest Branches
0%
pmi-20260603-lock-test-adapter 0%
infp-530-schema-order-by-metadata 0%
pmi-20260603-feedback-187-upport © 2026 CodSpeed Technology