Backend Changes
🐞 Bug fixes, Minor Improvements
- Implement timer duration bucket parsing in metrics init (@junaiddshaukat in #7951)
- Fix(memory): accept string-form error filters in trace search (@YoungHypo in #8217)
- Feat(monitor): restore grafana to spm docker-compose example (adr-007 step 1) (@abhay1999 in #8215)
- Safe self-tracing via otel collector telemetry factory (@yurishkuro in #8208)
- Fix: guard addjitter against zero/sub-nanosecond durations to prevent panic (fixes #8149) (@shivamtiwari3 in #8178)
- Fix: clock skew adjuster to also adjust endtimestamp (@Audio431 in #8170)
- Update mcp server readme (@yurishkuro in #8163)
- Feat(query): expose metricsstorage to ui as storage capabilities (@hharshhsaini in #8154)
🚧 Experimental Features
- [clickhouse] optimize spans table for faster searching (@mahadzaryab1 in #8258)
- [jaegermcp] add system prompt instructions for llm clients (adr phase 4) (@lopster568 in #8253)
- Fix(jaegermcp): enforce response limits (@abhay1999 in #8242)
- Feat(monitor): go sdk dashboard generator — adr-007 step 2a (@abhay1999 in #8216)
- [clickhouse][benchmarking] add initial results from benchmarking (@mahadzaryab1 in #8181)
- [jaegermcp] enable tenancy enforcement (@whiplashvin in #8203)
- [jaegermcp] enforce config-driven limits in mcp handlers (@rite7sh in #8194)
- [jaegermcp] fix mcp server integration with claude code (@yurishkuro in #8191)
- [clickhouse] fix trace id timestamps table schema / query to deduplicate trace_ids (@mahadzaryab1 in #8180)
- [clickhouse] optimize get traces query by adding start and end time filter (@mahadzaryab1 in #8152)
👷 CI Improvements
- Fix: create reusable setup-go action to fix go module cache in ci workflows (@Copilot in #8257)
- Use gotestsum for all test execution (@Copilot in #8256)
- Fix(ci): correct metrics snapshot comparison noise (@Copilot in #8246)
- Ci(monitor): add dashboard sync check for go sdk generator (adr-007 step 3) (@abhay1999 in #8240)
- Fix(ci): add retry logic for pulling registry:2 in prepare-docker-buildx (@Copilot in #8236)
- [ci] improve e2e workflow documentation and test mode naming (@yurishkuro in #8195)
- Fix oke demo prometheus upgrade (@danish9039 in #8183)
- [test] add scope name and version integration test (@Manik2708 in #8138)
- Fix ci parallel mode detection for org members without team access (@yurishkuro in #8182)
- Revert metrics workflow changes from pr8106 (@yurishkuro in #8175)
- Ci: fix pr resolution in ci summary report publish workflow (@yurishkuro in #8159)
- Do not run dependency-review on push to main (@yurishkuro in #8158)
- Include metric change details in pr comment (@yurishkuro in #8153)
- Fix(ci): prevent stale coverage baseline from persisting across main-branch runs (@Copilot in #8157)
- Fix: use $(suffix) in version-check binary path for debug builds (@Copilot in #8148)
⚙️ Refactoring
- Move param type conversion util out of tracestore api into v1adapter (@Copilot in #8255)
- Feat(monitor): complete adr-007 step 2b dashboard upgrade (@YoungHypo in #8241)
📖 Documentation
- Adr-007: grafana dashboard modernization and spm example validation (@yurishkuro in #8214)
- Add badger adr (@yurishkuro in #8166)
📊 UI Changes
✨ New Features
- Allow viewing span details in a side panel instead of inline view (@yurishkuro in #3578)
- [feature]: add trace logs view to aggregate all span events (@SoumyaRaikwar in #3563)
🐞 Bug fixes, Minor Improvements
- 🔒 [security fix] replace innerHTML with textContent to mitigate XSS risk (@jkowall in #3651)
- Add plexus demo route to main ui (dev only,
/plexus-demo) (@Copilot in #3656) - Fix plexus demo (@yurishkuro in #3654)
- Clean-up display of incomplete icon, text, and tooltip (@yurishkuro in #3619)
- Revert "refactor(plexus): migrate digraph to functional component" (@yurishkuro in #3600)
- Revert "chore: fetch backend config dynamically in dev mode (#3541)" (@yurishkuro in #3599)
- Fix: dark mode is not working correctly on the quality metrics page (@gulshank0 in #3583)
- Fix: normalize uppercase trace ids to lowercase in url (@samar-703 in #3485)
- Fix: tracediff slot b search populates slot a instead (@samar-703 in #3473)
- Fix detail-row hierarchy: missing vertical bars for parent spans and white background regression (@Copilot in #3572)
- Fix: system architecture (dag) dark mode visibility (@Parship12 in #3568)
🚧 Experimental Features
- [adr-0006] phase 5: combined modes, analytics, final polish (@yurishkuro in #3577)
- [adr-0006] phase 4: side panel polish (@yurishkuro in #3576)
- [adr-0006] phase 3: side panel container and span selection (@yurishkuro in #3569)
- [adr-0006] phase 2: tree-only mode (hide timeline) (@yurishkuro in #3562)
👷 CI Improvements
- Do not fail bundle size workflow on main branch (@yurishkuro in #3653)
- Use .prettierignore instead of explicit opt-in (@yurishkuro in #3647)
- Pin npm version (@yurishkuro in #3596)
⚙️ Refactoring
- Feat: add zustand and query foundation for state migration (@Parship12 in #3662)
- Fix: replace remaining tooltip arrow prop (@YoungHypo in #3663)
- Remove
storenpm dependency and suppress lightningcss warning (@yurishkuro in #3659) - Remove deprecated
worker-loaderin favor of webpack 5 / vite built-in worker support (@yurishkuro in #3646) - Final part: migrate to react-router-dom v7 & drop compat layer & history (@Parship12 in #3645)
- Part of phase 4 & 5: migrate the v5 matchpath call signature to v6/v7 matchpath signature (@Parship12 in #3617)
- Part of phase 4 & 5: migrate link to react-router-dom-v5-compat (@Parship12 in #3618)
- Part of phase 4: remove redux-first-history and decouple router state from redux (@Parship12 in #3616)
- Cleanup for phase 4: remove history.replace() and historyupdatemiddleware (@Parship12 in #3615)
- Final part of phase 3.2 (task 1): refactor(tracepage): convert class component to functional (@Parship12 in #3613)
- Phase 3 leftovers: remove state.router.location usages (cleanup) (@Parship12 in #3614)
- Part of phase 3.2 (task 1): factor out keyboard shortcut setup into a separate function in the tracepage (@Parship12 in #3609)
- Fix(tracepage): fix stale filterspans cache key and remove dead code (@thc1006 in #3592)
- Part of phase 3.2 (task 2): remove dead searchurl prop (@Parship12 in #3603)
- Phase 3.2 (task 2): refactor(dependencygraph): convert class component to functional (@Parship12 in #3591)
- Refactor(plexus): migrate digraph to functional component (@hharshhsaini in #3534)
- Chore: fetch backend config dynamically in dev mode (#3541) (@hharshhsaini in #3561)
- Refactor(plexus): migrate node to functional component (#3392) (@hharshhsaini in #3531)
- Refactor(plexus): migrate svgedges to functional component (#3397) (@hharshhsaini in #3518)
- Chore: replace
getconfigvaluewith directgetconfig()property access (@Copilot in #3589) - Fix(monitor): use storagecapabilities config as authoritative signal for spm availability (@yurishkuro in #3587)
- Refactor: control monitor tab visibility via storage capabilities of the backend (@hharshhsaini in #3554)
- Phase 3.2 (task 3): remove historyupdatemiddleware from redux & move navigate(url) into searchform (@Parship12 in #3582)
- Phase 3.1: replace state.router.location with uselocation() (@Parship12 in #3574)
- Refactor(plexus): migrate measurablenodes to functional component (@hharshhsaini in #3533)
- Phase 1: migrate route definitions to react router v6 syntax (@Parship12 in #3565)
- Refactor(plexus): migrate svgdefentry to functional component (#3395) (@hharshhsaini in #3528)