Avatar for the opsmill user
opsmill
infrahub
BlogDocsChangelog

Performance History

Latest Results

test: split checkpoint assertion and require injected timeline - Replace the confusing `expected` flag on assert_held_at_checkpoint with two intent-revealing methods (assert_held_at_checkpoint / assert_not_held_at_checkpoint) delegating to a shared private helper. - Make `timeline` a required argument of RecordingLockRegistry instead of constructing one internally; install_recording_lock_registry now owns the default construction and injects it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
pmi-20260603-lock-test-adapter
4 minutes ago
delete the rest of the spec/plan stuff
infp-530-schema-order-by-metadata
25 minutes ago
add changelog for 8990
ajtm-06022026-uniqueness-for-removed-fields
2 hours ago
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>
develop
6 hours ago

Latest Branches

CodSpeed Performance Gauge
0%
test: reusable lock recording adapter#9439
12 minutes ago
678b4b1
pmi-20260603-lock-test-adapter
CodSpeed Performance Gauge
0%
2 hours ago
34ae804
infp-530-schema-order-by-metadata
CodSpeed Performance Gauge
0%
38 minutes ago
e803157
pmi-20260603-feedback-187-upport
© 2026 CodSpeed Technology
Home Terms Privacy Docs