jaeger v2.20.0 版本更新介绍
发布日期: 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_skilltool 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
- Feat(genai-tab): add content-sensitive rendering toggle (plain/markdown/json) for message content (@swetalin-10 in #4213)
- Feat(assistant): add markdown rendering and panel resize (@SoumyaRaikwar in #4181)
- Feat(search): add ascending sort support for start time column (@akshatsinghai6682-sketch in #4033)
- Feat: treat trace ids as opaque strings, support base64 encoding (@yurishkuro in #4118)
- Feat(flamegraph): implement native & improved flamegraph trace view (@yurishkuro in #4098)
- Feat(tracing): export ui-emitted otlp traces to jaeger (@yurishkuro in #4051)
🐞 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)
下载链接
- jaeger-2.20.0-darwin-amd64.sha256sum.txt
- jaeger-2.20.0-darwin-amd64.tar.gz
- jaeger-2.20.0-darwin-amd64.tar.gz.asc
- jaeger-2.20.0-darwin-arm64.sha256sum.txt
- jaeger-2.20.0-darwin-arm64.tar.gz
- jaeger-2.20.0-darwin-arm64.tar.gz.asc
- jaeger-2.20.0-linux-amd64.sha256sum.txt
- jaeger-2.20.0-linux-amd64.tar.gz
- jaeger-2.20.0-linux-amd64.tar.gz.asc
- jaeger-2.20.0-linux-arm64.sha256sum.txt
- jaeger-2.20.0-linux-arm64.tar.gz
- jaeger-2.20.0-linux-arm64.tar.gz.asc
- jaeger-2.20.0-linux-ppc64le.sha256sum.txt
- jaeger-2.20.0-linux-ppc64le.tar.gz
- jaeger-2.20.0-linux-ppc64le.tar.gz.asc
- jaeger-2.20.0-linux-s390x.sha256sum.txt
- jaeger-2.20.0-linux-s390x.tar.gz
- jaeger-2.20.0-linux-s390x.tar.gz.asc
- jaeger-2.20.0-windows-amd64.sha256sum.txt
- jaeger-2.20.0-windows-amd64.tar.gz
- jaeger-2.20.0-windows-amd64.tar.gz.asc
- jaeger-2.20.0-windows-amd64.zip
- jaeger-2.20.0-windows-amd64.zip.asc
- jaeger-2.20.0.sha256sum.txt
- jaeger-SBOM.spdx.json
- jaeger-tools-2.20.0-darwin-amd64.sha256sum.txt
- jaeger-tools-2.20.0-darwin-amd64.tar.gz
- jaeger-tools-2.20.0-darwin-amd64.tar.gz.asc
- jaeger-tools-2.20.0-darwin-arm64.sha256sum.txt
- jaeger-tools-2.20.0-darwin-arm64.tar.gz
- jaeger-tools-2.20.0-darwin-arm64.tar.gz.asc
- jaeger-tools-2.20.0-linux-amd64.sha256sum.txt
- jaeger-tools-2.20.0-linux-amd64.tar.gz
- jaeger-tools-2.20.0-linux-amd64.tar.gz.asc
- jaeger-tools-2.20.0-linux-arm64.sha256sum.txt
- jaeger-tools-2.20.0-linux-arm64.tar.gz
- jaeger-tools-2.20.0-linux-arm64.tar.gz.asc
- jaeger-tools-2.20.0-linux-ppc64le.sha256sum.txt
- jaeger-tools-2.20.0-linux-ppc64le.tar.gz
- jaeger-tools-2.20.0-linux-ppc64le.tar.gz.asc
- jaeger-tools-2.20.0-linux-s390x.sha256sum.txt
- jaeger-tools-2.20.0-linux-s390x.tar.gz
- jaeger-tools-2.20.0-linux-s390x.tar.gz.asc
- jaeger-tools-2.20.0-windows-amd64.sha256sum.txt
- jaeger-tools-2.20.0-windows-amd64.tar.gz
- jaeger-tools-2.20.0-windows-amd64.tar.gz.asc
- jaeger-tools-2.20.0-windows-amd64.zip
- jaeger-tools-2.20.0-windows-amd64.zip.asc