Skip to content

[pull] main from SigNoz:main#864

Merged
pull[bot] merged 5 commits into
code:mainfrom
SigNoz:main
Jul 26, 2026
Merged

[pull] main from SigNoz:main#864
pull[bot] merged 5 commits into
code:mainfrom
SigNoz:main

Conversation

@pull

@pull pull Bot commented Jul 26, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

srikanthccv and others added 5 commits July 26, 2026 11:25
…odies (#12276)

* fix: enforce scalar response contract for promql and metric builder queries

* fix: reject invalid v2 dashboard bodies instead of migrating them as v1

* fix(dashboards-v2): post legacy v1 dashboards unchanged from the import flow

* fix: add reduce to for scalar requests if not present

---------

Co-authored-by: Naman Verma <naman.verma@signoz.io>
… with V1 (#12282)

* fix(dashboard): align pie chart legend height with other panels

The pie legend wrapper was missing box-sizing:border-box and
overflow:hidden and applied top padding unconditionally, so its height
exceeded the value from calculateChartDimensions and clipped the donut.
Mirror the shared chart legend wrapper so the height is honored, gating
the top padding to the right-legend position.

* fix(dashboard): render empty table cells as n/a instead of zero

Empty scalar cells (null/undefined/'') were coerced via Number() to 0,
so they rendered as 0, picked up value-column color thresholds, and
sorted as real zeros. Route cells through toCellNumber (NaN for empty)
so empties show n/a, skip threshold coloring, and sort last.

* fix(dashboard): serialise V2 pie legends as {key="value"} for parity with V1

V2's pie renderer joined only the group-by values, showing legends like
"write" where V1 shows {direction="write"}. Route the single-value-column
label through getLabelName (as V1's slicesFromSeries does), reusing the
labels map already built for drilldown. Multi-value-column labels are
unchanged.
* chore: add migration script from current to perses dashboard

* fix: move WrapInV5Envelope to types package

* fix: generate internal name from title

* fix: match with lower case signal for variables

* fix: sanitize tags instead of throwing error

* fix: extract row and widget positions to build expanded sections

* chore: add a catch all panic check to log migration error

* chore: catch typecast errors

* fix: remove nil nil return

* test: fix ut to check for v2 internal name

* chore: remove spec md file

* chore: separate error type for migration

* feat: note down all errors in migration

* fix: allow zero value for threshold values

* fix: ignore react placeholders in layout

* fix: note error in query parsing

* fix: read threshold value properly during migration

* fix: adjust to schema changes in variables

* test: fix unit tests

* fix: catch error from decodeTelemetryFields

* fix: make threshold value non-nullable

* fix: handle list of widget IDs in panel maps

* fix: add better error note down for failed conversions

* fix: normalize having array from v4 schema

* fix: remove metric aggregation from non metric queries (malformed json)

* fix: normalize telemetry field keys in query

* chore: add temporary doc for other malformation handlers needed

* fix: add more malformed query handling

* fix: add more malformation handling

* chore: reuse transition package (adds dependency, need to see what to do)

* fix: fix go lint issue

* revert: remove md file

* fix: make none the default fill mode during migration

* fix: add nil check on limit value when normalizing page size

* fix: validate dashboard spec after migration

* fix: remove unused method

* fix: match shape safe version to existing version

* chore: improve variable names

* chore: better comments and names in layout migrator

* chore: add explanation comment for continuing on empty id widget

* fix: ditch dynamic vars with no attr, rearrange overlapping layouts

* fix: add default aggregation count() if none is present in logs/traces

* fix: add empty list tolerance to v1 variables

* fix: add fixes based on backup migration testing

* chore: skip over unreferenced widgets

* chore: remove widgets that have a single query that has no metric name

* chore: assign missing formula names like ui does

* chore: assign query names to queries if missing

* chore: drop legacy filter fields that ui also ignores

* chore: make migration drop widgets that have no aggregations for metrics

* chore: normalize group by

* chore: remove expressions from metric aggregations

* chore: add more error notes

* chore: replace em dash with hyphen in widget id

* chore: add more panel id sanitization

* chore: replace faulty order by keys with aggregation expression

* chore: fill valid span gaps

* chore: handle misformed threshold operators

* chore: remove repeat occurences of widgets in layouts

* chore: remove limits that cross max limit

* chore: restore function args malformed by v4->v5 migration

* chore: remove invalid functions

* chore: skip variables in wrong type

* chore: add wdiget id type check in layout migration

* chore: add a.count to malformed order by keys list

* chore: remove bad aggregations that accompany valid ones

* chore: drop trace operators with no expression

* chore: drop invalid formulas

* chore: skip unknown panel kind

* chore: drop widgets with >1 and all aggregations as malformed

* chore: skip empty type variables

* chore: pass threshold format raw without typecasting

* chore: add handling for trace operators around wrapinv5env

* chore: handle no string value for variable sort

* test: fix span gaps test

* chore: undo schema change in threshold value

* chore: final set of error fixes/hacks

* fix: fix build errors post merge conflicts

* test: remove test for floating pt value

* test: use appendf instead of sprintf

* chore: migrate integration dashboards to v2

* feat: add scaffolding to migrate dashboards

* fix: fill in ref path when building grid layout

* feat: handle v1 payloads in v2 create api

* fix: return empty objects instead of null if no variables/panels/layouts are there

* test: fix unit test for empty layouts

* fix: add empty links array in migration

* chore: rerun migration after links and signal change

* test: add unit test to show v5  takes precedence over v4

* fix: change EXISTS to exists so that migrateCommon handles it properly

* test: add unit test for count with attributes

* fix: run order by handling after default aggregation handling

* fix: restore formula fields that wrapinv5envelope removes

* fix: keep thresholds that do not have an optional label

* fix: force allowAll to be false if allowMultiple is false

* chore: rerun migration

* fix: migrate name column even if data column migration fails

* fix: use slog for logging

* refactor(dashboard): re-host ConvertAllV1ToV2 off the Module interface

Mirror base's removal of ConvertAllV1ToV2 from the shared files so future
base→branch merges stay conflict-free, and re-host the capability in dedicated
branch-only files (V1ToV2Migrator interface + module method + result types).

* refactor(dashboard): drop ConvertAllV1ToV2 module scaffolding from base

Remove the temporary v1→v2 bulk-conversion module method (ConvertAllV1ToV2 +
migrateOneV1ToV2), its result types (V1ToV2MigrationResult / V1ToV2MigrationItem),
the Module interface entry, and the EE delegation. This scaffolding lives on the
migration feature branches, not the base branch that merges to main.

V1Name and store.UpdateName are kept (small helpers; UpdateName is on the shared
Store interface).

* fix: add image validation and base64 to asset conversion

* fix: remove unneeded interface

* chore: rerun migration

* fix: make ReencodeInlineSVGImage so that migration script can call it

* chore: remove temp script

* fix: remove local laptop default value

---------

Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
…12273)

* chore: deprecate v1 dashboard APIs with proper reference to v2 APIs

* fix: use generic doc for all deprecated APIs

* test: update integratoin tests to account for deprecation
…12283)

The "Add to dashboard" export dialog is flag-aware via `use_dashboard_v2`:
V1 hits `/api/v1/dashboards`, V2 hits the generated endpoints
`GET /api/v2/users/me/dashboards` and `POST /api/v2/dashboards`, whose
response shapes differ. The tests only mocked V1 and only ran the V1 path
(the flag is off in the default test context), so the V2 contract was
never exercised.

Parametrize the onExport tests over the `use_dashboard_v2` flag, mocking
and asserting per contract so both paths are covered and the suite can't
drift when the default flips. Also sync on the picker's enabled (loaded)
state before clicking the combobox — antd disables the Select while the
list request is in flight and a click on a disabled combobox is a no-op.
@pull pull Bot locked and limited conversation to collaborators Jul 26, 2026
@pull pull Bot added the ⤵️ pull label Jul 26, 2026
@pull
pull Bot merged commit 503afb1 into code:main Jul 26, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants