Commit graph

292 commits

Author SHA1 Message Date
AleksanderBodurri
35046d3dba feat(devtools): promote router tree to stable
Previous the router tree was an opt-in feature that required manual enablement in settings.

Now the router tree is enabled by default whenever the application supports it and routes are detected.
2026-02-02 11:06:42 -08:00
Georgi Serev
042471044d
refactor(devtools): snap to signal graph nodes selected from the properties panel
Snap to the signal graph node of a corresponding property when the user uses "Show 'prop' signal graph" button.
2026-01-28 18:33:37 +00:00
AleksanderBodurri
105274fe32 feat(devtools): mark special element injector providers as internal
Differentiates special providers like ElementRef from other providers in the DevTools UI.
2026-01-26 22:18:02 +00:00
hawkgs
adae4c7ab0 refactor(devtools): use object-tree-explorer in signal-value-tree
Employ the reusable `object-tree-explorer` in the `signal-value-tree` preview component.
2026-01-20 10:16:54 -08:00
hawkgs
2d4262cfbd fix(devtools): support for @defer-only blocks; defer declared blocks (#66546)
Add support for `@defer`-only blocks (previously, they weren't rendered in the component tree at all); Fix declared blocks section in the details

PR Close #66546
2026-01-20 18:16:32 +00:00
hawkgs
87f4797321 refactor(devtools): drop dagre graph type
Drop Dagre graph type since v7.0.14 introduces better typing.
2026-01-15 11:11:03 -08:00
hawkgs
721094788a refactor(devtools): snap to root node on signal graph render
Drop the old `ResizeObserver` and resize logic in favor of a simpler "snap to root node" (template or first node) functionality.
2026-01-15 11:10:26 -08:00
Georgi Serev
9273f1c3c2
feat(devtools): add resource visualization to the signal graph
Convert the signal graph to a Devtools-FE-specific signal graph that supports clusters; Add support for `resource` clusters; Introduce some improvements to the signal graph viz
2026-01-13 08:32:46 -08:00
hawkgs
e66aeac8d0 refactor(devtools): style the profiler dialogs to match the current design
Decrease the font size and tone down the paddings and margins. Use `ng-button` instead of `mat-button`.
2026-01-09 08:23:18 -08:00
hawkgs
bea5840864 refactor(devtools): add secondary type button
Add a secondary style/type button to `ng-button`.
2026-01-09 08:23:18 -08:00
AleksanderBodurri
241bdeb698 feat(devtools): create an info snackbar when a user logs a property
Previously there is no feedback when clicking this button in Angular DevTools itself, which can produce some confusion if the user does not have the browser console open as well, or if they accidentally turned on some filtering in the browser console.

Now Angular Devtools uses mat snack bar to inform the user that the task was successful
2026-01-07 13:40:45 -05:00
hawkgs
f05d0feac9 fix(devtools): injector tree initial root node snapping on prod
Fix initial broken root node snapping/focusing when the Injector Tree tab is opened in the production app.
2026-01-06 10:22:29 -05:00
hawkgs
4b7f7a550f fix(devtools): retain tree-viz snapped node on pre-render cleanup
Each tree-visualizer render cycle resets the snapped node in an effort to not end up with a non-existent snapped node. However, each render cycle doesn't constitute a completely different tree. This change retains the snapped node as long as it exists in the tree.
2026-01-06 10:22:29 -05:00
hawkgs
2d9e179188 perf(devtools): improve injector tree rendering performance
Introduce an equality function for transformed injector trees in order to omit redundant D3 tree visualization render cycles when the tree hasn't been changed.
2026-01-06 10:22:29 -05:00
Matthieu Riegler
6a94300179 refactor(devtools): use whenStable instead of detectChanges
This commits migrates the devtools tests toward to recommendations
and runs the tests in a zoneless config
2026-01-05 12:24:58 -05:00
Matthieu Riegler
6270bba056 ci: reformat files
This is after we've slightly changed a rule in #66056
2025-12-16 14:44:19 -08:00
Matthieu Riegler
af77b89e2a ci: reformat files
This is after we've slightly changed a rule in #66056
2025-12-16 09:24:36 -08:00
hawkgs
1a9bfa8542 fix(devtools): last supported version
Bump to 12, as the message suggests.
2025-12-12 08:04:50 -08:00
hawkgs
aee536c8ca refactor(devtools): improve the look of app state screens
Improve the look of "app not detected", "unsupported version" and "prod app not supported" screens.
2025-12-12 08:04:50 -08:00
hawkgs
0c4a5c599d fix(devtools): prod app detected screen
Do not call `getSupportedApis` in a prod app since it throws an error due to the absence of `ng`, which prevents the FE from getting the `ngAvailability` message and, respectively, the proper info screen that DevTools cannot be used on a prod app.
2025-12-08 09:21:16 -08:00
Georgi Serev
87e05e935c
refactor(devtools): create a reusable component for all prop mat-trees
Create a reusable component for object property inspection.
2025-12-04 11:44:00 -08:00
hawkgs
1d431a9637 fix(devtools): router tree not being rendered
Convert the `TreeVisualizer` to a signal, in the `TreeVisualizerComponent`, to ensure that the router tree render effect is always called; Use explicit `afterNextRender` phases.
2025-12-04 11:30:14 -08:00
Georgi Serev
2eaa4d54ad
fix(devtools): hide profiler node details when the frame is changed
Hide the details panel when the user selects a new frame.
2025-12-02 12:05:54 +01:00
Kristiyan Kostadinov
26e2092dd1 test: remove unnecessary test calls
Removes calls to `TestBed.configureTestingModule` since they aren't necessary.
2025-11-24 10:18:18 -05:00
SkyZeroZx
ed0647d2e6 refactor(devtools): add matcher and runGuardsAndResolvers support in router viewer
Enhance the Angular DevTools router viewer to display routes that use custom `matcher` functions and reflect the `runGuardsAndResolvers` configuration
2025-11-18 08:29:41 -08:00
hawkgs
e7a6e31a70 fix(devtools): refine when signal graph button is shown
Show the signal graph button only when a signal-graph-eligible node from the directive explorer is selected; Fix client app error when a `defer` node is selected (related)
2025-11-17 14:45:01 -08:00
Shuaib Hasan Akib
f87e9a02b5 refactor(devtools): clean up unused code and modernize component patterns
- Removed unused code and imports
- Migrated to signal-based input() APIs
- Added readonly to Angular-initialized inputs and removed explicit type annotations
- Updated templates to use self-closing tags for consistency
2025-11-17 08:40:15 -08:00
hawkgs
68d823a241 fix(devtools): show profiler exec details only if there are directives
Show the execution details of a captured frame entry only if there are recorded directives.
2025-11-17 08:39:36 -08:00
SkyZeroZx
4126ef1e94 fix(devtools): use isLazy flag to determine disabled state for action button
Refactors the logic that disables the action button for lazy-loaded routes.
Now relies on the isLazy property from the route data instead of string comparisons on the component field.
2025-11-14 08:47:05 -08:00
cexbrayat
c137f1fe91 docs: ExperimentalIsolatedShadowDom mentions 2025-11-14 08:41:13 -08:00
SkyZeroZx
373c101d02 refactor(devtools): improve route data and resolver views
Adds an enhanced route data tree view to better visualize both route resolvers and router data.
2025-11-13 09:11:53 -08:00
hawkgs
402f396b76 refactor(devtools): update inspect icon
Use a custom version of Material `pin_end` icon that doesn't have a dot.
2025-11-10 07:47:14 -08:00
SkyZeroZx
c74367c5de refactor(devtools): replace HostListener with host metadata for keydown handling
Uses host metadata instead of the HostListener decorator for keydown events
2025-11-07 07:44:42 -08:00
Alan Agius
26fed34e0e
build: format md files
This commit configures prettier to format markdown files.
2025-11-06 10:03:05 -08:00
SkyZeroZx
f2ffbe31b0 refactor(devtools): enhance route guard handling and add inline function warning
refactored route guard handling and added warning for inline functions
2025-11-05 15:20:46 -08:00
hawkgs
cb5d36d107 refactor(devtools): remove redirecting flag from router tree
Drops `isRedirect` due to its redundancy in light of the newly introduced `redirectTo`.
2025-11-05 15:20:29 -08:00
Georgi Serev
cd0e96c1d0
fix(devtools): router tree details table data
Introduce layout fixes and use dedicated buttons for the view source and navigate actions.
2025-11-05 17:07:18 +00:00
hawkgs
31d412771b refactor(devtools): update the looks of hydration overlay switch
Move the option under the directive explorer and drop the switch to match the rest of the UI.
2025-11-05 17:04:46 +00:00
SkyZeroZx
058377ed55 refactor(devtools): handle function-based redirectTo and title in router viewer
Refactors router viewer logic to properly process and display redirectTo and title when defined as functions
2025-11-04 17:54:07 +00:00
SkyZeroZx
bd27e96273 refactor(devtools): Removes redundant input undefined in angularVersion
Simplifies the initialization of the version input by removing
an unnecessary undefined
2025-10-30 19:40:07 +00:00
hawkgs
c1dee66866 fix(devtools): signal graph value preview mat-tree row indentation (#64798)
Fix the identation and arrows of signal graph value preview mat-tree.

PR Close #64798
2025-10-30 17:18:29 +00:00
SkyZeroZx
aaa3020b94 refactor(devtools): Improves error messaging for profiler file import
Formats error messages to display error name and message when importing profiler files fails
2025-10-29 12:38:20 +01:00
SkyZeroZx
bfcaf17005 refactor(devtools): Improves clipboard error feedback with snackbar and logging
Enhances user experience by displaying a snackbar notification when clipboard copy fails, and logs detailed error information via the message bus
2025-10-27 19:41:54 +01:00
Matthieu Riegler
50a55d6afb refactor(devtools): use preview value in property editor (#64552)
This way only the `preview` property handles the `Signal()` wrapper (and not individual components anymore)

PR Close #64552
2025-10-21 15:18:56 +00:00
hawkgs
9b7a79af3a refactor(devtools): update debug signal node type to match core type (#64127)
Use a union string type instead of a generic string.

PR Close #64127
2025-10-20 20:15:46 +00:00
AleksanderBodurri
9a1735aee8 fix(devtools): revert router tree dashed edges for lazy routes (#64532)
From my investigation what I know for sure:
- when the graph pans or zooms it updates the transform property on the g element, which in turn causes the browser to repaint the visible space in the g element
- stroke-dasharray is the cause of major performance issues in large graphs.

What I suspect:
- When the g element repaints, it also has to repaint all of the child svg elements. When the dashed line path svgs repaint, the stroke-dasharray calculation is not GPU accelerated, but instead occurs on the CPU, causing extreme lag whenever the svg graph is panned or zoomed.

Temporary solution: remove this dashed edge functionality. We can investigate alternatives for communicated that a path is lazy loaded.

Future long term solution: migrate to canvas based graph renderer for router tree and injector graph.

PR Close #64532
2025-10-20 15:32:49 +00:00
Matthieu Riegler
b7c47d8fad refactor(devtools): Create a separate type of signals for after effect phases. (#64315)
With this change, we ensure afterRenderEffect phases nodes appear more like "effects" than regular signal node.

PR Close #64315
2025-10-16 18:47:13 +00:00
SkyZeroZx
6af231e2d6 refactor(devtools): Replace console warnings with snackbar notifications (#64458)
Improves user experience by displaying UI notifications when attempting to view source for unsupported routes, replacing developer-only console warnings with visible snackbars

PR Close #64458
2025-10-16 14:41:34 +00:00
hawkgs
134ff540b5 fix(devtools): directive-forest minor UI fixes (#64426)
- Fix the hydration icons when the text from the nodes exceeds the component width
- Align and slightly enlarge the arrow icons

PR Close #64426
2025-10-16 14:37:12 +00:00
Matthieu Riegler
17528628fa refactor(devtools): Router viz is only from 20.3.5 onward (#64415)
This is following some updated in #64411

PR Close #64415
2025-10-15 10:39:32 -07:00