Commit Graph

20961 Commits

Author SHA1 Message Date
Amin Ghadersohi
be27c92ca6 fix(mcp): resolve E402 and E501 in dataset_validator.py
- Move error_schemas import above _C TypeVar definition (E402)
- Split two over-length comment lines to ≤88 chars (E501, lines 268 and 380)
2026-06-29 17:52:45 +00:00
Amin Ghadersohi
1529d783a0 fix(mcp): resolve ruff E501 and formatting issues to pass pre-commit
- Split long string literal in schema_validator.py line 202 (E501, 94 > 88 chars)
- Apply ruff format auto-fixes to big_number.py, handlebars.py, and test_get_chart_data.py
2026-06-29 17:52:45 +00:00
Amin Ghadersohi
ff15094a13 refactor(mcp): move all local imports to top level in chart type plugins
All per-method local imports in the 7 chart plugins were moved to module-level.
None of them create circular imports: schemas.py, chart_utils.py, and
dataset_validator.py are safe to import at plugin load time because those
modules guard their own registry lookups with local imports.

- big_number: add map_big_number_config, _big_number_chart_what,
  _summarize_filters, DatasetValidator to top-level imports
- pie: add map_pie_config, _pie_chart_what, _summarize_filters, PieChartConfig,
  DatasetValidator to top-level imports
- xy: add map_xy_config, _xy_chart_what/context, XYChartConfig, DatasetValidator,
  FormatTypeValidator, CardinalityValidator to top-level imports
- table: add map_table_config, _table_chart_what, _summarize_filters,
  TableChartConfig, DatasetValidator to top-level imports
- pivot_table: add map_pivot_table_config, _pivot_table_what, _summarize_filters,
  PivotTableChartConfig, DatasetValidator to top-level imports
- mixed_timeseries: add map_mixed_timeseries_config, _mixed_timeseries_what,
  _summarize_filters, MixedTimeseriesChartConfig, DatasetValidator to top-level
- handlebars: add map_handlebars_config, _handlebars_chart_what, _summarize_filters,
  HandlebarsChartConfig, DatasetValidator to top-level imports

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 17:52:45 +00:00
Amin Ghadersohi
4255612c23 fix(mcp): address reviewer comments — local import rationale, x-optional corrections, cardinality suggestions
- Remove redundant local imports from BigNumberChartPlugin.post_map_validate()
  now that BigNumberChartConfig and is_column_truly_temporal are at top level
- Add explanatory comments on the two remaining local get_registry imports in
  chart_utils.py and dataset_validator.py (circular import prevention)
- Fix schema_validator.py and generate_chart.py docstring: XY 'x' field is
  optional (defaults to dataset primary datetime column), not required
- Propagate cardinality suggestions alongside warnings in XYChartPlugin
- Clarify app.py instructions: chart_type_display_name is null for viz_types
  outside the 7 generate_chart-supported types

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 17:52:45 +00:00
Amin Ghadersohi
7041d7f04c refactor(mcp): complete plugin protocol — registry bootstrap, mypy fixes, test repairs
On top of the dead-code elimination in the previous commit:
- Add lazy _ensure_plugins_loaded() bootstrap to ChartTypeRegistry so the
  registry is populated even without importing app.py (fixes isolated test runs)
- Delegate _RegistryProxy methods to module-level functions so bootstrap runs
- Guard register() against empty chart_type strings
- Add generate_name + resolve_viz_type to ChartTypePlugin Protocol and
  BaseChartPlugin; delegate generate_chart_name/_resolve_viz_type in
  chart_utils to the plugin registry
- Add _with_context static helper to BaseChartPlugin (shared by all plugins)
- Fix stale 'five methods' → 'eight methods' docstring in plugin.py
- Add TypeVar _C to normalize_column_names so mypy infers correct return type
- Fix broken tests: update _pre_validate_big_number_config → _pre_validate_chart_type,
  remove deleted TestNormalizeXYConfig/TestNormalizeTableConfig classes,
  update runtime validator tests for removed _validate_format_compatibility /
  _validate_cardinality methods, add x is not None narrowing guards

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 17:52:45 +00:00
Amin Ghadersohi
6e0e8f1cfb refactor(mcp): eliminate dead code and complete plugin registry dispatch
H1: Delete 7 dead _pre_validate_* static methods from SchemaValidator
    — exact duplicates of plugin pre_validate() methods, never called
    after _pre_validate_chart_type() was updated to delegate to plugin.

H2: Inline DatasetValidator._normalize_xy_config/_normalize_table_config
    into XYChartPlugin/TableChartPlugin.normalize_column_refs() and delete
    both DatasetValidator helper methods. The 5 other plugins already
    called _get_canonical_column_name directly; XY and Table now match.

H3: Add generate_name()/resolve_viz_type() to ChartTypePlugin protocol
    and BaseChartPlugin, implement in all 7 plugins. Replace the 7-arm
    isinstance chain in generate_chart_name() and the 7-arm elif chain
    in _resolve_viz_type() with single-line registry dispatch.

H4: Add a sync comment above _CHART_TYPE_ERROR_HINTS to document that
    it must stay in sync with the plugin registry.

M4: Move logger=logging.getLogger(__name__) from inside
    XYChartPlugin.get_runtime_warnings() to module scope.
2026-06-29 17:52:45 +00:00
Amin Ghadersohi
86a84c4c69 feat(mcp): add display_name and native_viz_types to chart type plugins
Each ChartTypePlugin now declares:
- display_name: human-readable label for the chart_type discriminator
  (e.g. "Line / Bar / Area / Scatter Chart", "Pivot Table")
- native_viz_types: dict mapping every Superset-internal viz_type the
  plugin produces to a user-friendly name
  (e.g. {"echarts_timeseries_line": "Line Chart", "echarts_area": "Area Chart"})

The registry gains display_name_for_viz_type(viz_type) which searches
all plugins' native_viz_types maps, replacing the need for a separate
viz_type_display_names.json or viz_type_names.py module.

ChartInfo gains a chart_type_display_name field populated via the registry,
so list_charts / get_chart_info return human-readable chart type names.
The MCP system instructions now reference display names rather than
internal viz_type identifiers.
2026-06-29 17:52:45 +00:00
Amin Ghadersohi
6ca5f8fb01 feat(mcp): introduce chart type plugin registry for extensible chart generation
Replaces four scattered dispatch locations (schema_validator, dataset_validator,
chart_utils, runtime validator) with a central ChartTypePlugin registry. Each of
the 7 supported chart types (xy, table, pie, pivot_table, mixed_timeseries,
handlebars, big_number) now owns its pre-validation, column extraction, form_data
mapping, post-map validation, column normalization, and runtime warnings in a
single plugin class.

Key changes:
- Add ChartTypePlugin protocol and BaseChartPlugin base class (plugin.py)
- Add ChartTypeRegistry with register/get/all_types helpers (registry.py)
- Add 7 chart type plugins under chart/plugins/ with full coverage
- Fix 5-type column validation gap: pie, pivot_table, mixed_timeseries, handlebars,
  and big_number now participate in dataset column validation (previously silently skipped)
- Move BigNumber trendline temporal check to BigNumberChartPlugin.post_map_validate()
- Add get_runtime_warnings() to plugin protocol; XYChartPlugin implements
  format/cardinality checks, removing isinstance(config, XYChartConfig) from RuntimeValidator
- Fix stale generate_chart.py docstring listing only 'xy' and 'table' chart types
- Add missing pie, pivot_table, mixed_timeseries handlers to _enhance_validation_error;
  refactor into a data-driven lookup table to stay within complexity limits
- Fix empty details fallback in Pydantic error handler
2026-06-29 17:52:45 +00:00
Evan Rusackas
11a4a17dff fix(frontend): finish sentence-case conversion for time range buttons (#41488)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 10:19:54 -07:00
Evan Rusackas
16a3405e3c fix(i18n): skip unparseable catalogs when building translation index (#41465)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-06-29 10:11:20 -07:00
Evan Rusackas
07abda50c5 chore(ci): prune orphaned showtime labels in daily cleanup (#41464)
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 10:10:42 -07:00
Evan Rusackas
725265502f perf(frontend): migrate lodash imports to lodash-es for tree-shaking (#41511) 2026-06-30 00:09:39 +07:00
yousoph
d42076d541 fix(tags): make favorite star toggle in Tags list view (#41460)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 10:08:36 -07:00
dependabot[bot]
7dcb98e4d2 chore(deps-dev): bump vite from 8.0.14 to 8.1.0 in /superset-embedded-sdk (#41507)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 10:07:56 -07:00
dependabot[bot]
28f6e1e023 chore(deps-dev): bump @types/node from 25.9.4 to 26.0.0 in /superset-websocket (#41514)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 10:07:43 -07:00
dependabot[bot]
a8045d7f65 chore(deps-dev): bump @swc/plugin-emotion from 14.13.0 to 14.14.0 in /superset-frontend (#41515)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 10:07:30 -07:00
Shaitan
f95ebed8ba fix: apply object access checks in tag bulk_create and update commands (#41457)
Signed-off-by: sha174n <shaitan@zx48.net>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 10:07:26 -07:00
dependabot[bot]
4338375267 chore(deps): bump nanoid from 5.1.14 to 5.1.15 in /superset-frontend (#41517)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 10:07:11 -07:00
dependabot[bot]
e236d831fd chore(deps): bump antd from 6.4.4 to 6.4.5 in /docs (#41518)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 10:06:57 -07:00
dependabot[bot]
e807e66a3e chore(deps-dev): bump timezone-mock from 1.4.2 to 1.4.3 in /superset-frontend (#41521)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 10:06:44 -07:00
dependabot[bot]
0370ac8607 chore(deps-dev): bump unzipper from 0.12.3 to 0.12.5 in /superset-frontend (#41523)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 10:06:29 -07:00
Evan Rusackas
5b17c5b2df chore(deps): stop Dependabot from opening Babel 8 major bumps (#41534) 2026-06-30 00:06:05 +07:00
dependabot[bot]
d2daf84fd9 chore(deps): bump uuid from 14.0.0 to 14.0.1 in /superset-frontend (#41524)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-29 10:05:52 -07:00
dependabot[bot]
7edae0817c chore(deps): bump zizmorcore/zizmor-action from 0.5.6 to 0.5.7 (#41519) 2026-06-29 23:54:21 +07:00
ʈᵃᵢ
a4d5b15955 fix(slack): support org-scoped tokens on Enterprise Grid via SLACK_TE… (#41473) 2026-06-29 09:46:25 -07:00
Kaushik Harsha
9dba4d090f fix(explore): hide inactive result tables in mixed chart view as table (#37777)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 09:33:37 -07:00
Evan Rusackas
1b7b9ce948 fix(tags): remove unsatisfiable foreign keys from tagged_object.object_id (#41126)
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-06-29 09:30:04 -07:00
Joe Li
7926c3a93a fix(sqllab): preserve query history after tab migration (#41403) 2026-06-29 09:15:19 -07:00
Joe Li
797e497f4b fix(dashboard): suppress favorite status error toast on 404 (#41402)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-29 09:15:00 -07:00
Joe Li
825b582815 fix(mixed-chart): preserve order_desc and series_limit_metric in buildQuery (#41401)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 09:14:35 -07:00
David
90fe1f5b7c fix(auth): redirect to login on failure to access dashboard permalink (#40769) 2026-06-28 17:49:25 -07:00
Abdul Rehman
a529945d3b fix(reports): commit permalink before Playwright navigation (#41051) 2026-06-28 17:48:44 -07:00
jesperct
0c12114ea9 fix(explore): stop metric edits from bleeding across metrics with duplicate optionNames (#41208)
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 17:46:13 -07:00
Hans Yu
6eb51105d0 refactor: update SQLAlchemy case() syntax to 2.0 (#40275) 2026-06-28 12:46:02 -07:00
Đỗ Trọng Hải
b2a2698898 chore: unify Node version (#41500) 2026-06-28 12:22:36 -07:00
dependabot[bot]
efed2b09aa chore(deps-dev): bump @types/node from 25.9.3 to 26.0.0 in /superset-frontend (#41451)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 12:15:29 -07:00
dependabot[bot]
c3a11e3170 chore(deps): bump sqlalchemy-utils from 0.42.0 to 0.42.1 (#41478)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-06-28 12:15:14 -07:00
dependabot[bot]
98d61c5cf8 chore(deps-dev): bump duckdb from 1.5.3 to 1.5.4 (#41480)
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-06-28 12:14:59 -07:00
dependabot[bot]
7d5e01b6cf chore(deps-dev): update taospy requirement from >=2.7.21 to >=2.8.9 (#41481)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Đỗ Trọng Hải <41283691+hainenber@users.noreply.github.com>
2026-06-28 12:14:49 -07:00
qlimenoque
a70d055669 feat(helm): use env redis_driver, render additional deployment pod spec (#26040) superset-helm-chart-0.18.0 2026-06-27 22:44:14 -07:00
Evan Rusackas
670f25e5f4 chore(lint): convert explore controls, SqlLab, and misc components to function components (#39461)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
2026-06-27 22:41:53 -07:00
Evan Rusackas
7fc1113c31 fix(telemetry): use Scarf static pixel instead of gateway redirect (#41129)
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-27 22:41:17 -07:00
dependabot[bot]
ccbd284245 chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 (#41447)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 12:21:53 +07:00
Evan Rusackas
d0268442f8 chore(ci): correct actions/cache pin comment to actual version v5.0.5 (#41482)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 11:41:55 +07:00
ʈᵃᵢ
25c9f3510a test(mcp): set embedded on update_dashboard test mock (#41495) 2026-06-28 11:19:01 +07:00
Đỗ Trọng Hải
b8fd2e9725 feat(websocket,embedded-sdk): replace Jest with modern Vitest (#38308)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: codeant-ai-for-open-source[bot] <244253245+codeant-ai-for-open-source[bot]@users.noreply.github.com>
2026-06-28 11:12:37 +07:00
Evan Rusackas
78dd400ca4 chore(ci): correct actions/cache version comment to match pinned SHA (#41483)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 10:56:33 +07:00
Evan Rusackas
7587d0778a chore(ci): correct actions/cache version comment to v5.0.5 (#41484)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 10:56:08 +07:00
Elizabeth Thompson
97cb002f46 fix(a11y): propagate tooltip string as aria-label on IconTooltip button (#41493) 2026-06-27 15:01:46 -07:00
Elizabeth Thompson
5ec0931840 fix(pandas_postprocessing): pass string operator names to GroupBy.agg to avoid FutureWarning (#41025) 2026-06-27 15:01:43 -07:00