@praxisjs/devtools
Changelog for @praxisjs/devtools — in-app developer tools overlay with @Debug and @Trace.
@praxisjs/devtools
0.3.2
Depends on the other @praxisjs/* packages through caret ranges (^2.3.0) instead of exact versions, so npm no longer installs a second copy of a package when two releases disagree, and upgrades no longer end in peer conflicts.
0.3.0
The published package no longer contains the package's tests (compiled tests in dist/__tests__, test sources in src/__tests__).
@Trace and @Debug no longer bring the panel into production bundles. The package was a single module, so an app that kept @Trace() in its production code bundled the whole devtools (about 50 kB minified) even though the decorator does nothing there. It is now built one file per module and marked "sideEffects": false, and the decorators check process.env.NODE_ENV where bundlers can fold it, so a production build keeps a few bytes of each decorator and neither the registry nor the panel.
Performance panel and profiler. A new Performance tab records what the reactive graph does — signal writes, effect runs, computed recomputations and their cost — and ranks components by the work their bindings and effects did. Registry.instance.profiler (start, stop, reset, snapshot) gives the same data from code; it installs itself as the graph's observer only while recording, so it costs nothing otherwise. PerformancePlugin, Profiler, ProfileSnapshot and OwnerStats are exported, and DevTools.init() exposes the registry as __PRAXIS_DEVTOOLS__ in the browser console.
@Debug options and coverage.
log: true | "trace"logs every change or call to the console (with a stack trace for"trace");break: true | (next, prev) => booleanpauses in the debugger.- Accessor fields (
@State,@Prop,@Persisted, …) are observed reactively, so changes made behind the setter — a parent passing a new prop — are reported too. Previously only assignments through the field were. - A method that returns a promise is recorded when it settles, with the resolved value or rejection and the full duration (it used to record the time until the promise was returned).
- Observation stops on unmount.
@Trace({ slow }) warns in the console when a render takes longer than slow ms.
Production builds: @Debug and @Trace now return the member or class untouched when process.env.NODE_ENV === "production". The docs already promised this, but they used to wrap and record in every build.
Faster registry: a signal change appends to its history instead of copying it and the entry, and unmounting a component drops its signals through an index instead of scanning every signal. The panel itself is now compiled with the template compiler.
0.2.21
Updated dependencies — @praxisjs/[email protected].
0.2.20
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.19
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.18
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.17
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].
0.2.16
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.15
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.14
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.13
Updated Panel and DevToolsApp components to use the StatelessComponent default type parameter and @Prop() / @Emit() decorators for automatic JSX prop inference. Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].
0.2.12
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.11
Refreshed workspace dependencies for stability and security (@types/node, eslint, unocss). Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].
0.2.10
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.9
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.8
Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.7
Event bus error isolation. Handlers registered via @Debug no longer short-circuit on the first error — all handlers run and errors are collected into an AggregateError. Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].
0.2.6
Refactored @Debug and @Trace internals to use the new decorator factory helpers (createFieldDecorator, createMethodDecorator, createGetterObserverDecorator, createClassDecorator). No changes to public API or behavior. Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected], @praxisjs/[email protected].
0.2.5
Regenerated UnoCSS bundle. Updated dependencies — @praxisjs/[email protected], @praxisjs/[email protected].
0.2.4
Bug fix: guarded against undefined entry in TimelineRow — previously caused a silent crash when the devtools panel was opened before the first component mounted.
0.2.3
Fixed JSX prop typing for StatelessComponent — LibraryManagedAttributes now uses InstancePropsOf directly, preventing the erroneous T | (T & (() => T)) type expansion. @Emit type signature relaxed from unknown to any for broader method compatibility.
0.2.2
Updated dependencies — @praxisjs/[email protected].
0.2.1
@Debug() now supports @Computed() getters. Computed values are tracked and historized in the Signals panel alongside @State fields.
0.2.0
Migrated to TC39 decorator context API. DevTools internals rewritten with StatefulComponent/StatelessComponent. Removed experimentalDecorators requirement.
0.1.0
Initial beta release — in-app overlay with Signals, Components, and Timeline panels. @Debug for tracking fields, getters, and methods. @Trace for component render and lifecycle instrumentation.