github jaegertracing/jaeger v2.18.0
Release v2.18.0

6 hours ago

Backend Changes

⛔ Breaking Changes

✨ New Features

  • Feat(query): auto-detect ui base path from browser url (adr-009) (@yurishkuro in #8568)
  • Feat(storage): forward configured headers to elasticsearch/opensearch backend (@ChaitanyaD48 in #8544)
  • Feat(query): add configurable header forwarding to grpc storage backend (@yurishkuro in #8539)

🐞 Bug fixes, Minor Improvements

  • Fix(mcp): normalize span_kind input to lowercase in get_span_names handler (@farhann-saleem in #8466)
  • Fix(clickhouse): fix array join alias broken by clickhouse v26 new analyzer (@Copilot in #8547)
  • Chore(jaegermcp): remove non-standard health mcp tool (@Vi-shub in #8549)
  • [jaegermcp] drop v1-style reftype from critical path logic (@yurishkuro in #8467)
  • [cassandra] add missing spanhash value to v2 todbmodel conversion (@Manik2708 in #8410)
  • Fix(cassandra): preserve gocql timeouts when unset in config (@masihkhatibzadeh99 in #8380)
  • [jaeger_mcp] continue inbound trace context from sep-414 request _meta (@SoumyaRaikwar in #8361)
  • Validate start_time_max after start_time_min (@utafrali in #8309)
  • Fix sigv4 auth failure due to missing req.getbody on es/os writes (@dd-tone in #8308)

🚧 Experimental Features

  • Feat(jaeger): implement ai new mcp endpoint for frontned dynamic contextual tooling (@Nabil-Salah in #8423)
  • [jaegerai] refactor route registration and request body size handling (@yurishkuro in #8468)
  • [fix][clickhouse] add missing scope attributes in clickhouse's query builder (@mahadzaryab1 in #8439)
  • [jaegermcp] add opentelemetry metrics middleware for mcp tool invocations (@CosmicAlgo in #8370)
  • [clickhouse][spm] add e2e test for clickhouse spm (@mahadzaryab1 in #8432)
  • [clickhouse] integrate clickhouse metric storage into jaeger storage extension (@mahadzaryab1 in #8426)
  • Feat(gemini-agent): implement ai gemini agent tracing (@Nabil-Salah in #8398)
  • [clickhouse][spm] implement getcallrates for clickhouse storage (@mahadzaryab1 in #8417)
  • [clickhouse][spm] implement geterrorrates for clickhouse storage (@mahadzaryab1 in #8414)
  • [clickhouse][spm] implement getlatencies for clickhouse storage (@mahadzaryab1 in #8411)
  • [jaegermcp] add get_service_dependencies tool (@lopster568 in #8403)
  • [clickhouse] enable direct integration tests for clickhouse storage (@mahadzaryab1 in #8389)
  • Feature: add ttl support for clickhouse v2 storage (@singhvibhanshu in #7906)
  • [jaegermcp] improve mcp tool descriptions (@lopster568 in #8314)
  • [clickhouse] implement dependency writer for clickhouse storage (@mahadzaryab1 in #8360)

👷 CI Improvements

  • Ci: skip metrics comparison and coverage regression gate on main branch (@Copilot in #8469)
  • Chore(ci): fix stale empty go module cache (@Copilot in #8461)
  • Perf(lint): rewrite check-line-endings in python for ~37x speedup (@yurishkuro in #8399)
  • Ci: integrate check-line-endings.sh into make fmt and make lint (@yurishkuro in #8393)
  • Ci: exclude dev-only modules from fossa workspace scan (@jkowall in #8390)
  • Fix(ci): post coverage gate and metrics comparison check runs against pr head sha (@Copilot in #8387)

⚙️ Refactoring

📖 Documentation

  • Docs(security): document code review and 2fa policies (@jkowall in #8524)
  • Docs(jaegermcp): fix documentation inconsistencies in adr-002 and readme (@Vi-shub in #8509)
  • Document openssf gold badge evidence refresh (@jkowall in #8497)
  • Docs(mcp): align search_traces adr with search_depth schema (@farhann-saleem in #8472)
  • [clickhouse][adr] add adr for clickhouse storage (@mahadzaryab1 in #8434)

📊 UI Changes

⛔ Breaking Changes

✨ New Features

  • Feat(ui): auto-detect url prefix from window.location at page load (@yurishkuro in #3874)

🐞 Bug fixes, Minor Improvements

  • Fix monitor page chart widths on initial load (@gulshank0 in #3555)
  • Fix: use compact duration format consistently across ui (@yurishkuro in #3846)
  • Fix(search): restore time picker options broken by #3781 (@yurishkuro in #3845)
  • Fix(search): use compact duration format in search results (@Copilot in #3844)
  • Fix: add keyboard accessibility to span name and child expander in trace timeline (@swetalin-10 in #3807)
  • Restore trace timeline column resizing in embedded mode (uiembed=v0) (@Copilot in #3823)
  • Fix: include backend error in otlp conversion error message (@yurishkuro in #3827)
  • Fix: stop click propagation in clicktocopy to prevent header collapse (@Copilot in #3818)
  • Fix(trace): restore "back to search" link broken by react router v6 migration (@yurishkuro in #3785)
  • Feat(trace): add service filter to prune spans by service in timeline (@yurishkuro in #3765)
  • Fix: prevent timeline tick labels from overlapping when column is narrow (@aabhinavvvvvvv in #3768)
  • Fix(ui): sort services alphabetically (@bender316 in #3734)
  • 🔒 fix command injection in prepare-release.py (@jkowall in #3717)
  • Perf: optimize tracestatistics grouping (@jkowall in #3718)
  • Add environment checks to prepare-release target (@jkowall in #3512)
  • Fix: prevent infinite loop on tracediff with empty trace ids (@parshipcy in #3714)
  • Adjust search results for smaller screens (@lpmi-13 in #3697)

👷 CI Improvements

⚙️ Refactoring

  • Refactor(spanview): extract relativebar component from tracespanview (@yurishkuro in #3855)
  • Refactor(stats): migrate tracestatisticsheader to functional component (@WasThatRudy in #3842)
  • Part of phase 1 (1f): remove config redux slice; use getconfig via useconfig (@parshipcy in #3781)
  • Part of phase 1 (1e): migrate embed flags off redux (@parshipcy in #3761)
  • Part of phase 1 (1d): move ddg view modifiers from redux to zustand (@parshipcy in #3750)
  • Fix(lint): replace new array(n) with array.from, promote no-new-array to error (@mateenali66 in #3754)
  • Fix(lint): clear unused vars/imports, promote no-unused-vars to error in ts (@mateenali66 in #3753)
  • Fix(lint): fix jest expects to have matcher calls, promote valid-expect to error (@Pasta-coder in #3752)
  • Fix(lint): drop useless array spread, promote no-useless-spread to error (@mateenali66 in #3749)
  • Chore(lint): move oxlint config into vite.config.ts (@yurishkuro in #3748)
  • Fix(lint): pass children as arg, promote no-children-prop to error (@yurishkuro in #3747)
  • Chore: fix all knip unused-export warnings; enable failure mode (@yurishkuro in #3745)
  • Chore: unexport 32 types not imported outside their own file (@yurishkuro in #3744)
  • Chore: fix knip dead-code warnings (@yurishkuro in #3743)
  • Part of phase1 (sub-2-1c): migrate collapse/expand and detail state to zustand (@parshipcy in #3721)
  • Convert measurablenode to functional component (@thc1006 in #3407)
  • Migrate tracespanview to functional component (@whiplashvin in #3470)
  • Part of phase 1 (sub-1c): move trace timeline layout prefs to zustand (@parshipcy in #3719)
  • Part of phase 1 (1b): archive notifier migrated from redux to zustand (@parshipcy in #3715)
  • Part of phase 1: refactor: migrate trace diff state from redux to zustand (@parshipcy in #3702)
  • Refactor: convert spangraph to functional component (@tmchow in #3705)
  • Test(jaeger-ui): migrate tests from jest to vitest (@yurishkuro in #3695)
  • Test: add mockdefault helper for default-export mocks (@yurishkuro in #3694)
  • Test: replace arrow ctor mocks with regular functions (@yurishkuro in #3693)
  • Chore(jaeger-ui): replace require() in test bodies with static imports (@yurishkuro in #3692)
  • Chore(jaeger-ui): rename jsx test files from .js to .jsx (@yurishkuro in #3691)
  • [adr/007] migrate packages/plexus tests from jest to vitest (@yurishkuro in #3690)
  • [adr/007] consolidate jaeger-ui tsconfigs (step e) (@yurishkuro in #3689)

Don't miss a new jaeger release

NewReleases is sending notifications on new releases.