发布日期: 2026-07-20
版本号: v2.20.0

本次更新对Jaeger后端与UI进行了多项重要变更与改进。后端方面,移除了对Elasticsearch 6的支持,并将ES轮换与清理功能提升至Beta阶段;合并了MCP扩展,并引入了新的索引轮换策略与数据流感知写入路径。新增功能包括原生摘要读取器、基于生成式AI的Span属性与追踪传播,以及HTTP API端点对Base64编码追踪ID的支持。同时修复了大量问题,涉及存储认证、MCP协议、采样锁机制与ClickHouse数据校验等。UI方面,新增了生成式AI标签页、原生火焰图视图,并支持对追踪ID进行Base64解码;优化了搜索排序、Span信息展示与监控面板,并全面支持了深色模式下的各项功能。此外,项目还进行了大规模的代码重构,统一了Elasticsearch客户端库,清理了过时功能,并将构建工具迁移至pnpm。

更新内容 (中文)

后端变更

⛔ 破坏性变更

  • 功能(es):将es.*轮转和索引清理器功能门控提升至beta版本(@ysh-bot#9018
  • 功能(es):移除对Elasticsearch v6的支持(@yurishkuro#8948
  • 功能(mcp):将jaegermcp扩展合并到jaegerquery扩展中(@Nabil-Salah#8894
  • 功能(es):添加可配置的max_trace_duration并改进时间范围设计(@yurishkuro#8840

✨ 新功能

  • 功能(es):为esmapping-generator添加–backend标志以支持opensearch选择(@ysh-bot#8985
  • 功能(es):原生追踪摘要功能(summaryreader)(@Me-Priyank#8812

🐞 错误修复与改进

  • 功能(es):为elasticsearch客户端添加同步批量写入原语(@ysh-bot#8992
  • 功能(es):将parentspanid引用兼容写入置于功能门控后(@ysh-bot#9015
  • 修复(ci):解析oke演示部署的已发布快照sha值(@FlamingSaint#8999
  • 功能(jaegerai):添加genai span属性和网关↔sidecar追踪传播(@SoumyaRaikwar#8942
  • 维护(storage):移除已过期的稳定功能门控(@Anujkumar9081#8970
  • 维护(es):从代码注释中清除残留的olivere引用(@ysh-bot#8983
  • 功能(es):将模板创建迁移到esclient并弃用旧版映射渲染(@Me-Priyank#8963
  • 修复(storage):在validate()中拒绝互斥的es认证方法(@Anujkumar9081#8946
  • 使"spm未配置"错误信息更明确(@Saithej2k#8878
  • 功能(es):将span写入迁移到自有有界批量索引器(@yurishkuro#8944
  • 修复(auth):在tokenproviderwithtime闭包中同步回退令牌(@yurishkuro#8952
  • 功能(es):将服务/操作读取迁移到自有搜索器和查询AST(@yurishkuro#8943
  • [es] 为es管理工具添加bearer-token和api-key cli标志(rfc 0006 m3.5c)(@yurishkuro#8939
  • [es] 将管理平面通过共享认证栈路由(rfc 0006 m3.5b)(@yurishkuro#8937
  • 修复(clickhouse):验证解码后的trace/span ID长度以防止损坏行导致的panic(@iammdzaidalam#8935
  • 修复(es):将custom_headers应用于所有elasticsearch客户端并尊重host覆盖(@iammdzaidalam#8917
  • 修复(storage):在sigv4签名之前填充req.getbody,而非之后(@truffle-dev#8768
  • 修复(mcp):在get_services和get_span_names上报告total_count和truncated(@CedricConday#8902
  • 修复(sampling):在优雅关闭时放弃主锁(@HESleagacy#8825
  • 功能(tracestoremetrics):当底层读取器支持时转发summaryreader(@yurishkuro#8895
  • 功能(hotrod):为hotrod span添加标准otel db语义约定属性(@yurishkuro#8893
  • 修复(es):在写入路径上填充parentspanid字段(@yurishkuro#8859
  • 修复(mcp):在空关键路径上不报错(@Me-Priyank#8806
  • 修复(jaegermcp):在关闭时等待服务器goroutine退出(@g-k-s-03#8852
  • 修复(mcp):在查询后端前验证span_id格式(@truffle-dev#8845
  • 测试(v1adapter):修复依赖读取器测试中的模拟期望验证(@kavyarathod05#8756
  • 修复(es):改进es/os集成测试ci覆盖范围并减少噪音(@yurishkuro#8836
  • 修复(es):输出opensearch ism rollover_alias并合并backendversion(@yurishkuro#8830
  • 功能(query):在http api端点中接受base64编码的trace ids(@yurishkuro#8828
  • 重构(es):引入索引轮转配置模式并弃用旧版标志(@yurishkuro#8823

🚧 实验性功能

  • 功能(ai-gateway):通过会话作用域的mcp端点提供每个会话的ui工具(@Nabil-Salah#8973
  • 功能(ai-gateway):添加会话作用域的mcp端点和会话流注册表(@Nabil-Salah#8910
  • 功能(jaegermcp):添加用于代理技能发现的read_skill工具(@SoumyaRaikwar#8849
  • 功能(es):添加datastreamrotation策略和数据流感知的span写入路径(@Me-Priyank#8833

👷 CI改进

  • 修复(build):在jaeger-ui迁移后使用pnpm构建嵌入式ui(@ysh-bot#9044
  • 修复windows测试清理失败:关闭输出/错误日志文件句柄(@shayannab#8884
  • [chore] 关闭集成测试中http客户端的空闲连接(@Manik2708#8815
  • [chore]:添加binary.stop()和binarypath以进行测试中期进程控制(@iammdzaidalam#8822
  • 功能(es):为所有轮转策略添加端到端集成测试(@yurishkuro#8838

⚙️ 重构

  • 重构(ai-gateway):应用rfc 0008术语——turn注册表、路由id、端点命名(@Nabil-Salah#9017
  • 重构(es):在v2 elasticsearch trace writer中引入批量writespans api(@ysh-bot#8990
  • 功能(es):删除olivere elasticsearch客户端栈(@ysh-bot#8982
  • 测试(es):弃用detailederror olivere-error enricher(@ysh-bot#8981
  • 测试(es):将elasticsearch轮转端到端测试迁移到自有客户端(@ysh-bot#8976
  • 重构(es):使esclient.client成为指针句柄(@ysh-bot#8979
  • 测试(es):将直接elasticsearch集成测试迁移到自有客户端(@ysh-bot#8975
  • 功能(es):在自有elasticsearch客户端上关闭空闲连接(@ysh-bot#8974
  • 功能(es):将es metricstore迁移到自有搜索器和查询AST(@ysh-bot#8967
  • 功能(es):将es span reader迁移到自有搜索器和查询AST(@ysh-bot#8958
  • 功能(es):将依赖存储读写迁移到自有esclient(@ysh-bot#8957
  • 功能(es):将采样存储读写迁移到自有esclient(@yurishkuro#8954
  • 测试(es):通过可注入的时钟对采样存储写入请求进行快照测试(@yurishkuro#8955
  • 在客户端构造时统一elasticsearch后端版本检测(rfc 0006 m4)(@iammdzaidalam#8938
  • 将共享es往返栈重新定位到esclient包中(@yurishkuro#8936
  • 将elasticsearch管理客户端通过共享elastic-transport-go池路由(@yurishkuro#8932
  • 将elasticsearch控制平面客户端包重命名为esclient(@yurishkuro#8930
  • 添加es/os请求快照套件基线并合并映射固件(@yurishkuro#8922
  • 重构(es):通过es rest客户端传递context.context(@Me-Priyank#8873
  • 重构(es):重命名索引名称常量,消除*indexbasename(@yurishkuro#8870
  • 重构(es):将索引名称常量移动到config包中,从resolved*rotation中删除prefix参数(@yurishkuro#8868
  • 重构(es):将客户端构造提取到clientbuilder包中(@yurishkuro#8842
  • 功能:导出可重用的jaegercli.newcommand以用于自定义ocb发行版(@iammdzaidalam#8835
  • 重构(es):将轮转实现文件重命名为rotation_{name}.go(@yurishkuro#8839
  • 维护(storage):从elasticsearch工厂中移除fswatcher(@iammdzaidalam#8750
  • 重构(es):将depstore和metricstore迁移到使用轮转接口(@yurishkuro#8826

📖 文档

  • Rfc 0004:用于span存储的elasticsearch/opensearch数据流(@yurishkuro#8804

📊 UI变更

✨ 新功能

  • 功能(genai-tab):为消息内容添加内容敏感的渲染切换(纯文本/markdown/json)(@swetalin-10#4213
  • 功能(assistant):添加markdown渲染和面板调整大小(@SoumyaRaikwar#4181
  • 功能(search):为起始时间列添加升序排序支持(@akshatsinghai6682-sketch#4033
  • 功能:将trace ids视为不透明字符串,支持base64编码(@yurishkuro#4118
  • 功能(flamegraph):实现原生且改进的火焰图追踪视图(@yurishkuro#4098
  • 功能(tracing):将ui发出的otlp追踪导出到jaeger(@yurishkuro#4051

🐞 错误修复与改进

  • 修复(genai):修复span图标悬停提示并优化类型图标和标签(@swetalin-10#4239
  • 功能(timeline):强调span类型图标并柔化树状图边框(@ysh-bot#4238
  • 维护(genai-tab):为token使用行添加"tokens:“前缀(@swetalin-10#4222
  • 修复(trace):将span药丸标签显示为工具提示(@udita-0707#4220
  • 功能(trace):扩展span药丸到硬编码属性集(@udita-0707#4214
  • 修复(genai-tab):简化并修复genai span图标的渲染(@swetalin-10#4221
  • 功能(search):显示并跟踪追踪搜索延迟(@ysh-bot#4216
  • 重构(otel):引入iattributes集合替代原始属性数组(@ysh-bot#4211
  • 功能(trace):添加http状态摘要芯片(@udita-0707#4149
  • 功能(spanbarrow):为llm、tool、agent和retrieval span添加genai span类型图标(@swetalin-10#3857
  • 修复(stats):使热力图感知主题(@jkowall#4200
  • 修复(listview):移除导致空洞的数组长度预分配(@dolliecoder#4194
  • 功能(genai-tab):添加genai span详细内容(@swetalin-10#4191
  • 功能(utils):添加genai span分类和isgenaitrace检测(@swetalin-10#3856
  • 功能(monitor):在更改时将监控过滤器同步到url(@udita-0707#4182
  • 修复(timeline):恢复暗模式下的关键路径悬停动画(@yurishkuro#4180
  • 功能(search):为表格起始时间添加绝对/相对切换(@yurishkuro#4175
  • 功能(search):改进表格视图列排序(@sksingh2005#3994
  • 修复(filter-spans):为span搜索将对象/数组属性值字符串化(@bhuvan-somisetty#4171
  • 修复:增加暗模式下关键路径条对比度(@bhavyamsharmaa#4163
  • 修复(assistant):在聊天线程中渲染工具调用部分(@SoumyaRaikwar#4164
  • 功能(monitor):支持服务/spankind/时间框架url参数(@udita-0707#4119
  • 功能(trace):在树状视图中添加装饰性span类型图标(@swetalin-10#3832
  • 修复(tracegraph):暗模式下感知主题的边和图例颜色(@bhavyamsharmaa#4074
  • 修复(tracepage):处理索引0处的根span导航(@dolliecoder#4145
  • 修复:修复时间线隐藏时的侧边栏调整大小(@sksingh2005#4046
  • 修复(bug):在导航/重新加载时清除trace id输入字段(#4135)(@shubhtrek#4136
  • 重构:在ddg模型中标准化keyvaluepair类型(@shubhtrek#4064
  • 默认为搜索结果的表格视图(@yurishkuro#4133
  • 功能(flamegraph):可调整大小的50/50表格/图表分割及滚动支持(@yurishkuro#4121
  • 修复:copyicon按钮悬停时跳跃/放大(动画/布局故障)(@akshatsinghai6682-sketch#4022
  • 修复(plexus):在暗模式下为ddg边权重标签使用currentcolor(@shubhtrek#4079
  • 修复(search):在查找和trace id点击时保持返回搜索(@udita-0707#4080
  • 修复(monitor):在操作表中用设计令牌替换硬编码的浅色模式颜色(@udita-0707#4054
  • 修复(assistant):包装传递给httpagent的fetch(@yurishkuro#4044

🚧 实验性功能

  • 功能(genai):为span详细面板添加genai标签壳(@swetalin-10#4122
  • 功能(tracepage):添加带自动激活的genaitimelineviewer视图类型(@swetalin-10#3872

👷 CI改进

  • 维护(pnpm):从npm迁移到pnpm(@thisis-manan#4137
  • 维护(ci):将构建/lint/测试/覆盖率步骤路由到makefile入口点(迁移到pnpm的一部分)(@aprv10#4139

⚙️ 重构

  • 重构(search):移除废弃的trace redux切片及其搜索actions/api(@swetalin-10#3999
  • 重构(timeline):将关键路径逻辑提取到辅助模块中(@sonalyadav1#4060
  • 重构(stats):将computespanselftime提取到共享工具中(@yurishkuro#4113
  • 重构(ddg):为图使用函数式组件(@sksingh2005#4100
  • 重构:将virtualizedtraceview迁移到函数式组件(@sksingh2005#4081
  • 重构(tracegraph):迁移到函数式组件(@sksingh2005#4058

更新内容 (原始)

Backend Changes

⛔ Breaking Changes

  • Feat(es): promote es.* rotation and index-cleaner feature gates to beta (@ysh-bot in #9018)
  • Feat(es): remove support for elasticsearch v6 (@yurishkuro in #8948)
  • Feat(mcp): merge jaegermcp extension into jaegerquery extension (@Nabil-Salah in #8894)
  • Feat(es): add configurable max_trace_duration and improve time-range design (@yurishkuro in #8840)

✨ New Features

  • Feat(es): add –backend flag to esmapping-generator for opensearch selection (@ysh-bot in #8985)
  • Feat(es): native trace summaries (summaryreader) (@Me-Priyank in #8812)

🐞 Bug fixes, Minor Improvements

  • Feat(es): add synchronous bulk write primitive to the elasticsearch client (@ysh-bot in #8992)
  • Feat(es): gate parentspanid reference-compat write behind a feature gate (@ysh-bot in #9015)
  • Fix(ci): resolve published snapshot shas for oke demo deploy (@FlamingSaint in #8999)
  • feat(jaegerai): add genai span attributes and gateway↔sidecar trace propagation (@SoumyaRaikwar in #8942)
  • Chore(storage): remove expired stable feature gates (@Anujkumar9081 in #8970)
  • Chore(es): scrub lingering olivere references from code comments (@ysh-bot in #8983)
  • Feat(es): migrate template creation to esclient and retire legacy mapping rendering (@Me-Priyank in #8963)
  • Fix(storage): reject mutually-exclusive es auth methods in validate() (@Anujkumar9081 in #8946)
  • Make “spm not configured” error message more explicit (@Saithej2k in #8878)
  • Feat(es): migrate span writes onto an owned bounded bulk indexer (@yurishkuro in #8944)
  • Fix(auth): synchronize fallback token in tokenproviderwithtime closure (@yurishkuro in #8952)
  • Feat(es): migrate service/operation reads onto owned searcher and query ast (@yurishkuro in #8943)
  • [es] add bearer-token and api-key cli flags to es admin tools (rfc 0006 m3.5c) (@yurishkuro in #8939)
  • [es] route admin plane through the shared auth stack (rfc 0006 m3.5b) (@yurishkuro in #8937)
  • Fix(clickhouse): validate decoded trace/span id lengths to prevent panic on corrupted rows (@iammdzaidalam in #8935)
  • Fix(es): apply custom_headers to all elasticsearch clients and honor host override (@iammdzaidalam in #8917)
  • Fix(storage): populate req.getbody before sigv4 signing, not after (@truffle-dev in #8768)
  • Fix(mcp): report total_count and truncated on get_services and get_span_names (@CedricConday in #8902)
  • Fix(sampling): forfeit leader lock on graceful shutdown (@HESleagacy in #8825)
  • Feat(tracestoremetrics): forward summaryreader when underlying reader supports it (@yurishkuro in #8895)
  • Feat(hotrod): add standard otel db semconv attributes to hotrod spans (@yurishkuro in #8893)
  • Fix(es): populate parentspanid field on write path (@yurishkuro in #8859)
  • Fix(mcp): don’t error on empty critical path (@Me-Priyank in #8806)
  • Fix(jaegermcp): wait for server goroutine to exit on shutdown (@g-k-s-03 in #8852)
  • Fix(mcp): validate span_id format before querying backend (@truffle-dev in #8845)
  • Test(v1adapter): fix mock expectation validation in dependency reader tests (@kavyarathod05 in #8756)
  • Fix(es): improve es/os integration test ci coverage and reduce noise (@yurishkuro in #8836)
  • Fix(es): emit opensearch ism rollover_alias and consolidate backendversion (@yurishkuro in #8830)
  • Feat(query): accept base64-encoded trace ids in http api endpoints (@yurishkuro in #8828)
  • Refactor(es): introduce index rotation config schema with legacy flag deprecation (@yurishkuro in #8823)

🚧 Experimental Features

  • Feat(ai-gateway): serve per-session ui tools over the session-scoped mcp endpoint (@Nabil-Salah in #8973)
  • Feat(ai-gateway): add session-scoped mcp endpoint and session-stream registry (@Nabil-Salah in #8910)
  • Feat(jaegermcp): add read_skill tool for agent skill discovery (@SoumyaRaikwar in #8849)
  • Feat(es): add datastreamrotation strategy and data-stream-aware span write path (@Me-Priyank in #8833)

👷 CI Improvements

  • Fix(build): build embedded ui with pnpm after jaeger-ui migration (@ysh-bot in #9044)
  • Fix windows test cleanup failure: close output/error log file handles (@shayannab in #8884)
  • [chore] close idle connections for http clients in integration tests (@Manik2708 in #8815)
  • [chore]: add binary.stop() and binarypath for mid-test process control (@iammdzaidalam in #8822)
  • Feat(es): add e2e integration tests for all rotation strategies (@yurishkuro in #8838)

⚙️ Refactoring

  • Refactor(ai-gateway): apply rfc 0008 terminology — turn registry, route id, endpoint naming (@Nabil-Salah in #9017)
  • Refactor(es): introduce batch writespans api in v2 elasticsearch trace writer (@ysh-bot in #8990)
  • Feat(es): delete the olivere elasticsearch client stack (@ysh-bot in #8982)
  • Test(es): retire the detailederror olivere-error enricher (@ysh-bot in #8981)
  • Test(es): migrate the elasticsearch rotation e2e tests to the owned client (@ysh-bot in #8976)
  • Refactor(es): make esclient.client a pointer handle (@ysh-bot in #8979)
  • Test(es): migrate the direct elasticsearch integration tests to the owned client (@ysh-bot in #8975)
  • Feat(es): close idle connections on the owned elasticsearch client (@ysh-bot in #8974)
  • Feat(es): migrate the es metricstore onto the owned searcher and query ast (@ysh-bot in #8967)
  • Feat(es): migrate the es span reader onto the owned searcher and query ast (@ysh-bot in #8958)
  • Feat(es): migrate dependency store reads and writes onto owned esclient (@ysh-bot in #8957)
  • Feat(es): migrate sampling store reads and writes onto owned esclient (@yurishkuro in #8954)
  • Test(es): snapshot sampling store write requests via an injectable clock (@yurishkuro in #8955)
  • Unify elasticsearch backend version detection at client construction (rfc 0006 m4) (@iammdzaidalam in #8938)
  • Relocate the shared es roundtripper stack into the esclient package (@yurishkuro in #8936)
  • Route the elasticsearch admin client through a shared elastic-transport-go pool (@yurishkuro in #8932)
  • Rename the elasticsearch control-plane client package to esclient (@yurishkuro in #8930)
  • Add es/os request-snapshot suite baseline and converge mapping fixtures (@yurishkuro in #8922)
  • Refactor(es): thread context.context through the es rest client (@Me-Priyank in #8873)
  • Refactor(es): rename index name constants, eliminate *indexbasename (@yurishkuro in #8870)
  • Refactor(es): move index name constants to config package, drop prefix param from resolved*rotation (@yurishkuro in #8868)
  • Refactor(es): extract client construction into clientbuilder package (@yurishkuro in #8842)
  • Feat: export reusable jaegercli.newcommand for custom ocb distributions (@iammdzaidalam in #8835)
  • Refactor(es): rename rotation implementation files to rotation_{name}.go (@yurishkuro in #8839)
  • Chore(storage): remove fswatcher from elasticsearch factory (@iammdzaidalam in #8750)
  • Refactor(es): migrate depstore and metricstore to use rotation interface (@yurishkuro in #8826)

📖 Documentation

  • Rfc 0004: elasticsearch/opensearch data streams for span storage (@yurishkuro in #8804)

📊 UI Changes

✨ New Features

🐞 Bug fixes, Minor Improvements

  • Fix(genai): fix span icon hover tooltip and refine type icons and labels (@swetalin-10 in #4239)
  • Feat(timeline): emphasize span-type icons and soften tree chrome (@ysh-bot in #4238)
  • Chore(genai-tab): prefix the token usage row with “tokens:” (@swetalin-10 in #4222)
  • Fix(trace): show span pill labels as tooltips (@udita-0707 in #4220)
  • Feat(trace): expand span pills to hardcoded attribute set (@udita-0707 in #4214)
  • Fix(genai-tab): simplify and fix rendering of genai span icons (@swetalin-10 in #4221)
  • Feat(search): show and track trace search latency (@ysh-bot in #4216)
  • Refactor(otel): introduce iattributes collection replacing raw attribute arrays (@ysh-bot in #4211)
  • Feat(trace): add http status summary chips (@udita-0707 in #4149)
  • Feat(spanbarrow): add genai span type icons for llm, tool, agent, and retrieval spans (@swetalin-10 in #3857)
  • Fix(stats): make heatmap theme-aware (@jkowall in #4200)
  • Fix(listview): remove array-length pre-allocation that created holes (@dolliecoder in #4194)
  • Feat(genai-tab): add genai span detail content (@swetalin-10 in #4191)
  • Feat(utils): add genai span classification and isgenaitrace detection (@swetalin-10 in #3856)
  • Feat(monitor): sync monitor filters to url on change (@udita-0707 in #4182)
  • Fix(timeline): restore critical path hover animation in dark mode (@yurishkuro in #4180)
  • Feat(search): add absolute/relative toggle for table start time (@yurishkuro in #4175)
  • Feat(search): improve table view column sorting (@sksingh2005 in #3994)
  • Fix(filter-spans): stringify object/array attribute values for span search (@bhuvan-somisetty in #4171)
  • Fix: increase critical path bar contrast in dark mode (@bhavyamsharmaa in #4163)
  • Fix(assistant): render tool-call parts in chat thread (@SoumyaRaikwar in #4164)
  • Feat(monitor): support service/spankind/timeframe url params (@udita-0707 in #4119)
  • Feat(trace): add decorative span type icons in tree view (@swetalin-10 in #3832)
  • Fix(tracegraph): theme-aware edge and legend colors in dark mode (@bhavyamsharmaa in #4074)
  • Fix(tracepage): handle root span navigation at index 0 (@dolliecoder in #4145)
  • Fix: fix sidepanel resize when timeline is hidden (@sksingh2005 in #4046)
  • Fix(bug): clear trace id input field on navigation/reload (#4135) (@shubhtrek in #4136)
  • Refactor: standardize keyvaluepair typing across the ddg model (@shubhtrek in #4064)
  • Default to table view for search results (@yurishkuro in #4133)
  • Feat(flamegraph): resizable 50/50 table/chart split with scroll affordance (@yurishkuro in #4121)
  • Fix: copyicon button jumps/enlarges on hover (animation/layout glitch) (@akshatsinghai6682-sketch in #4022)
  • Fix(plexus): use currentcolor for ddg edge weight labels in dark mode (@shubhtrek in #4079)
  • Fix(search): keep back-to-search across find and trace id clicks (@udita-0707 in #4080)
  • Fix(monitor): replace hardcoded light-mode colors with design tokens in operations table (@udita-0707 in #4054)
  • Fix(assistant): wrap fetch passed to httpagent (@yurishkuro in #4044)

🚧 Experimental Features

  • Feat(genai): add genai tab shell to span detail panel (@swetalin-10 in #4122)
  • Feat(tracepage): add genaitimelineviewer view type with auto-activation (@swetalin-10 in #3872)

👷 CI Improvements

  • Chore(pnpm): migrate from npm to pnpm (@thisis-manan in #4137)
  • Chore(ci): route build/lint/test/coverage steps through makefile entrypoints(part of migration to pnpm) (@aprv10 in #4139)

⚙️ Refactoring

  • Refactor(search): remove dead trace redux slice and its search actions/api (@swetalin-10 in #3999)
  • Refactor(timeline): extract critical path logic into helper module (@sonalyadav1 in #4060)
  • Refactor(stats): extract computespanselftime to shared utility (@yurishkuro in #4113)
  • Refactor(ddg): use functional component for graph (@sksingh2005 in #4100)
  • Refactor:migrate virtualizedtraceview to functional component (@sksingh2005 in #4081)
  • Refactor(tracegraph): migrate to functional component (@sksingh2005 in #4058)

下载链接