This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch mobile-dashboard-support
in repository https://gitbox.apache.org/repos/asf/superset.git
discard ef3a3f5cc68 fix(tests): fix Playwright mobile test locator failures
discard 6f5c8c25790 fix(tests): remove unused imports in mobile test files
discard 422641bdbac test(mobile): add comprehensive mobile support test suite
discard 75c07c282e0 docs(tests): explain why antd mock is used for
Grid.useBreakpoint
discard f570da624e4 fix(i18n): use interpolation for mobile dashboard menu
labels
discard 4cac8d27131 fix(tests): use data-test attribute for SubMenu mobile
tests
discard 25f86852a75 fix: restore clean service-worker.js from master
discard e6cb890e6fd fix: address PR review feedback
discard 61b62ff2691 fix(test): add antd Grid mock to dashboard tests
discard 9d0daf1af8a fix(test): mock antd Grid.useBreakpoint directly
discard 8236bf1ba06 fix(test): correct Grid useBreakpoint mock path
discard 9b87c0aa888 test: mock useBreakpoint in Menu tests
discard 117bd43360a test: mock useBreakpoint in RightMenu and Home tests
discard f5017a30e20 feat(mobile): add route guard for unsupported mobile pages
discard d2b6e0dd80e fix(mobile): resolve merge conflicts and TypeScript errors
from rebase
discard da8f81bdb77 fix(mobile): Address code review feedback
discard 1ed9d797cb7 test(mobile): Add tests for mobile support props
discard eb635b26952 feat(mobile): Add filter drawer to Dashboard List page
discard 0b6b45e342b feat(mobile): Full-width cards on ListView (dashboard list)
discard 330660c73cc fix(mobile): Force card view on dashboard list with
forceViewMode prop
discard 107b299ed9c feat(mobile): Force card view and hide toggle on dashboard
list
discard 762c0cfa409 feat(mobile): Full-width cards on welcome page mobile view
discard b267c40a52a fix(mobile): Keep menu horizontal on mobile for compact
tabs
discard 9aff2a5f30b fix(mobile): Hide + button and compact filter tabs on
mobile
discard 1187d6dc113 feat(mobile): Simplify welcome page for mobile consumption
mode
discard b6914c7f1d1 feat(mobile): Add filter drawer and chart consumption mode
for mobile dashboards
discard 6c3676af6f9 fix(mobile): remove negative margin on mobile dashboard
discard deb16d66718 feat(mobile): clean up dashboard header for mobile
discard c9bab1f232e feat(mobile): improve mobile nav drawer UX
discard 9efedfdd8f4 feat(mobile): add drawer menus for nav and filters on
mobile
discard 4e0a38db7a7 fix(dashboard): make charts full-width on mobile
discard 39f51746206 feat(dashboard): add mobile-friendly dashboard consumption
mode
add e06427d1efe feat(embedded): add feature flag to disable logout button
in embedded contexts (#37537)
add 8f070169a59 perf(datasource): add pagination to datasource editor
tables to prevent browser freeze (#37555)
add 8a74424545a fix(types): add explicit types for extendedDayjs plugin
methods (#37923)
add 615f13419cb fix(jest): ignore storybook-static and package __mocks__
directories (#37946)
add 8eb30468884 fix(docs): guard window reference in logging.ts for SSR
compatibility (#38201)
add b8459c15b86 chore(deps-dev): bump @typescript-eslint/parser from
8.56.0 to 8.56.1 in /docs (#38211)
add f60432e34cf fix: Allow non-owners to fave/unfave charts (#38095)
add fca8a495611 feat: auto refresh dashboard (#37459)
add 974bee14c3e fix(extensions): make LOCAL_EXTENSIONS loading resilient
to individual failures (#38217)
add 7b04d251d60 fix(build): restore automatic .d.ts generation in dev mode
(#38202)
add 35c135852e8 feat(extensions): add mandatory publisher field to
extension metadata (#38200)
add 0d66accc377 chore(build): prevent opening Dependabot PRs for `@rjsf/*`
deps due to React 18 constraint (#37976)
add 97b8585fe5d chore(deps-dev): bump typescript-eslint from 8.56.0 to
8.56.1 in /docs (#38209)
add aa475734ef9 chore(deps-dev): bump eslint from 9.39.2 to 10.0.2 in
/superset-websocket (#38204)
add e4a7cd30c34 fix(GAQ): don't use async queries when cache timeout is -1
(#38089)
add 76a2559b2b8 fix(ci): revert "chore(deps): bump
JustinBeckwith/linkinator-action from 2.3 to 2.4" (#38164)
add 4809903bb80 chore(deps): bump markdown-to-jsx from 9.7.4 to 9.7.6 in
/superset-frontend (#38225)
add 9e4a88dfa2b chore(deps): bump antd from 6.3.0 to 6.3.1 in /docs
(#38221)
add 01c1b2eb8f0 chore(deps-dev): bump @types/lodash from 4.17.23 to
4.17.24 in /superset-frontend (#38224)
add 5eb35a47957 fix(reports): validate database field on PUT report
schedule (#38084)
add 1cd35bb1029 feat(mcp): dynamic feature availability via menus and
feature flags (#37964)
add 30849079318 feat(mcp): support unsaved state in Explore and Dashboard
tools (#37183)
add a1312a86e88 fix(mcp): normalize column names to fix time series filter
prompt issue (#37187)
add b543358d2f5 chore(deps-dev): bump @swc/core from 1.15.11 to 1.15.13 in
/superset-frontend (#38237)
add 1b605c4ddad chore(deps): bump fs-extra from 11.3.2 to 11.3.3 in
/superset-frontend (#38234)
add 79b2647481b chore(deps): bump @swc/core from 1.15.11 to 1.15.13 in
/docs (#38207)
add 37a46370181 chore(deps-dev): bump typescript-eslint from 8.56.0 to
8.56.1 in /superset-websocket (#38203)
add 438a9274206 chore(deps-dev): bump oxlint from 1.49.0 to 1.50.0 in
/superset-frontend (#38240)
add c54b21ef988 fix(mcp): add eager loading to get_info tools to prevent
N+1 query timeouts (#38129)
add cc1128a404a feat(mcp): add response size guard to prevent oversized
responses (#37200)
add eef4d95c229 fix(mcp): add dataset validation for chart tools (#37185)
add abf0b7cf4b8 fix(mcp): use broad Exception in outermost tool-level
handlers (#38254)
add 26053a8b5d3 fix(alert-modal): show the add filter button on firefox
(#38093)
add 247bd9c3c39 feat(dashboard): add mobile-friendly dashboard consumption
mode
add 665c2839891 fix(dashboard): make charts full-width on mobile
add 594cf060b8f feat(mobile): add drawer menus for nav and filters on
mobile
add 1d1fc7a9ec9 feat(mobile): improve mobile nav drawer UX
add 32c1bf0f009 feat(mobile): clean up dashboard header for mobile
add 960fa46bb92 fix(mobile): remove negative margin on mobile dashboard
add 7dddbb0f4e9 feat(mobile): Add filter drawer and chart consumption mode
for mobile dashboards
add 2d91c138c48 feat(mobile): Simplify welcome page for mobile consumption
mode
add e82249d663c fix(mobile): Hide + button and compact filter tabs on
mobile
add 711da4d6819 fix(mobile): Keep menu horizontal on mobile for compact
tabs
add 2d3577683f3 feat(mobile): Full-width cards on welcome page mobile view
add 1f265dd399a feat(mobile): Force card view and hide toggle on dashboard
list
add c38652bcd44 fix(mobile): Force card view on dashboard list with
forceViewMode prop
add 6ffc954b713 feat(mobile): Full-width cards on ListView (dashboard list)
add a820356c5b7 feat(mobile): Add filter drawer to Dashboard List page
add 2ff2dea3cbb test(mobile): Add tests for mobile support props
add 4941cfe7fd9 fix(mobile): Address code review feedback
add 4f5690a7fa5 fix(mobile): resolve merge conflicts and TypeScript errors
from rebase
add 94c448b4b17 feat(mobile): add route guard for unsupported mobile pages
add 1d21516b77b test: mock useBreakpoint in RightMenu and Home tests
add 6f38727041f test: mock useBreakpoint in Menu tests
add 164faa8810d fix(test): correct Grid useBreakpoint mock path
add c0980537852 fix(test): mock antd Grid.useBreakpoint directly
add 4c2973fe8a9 fix(test): add antd Grid mock to dashboard tests
add 1b127432ff1 fix: address PR review feedback
add 1b5a01aab15 fix: restore clean service-worker.js from master
add 70274f9d24c fix(tests): use data-test attribute for SubMenu mobile
tests
add 61aa514c21d fix(i18n): use interpolation for mobile dashboard menu
labels
add 3970a53fe94 docs(tests): explain why antd mock is used for
Grid.useBreakpoint
add eb8946ba3b4 test(mobile): add comprehensive mobile support test suite
add 80fe26ef92f fix(tests): remove unused imports in mobile test files
add 9da50c0cc33 fix(tests): fix Playwright mobile test locator failures
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (ef3a3f5cc68)
\
N -- N -- N refs/heads/mobile-dashboard-support (9da50c0cc33)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.github/dependabot.yml | 1 +
.github/workflows/superset-docs-verify.yml | 2 +-
docs/developer_portal/extensions/quick-start.md | 73 +-
docs/docs/configuration/networking-settings.mdx | 18 +
docs/package.json | 8 +-
docs/static/feature-flags.json | 8 +
docs/yarn.lock | 309 ++++---
.../src/superset_core/extensions}/constants.py | 27 +-
.../src/superset_core/extensions/types.py | 26 +-
.../src/superset_extensions_cli/cli.py | 197 +++--
.../templates/extension.json.j2 | 8 +-
.../templates/frontend/package.json.j2 | 2 +-
.../templates/frontend/webpack.config.js.j2 | 2 +-
.../src/superset_extensions_cli/types.py | 25 +-
.../src/superset_extensions_cli/utils.py | 226 ++++--
superset-extensions-cli/tests/conftest.py | 39 +-
superset-extensions-cli/tests/test_cli_build.py | 85 +-
superset-extensions-cli/tests/test_cli_bundle.py | 19 +-
superset-extensions-cli/tests/test_cli_dev.py | 29 +-
superset-extensions-cli/tests/test_cli_init.py | 158 ++--
.../tests/test_name_transformations.py | 834 ++++++++++---------
superset-extensions-cli/tests/test_templates.py | 138 ++--
superset-frontend/jest.config.js | 5 +
superset-frontend/package-lock.json | 268 +++----
superset-frontend/package.json | 6 +-
.../packages/superset-core/package.json | 2 +-
.../packages/superset-core/src/utils/logging.ts | 3 +-
.../packages/superset-ui-core/package.json | 2 +-
.../src/components/Icons/AntdEnhanced.tsx | 10 +-
.../packages/superset-ui-core/src/utils/dates.ts | 40 +-
.../superset-ui-core/src/utils/featureFlags.ts | 1 +
.../plugin-chart-echarts/src/BigNumber/types.ts | 1 +
.../plugin-chart-echarts/src/Graph/buildQuery.ts | 21 +-
.../plugin-chart-echarts/src/Heatmap/Heatmap.tsx | 3 +-
.../plugin-chart-echarts/src/Sankey/buildQuery.ts | 19 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 1 +
.../plugin-chart-echarts/src/Tree/buildQuery.ts | 15 +-
.../src/Tree/transformProps.ts | 10 +-
.../src/Treemap/EchartsTreemap.tsx | 2 +-
.../plugin-chart-echarts/src/Treemap/buildQuery.ts | 16 +-
.../plugin-chart-echarts/src/components/Echart.tsx | 30 +-
.../plugins/plugin-chart-echarts/src/types.ts | 1 +
.../src/utils/orderby.test.ts} | 19 +-
.../plugin-chart-echarts/src/utils/orderby.ts | 51 ++
.../plugin-chart-echarts/src/utils/series.ts | 6 +-
.../test/Graph/buildQuery.test.ts | 2 +
.../test/Timeseries/transformProps.test.ts | 2 +-
.../test/Tree/buildQuery.test.ts | 33 +-
.../plugin-chart-echarts/test/utils/series.test.ts | 2 +-
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../src/plugin/buildQuery.ts | 17 +-
superset-frontend/src/components/Chart/Chart.tsx | 6 +-
.../src/components/Chart/ChartRenderer.test.tsx | 70 +-
.../src/components/Chart/ChartRenderer.tsx | 18 +-
.../src/components/Chart/chartAction.ts | 24 +-
.../src/components/Chart/chartReducer.ts | 8 +
.../src/components/Chart/chartReducers.test.ts | 30 +-
.../Datasource/DatasourceModal/index.tsx | 7 +-
.../components/CollectionTable/index.tsx | 55 +-
.../DatasourceEditor/DatasourceEditor.tsx | 367 +++++----
.../DatasetUsageTab/DatasetUsageTab.test.tsx | 143 ++++
.../components/DatasetUsageTab/index.tsx | 71 +-
.../tests/DatasourceEditor.test.tsx | 242 ++++++
.../src/components/Datasource/types.ts | 11 +
.../src/dashboard/actions/autoRefresh.ts | 124 +++
.../src/dashboard/actions/dashboardState.test.ts | 164 ++++
.../src/dashboard/actions/dashboardState.ts | 63 +-
superset-frontend/src/dashboard/actions/hydrate.ts | 2 +
.../components/AutoRefreshIndicator/index.tsx | 169 ++++
.../AutoRefreshStatus/StatusIndicatorDot.test.tsx | 114 +++
.../AutoRefreshStatus/StatusIndicatorDot.tsx | 168 ++++
.../StatusTooltipContent.test.tsx | 180 +++++
.../AutoRefreshStatus/StatusTooltipContent.tsx | 178 +++++
.../components/FiltersBadge/FiltersBadge.test.tsx | 251 ++++--
.../dashboard/components/FiltersBadge/index.tsx | 27 +-
.../dashboard/components/Header/Header.test.tsx | 128 ++-
.../src/dashboard/components/Header/index.tsx | 388 +++++----
.../src/dashboard/components/Header/types.ts | 26 +-
.../Header/useHeaderActionsDropdownMenu.tsx | 12 +-
.../components/Header/useHeaderAutoRefresh.ts | 410 ++++++++++
.../dashboard/components/PropertiesModal/index.tsx | 18 +-
.../PropertiesModal/sections/RefreshSection.tsx | 2 +-
.../dashboard/components/RefreshButton/index.tsx | 81 ++
.../{index.ts => RefreshFrequencySelect.test.tsx} | 25 +-
.../RefreshFrequency/RefreshFrequencySelect.tsx | 67 +-
.../dashboard/components/RefreshIntervalModal.tsx | 81 +-
.../components/gridComponents/Chart/Chart.tsx | 5 +-
.../components/gridComponents/Tab/Tab.test.tsx | 2 +
.../components/gridComponents/Tab/Tab.tsx | 17 +-
.../src/dashboard/containers/DashboardPage.tsx | 15 +-
.../dashboard/contexts/AutoRefreshContext.test.tsx | 137 ++++
.../src/dashboard/contexts/AutoRefreshContext.tsx | 101 +++
.../hooks/useAutoRefreshTabPause.test.tsx | 378 +++++++++
.../src/dashboard/hooks/useAutoRefreshTabPause.ts | 146 ++++
.../src/dashboard/hooks/useCurrentTime.test.ts | 182 +++++
.../src/dashboard/hooks/useCurrentTime.ts | 67 ++
.../dashboard/hooks/useRealTimeDashboard.test.ts | 175 ++++
.../src/dashboard/hooks/useRealTimeDashboard.ts | 245 ++++++
.../src/dashboard/hooks/useTabVisibility.test.ts | 175 ++++
.../src/dashboard/hooks/useTabVisibility.ts | 102 +++
.../dashboard/reducers/autoRefreshReducer.test.ts | 246 ++++++
.../src/dashboard/reducers/dashboardState.ts | 81 ++
superset-frontend/src/dashboard/types.ts | 16 +-
.../src/dashboard/types/autoRefresh.ts | 64 ++
.../src/features/alerts/AlertReportModal.tsx | 43 +-
.../src/features/home/RightMenu.test.tsx | 83 ++
superset-frontend/src/features/home/RightMenu.tsx | 33 +-
superset-frontend/webpack.config.js | 21 +-
superset-websocket/package-lock.json | 888 ++++++++++-----------
superset-websocket/package.json | 4 +-
superset/charts/data/api.py | 19 +-
superset/commands/chart/fave.py | 8 -
superset/commands/chart/unfave.py | 8 -
superset/commands/report/exceptions.py | 12 +
superset/commands/report/update.py | 18 +-
superset/config.py | 5 +
superset/daos/base.py | 11 +-
superset/daos/database.py | 6 +-
superset/extensions/api.py | 35 +-
superset/extensions/utils.py | 36 +-
superset/mcp_service/CLAUDE.md | 37 +
superset/mcp_service/app.py | 4 +
superset/mcp_service/chart/chart_utils.py | 120 ++-
superset/mcp_service/chart/schemas.py | 68 +-
superset/mcp_service/chart/tool/generate_chart.py | 33 +-
superset/mcp_service/chart/tool/get_chart_data.py | 146 +++-
superset/mcp_service/chart/tool/get_chart_info.py | 96 ++-
.../mcp_service/chart/tool/get_chart_preview.py | 73 +-
.../chart/validation/dataset_validator.py | 153 +++-
superset/mcp_service/chart/validation/pipeline.py | 86 +-
.../mcp_service}/constants.py | 6 +-
superset/mcp_service/dashboard/schemas.py | 43 +-
.../dashboard/tool/get_dashboard_info.py | 114 ++-
.../mcp_service/dataset/tool/get_dataset_info.py | 12 +
.../explore/tool/generate_explore_link.py | 15 +-
superset/mcp_service/mcp_config.py | 49 ++
superset/mcp_service/mcp_core.py | 24 +-
superset/mcp_service/middleware.py | 170 ++++
superset/mcp_service/server.py | 12 +-
superset/mcp_service/system/schemas.py | 22 +
superset/mcp_service/system/system_utils.py | 29 +
.../mcp_service/system/tool/get_instance_info.py | 2 +
superset/mcp_service/utils/token_utils.py | 424 ++++++++++
superset/reports/schemas.py | 2 +-
tests/integration_tests/charts/commands_tests.py | 17 +-
tests/integration_tests/reports/api_tests.py | 294 ++++++-
.../unit_tests/commands/report}/__init__.py | 0
tests/unit_tests/commands/report/update_test.py | 254 ++++++
tests/unit_tests/extensions/test_types.py | 108 ++-
.../mcp_service/chart/test_chart_utils.py | 101 ++-
.../validation/test_column_name_normalization.py | 681 ++++++++++++++++
.../explore/tool/test_generate_explore_link.py | 149 ++++
.../mcp_service/system/test_system_utils.py | 60 ++
.../system/tool/test_get_current_user.py | 2 +
.../mcp_service/system/tool/test_mcp_core.py | 4 +-
tests/unit_tests/mcp_service/test_mcp_config.py | 9 +
tests/unit_tests/mcp_service/test_middleware.py | 343 ++++++++
.../mcp_service/utils/test_token_utils.py | 358 +++++++++
158 files changed, 11674 insertions(+), 2384 deletions(-)
copy {superset/mcp_service/dashboard =>
superset-core/src/superset_core/extensions}/constants.py (53%)
copy superset-frontend/{src/explore/exploreUtils/getLegacyEndpointType.test.ts
=> plugins/plugin-chart-echarts/src/utils/orderby.test.ts} (65%)
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/orderby.ts
create mode 100644 superset-frontend/src/dashboard/actions/autoRefresh.ts
create mode 100644
superset-frontend/src/dashboard/components/AutoRefreshIndicator/index.tsx
create mode 100644
superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusIndicatorDot.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusIndicatorDot.tsx
create mode 100644
superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusTooltipContent.test.tsx
create mode 100644
superset-frontend/src/dashboard/components/AutoRefreshStatus/StatusTooltipContent.tsx
create mode 100644
superset-frontend/src/dashboard/components/Header/useHeaderAutoRefresh.ts
create mode 100644
superset-frontend/src/dashboard/components/RefreshButton/index.tsx
copy superset-frontend/src/dashboard/components/RefreshFrequency/{index.ts =>
RefreshFrequencySelect.test.tsx} (58%)
create mode 100644
superset-frontend/src/dashboard/contexts/AutoRefreshContext.test.tsx
create mode 100644
superset-frontend/src/dashboard/contexts/AutoRefreshContext.tsx
create mode 100644
superset-frontend/src/dashboard/hooks/useAutoRefreshTabPause.test.tsx
create mode 100644
superset-frontend/src/dashboard/hooks/useAutoRefreshTabPause.ts
create mode 100644 superset-frontend/src/dashboard/hooks/useCurrentTime.test.ts
create mode 100644 superset-frontend/src/dashboard/hooks/useCurrentTime.ts
create mode 100644
superset-frontend/src/dashboard/hooks/useRealTimeDashboard.test.ts
create mode 100644
superset-frontend/src/dashboard/hooks/useRealTimeDashboard.ts
create mode 100644
superset-frontend/src/dashboard/hooks/useTabVisibility.test.ts
create mode 100644 superset-frontend/src/dashboard/hooks/useTabVisibility.ts
create mode 100644
superset-frontend/src/dashboard/reducers/autoRefreshReducer.test.ts
create mode 100644 superset-frontend/src/dashboard/types/autoRefresh.ts
copy {superset-extensions-cli/src/superset_extensions_cli =>
superset/mcp_service}/constants.py (78%)
create mode 100644 superset/mcp_service/utils/token_utils.py
copy {superset-core/src/superset_core/api =>
tests/unit_tests/commands/report}/__init__.py (100%)
create mode 100644 tests/unit_tests/commands/report/update_test.py
create mode 100644
tests/unit_tests/mcp_service/chart/validation/test_column_name_normalization.py
create mode 100644 tests/unit_tests/mcp_service/system/test_system_utils.py
create mode 100644 tests/unit_tests/mcp_service/test_middleware.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_token_utils.py