- Improvement of tracing performance: factor ~4.
- Consistent interface for tracing and presentation.
-
Introduce
Debugger::TracewithTrace::Nodes andvariable_versionsfield to maintain all data produced by tracing in one entity. -
In
Trace::Present.call, you need to pass a block with options for customization instead of passing:node_options. Further on, the per-node customization is now keyed byTrace::Nodeinstance and not a Stack element anymore. -
In
render_method, remove:treekeyword argument, use:debugger_trace. -
The
render_methodis called with keyword arguments, only. The first positional argumentdebugger_nodesis now:debugger_trace.output = Dev::Trace::Present.( stack, node_options: { stack.to_a[0] => {label: "Create"} } )
is now
Dev::Trace::Present.(stack) do |trace_nodes:, **| { node_options: { trace_nodes[0] => {label: "Create"} } } end
Node.build_for_stackis now called inTrace::Presentand produces a list ofTrace::Nodeinstances that are containers for matching before and after snapshots.- Add
Node::Incompletenodes that have nosnapshot_afteras they represent a part of the flow that was canceled.
- Deprecate
:captured_nodekeyword argument in normalizer steps and rename it to:trace_node. - Remove the concept of
:runtime_pathand:compile_path. You can always compute paths after or during the debug rendering yourself. However, we simply don't need it for IDE or wtf?.
- Rename
:output_data_collectorand:input_data_collectorto:after_snapshooterand:before_snapshooteras they both produce instances ofSnapshot. The return signature has changed, the snapshooters return two values now: the data object and an object representing the variable versioning.
- Introduce the concept of
Snapshotwhich can be a moment in time before or after a step. TheSnapshot::BeforeandSnapshot::After(renamed fromCaptured::InputandCaptured::Output) are created during the tracing and after tracing associated to a specificTrace::Node. - Add
Snapshot::CtxandSnapshot::Versionswhich is a new, faster way of capturing variables. Instead of always callingctx.inspectfor every trace step, only variables that have changed are snapshooted using the (configurable):value_snapshooter. This improves#wtf?performance up to factor 10.
- The
:render_methodcallable can now return output along with additional returned values. - Pass the top-level
:activityinto the:render_method. - In
#wtf?, only complete the stack when an exception occurred. wtf?now returns all original return values plus the computed output from:render_method, followed by an arbitrary object from the rendering code.
- Move
Introspect::Graphover fromtrailblazer-activity. It's a data structure very specific to rendering, which is not a part of pure runtime behavior. - Use
Introspect.NodesAPI instead ofTaskMap. - Remove
:task_maps_per_activityinDebuggeras we don't need to cache anymore. - Require
trailblazer-activity-dsl-linear-1.2.0. - Remove
Render::Circuitas this is part oftrailblazer-activitynow.
Trace.capture_argsandcapture_returnno longer use anyGraphlogic. This is moved toTrace::Presentinstead to reduce complexity at crunch time.- Removed the
:focus_onoption for#wtf?. This is now solved through the debugger. Trace.default_input_collectoranddefault_output_collectornow receive the original taskWrap/pipeline-args[wrap_ctx, original_args].- In
Trace::Present.callit's now possible to provide labels to thedefault_rendererusing the:labeloption. Circuit.rendernow accepts segments/path.- Fixed a bug in
Trace::Presentwhere the traced top activity would show up as a node, which was wrong. - Rename
Trace::EntitytoTrace::Captured. - Removed
:positionkeyword inTrace::Rendererand friends. - Changed
Trace::Stackfrom a nested datastructure to a linearCapturedstack.
- Add
Debugger::Nodeas an interface and datastructure between tracing (StackandCaptured) andPresent, the latter now having access toDebugger::Node, only. - Add
Debugger::Normalizer, which computes default values forDebugger::Nodeat present-time.
- Use
trailblazer-activity-dsl-linear-1.0.0.
- Fixing release, and allow using beta versions.
- Use
trailblazer-activity-dsl-linear>= 1.0.0.beta1. This allows using this gem for testing beta versions.
- Use
trailblazer-activity-dsl-linear>= 1.0.
- Remove
representabledependency. - Moved all editor-specific code to the
progem (client.rbandgenerate.rb).
- Upgrade trb-activity, trb-activity-dsl-linear and representable versions.
- Ruby 3.0 support. :sunset:
- Ruby 2.7 support
- Add
Arrow.target_lanefield in theGeneratecomponent.
- Remove Declarative warning correctly
- Fix
Dev.wtfcircuit interface definition
- Revert declarative warning changes
- Allow focusing on selected variables for all steps in wtf
- Fix declarative deprecation warning
- Revert Hash#compact usage to support Rubies <= 2.4
- Allow injecting custom data collector in Trace API, to collect custom input/output ctx of task nodes.
- Allow focusing on specfic steps and ctx variables in Dev.wtf?
- Allow custom inspection while tracing using Inspector definations
- Make Generate::Pipeline an activity for better customization/extendability.
Render.stripis now a class method.- Added the
.typefield to thedatafield inGenerate.
- Fix
Introspectreferences.
- Move
Activity::TraceandActivity::Presentfromactivitytodeveloper. - Remove global configurations and use
flow_optionsto override defaults inwtf?.
- Remove ID extraction logic from
Generate, this is done on the server-side. - Print
wtftrace in all cases (with or without exception) - Allow color configuration in
wtftrace
- Introduce
:queryoption forClient.import. - In
Generate, addedElement.parentfield. - No more magic is applied when extracting the ID/semantic. We just use the plain string.
- Allow injecting
:parserintoGenerate.transform_from_hash.
- Add
Developer.railway.
- Add
Developer.rendershortcut toRender::Circuit.
- Initial release into an unsuspecting world.