This is an automated email from the ASF dual-hosted git repository.
EnxDev pushed a change to branch chore/fc-02-legacy-plugin-components
in repository https://gitbox.apache.org/repos/asf/superset.git
from 122b677b4f3 fix: make lift-column sort comparator deterministic for
non-finite values
add a8ab5f973dc chore(deps-dev): bump @typescript-eslint/eslint-plugin
from 8.61.1 to 8.62.0 in /superset-frontend (#41577)
add 83826839a0a fix(i18n): inject language pack into bootstrap to
translate code-split chunks (#39357)
add 1575b83f96a chore(deps): bump react-arborist from 3.10.5 to 3.12.0 in
/superset-frontend (#41793)
add d6b31376a51 chore(deps-dev): bump prettier from 3.8.4 to 3.9.1 in
/docs (#41789)
add beff76cb4d4 chore(deps): bump antd from 6.4.5 to 6.5.0 in /docs
(#41788)
add fd8d7009a5b chore(mcp): drop legacy /superset prefix from dashboard
URLs (#41758)
add b4218136bec feat(ag-grid): support Show summary in raw records mode
(#41754)
add a7a051777c2 feat(charts): soft-delete and restore (#40129)
add 2f11240339c chore(deps): bump query-string from 9.4.0 to 9.4.1 in
/superset-frontend (#41782)
add f4cc871f8cd chore(deps): bump js-yaml from 5.1.0 to 5.2.0 in /docs
(#41783)
add 69f052985f7 chore(deps-dev): bump prettier from 3.8.4 to 3.9.3 in
/superset-frontend (#41784)
add c49d01223c7 chore(deps-dev): bump webpack from 5.108.0 to 5.108.2 in
/docs (#41786)
add dc671ae44ac chore(deps-dev): bump eslint from 10.5.0 to 10.6.0 in
/superset-frontend (#41792)
add 06f421ed4af fix(a11y): add aria-label to remove-sheet icon button in
Google Sheets catalog (#41796)
add 83d93b8b425 fix(view-query): Add ownState parameter to ViewQueryModal
for query consistency (#35208)
add ad8e6d41402 build(deps): upgrade `react-markdown` to v9 and
`remark-gfm` to v4 (#41778)
add 689b4f623e4 docs(admin/config): resolve misconfigured aws-iam Markdown
file (#41748)
add 21b4185819e fix(ace-editor): caret drift from late font loads and
emoji widths (#41697)
add 51e708da6bb fix(mcp): accept Superset vocabulary in chart configs and
clarify query_dataset metric errors (#40972)
add 69ce27f1731 feat(sec): resolve all vuln alerts in
`superset-embedded-sdk`, `superset-frontend` and `docs` (#41776)
add fb496e158a2 fix(ag-grid): persist "None" value aggregation selection
(#41386)
add 44c1ad5c714 fix: delint frontend files (#41802)
add c0b0a2fdaf5 feat(tags): add favorites filter to Tags list view (#41461)
add 033b7bc385e fix(databases): update broken database documentation links
to /user-docs namespace (#41557)
add 9e50d9eca67 fix: Italian translation (#36114)
add ee524b34713 fix(dashboard): let CSV exports use query cache instead of
always force-querying (#41469)
add 2aa43f6f0f5 fix(sql): stop sanitize_clause from rewriting user SQL
semantics (#36113) (#41125)
add 85eaf15c5e0 test(databases): stabilize flaky SQLAlchemy-form
visibility assertion (#41823)
add 101c1e88275 fix(ace-editor): carry token classes onto emoji boxes
(#41821)
add 4b78758fd22 chore(deps-dev): bump typescript-eslint from 8.62.0 to
8.62.1 in /superset-websocket (#41815)
add 847bdad9600 chore(deps-dev): bump @typescript-eslint/parser from
8.62.0 to 8.62.1 in /superset-frontend (#41820)
add 2b74e140f37 chore(deps-dev): update sqlalchemy-parseable requirement
from <0.2.0,>=0.1.3 to >=0.1.6,<0.2.0 (#41814)
add 87fa7e5e640 chore(deps-dev): bump prettier from 3.9.1 to 3.9.3 in
/superset-websocket (#41810)
add e52240b9a60 test(datasets): prove column metadata persists for
zero-row queries (#41838)
add a8a1b220fdc chore(deps): update @ant-design/icons requirement from
^6.2.5 to ^6.3.2 in /superset-frontend/packages/superset-ui-core (#41790)
add 1c3b070d342 feat(i18n): do-not-translate registry + '#.
do-not-translate' marker standard (#41651)
add c846da8dfb2 fix(frontend): resolve image download formatting and
cleanup issues (#38927)
add de5a233ccf9 fix(sqllab): preserve saved query description when editing
(#41685)
add ec4e5deb014 feat(theming): add opt-in SQL Lab grid tokens and fix
modal border-radius clipping (#41031)
add 5e384f54d3a fix(ag-grid): select cell on click instead of its text
(#41392)
add 4167a21f7d4 fix(semantic layers): guards for zero rows (#41600)
add 4dc45aa9586 fix(semantic layers): apply post-processing (#41601)
add ffd09829423 fix(ag-grid): keep basic conditional formatting aligned
after sort (#41390)
add 5e16c4eaaf6 chore(deps-dev): bump oxlint from 1.71.0 to 1.72.0 in
/superset-frontend (#41848)
add 7bdde4a36af chore(deps-dev): bump prettier from 3.9.3 to 3.9.4 in
/superset-frontend (#41846)
add aa330422f19 chore(deps-dev): bump prettier from 3.9.3 to 3.9.4 in
/superset-websocket (#41844)
add 3a514dc8eb0 chore(deps-dev): update sqlalchemy-singlestoredb
requirement from <2,>=1.1.1 to >=1.2.1,<2 (#41809)
add 0dcb09b1638 chore(deps-dev): bump @typescript-eslint/eslint-plugin
from 8.62.0 to 8.62.1 in /superset-frontend (#41822)
add 53c3b1ceb1b chore(deps): bump fs-extra from 11.3.5 to 11.3.6 in
/superset-frontend (#41847)
add 9b508ebe0d0 fix(ag-grid): honor dataset hour offset in time range
filters (#41391)
add dd0277e1e37 feat(mcp): support embedded guest-token authentication
(#41003)
add 77b98a5d676 chore(deps-dev): update databend-sqlalchemy requirement
from <1.0,>=0.3.2 to >=0.5.5,<1.0 (#41479)
add f0e25fb9789 test(preset-chart-deckgl): prove ctrl+click on deck.gl
legend toggles the layer without opening a new tab (#41830)
add d0b42d8c19a test(dashboard): prove activeTabs from permalinks selects
tab content (#41832)
add af058ccecb5 test(plugin-chart-echarts): prove user-selected plain
legend type is honored (#39540) (#41833)
add de5a31a2cfd test(sql): prove Oracle GROUP BY is no longer rewritten to
ordinals (#35414) (#41834)
add 00a9546de9f test(sql): prove multi-space column names no longer trip
subquery validation (#41835)
add 7b0969131ff test(sql): prove ClickHouse parametric aggregates parse
cleanly (#37285) (#41836)
add 973366d30bf test(models): prove owner association tables reject
duplicate rows (#41837)
add 19c982d8d30 test(async-queries): prove OAuth2RedirectError survives
async chart queries (#41839)
add 51a171f8217 test(dashboard): prove BigInt column values no longer
break native filter config (#41840)
add 0d9b3f3b059 test(dashboard): prove filters with defaults apply without
touching every filter (#41841)
add a01a4ae511e test(superset-ui-core): prove angle-bracketed non-HTML
values render as text (#34082) (#41829)
add 04f8b700d76 feat(datasets): soft-delete and restore (#40130)
add 5f27f88e730 test(preset-chart-deckgl): prove legend clicks no longer
scroll to top (#41831)
add fe7d9b47247 fix(sqllab): reflect query history deletion without page
refresh (#41019)
add fbc24959ab3 feat(mcp): add semantic layer MCP tools (list_metrics,
get_table, get_compatible_dimensions, get_compatible_metrics) (#41611)
add 054be4d45e8 chore(deps-dev): bump eslint-plugin-storybook from 10.4.5
to 10.4.6 in /superset-frontend (#41360)
add 8e98ae701b5 chore(deps): bump cryptography from 48.0.1 to 49.0.0
(#41811)
add 6edbf425f79 chore(deps-dev): update sqlalchemy-ocient requirement from
>=1.0.0 to >=3.0.0 (#41806)
add 098b95560d8 fix(oauth2): retrigger queries for unsaved charts and
schema loading after OAuth2 redirect (#41101)
add 8108496e2a1 chore(deps-dev): bump @types/d3-scale from 2.2.10 to 4.0.9
in /superset-frontend/packages/superset-ui-core (#41318)
add 4038c9d1e69 chore(deps-dev): bump google-cloud-bigquery from 3.27.0 to
3.42.1 (#41807)
add d9e1f34527b fix(a11y): add aria-label to notification method remove
button (#41850)
add 09361606335 chore(deps-dev): bump eslint-plugin-cypress from 3.6.0 to
6.4.2 in /superset-frontend (#41849)
add 8f4c4117656 fix(mcp): coerce Role ORM objects to role names in
UserInfo schema (#40746)
add 2a77c0156af fix(frontend/setup): sanitize returned client error
message when shown as HTML content (#41768)
add 17ae25b8d4d fix(explore): resolve adhoc Custom SQL dimension in Bubble
chart (#41861)
add ef10501e6b2 feat(table v2): add tooltip to table header (#39287)
add f1c0a461fda chore(deps): bump react-markdown from 9.0.7 to 10.1.0 in
/superset-frontend/packages/superset-ui-core (#41805)
add 6b1311a6c7c fix(sqllab): correct verticalalign CSS typo in
SqlEditorTabHeader icon styles (#41052)
add 0d9533fdf8f fix(reports): export server-paginated table row limits
(#41103)
add 7b95d8b17c9 feat(alerts): add user lookup for email recipients (#41338)
add 050acc6c308 fix(databend): support configuring Databend via individual
parameters (#41513)
add c253b68d7bc fix(chart): fix Chart Time Grain option not working if
Dataset is not saved (#38766)
add ddca50c8209 fix(ui): improve getPopupContainer to avoid double
scrollbar without breaking modal behavior (#38792)
add 98fc8576131 feat(cache): warm up native filter option queries (#41531)
add 866f8c51ee2 fix(sqllab): invalid height in ResultTable (#37408)
add e49945fc2fb fix(table charts v1 & v2): pagination, translation and
search by (#36881)
add 96171552890 fix(utils): urls preserve query params (#35936)
add 3fa000ba0bc fix(chart): allow custom date format for week range in Big
Number with Trendline (#35752)
add 0efcd54250a fix(charts): fix time comparison crash when offsets share
a numeric prefix (#39344)
add f6d03e4a687 fix(clickhouse): time filters use server timezone for
toDateTime literals (#41579)
add 206155f986c fix(explore): apply per-datasource access check on the
legacy explore view (#41425)
add f74de0eb6c3 fix: Show metric in the default tooltip of deck.gl GeoJson
Polygon chart (#41341)
add 2dab31c1301 fix(mcp): serialize FAB role permissions (#41404)
add 01cd2152027 fix(explore): default Save As for new charts in save
dialog (#41314)
add 3b1abf82608 feat(Icons): adding Layout icon (#41853)
add 211bcbc6353 chore(deps-dev): bump @swc/plugin-emotion from 14.14.0 to
14.14.1 in /superset-frontend (#41875)
add d81b135a04c fix(explore): render DragOverlay so dragged metric/column
is visible (#41879)
add 8a599d70b43 fix(explore): admin creating new chart crashes on save
(#41880)
add 49ed2063815 fix(a11y): add aria-label to dependency-list remove icon
(#41878)
add deefe897f15 chore(frontend): remove orphaned eslint-plugin-cypress
devDependency (#41866)
add dc5c5af4671 docs: Add geOrchestra project and pi-geosolutions to In
the Wild (#41801)
add e333135a0d4 feat(i18n): expose the six newly backfilled locales
(#41827)
add 001d6c9692c fix(semantic-layers): apply time-comparison offset to
`TEMPORAL_RANGE` filters (#41556)
add 34d4966f8b1 fix(dataset): resolve duplicate virtual dataset validation
error (#37932)
add 01e872c1056 refactor: remove the deprecated AVOID_COLORS_COLLISION
feature flag (#41800)
add 33f0fc93edf feat: introduce Subject model and entity editors/viewers
(#38831)
add 83716cb8c0d build(websocket): migrate to ESM (#41680)
add 2c8cdbbd9b2 chore(dependabot): unify npm Dependabot config used for
multi-workspace `superset-frontend` (#41586)
add e65b2c49d73 fix(marshmallow): add compatibility layer for
Flask-AppBuilder with marshmallow 4.x (#35920)
add 8e549e49750 chore(deps-dev): update playwright requirement from
<2,>=1.60.0 to >=1.61.0,<2 (#41890)
add 31351eb52af chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in
/superset-frontend (#41896)
add 15f8b8e9b40 chore(deps): bump immer from 11.1.8 to 11.1.9 in
/superset-frontend (#41894)
add a0d9e82c60b chore(deps): bump celery from 5.5.2 to 5.6.3 (#41892)
add 3a10f39c207 chore(deps-dev): bump pytest from 7.4.4 to 9.1.1 (#41888)
add ea5950558bb feat(dashboard): add vertical alignment guides and height
indicator when resizing charts (#41079)
add 74c3f3b66bd feat(theme): make default theme changeable through
config.py (#41007)
add 227b3a48c11 fix(chart-data): return 403 for SupersetSecurityException
in chart data API (#41865)
add 3dd5e69714f chore(deps-dev): bump @types/node from 26.0.1 to 26.1.0 in
/superset-websocket (#41887)
add 30e1ab3203c chore(deps): bump docker/login-action from 4.2.0 to 4.3.0
(#41901)
add a4418a27c5c chore(deps): bump github/codeql-action/analyze from 4.36.2
to 4.36.3 (#41900)
add c1d4401d292 chore(deps): bump github/codeql-action/init from 4.36.2 to
4.36.3 (#41899)
add afc7dbeff23 chore(deps-dev): update teradatasql requirement from
>=16.20.0.23 to >=20.0.0.62 (#41886)
add 1fd43ffe52c feat(mcp): scope embedded-guest data reads to the token's
dashboards (#41753)
add baff395d983 feat(mcp): add list_themes, get_theme_info, and
create_theme tools (#41497)
add bea5f8d4a44 fix(dashboard): stagger manual refresh to prevent worker
saturation (#40512)
add 43bfc85941c fix(db): validate schema and table cache timeout to reject
negative values (#38490)
add 2380d576d54 fix(cli): avoid DetachedInstanceError in
compute-thumbnails (#41530)
add 1bfb7c60e7c fix(ci): repair stale mock target breaking Python-Unit on
master (#41911)
add a899e1db414 feat(versioning): entity-version base infrastructure
(gated off, dark launch) (#41176)
add 0ff52d46e07 fix(docs): correct broken In the Wild logo for Région
Hauts-de-France (#41918)
add ea76d0d785e chore(deps): bump cookie from 1.1.1 to 2.0.1 in
/superset-websocket (#41874)
add be600f78fc6 chore(deps): upgrade ag-grid to 36.0.0 (#41882)
add 597c9c6fea6 fix: do not require recaptcha public key for LDAP
authentication (#37009)
add e2ba378b699 fix(sqllab): redirect legacy /superset/sql/<db_id>/ deep
links (#41759)
add 38707866c02 chore(deps-dev): bump baseline-browser-mapping from
2.10.40 to 2.10.41 in /superset-frontend (#41929)
add 169c05f8ce8 chore(deps-dev): bump tsx from 4.22.4 to 4.22.5 in
/superset-frontend (#41928)
add 2a3d65f61a6 chore(deps): bump docker/login-action from 4.3.0 to 4.4.0
(#41927)
add 1ddc3e45d77 chore(deps): bump @deck.gl/mapbox from 9.3.5 to 9.3.6 in
/superset-frontend (#41926)
add 1631d52b650 fix(CollectionControl): a11y drag handle and vertical axis
lock (#39863)
add 2112fbd3798 feat(subjects): add read-only Subject REST API and DAO
(#41897)
add a6ce2fd76b0 fix(mcp): patch list_metrics DAOs via module object to
avoid Python 3.10 mock resolution bug (#41881)
add 5b8e94de267 feat(semantic layers): dashboard filters (#40475)
add bd61e09b4ea fix(mcp): bind Big Number chart to a temporal column for
dashboard time filters (#41895)
add bc80d138fdc chore(deps): bump slack-sdk from 3.42.0 to 3.43.0 (#41893)
add 35712ff9770 fix(sqllab): show truncated table list warning (#41617)
add 4dde4d2c706 fix(versioning): make baseline capture atomic (#41941)
add 38181521912 fix(mcp): user/role tools demanded a permission FAB never
registers (#41858)
add 51ce2b11ad3 chore(deps-dev): update impyla requirement from
<0.23,>0.16.2 to >=0.24.0,<0.25 (#41951)
add 7a752d1c228 fix(dashboard): restore arrow key navigation in modal
inputs opened from dropdown (#37978)
add 5c12f216d51 feat(mcp): add delete_chart and delete_dashboard tools
(#41472)
add 678fcba8b48 feat(helm): Superset 6 structured config schema with
deprecation path (#41777)
add b641008da6a fix(versioning): preserve complete multi-flush history
(#41940)
add df209cedbf8 chore(deps-dev): update sqlalchemy-firebird requirement
from <2.2,>=0.7.0 to >=0.8.0,<2.2 (#41950)
add e8521471820 test: add edge-case tests for datetime_to_epoch function
(#39404)
add a03cabffa77 perf(csv): avoid regex in CSV value escaping (#40195)
add 0ecf34d80e1 fix(a11y): add aria-label to ViewportControl text inputs
(#41931)
add b237aefb1ea fix(a11y): add aria-label to RightMenu documentation and
bug-report icon links (#41903)
add f5deda78641 fix(dataset): copy catalog field when duplicating a
BigQuery dataset (#41106)
add 189f258e0ce fix(drill): coerce temporal drill filter values (#40180)
add 5e6b29d1a32 chore(deps-dev): bump sqlalchemy-hana from 0.4.0 to 3.0.3
(#41953)
add 49dc0acd827 fix(pre-commit): prettier hook drops first file and never
batches (#41944)
add b8c0171976d test(rls): assert related/subjects honors search filter
for roles (#31466) (#41969)
add 958d1ab256a test(rls): assert dataset search returns all mask matches
(#29707) (#41968)
add 13c5a324027 fix(tests): correct stale TYPE_CHECKING import path in
base_data_loader (#41972)
add a1d1d69f5ea ci: enforce SQLAlchemy 2.0 deprecation warnings in
unit-test CI (#41915)
add 2a18a556b09 chore(frontend): lint Emotion CSS-in-JS with Stylelint
(#41871)
add db1912c6d98 chore(deps): bump cachetools from 6.2.1 to 7.1.4 (#41947)
add 0ca51d9796a fix(Database Connection Form): Added validation to db
credential input (#37919)
add a0c791da3b4 Merge branch 'master' into
chore/fc-02-legacy-plugin-components
No new revisions were added by this update.
Summary of changes:
.github/dependabot.yml | 300 -
.github/workflows/check-python-deps.yml | 2 +-
.github/workflows/codeql-analysis.yml | 4 +-
.github/workflows/superset-python-unittest.yml | 6 +
...sync-requirements-for-python-dep-upgrade-pr.yml | 2 +-
.pre-commit-config.yaml | 8 +-
.rat-excludes | 1 +
RESOURCES/INTHEWILD.yaml | 39 +-
UPDATING.md | 155 +-
docs/admin_docs/configuration/alerts-reports.mdx | 6 +-
docs/admin_docs/configuration/aws-iam.mdx | 20 +-
docs/admin_docs/configuration/cache.mdx | 12 +-
.../configuration/networking-settings.mdx | 6 +-
docs/admin_docs/security/securing_superset.mdx | 2 +-
docs/admin_docs/security/security.mdx | 155 +-
.../components/design-system/metadatabar.mdx | 16 +-
docs/developer_docs/contributing/howtos.md | 11 +
.../guidelines/backend-style-guidelines.md | 10 +-
.../guidelines/backend/dao-style-guidelines.md | 8 +-
docs/developer_docs/testing/backend-testing.md | 2 +-
docs/docs/faq.mdx | 17 +
.../creating-your-first-dashboard.mdx | 8 +-
docs/package.json | 15 +-
docs/src/components/databases/types.ts | 2 +-
docs/src/pages/inTheWild.tsx | 3 +-
docs/src/pages/index.tsx | 3 +-
docs/src/types/yaml.d.ts | 4 +-
docs/src/webpack.extend.ts | 4 +-
docs/static/feature-flags.json | 21 +-
docs/static/img/logos/camptocamp.svg | Bin 0 -> 14528 bytes
docs/static/img/logos/craig.png | Bin 0 -> 40696 bytes
docs/static/img/logos/geo2france.png | Bin 0 -> 4687 bytes
docs/static/img/logos/geobretagne.svg | Bin 0 -> 7203 bytes
docs/static/img/logos/georchestra.svg | Bin 0 -> 12615 bytes
docs/static/img/logos/jDev.svg | Bin 0 -> 26135 bytes
docs/static/img/logos/mel.jpg | Bin 0 -> 27292 bytes
docs/static/img/logos/pi-Geosolutions.png | Bin 0 -> 22032 bytes
.../img/logos/rennes-ville-metropole_noir.svg | Bin 0 -> 4242 bytes
docs/tsconfig.json | 1 -
docs/yarn.lock | 7878 ++++++-----
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 59 +-
helm/superset/UPGRADING.md | 161 +
helm/superset/templates/NOTES.txt | 6 +
helm/superset/templates/_helpers.tpl | 641 +-
helm/superset/templates/deployment-beat.yaml | 10 +-
helm/superset/templates/deployment-flower.yaml | 5 +-
helm/superset/templates/deployment-worker.yaml | 10 +-
helm/superset/templates/deployment-ws.yaml | 3 +
helm/superset/templates/deployment.yaml | 12 +-
helm/superset/templates/secret-env.yaml | 36 +-
.../superset/templates/secret-superset-config.yaml | 4 +-
helm/superset/tests/checksum_test.yaml | 132 +
helm/superset/tests/config_test.yaml | 94 +
helm/superset/tests/deprecation_test.yaml | 28 +
helm/superset/tests/initscript_test.yaml | 63 +
helm/superset/tests/secret_env_test.yaml | 71 +
helm/superset/tests/serviceaccount_test.yaml | 28 +
helm/superset/tests/values_defaults_test.yaml | 30 +
helm/superset/values.schema.json | 140 +
helm/superset/values.yaml | 148 +-
pyproject.toml | 31 +-
requirements/base.in | 2 +-
requirements/base.txt | 18 +-
requirements/development.txt | 28 +-
scripts/stylelint.sh | 49 +
scripts/translations/apply_do_not_translate.py | 128 +
scripts/translations/babel_update.sh | 8 +
scripts/translations/backfill_po.py | 63 +
superset-core/pyproject.toml | 2 +-
superset-core/src/superset_core/common/daos.py | 54 +-
superset-core/src/superset_core/common/models.py | 62 +
.../src/superset_core/semantic_layers/types.py | 2 +-
superset-embedded-sdk/package-lock.json | 1410 +-
superset-embedded-sdk/package.json | 8 +-
superset-frontend/.stylelintignore | 9 +
.../cypress-base/cypress/e2e/explore/utils.ts | 6 +-
.../cypress-base/cypress/fixtures/charts.json | 4 -
superset-frontend/jest.config.js | 5 +-
superset-frontend/package-lock.json | 4499 +++----
superset-frontend/package.json | 44 +-
.../packages/generator-superset/package.json | 2 +-
.../superset-core/src/theme/GlobalStyles.tsx | 8 +-
.../packages/superset-core/src/theme/types.ts | 10 +
.../src/translation/TranslatorSingleton.test.ts | 79 +
.../src/translation/TranslatorSingleton.ts | 29 +
.../superset-core/src/translation/types/index.ts | 19 +-
.../superset-ui-chart-controls/src/fixtures.ts | 2 +-
.../src/operators/renameOperator.ts | 2 +-
.../src/operators/utils/timeOffset.ts | 6 +-
.../superset-ui-chart-controls/src/types.ts | 14 +-
.../test/operators/renameOperator.test.ts | 24 +
.../test/operators/utils/timeOffset.test.ts | 23 +
.../packages/superset-ui-core/package.json | 16 +-
.../src/color/CategoricalColorScale.ts | 20 +-
.../AsyncAceEditor/AsyncAceEditor.stories.tsx | 8 +-
.../AsyncAceEditor/AsyncAceEditor.test.tsx | 193 +
.../AsyncAceEditor/emojiWidthPatch.test.ts | 219 +
.../components/AsyncAceEditor/emojiWidthPatch.ts | 283 +
.../src/components/AsyncAceEditor/index.tsx | 82 +-
.../src/components/Button/types.ts | 7 +-
.../src/components/CodeEditor/index.tsx | 8 +-
.../src/components/DropdownButton/index.tsx | 20 +-
.../DropdownContainer/DropdownContainer.tsx | 4 +-
.../src/components/DynamicEditableTitle/index.tsx | 20 +-
.../src/components/EmptyState/index.tsx | 8 +-
.../src/components/Form/LabeledErrorBoundInput.tsx | 8 +
.../superset-ui-core/src/components/Form/types.ts | 8 +-
.../src/components/Icons/AntdEnhanced.tsx | 2 +
.../src/components/Icons/Icons.stories.tsx | 6 +-
.../src/components/Icons/index.tsx | 3 +-
.../superset-ui-core/src/components/Label/types.ts | 7 +-
.../src/components/Loading/types.ts | 5 +-
.../src/components/MetadataBar/ContentConfig.tsx | 6 +-
.../src/components/MetadataBar/ContentType.ts | 17 +-
.../components/MetadataBar/MetadataBar.stories.tsx | 22 +-
.../components/MetadataBar/MetadataBar.test.tsx | 12 +-
.../MetadataBar/MetadataBarOverview.stories.tsx | 4 +-
.../src/components/MetadataBar/constants.ts | 2 +-
.../src/components/Modal/Modal.tsx | 82 +-
.../components/ModalTrigger/ModalTrigger.test.tsx | 42 +-
.../src/components/ModalTrigger/index.tsx | 20 +-
.../src/components/SafeMarkdown/SafeMarkdown.tsx | 5 +-
.../src/components/Select/AsyncSelect.tsx | 5 +-
.../src/components/Select/Select.stories.tsx | 5 +-
.../src/components/Select/Select.tsx | 5 +-
.../superset-ui-core/src/components/Tabs/Tabs.tsx | 14 +-
.../src/components/ThemedAgGridReact/index.tsx | 1 +
.../superset-ui-core/src/connection/types.ts | 11 +-
.../superset-ui-core/src/currency-format/types.ts | 8 +-
.../superset-ui-core/src/models/Registry.ts | 4 +-
.../src/query/api/v1/handleError.ts | 3 +-
.../src/query/getClientErrorObject.ts | 10 +-
.../superset-ui-core/src/query/types/Dashboard.ts | 15 +-
.../superset-ui-core/src/query/types/Filter.ts | 4 +-
.../superset-ui-core/src/query/types/Metric.ts | 7 +-
.../src/query/types/PostProcessing.ts | 30 +-
.../src/query/types/QueryFormData.ts | 3 +-
.../superset-ui-core/src/time-comparison/types.ts | 9 +-
.../superset-ui-core/src/utils/featureFlags.ts | 3 +-
.../superset-ui-core/src/utils/html.test.tsx | 17 +
.../chart/components/ChartDataProvider.test.tsx | 3 +-
.../test/color/CategoricalColorScale.test.ts | 84 +-
.../playwright/helpers/api/dataset.ts | 6 +-
.../playwright/tests/dashboard/theme.spec.ts | 35 +-
.../src/AgGridTable/index.tsx | 32 +-
.../src/AgGridTableChart.tsx | 71 +-
.../plugin-chart-ag-grid-table/src/buildQuery.ts | 31 +-
.../plugin-chart-ag-grid-table/src/consts.ts | 8 +
.../src/controlPanel.tsx | 32 +-
.../src/renderers/NumericCellRenderer.tsx | 15 +-
.../src/styles/index.tsx | 1 -
.../src/transformProps.ts | 64 +-
.../plugin-chart-ag-grid-table/src/types.ts | 9 +-
.../src/utils/copyCellValue.ts | 156 +
.../src/utils/externalAPIs.ts | 2 +
.../src/utils/getCellStyle.ts | 8 +-
.../src/utils/getColumnStateSignature.ts | 51 +
.../src/utils/getRowBasicColorFormatter.ts | 50 +
.../src/utils/isEqualColumns.ts | 25 +-
.../src/utils/reconcileColumnState.test.ts | 17 +
.../src/utils/useColDefs.ts | 1 +
.../test/AgGridTableChart.test.tsx | 431 +-
.../test/buildQuery.test.ts | 129 +
.../test/cellSelectionWiring.test.tsx | 99 +
.../test/controlPanel.test.ts | 36 +
.../test/controlPanel.test.tsx | 3 +-
.../test/transformProps.test.ts | 266 +
.../test/utils/copyCellValue.test.ts | 203 +
.../test/utils/getColumnStateSignature.test.ts | 82 +
.../test/utils/getRowBasicColorFormatter.test.ts | 81 +
.../plugin-chart-echarts/src/BigNumber/utils.ts | 2 +-
.../plugin-chart-echarts/src/BoxPlot/types.ts | 6 +-
.../src/Bubble/transformProps.ts | 11 +-
.../src/Radar/controlPanel.tsx | 3 +-
.../src/Timeseries/transformers.ts | 3 +-
.../plugin-chart-echarts/src/Waterfall/types.ts | 6 +-
.../plugin-chart-echarts/src/utils/legendLayout.ts | 6 +-
.../src/utils/safeEChartOptionsParser.ts | 8 +-
.../plugin-chart-echarts/src/utils/series.ts | 6 +-
.../test/BigNumber/transformProps.test.ts | 28 +-
.../test/Bubble/transformProps.test.ts | 72 +
.../test/Timeseries/transformProps.test.ts | 55 +-
.../plugin-chart-echarts/test/utils/series.test.ts | 68 +-
.../src/plugin/controls/shared.ts | 3 +-
.../src/PivotTableChart.tsx | 84 +-
.../src/react-pivottable/utilities.ts | 3 +-
.../plugins/plugin-chart-pivot-table/src/types.ts | 4 +-
.../test/PivotTableChart.test.tsx | 370 +
.../plugin-chart-table/src/DataTable/DataTable.tsx | 2 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 81 +-
.../plugins/plugin-chart-table/src/buildQuery.ts | 5 +-
.../plugin-chart-table/src/controlPanel.tsx | 3 +-
.../plugin-chart-table/test/TableChart.test.tsx | 49 +
.../plugin-chart-table/test/controlPanel.test.tsx | 3 +-
.../plugins/preset-chart-deckgl/package.json | 2 +-
.../src/components/Legend.test.tsx | 57 +-
.../src/layers/Path/buildQuery.ts | 3 +-
.../src/layers/Polygon/transformProps.test.ts | 36 +
.../src/layers/Polygon/transformProps.ts | 16 +-
.../src/utilities/Shared_DeckGL.tsx | 3 +-
.../src/utilities/tooltipUtils.test.tsx | 90 +
.../src/utilities/tooltipUtils.tsx | 50 +-
.../src/utils/crossFiltersDataMask.ts | 12 +-
superset-frontend/spec/fixtures/mockCharts.ts | 7 -
.../spec/fixtures/mockDashboardInfo.js | 3 +-
.../spec/fixtures/mockDashboardState.js | 3 +-
superset-frontend/spec/fixtures/mockDatasource.ts | 4 +-
superset-frontend/spec/fixtures/mockReportState.js | 1 -
.../spec/fixtures/mockSliceEntities.js | 23 +-
.../src/SqlLab/SqlLabGlobalStyles.tsx | 10 +-
.../src/SqlLab/actions/sqlLab.test.ts | 83 +-
superset-frontend/src/SqlLab/actions/sqlLab.ts | 26 +-
.../src/SqlLab/components/EditorWrapper/index.tsx | 4 +-
.../src/SqlLab/components/QueryTable/index.tsx | 26 +-
.../src/SqlLab/components/QueryTable/styles.ts | 1 +
.../buildResultsGridThemeOverrides.test.ts | 94 +
.../ResultSet/buildResultsGridThemeOverrides.ts | 46 +
.../src/SqlLab/components/ResultSet/index.tsx | 42 +-
.../SqlLab/components/SaveDatasetModal/index.tsx | 104 +-
.../SqlLab/components/SaveQuery/SaveQuery.test.tsx | 41 +
.../src/SqlLab/components/SaveQuery/index.tsx | 12 +-
.../SqlLab/components/SqlEditorTabHeader/index.tsx | 4 +-
.../SqlLab/components/TabbedSqlEditors/index.tsx | 36 +-
.../TableExploreTree/TreeNodeRenderer.tsx | 6 +-
superset-frontend/src/SqlLab/fixtures.ts | 3 +-
.../middlewares/persistSqlLabStateEnhancer.ts | 5 +-
superset-frontend/src/SqlLab/reducers/sqlLab.ts | 3 +-
superset-frontend/src/SqlLab/types.ts | 10 +-
.../TimeGrainPreFilter.integration.test.tsx | 6 +-
.../src/components/AuditInfo/index.tsx | 6 +-
.../src/components/AuditInfo/types.ts | 4 +-
.../components/Chart/ChartErrorMessage.test.tsx | 14 +-
.../src/components/Chart/ChartErrorMessage.tsx | 8 +-
.../components/Chart/DrillBy/DrillByChart.test.tsx | 7 +-
.../components/Chart/DrillBy/DrillByModal.test.tsx | 7 +-
.../Chart/DrillBy/DrillBySubmenu.test.tsx | 2 +-
.../Chart/DrillDetail/DrillDetailPane.test.tsx | 7 +-
superset-frontend/src/components/Chart/types.ts | 6 +-
.../Datasource/ChangeDatasourceModal/index.tsx | 10 +-
.../DatasourceModal/DatasourceModal.test.tsx | 8 +
.../Datasource/DatasourceModal/index.tsx | 7 +-
.../Datasource/FoldersEditor/TreeItem.styles.ts | 24 +-
.../Datasource/FoldersEditor/treeUtils.ts | 4 +-
.../DatasourceEditor/DatasourceEditor.tsx | 106 +-
.../DatasetUsageTab/DatasetUsageTab.test.tsx | 39 +-
.../components/DatasetUsageTab/index.tsx | 28 +-
.../tests/DatasourceEditor.test.utils.tsx | 2 +-
.../ErrorMessage/DatabaseErrorMessage.test.tsx | 12 +-
.../ErrorMessage/DatabaseErrorMessage.tsx | 18 +-
.../ErrorMessage/OAuth2RedirectMessage.test.tsx | 60 +-
.../ErrorMessage/OAuth2RedirectMessage.tsx | 19 +-
.../ErrorMessage/TimeoutErrorMessage.test.tsx | 12 +-
.../ErrorMessage/TimeoutErrorMessage.tsx | 18 +-
.../src/components/FacePile/FacePile.stories.tsx | 60 -
.../src/components/FacePile/FacePile.test.tsx | 173 -
.../src/components/FacePile/index.tsx | 64 -
.../src/components/FacePile/utils.tsx | 49 -
.../FilterableTable/FilterableTable.test.tsx | 55 +-
.../src/components/FilterableTable/index.tsx | 2 +
.../src/components/FilterableTable/types.ts | 3 +
.../src/components/GridTable/Header.test.tsx | 6 +-
.../src/components/GridTable/index.tsx | 10 +-
.../src/components/GridTable/types.ts | 12 +
.../src/components/ImportModal/ErrorAlert.tsx | 2 +-
.../components/ImportModal/ImportErrorAlert.tsx | 2 +-
.../ListView/Filters/CompactSelectPanel.tsx | 6 +-
superset-frontend/src/components/ListView/types.ts | 1 +
.../src/components/MessageToasts/Toast.tsx | 2 +-
.../src/components/ResizableSidebar/index.tsx | 2 +-
.../TableSelector/TableSelector.test.tsx | 40 +-
.../src/components/TableSelector/index.tsx | 6 +
.../src/components/TagsList/TagsList.test.tsx | 4 +-
superset-frontend/src/components/index.ts | 1 -
.../src/dashboard/actions/dashboardLayout.ts | 2 +-
.../src/dashboard/actions/dashboardState.test.ts | 44 +
.../src/dashboard/actions/dashboardState.ts | 23 +-
superset-frontend/src/dashboard/actions/hydrate.ts | 4 +-
.../src/dashboard/actions/sliceEntities.ts | 6 +-
.../components/AddSliceCard/AddSliceCard.tsx | 5 +-
.../AutoRefreshStatus/StatusIndicatorDot.tsx | 14 +-
.../src/dashboard/components/Dashboard.tsx | 4 +-
.../DashboardBuilder/DashboardBuilder.tsx | 23 +-
.../DashboardBuilder/DashboardContainer.test.tsx | 3 +-
.../dashboard/components/DashboardGrid.test.tsx | 36 +
.../src/dashboard/components/DashboardGrid.tsx | 65 +-
.../dashboard/components/FiltersBadge/Styles.tsx | 1 -
.../dashboard/components/Header/Header.test.tsx | 6 +-
.../src/dashboard/components/Header/index.tsx | 19 +-
.../components/Header/useDashboardMetadataBar.tsx | 17 +-
.../Header/useHeaderAutoRefresh.test.tsx | 154 +
.../components/Header/useHeaderAutoRefresh.ts | 31 +-
.../PropertiesModal/PropertiesModal.test.tsx | 249 +-
.../PropertiesModal/hooks/useAccessOptions.ts | 76 -
.../dashboard/components/PropertiesModal/index.tsx | 77 +-
.../sections/AccessSection.stories.tsx | 152 +
.../sections/AccessSection.test.tsx | 72 +-
.../PropertiesModal/sections/AccessSection.tsx | 119 +-
.../components/PropertiesModal/utils.test.ts | 90 -
.../dashboard/components/PropertiesModal/utils.ts | 81 -
.../src/dashboard/components/SaveModal.tsx | 10 +-
.../src/dashboard/components/SliceAdder.test.tsx | 2 +-
.../src/dashboard/components/SliceAdder.tsx | 11 +-
.../components/SliceHeader/SliceHeader.test.tsx | 2 +-
.../src/dashboard/components/SliceHeader/index.tsx | 10 +-
.../SliceHeaderControls.subdirectory.test.tsx | 2 +-
.../SliceHeaderControls.test.tsx | 2 +-
.../components/SliceHeaderControls/index.tsx | 10 +-
.../components/SliceHeaderControls/types.ts | 3 +-
.../src/dashboard/components/dnd/DragHandle.tsx | 10 +-
.../components/filterscope/FilterScopeSelector.tsx | 2 +-
.../components/gridComponents/Chart/Chart.test.tsx | 1 -
.../components/gridComponents/Chart/Chart.tsx | 38 +-
.../components/gridComponents/Header/Header.tsx | 7 +-
.../components/gridComponents/Tabs/Tabs.test.tsx | 52 +
.../src/dashboard/components/menu/HoverMenu.tsx | 2 +-
.../FilterBar/ActionButtons/index.tsx | 60 +-
.../FilterBar/CrossFilters/CrossFilter.tsx | 20 +-
.../FilterBar/CrossFilters/CrossFilterTag.tsx | 10 +-
.../FilterBar/CrossFilters/CrossFilterTitle.tsx | 8 +-
.../nativeFilters/FilterBar/FilterBar.test.tsx | 110 +
.../FilterBarSettings/FilterBarSettings.test.tsx | 2 +-
.../FilterControls/FilterControlShared.tsx | 4 +-
.../FilterControls.overflow.test.tsx | 3 +-
.../FilterBar/FilterControls/FilterValue.tsx | 9 +-
.../FilterBar/UrlFilters/UrlFilterTag.tsx | 8 +-
.../nativeFilters/FilterBar/Vertical.tsx | 2 +-
.../FiltersConfigForm/ColumnSelect.tsx | 92 +-
.../FiltersConfigForm/DatasetSelect.test.tsx | 45 +
.../FiltersConfigForm/DatasetSelect.tsx | 102 +-
.../FiltersConfigForm/DependencyList.tsx | 6 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 206 +-
.../FiltersConfigForm/RemovedFilter.tsx | 2 +-
.../FiltersConfigForm/getControlItemsMap.tsx | 4 +
.../FiltersConfigForm/utils.test.ts | 76 +-
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 91 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 15 +
.../hooks/useItemStateManager.ts | 3 +-
.../FiltersConfigModal/hooks/useModalSaveLogic.ts | 3 +-
.../transformers/buildTarget.test.ts | 74 +
.../FiltersConfigModal/transformers/buildTarget.ts | 61 +
.../transformers/customizationTransformer.ts | 21 +-
.../transformers/filterTransformer.ts | 20 +-
.../nativeFilters/FiltersConfigModal/types.ts | 3 +
.../nativeFilters/FiltersConfigModal/utils.ts | 10 +-
.../dashboard/components/nativeFilters/state.ts | 11 +-
.../dashboard/components/nativeFilters/utils.ts | 6 +-
.../components/resizable/ResizableContainer.tsx | 155 +-
.../dashboard/containers/DashboardPage.test.tsx | 3 +-
.../src/dashboard/containers/DashboardPage.tsx | 3 +-
.../src/dashboard/reducers/dashboardInfo.test.ts | 24 +-
.../src/dashboard/reducers/dashboardInfo.ts | 4 +-
.../src/dashboard/reducers/nativeFilters.ts | 5 +-
superset-frontend/src/dashboard/types.ts | 19 +-
.../util/charts/getFormDataWithExtraFilters.ts | 17 +-
superset-frontend/src/dashboard/util/constants.ts | 1 +
.../util/getFormDataWithExtraFilters.test.ts | 43 +
.../src/dashboard/util/getRelatedCharts.test.ts | 65 +-
.../src/dashboard/util/getRelatedCharts.ts | 17 +-
.../src/dashboard/util/permissionUtils.test.ts | 190 +-
.../src/dashboard/util/permissionUtils.ts | 25 +-
.../src/dashboard/util/risonFilters.ts | 6 +-
superset-frontend/src/dataMask/reducer.ts | 2 +-
.../src/explore/actions/hydrateExplore.ts | 13 +-
.../src/explore/actions/saveModalActions.test.ts | 36 +-
.../src/explore/actions/saveModalActions.ts | 8 +-
.../explore/components/ControlPanelsContainer.tsx | 8 +-
.../explore/components/DataTableControl/index.tsx | 2 +-
.../DatasourcePanelDragOption/index.tsx | 2 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 8 +-
.../components/ExploreChartHeader/index.tsx | 12 +-
.../ExploreChartHeader/useExploreMetadataBar.tsx | 4 +-
.../ExploreContainer/ExploreDndContext.tsx | 61 +
.../ExploreViewContainer.test.tsx | 185 +-
.../PropertiesModal/PropertiesModal.test.tsx | 64 +-
.../explore/components/PropertiesModal/index.tsx | 178 +-
.../src/explore/components/SaveModal.test.tsx | 48 +-
.../src/explore/components/SaveModal.tsx | 33 +-
.../CollectionControl/CollectionControl.test.tsx | 8 +
.../controls/CollectionControl/index.tsx | 35 +-
.../controls/ColumnConfigControl/types.ts | 4 +-
.../DatasourceControl/DatasourceControl.test.tsx | 12 +-
.../controls/DatasourceControl/index.tsx | 12 +-
.../components/controls/DateFilterControl/types.ts | 22 +-
.../FilterControl/AdhocFilterEditPopover/index.tsx | 3 +-
.../index.tsx | 5 +-
.../LayerConfigsPopoverContent.tsx | 3 +-
.../SelectAsyncControl/SelectAsyncControl.test.tsx | 6 +-
.../explore/components/controls/SelectControl.tsx | 3 +-
.../components/controls/TextAreaControl.tsx | 16 +-
.../components/controls/TextControl/index.tsx | 4 +-
.../components/controls/VerticalRadioControl.tsx | 8 +-
.../components/controls/ViewQueryModal.test.tsx | 100 +
.../explore/components/controls/ViewQueryModal.tsx | 60 +-
.../components/controls/ViewportControl.tsx | 1 +
.../components/controls/VizTypeControl/VizTile.tsx | 50 +-
.../controls/VizTypeControl/VizTypeGallery.tsx | 2 +-
.../components/controls/VizTypeControl/index.tsx | 1 -
.../useExploreAdditionalActionsMenu/index.tsx | 4 +-
.../explore/controlUtils/standardizedFormData.ts | 3 +-
superset-frontend/src/explore/fixtures.tsx | 2 +-
.../src/explore/reducers/exploreReducer.ts | 30 +-
superset-frontend/src/explore/types.ts | 9 +-
.../src/features/alerts/AlertReportModal.test.tsx | 151 +-
.../src/features/alerts/AlertReportModal.tsx | 171 +-
.../alerts/components/NotificationMethod.test.tsx | 233 +
.../alerts/components/NotificationMethod.tsx | 248 +-
superset-frontend/src/features/alerts/types.ts | 4 +-
.../AllEntitiesTable.subdirectory.test.tsx | 6 +-
.../features/allEntities/AllEntitiesTable.test.tsx | 10 +-
.../src/features/allEntities/AllEntitiesTable.tsx | 15 +-
.../src/features/charts/ChartCard.tsx | 5 +-
.../src/features/cssTemplates/types.ts | 6 +-
.../src/features/dashboards/DashboardCard.test.tsx | 15 +-
.../src/features/dashboards/DashboardCard.tsx | 5 +-
.../DatabaseConnectionForm/EncryptedField.test.tsx | 142 +-
.../DatabaseConnectionForm/EncryptedField.tsx | 73 +-
.../DatabaseConnectionForm/TableCatalog.tsx | 1 +
.../databases/DatabaseModal/ExtraOptions.test.tsx | 68 +
.../databases/DatabaseModal/ExtraOptions.tsx | 36 +-
.../databases/DatabaseModal/ModalHeader.test.tsx | 58 +
.../databases/DatabaseModal/ModalHeader.tsx | 21 +-
.../databases/DatabaseModal/index.test.tsx | 75 +-
.../src/features/databases/DatabaseModal/index.tsx | 16 +-
.../src/features/databases/DatabaseModal/styles.ts | 31 +-
.../databases/UploadDataModel/ColumnsPreview.tsx | 4 +-
.../features/databases/UploadDataModel/index.tsx | 11 +-
superset-frontend/src/features/databases/types.ts | 3 +-
.../DatasetPanel.subdirectory.test.tsx | 2 +-
.../datasets/AddDataset/DatasetPanel/fixtures.ts | 2 +-
.../datasets/AddDataset/Footer/Footer.test.tsx | 4 +-
.../src/features/datasets/AddDataset/types.tsx | 3 +-
.../features/datasets/DatasetSelectLabel/index.tsx | 24 +-
.../datasets/DuplicateDatasetModal.test.tsx | 5 +-
.../datasets/hooks/useDatasetLists.test.ts | 10 +-
.../src/features/datasets/hooks/useDatasetLists.ts | 10 +-
.../DatasetMetadataBar.skipped-stories.tsx | 17 +-
.../metadataBar/useDatasetMetadataBar.test.tsx | 18 +-
.../datasets/metadataBar/useDatasetMetadataBar.tsx | 13 +-
superset-frontend/src/features/datasets/types.ts | 4 +-
.../src/features/home/ActivityTable.tsx | 6 +-
superset-frontend/src/features/home/RightMenu.tsx | 12 +-
.../src/features/home/SavedQueries.tsx | 1 -
.../OwnerSelectLabel/OwnerSelectLabel.test.tsx | 38 -
.../HeaderReportDropdown/index.test.tsx | 2 +-
.../reports/ReportModal/ReportModal.test.tsx | 109 +-
.../src/features/reports/ReportModal/index.tsx | 12 +-
.../features/reports/ReportModal/reducer.test.ts | 2 +-
superset-frontend/src/features/reports/types.ts | 2 +-
.../features/rls/RowLevelSecurityModal.test.tsx | 55 +-
.../src/features/rls/RowLevelSecurityModal.tsx | 217 +-
superset-frontend/src/features/rls/types.ts | 15 +-
.../src/features/semanticLayers/label.ts | 12 +
.../SubjectPicker/SubjectPicker.stories.tsx | 169 +
.../subjects/SubjectPicker/SubjectPicker.test.tsx | 293 +
.../src/features/subjects/SubjectPicker/index.tsx | 139 +
.../src/features/subjects/SubjectPicker/utils.ts | 200 +
.../subjects/SubjectPile/SubjectPile.stories.tsx | 74 +
.../subjects/SubjectPile/SubjectPile.test.tsx | 103 +
.../src/features/subjects/SubjectPile/index.tsx | 142 +
.../SubjectSelectLabel.stories.tsx | 115 +
.../SubjectSelectLabel}/index.tsx | 55 +-
superset-frontend/src/features/themes/types.ts | 6 +-
.../TimeGrainPreFilter.integration.test.tsx | 4 +-
superset-frontend/src/hooks/apiResources/charts.ts | 16 +-
.../src/hooks/apiResources/dashboards.test.ts | 2 +-
.../src/hooks/apiResources/dashboards.ts | 7 +-
.../src/hooks/apiResources/queries.ts | 2 +-
.../src/middleware/loggerMiddleware.ts | 6 +-
.../pages/AlertReportList/AlertReportList.test.tsx | 66 +-
.../src/pages/AlertReportList/index.tsx | 51 +-
superset-frontend/src/pages/AllEntities/index.tsx | 14 +-
superset-frontend/src/pages/Chart/index.tsx | 11 +-
.../pages/ChartList/ChartList.listview.test.tsx | 12 +-
.../src/pages/ChartList/ChartList.test.tsx | 14 +-
.../src/pages/ChartList/ChartList.testHelpers.tsx | 48 +-
superset-frontend/src/pages/ChartList/index.tsx | 71 +-
.../DashboardList/DashboardList.behavior.test.tsx | 10 +-
.../DashboardList/DashboardList.listview.test.tsx | 2 +-
.../src/pages/DashboardList/DashboardList.test.tsx | 18 +-
.../DashboardList/DashboardList.testHelpers.tsx | 42 +-
.../src/pages/DashboardList/index.tsx | 96 +-
superset-frontend/src/pages/DatabaseList/index.tsx | 4 +-
.../DatasetList/DatasetList.listview.test.tsx | 60 +-
.../DatasetList/DatasetList.permissions.test.tsx | 3 +-
.../src/pages/DatasetList/DatasetList.test.tsx | 13 +-
.../pages/DatasetList/DatasetList.testHelpers.tsx | 40 +-
superset-frontend/src/pages/DatasetList/index.tsx | 48 +-
.../FileHandler/FileHandler.subdirectory.test.tsx | 4 +-
.../src/pages/FileHandler/index.test.tsx | 4 +-
superset-frontend/src/pages/Home/index.tsx | 8 +-
.../src/pages/QueryHistoryList/index.tsx | 4 +-
.../RowLevelSecurityList.test.tsx | 82 +-
.../src/pages/RowLevelSecurityList/index.tsx | 45 +-
.../src/pages/SavedQueryList/index.tsx | 6 +-
superset-frontend/src/pages/Tags/index.tsx | 21 +-
superset-frontend/src/pages/TaskList/index.tsx | 12 +-
superset-frontend/src/preamble.ts | 71 +-
superset-frontend/src/setup/setupApp.ts | 3 +-
superset-frontend/src/theme/ThemeController.ts | 28 +-
.../src/theme/tests/ThemeController.test.ts | 95 +
.../src/theme/utils/antdTokenNames.ts | 7 +
superset-frontend/src/types/Chart.ts | 8 +-
superset-frontend/src/types/Dashboard.ts | 11 +-
superset-frontend/src/types/Dataset.ts | 4 +-
.../FacePile/types.ts => types/Subject.ts} | 22 +-
superset-frontend/src/types/TaggedObject.ts | 4 +-
superset-frontend/src/types/{Owner.ts => User.ts} | 5 +-
superset-frontend/src/types/bootstrapTypes.ts | 5 +
superset-frontend/src/utils/downloadAsImage.tsx | 1 -
.../{getOwnerName.test.ts => getUserName.test.ts} | 18 +-
.../src/utils/{getOwnerName.ts => getUserName.ts} | 10 +-
superset-frontend/src/views/CRUD/hooks.ts | 9 +-
superset-frontend/src/views/CRUD/types.ts | 21 +-
superset-frontend/src/views/CRUD/utils.test.tsx | 12 +-
superset-frontend/src/views/CRUD/utils.tsx | 102 +-
.../src/visualizations/TimeTable/TimeTable.tsx | 2 +-
.../mockReportState.js => stylelint.config.js} | 34 +-
.../{eslint.config.js => eslint.config.mjs} | 17 +-
superset-websocket/package-lock.json | 355 +-
superset-websocket/package.json | 20 +-
superset-websocket/src/config.ts | 7 +-
superset-websocket/src/index.ts | 8 +-
superset-websocket/tsconfig.json | 5 +-
superset/charts/api.py | 357 +-
superset/charts/data/api.py | 10 +
superset/charts/data/dashboard_filter_context.py | 2 +-
superset/charts/filters.py | 125 +-
superset/charts/schemas.py | 23 +-
superset/cli/sync_subjects.py | 108 +
superset/cli/thumbnails.py | 30 +-
superset/commands/base.py | 45 +-
superset/commands/chart/create.py | 14 +-
superset/commands/chart/delete.py | 4 +-
superset/commands/chart/exceptions.py | 10 +
superset/commands/chart/importers/v1/utils.py | 155 +-
.../commands/chart/restore.py | 36 +-
superset/commands/chart/update.py | 36 +-
superset/commands/dashboard/copy.py | 19 +-
superset/commands/dashboard/create.py | 21 +-
superset/commands/dashboard/delete.py | 6 +-
superset/commands/dashboard/export.py | 10 -
.../commands/dashboard/importers/v1/__init__.py | 62 +-
superset/commands/dashboard/importers/v1/utils.py | 65 +-
superset/commands/dashboard/update.py | 90 +-
superset/commands/database/delete.py | 40 +-
superset/commands/database/exceptions.py | 37 +
superset/commands/database/sync_permissions.py | 37 +-
superset/commands/database/uploaders/base.py | 40 +-
superset/commands/dataset/columns/delete.py | 4 +-
superset/commands/dataset/create.py | 21 +-
superset/commands/dataset/delete.py | 4 +-
superset/commands/dataset/duplicate.py | 98 +-
superset/commands/dataset/exceptions.py | 48 +-
superset/commands/dataset/importers/v1/utils.py | 252 +-
superset/commands/dataset/metrics/delete.py | 4 +-
superset/commands/dataset/refresh.py | 4 +-
superset/commands/dataset/restore.py | 60 +
superset/commands/dataset/update.py | 15 +-
superset/commands/exceptions.py | 14 -
superset/commands/explore/get.py | 14 +-
superset/commands/export/assets.py | 162 +-
superset/commands/importers/v1/__init__.py | 13 +
superset/commands/importers/v1/assets.py | 44 +-
superset/commands/importers/v1/utils.py | 36 +-
superset/commands/report/create.py | 18 +-
superset/commands/report/delete.py | 4 +-
superset/commands/report/exceptions.py | 14 +
superset/commands/report/execute.py | 189 +-
superset/commands/report/execute_now.py | 2 +-
superset/commands/report/update.py | 22 +-
superset/commands/restore.py | 19 +-
superset/commands/security/create.py | 25 +-
superset/commands/security/reset.py | 14 +
superset/commands/security/update.py | 33 +-
superset/commands/semantic_layer/delete.py | 4 +-
superset/commands/semantic_layer/update.py | 2 +-
superset/commands/tag/export.py | 2 +-
superset/commands/tag/utils.py | 8 +-
superset/commands/tasks/update.py | 2 +-
superset/commands/utils.py | 193 +-
superset/common/tags.py | 20 +-
superset/config.py | 159 +-
superset/connectors/sqla/models.py | 122 +-
superset/constants.py | 2 +
superset/core/api/core_api_injection.py | 16 +-
superset/css_templates/api.py | 4 +-
superset/daos/chart.py | 42 +-
superset/daos/dashboard.py | 96 +-
superset/daos/dataset.py | 434 +-
superset/daos/datasource.py | 13 +-
superset/daos/group.py | 65 +
superset/daos/report.py | 43 +-
superset/daos/role.py | 43 +-
superset/daos/semantic_layer.py | 34 +
superset/daos/{role.py => subject.py} | 16 +-
superset/daos/tag.py | 6 +-
superset/daos/user.py | 40 +
superset/daos/version.py | 69 +
superset/dashboards/api.py | 269 +-
superset/dashboards/filters.py | 185 +-
superset/dashboards/schemas.py | 47 +-
superset/databases/api.py | 54 +-
superset/databases/schemas.py | 70 +-
superset/datasets/api.py | 422 +-
superset/datasets/filters.py | 29 +
superset/datasets/schemas.py | 7 +-
superset/datasource/schemas.py | 19 +-
superset/db_engine_specs/clickhouse.py | 7 +-
superset/db_engine_specs/databend.py | 76 +-
superset/examples/birth_names.py | 42 +-
superset/explorables/base.py | 2 +-
superset/explore/schemas.py | 12 +-
superset/explore/utils.py | 2 +-
superset/extensions/__init__.py | 25 +
superset/initialization/__init__.py | 237 +
superset/marshmallow_compatibility.py | 14 +-
superset/mcp_service/ARCHITECTURE.md | 2 +-
superset/mcp_service/CLAUDE.md | 22 +-
superset/mcp_service/SECURITY.md | 52 +-
superset/mcp_service/app.py | 79 +-
superset/mcp_service/auth.py | 170 +-
superset/mcp_service/chart/chart_utils.py | 112 +-
superset/mcp_service/chart/plugins/big_number.py | 2 +-
superset/mcp_service/chart/schemas.py | 197 +-
superset/mcp_service/chart/tool/__init__.py | 2 +
superset/mcp_service/chart/tool/delete_chart.py | 186 +
superset/mcp_service/chart/tool/generate_chart.py | 9 +-
superset/mcp_service/chart/tool/get_chart_data.py | 62 +-
superset/mcp_service/chart/tool/get_chart_info.py | 12 +-
.../mcp_service/chart/tool/get_chart_preview.py | 19 +-
superset/mcp_service/chart/tool/get_chart_sql.py | 10 +
superset/mcp_service/chart/tool/list_charts.py | 2 +-
superset/mcp_service/common/cache_schemas.py | 24 +-
superset/mcp_service/common/schema_discovery.py | 12 +-
superset/mcp_service/composite_token_verifier.py | 42 +-
superset/mcp_service/dashboard/schemas.py | 95 +-
superset/mcp_service/dashboard/tool/__init__.py | 2 +
.../tool/add_chart_to_existing_dashboard.py | 16 +-
.../mcp_service/dashboard/tool/delete_dashboard.py | 235 +
.../dashboard/tool/duplicate_dashboard.py | 6 +-
.../dashboard/tool/generate_dashboard.py | 16 +-
.../dashboard/tool/get_dashboard_info.py | 6 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 2 +-
.../dashboard/tool/manage_native_filters.py | 6 +-
.../dashboard/tool/remove_chart_from_dashboard.py | 12 +-
.../mcp_service/dashboard/tool/update_dashboard.py | 4 +-
superset/mcp_service/dataset/schemas.py | 29 +-
.../mcp_service/dataset/tool/create_dataset.py | 74 +-
.../dataset/tool/create_virtual_dataset.py | 15 +
superset/mcp_service/dataset/tool/list_datasets.py | 2 +-
superset/mcp_service/dataset/tool/query_dataset.py | 83 +-
superset/mcp_service/guest_scope.py | 72 +
superset/mcp_service/guest_token_verifier.py | 180 +
superset/mcp_service/mcp_config.py | 156 +-
superset/mcp_service/mcp_core.py | 22 +-
superset/mcp_service/privacy.py | 27 +-
superset/mcp_service/report/schemas.py | 29 +-
.../mcp_service/report/tool/get_report_info.py | 2 +-
superset/mcp_service/report/tool/list_reports.py | 4 +-
superset/mcp_service/rls/schemas.py | 28 +-
.../mcp_service/rls/tool/get_rls_filter_info.py | 12 +-
superset/mcp_service/rls/tool/list_rls_filters.py | 30 +-
superset/mcp_service/role/schemas.py | 53 +-
superset/mcp_service/role/tool/get_role_info.py | 4 +
superset/mcp_service/role/tool/list_roles.py | 4 +
.../mcp_service/semantic_layer}/__init__.py | 0
superset/mcp_service/semantic_layer/schemas.py | 302 +
.../semantic_layer/tool/__init__.py} | 21 +-
.../tool/get_compatible_dimensions.py | 250 +
.../semantic_layer/tool/get_compatible_metrics.py | 254 +
.../mcp_service/semantic_layer/tool/get_table.py | 529 +
.../semantic_layer/tool/list_metrics.py | 338 +
superset/mcp_service/server.py | 1 +
superset/mcp_service/system/schemas.py | 26 +
superset/mcp_service/tag/schemas.py | 2 +-
superset/mcp_service/tag/tool/get_tag_info.py | 2 +-
superset/mcp_service/tag/tool/list_tags.py | 2 +-
.../role.py => mcp_service/theme/__init__.py} | 15 +-
superset/mcp_service/{tag => theme}/schemas.py | 158 +-
.../role.py => mcp_service/theme/tool/__init__.py} | 18 +-
superset/mcp_service/theme/tool/create_theme.py | 159 +
.../tool/get_theme_info.py} | 65 +-
.../list_tags.py => theme/tool/list_themes.py} | 104 +-
superset/mcp_service/user/schemas.py | 45 +-
superset/mcp_service/user/tool/get_user_info.py | 4 +
superset/mcp_service/user/tool/list_users.py | 4 +
superset/mcp_service/utils/query_utils.py | 57 +
superset/mcp_service/utils/response_utils.py | 58 +-
superset/middleware/legacy_prefix_redirect.py | 42 +-
...03-23_10-00_b1c2d3e4f5a6_add_subjects_tables.py | 944 ++
..._12-00_7c4a8d09ca37_add_deleted_at_to_slices.py | 52 +
..._12-10_3a8e6f2c1b95_add_deleted_at_to_tables.py | 58 +
...-28_19-50_56cd24c07170_add_versioning_tables.py | 574 +
...3_12-00_8f3a1b2c4d5e_shadow_live_row_indexes.py | 180 +
superset/models/dashboard.py | 96 +-
superset/models/helpers.py | 175 +-
superset/models/slice.py | 87 +-
superset/models/sql_lab.py | 27 +-
superset/queries/api.py | 13 +-
superset/queries/saved_queries/api.py | 6 +-
superset/reports/api.py | 48 +-
superset/reports/filters.py | 20 +-
superset/reports/models.py | 27 +-
superset/reports/schemas.py | 13 +-
superset/row_level_security/api.py | 48 +-
superset/row_level_security/schemas.py | 39 +-
superset/security/manager.py | 554 +-
superset/semantic_layers/api.py | 9 +-
superset/semantic_layers/mapper.py | 176 +-
superset/semantic_layers/models.py | 14 +-
superset/sql/parse.py | 29 +-
.../common => superset/subjects}/__init__.py | 0
superset/subjects/api.py | 123 +
superset/{daos/role.py => subjects/exceptions.py} | 15 +-
superset/subjects/filters.py | 263 +
superset/subjects/hooks.py | 83 +
superset/subjects/models.py | 203 +
superset/subjects/schemas.py | 51 +
superset/subjects/sync.py | 143 +
superset/{daos/role.py => subjects/types.py} | 16 +-
superset/subjects/utils.py | 169 +
superset/superset_typing.py | 4 +-
superset/tags/api.py | 30 +-
superset/tags/filters.py | 30 +-
superset/tags/models.py | 67 +-
superset/tags/schemas.py | 3 +-
superset/tasks/api.py | 9 +-
superset/tasks/cache.py | 208 +-
superset/tasks/native_filter_cache.py | 245 +
superset/tasks/types.py | 18 +-
superset/tasks/utils.py | 119 +-
superset/templates/superset/spa.html | 30 +
superset/themes/api.py | 28 +-
superset/themes/schemas.py | 41 +-
superset/translations/ar/LC_MESSAGES/messages.po | 43 +
superset/translations/ca/LC_MESSAGES/messages.po | 423 +-
superset/translations/cs/LC_MESSAGES/messages.po | 410 +-
superset/translations/de/LC_MESSAGES/messages.po | 441 +-
superset/translations/do-not-translate.txt | 59 +
superset/translations/en/LC_MESSAGES/messages.po | 346 +-
superset/translations/es/LC_MESSAGES/messages.po | 423 +-
superset/translations/fa/LC_MESSAGES/messages.po | 409 +-
superset/translations/fi/LC_MESSAGES/messages.po | 553 +-
superset/translations/fr/LC_MESSAGES/messages.po | 4673 +++----
superset/translations/it/LC_MESSAGES/messages.po | 13043 +++++++------------
superset/translations/ja/LC_MESSAGES/messages.po | 389 +-
superset/translations/ko/LC_MESSAGES/messages.po | 43 +
superset/translations/lv/LC_MESSAGES/messages.po | 416 +-
superset/translations/messages.pot | 371 +-
superset/translations/mi/LC_MESSAGES/messages.po | 418 +-
superset/translations/nl/LC_MESSAGES/messages.po | 423 +-
superset/translations/pl/LC_MESSAGES/messages.po | 432 +-
superset/translations/pt/LC_MESSAGES/messages.po | 43 +
.../translations/pt_BR/LC_MESSAGES/messages.po | 412 +-
superset/translations/ro/LC_MESSAGES/messages.po | 3002 ++++-
superset/translations/ru/LC_MESSAGES/messages.po | 407 +-
superset/translations/sk/LC_MESSAGES/messages.po | 410 +-
superset/translations/sl/LC_MESSAGES/messages.po | 423 +-
superset/translations/sr/LC_MESSAGES/messages.po | 3580 ++---
.../translations/sr_Latn/LC_MESSAGES/messages.po | 3633 +++---
superset/translations/th/LC_MESSAGES/messages.po | 541 +-
superset/translations/tr/LC_MESSAGES/messages.po | 370 +-
superset/translations/uk/LC_MESSAGES/messages.po | 415 +-
superset/translations/zh/LC_MESSAGES/messages.po | 43 +
.../translations/zh_TW/LC_MESSAGES/messages.po | 43 +
superset/utils/core.py | 6 +-
superset/utils/csv.py | 48 +-
superset/utils/filters.py | 53 +-
.../utils/pandas_postprocessing/contribution.py | 4 +-
superset/utils/urls.py | 34 +-
.../common => superset/versioning}/__init__.py | 0
superset/versioning/api_helpers.py | 219 +
superset/versioning/baseline/__init__.py | 69 +
superset/versioning/baseline/children.py | 212 +
superset/versioning/baseline/collection.py | 153 +
superset/versioning/baseline/dirty.py | 243 +
superset/versioning/baseline/insertion.py | 150 +
superset/versioning/baseline/listener.py | 132 +
superset/versioning/baseline/shadow.py | 92 +
superset/versioning/changes/__init__.py | 76 +
superset/versioning/changes/listener.py | 433 +
superset/versioning/changes/shadow_queries.py | 323 +
superset/versioning/changes/state.py | 233 +
superset/versioning/changes/table.py | 90 +
superset/versioning/diff.py | 1111 ++
superset/versioning/etag.py | 78 +
superset/versioning/factory.py | 312 +
superset/versioning/queries.py | 518 +
superset/versioning/schemas.py | 152 +
superset/versioning/utils.py | 50 +
superset/views/base.py | 81 +-
superset/views/base_api.py | 10 +-
superset/views/core.py | 31 +-
superset/views/dashboard/mixin.py | 17 +-
superset/views/dashboard/views.py | 9 +-
superset/views/datasource/views.py | 14 +-
superset/views/filters.py | 67 +-
superset/views/sql_lab/views.py | 44 +-
superset/views/users/api.py | 4 +-
.../example_data/data_loading/base_data_loader.py | 2 +-
tests/integration_tests/base_api_tests.py | 402 +-
tests/integration_tests/base_tests.py | 65 +-
tests/integration_tests/charts/api_tests.py | 147 +-
tests/integration_tests/charts/commands_tests.py | 49 +-
tests/integration_tests/charts/data/api_tests.py | 4 +-
.../integration_tests/charts/soft_delete_tests.py | 579 +
tests/integration_tests/commands_test.py | 5 +-
tests/integration_tests/core_tests.py | 17 +-
tests/integration_tests/dao/base_dao_test.py | 86 +-
tests/integration_tests/dashboard_tests.py | 8 +-
tests/integration_tests/dashboard_utils.py | 29 +-
tests/integration_tests/dashboards/api_tests.py | 315 +-
.../integration_tests/dashboards/commands_tests.py | 24 +-
tests/integration_tests/dashboards/dao_tests.py | 33 +-
.../dashboards/dashboard_test_utils.py | 22 +-
.../dashboards/security/security_dataset_tests.py | 6 +-
.../dashboards/security/security_rbac_tests.py | 533 -
.../dashboards/soft_delete_tests.py | 52 +-
.../dashboards/superset_factory_util.py | 102 +-
.../dashboards/test_theme_integration.py | 8 +-
.../dashboards/update_tabs_test.py | 33 +-
.../databases/commands/upload_test.py | 3 +-
tests/integration_tests/datasets/api_tests.py | 388 +-
tests/integration_tests/datasets/commands_tests.py | 17 +-
.../datasets/soft_delete_tests.py | 605 +
tests/integration_tests/datasource_tests.py | 23 +-
.../integration_tests/fixtures/tabbed_dashboard.py | 15 +
tests/integration_tests/import_export_tests.py | 26 +-
tests/integration_tests/insert_chart_mixin.py | 21 +-
.../queries/saved_queries/api_tests.py | 5 +-
tests/integration_tests/query_context_tests.py | 4 +
tests/integration_tests/reports/alert_tests.py | 50 +-
tests/integration_tests/reports/api_tests.py | 94 +-
tests/integration_tests/reports/commands_tests.py | 10 +-
tests/integration_tests/reports/scheduler_tests.py | 40 +-
tests/integration_tests/reports/utils.py | 43 +-
.../security/row_level_security_tests.py | 1553 ++-
tests/integration_tests/security_tests.py | 322 +-
tests/integration_tests/sqla_models_tests.py | 15 +-
.../integration_tests/subjects}/__init__.py | 0
tests/integration_tests/subjects/api_tests.py | 142 +
tests/integration_tests/superset_test_config.py | 9 +-
tests/integration_tests/tagging_tests.py | 8 +-
tests/integration_tests/tags/api_tests.py | 68 +-
.../tags/mysql_compatibility_test.py | 2 +-
.../integration_tests/versioning}/__init__.py | 0
.../versioning/capture_disabled_tests.py | 171 +
tests/integration_tests/versioning/conftest.py | 94 +
.../versioning/snapshot_projection_tests.py | 70 +
.../versioning/transaction_correctness_tests.py | 224 +
.../versioning/versions_api_tests.py | 458 +
.../charts/commands/importers/v1/import_test.py | 181 +
tests/unit_tests/charts/test_filters.py | 180 +
tests/unit_tests/cli/thumbnails_test.py | 79 +
tests/unit_tests/commands/chart/restore_test.py | 90 +
.../commands/chart/test_access_checks.py | 46 +-
tests/unit_tests/commands/chart/update_test.py | 78 +-
tests/unit_tests/commands/dashboard/create_test.py | 68 +-
tests/unit_tests/commands/dashboard/export_test.py | 57 +-
.../unit_tests/commands/dashboard/restore_test.py | 10 +-
.../commands/databases/sync_permissions_test.py | 46 +
.../commands/databases/upload_command_test.py | 93 +
tests/unit_tests/commands/dataset/restore_test.py | 181 +
tests/unit_tests/commands/dataset/test_create.py | 85 +-
.../unit_tests/commands/dataset/test_duplicate.py | 480 +-
tests/unit_tests/commands/dataset/update_test.py | 35 +-
tests/unit_tests/commands/report/create_test.py | 2 +-
tests/unit_tests/commands/report/execute_test.py | 397 +-
.../unit_tests/commands/report/test_execute_now.py | 12 +-
tests/unit_tests/commands/report/update_test.py | 18 +-
tests/unit_tests/commands/security/rls_test.py | 93 +-
.../commands/semantic_layer/delete_test.py | 8 +-
.../commands/semantic_layer/update_test.py | 4 +-
.../commands/test_base_restore_command.py | 40 +-
tests/unit_tests/commands/test_utils.py | 138 +-
tests/unit_tests/common/test_time_shifts.py | 54 +
tests/unit_tests/connectors/sqla/models_test.py | 31 -
tests/unit_tests/connectors/sqla/utils_test.py | 74 +
tests/unit_tests/dao/dashboard_test.py | 119 +
tests/unit_tests/dao/dataset_test.py | 247 +
tests/unit_tests/dao/datasource_test.py | 59 +
tests/unit_tests/dao/group_test.py | 81 +
tests/unit_tests/dao/role_test.py | 81 +
tests/unit_tests/dao/subject_test.py | 61 +
tests/unit_tests/dao/user_test.py | 74 +
.../daos/test_base_relationship_filters.py | 8 +-
tests/unit_tests/dashboards/api_test.py | 40 +-
.../commands/importers/v1/import_test.py | 44 +-
tests/unit_tests/dashboards/schema_tests.py | 4 +-
tests/unit_tests/databases/commands/delete_test.py | 129 +
.../databases/commands/importers/v1/import_test.py | 6 +-
tests/unit_tests/databases/schema_tests.py | 273 +-
.../datasets/commands/importers/v1/import_test.py | 560 +-
.../unit_tests/db_engine_specs/test_clickhouse.py | 26 +-
tests/unit_tests/db_engine_specs/test_databend.py | 37 +
tests/unit_tests/examples/generic_loader_test.py | 4 +-
tests/unit_tests/explore/utils_test.py | 16 +-
tests/unit_tests/initialization_test.py | 98 +
.../mcp_service/chart/test_big_number_chart.py | 121 +
.../chart/test_chart_config_coercion.py | 279 +
.../mcp_service/chart/test_chart_utils.py | 84 +-
.../mcp_service/chart/tool/test_delete_chart.py | 229 +
.../mcp_service/chart/tool/test_generate_chart.py | 13 +-
.../mcp_service/chart/tool/test_get_chart_data.py | 31 +-
.../mcp_service/chart/tool/test_get_chart_info.py | 19 +
.../chart/tool/test_get_chart_preview.py | 36 +-
.../mcp_service/chart/tool/test_get_chart_sql.py | 18 +
.../mcp_service/chart/tool/test_list_charts.py | 5 +-
.../dashboard/test_dashboard_schemas.py | 8 +-
.../tool/test_add_chart_to_existing_dashboard.py | 29 +-
.../dashboard/tool/test_dashboard_generation.py | 101 +-
.../dashboard/tool/test_dashboard_tools.py | 97 +-
.../dashboard/tool/test_delete_dashboard.py | 254 +
.../dashboard/tool/test_duplicate_dashboard.py | 13 +-
.../tool/test_remove_chart_from_dashboard.py | 67 +-
.../dashboard/tool/test_update_dashboard.py | 14 +-
.../database/tool/test_database_tools.py | 2 +-
.../dataset/tool/test_create_dataset.py | 36 +-
.../mcp_service/dataset/tool/test_dataset_tools.py | 78 +-
.../mcp_service/report/tool/test_report_tools.py | 37 +-
.../mcp_service/rls/tool/test_rls_tools.py | 69 +-
.../mcp_service/role/tool/test_role_tools.py | 49 +
.../saved_query/tool/test_saved_query_tools.py | 2 +-
.../mcp_service/semantic_layer}/__init__.py | 0
.../mcp_service/semantic_layer/tool}/__init__.py | 0
.../tool/test_get_compatible_dimensions.py | 284 +
.../tool/test_get_compatible_metrics.py | 280 +
.../semantic_layer/tool/test_get_table.py | 299 +
.../semantic_layer/tool/test_list_metrics.py | 311 +
.../system/tool/test_generate_bug_report.py | 2 +-
.../system/tool/test_get_current_user.py | 5 +-
.../mcp_service/system/tool/test_get_schema.py | 48 +-
.../mcp_service/system/tool/test_mcp_core.py | 22 +-
.../mcp_service/tag/tool/test_tag_tools.py | 4 +-
tests/unit_tests/mcp_service/test_auth_rbac.py | 66 +
tests/unit_tests/mcp_service/test_guest_scope.py | 121 +
.../mcp_service/test_guest_token_auth.py | 685 +
tests/unit_tests/mcp_service/test_mcp_config.py | 2 +-
tests/unit_tests/mcp_service/test_mcp_server.py | 29 +
tests/unit_tests/mcp_service/test_privacy.py | 58 +-
.../mcp_service/test_schema_discovery.py | 6 +-
.../unit_tests/mcp_service/theme}/__init__.py | 0
.../unit_tests/mcp_service/theme/tool}/__init__.py | 0
.../mcp_service/theme/tool/test_create_theme.py | 260 +
.../mcp_service/theme/tool/test_get_theme_info.py | 133 +
.../mcp_service/theme/tool/test_list_themes.py | 128 +
tests/unit_tests/mcp_service/user/test_schemas.py | 153 +
.../mcp_service/utils/test_permissions_utils.py | 7 +-
.../mcp_service/utils/test_query_utils.py | 96 +
.../mcp_service/utils/test_response_utils.py | 109 +
.../mcp_service/utils/test_token_utils.py | 2 +-
.../middleware/test_legacy_prefix_redirect.py | 75 +-
.../migrations/test_add_deleted_at_to_slices.py | 190 +
.../migrations/test_add_deleted_at_to_tables.py | 189 +
tests/unit_tests/models/helpers_test.py | 264 +-
.../models/multi_space_column_names_test.py | 164 +
.../models/owner_association_tables_test.py | 106 +
tests/unit_tests/models/sql_lab_test.py | 97 +
tests/unit_tests/models/test_soft_delete_mixin.py | 4 +-
.../models/test_time_filter_hour_offset.py | 99 +
.../pandas_postprocessing/test_contribution.py | 33 +
.../reports/notifications/email_tests.py | 6 +-
.../reports/notifications/slack_tests.py | 2 +-
.../reports/notifications/webhook_tests.py | 2 +-
tests/unit_tests/row_level_security/schema_test.py | 23 +-
.../scripts/translations/backfill_po_test.py | 98 +
tests/unit_tests/security/audit_log_test.py | 24 +-
tests/unit_tests/security/manager_test.py | 63 +-
tests/unit_tests/security/test_permission_hooks.py | 156 -
tests/unit_tests/semantic_layers/api_test.py | 3 +
tests/unit_tests/semantic_layers/dao_test.py | 205 +
tests/unit_tests/semantic_layers/mapper_test.py | 429 +-
tests/unit_tests/semantic_layers/models_test.py | 107 +
tests/unit_tests/sql/parse_tests.py | 125 +-
.../unit_tests/subjects}/__init__.py | 0
tests/unit_tests/subjects/test_copy_command.py | 94 +
tests/unit_tests/subjects/test_filters.py | 321 +
tests/unit_tests/subjects/test_raise_for_access.py | 403 +
tests/unit_tests/subjects/test_security.py | 280 +
tests/unit_tests/subjects/test_utils.py | 367 +
tests/unit_tests/tags/models_test.py | 2 +-
tests/unit_tests/tasks/test_async_queries.py | 52 +
tests/unit_tests/tasks/test_cache.py | 288 +-
tests/unit_tests/tasks/test_native_filter_cache.py | 405 +
tests/unit_tests/tasks/test_utils.py | 383 +-
tests/unit_tests/test_marshmallow_compatibility.py | 182 +
tests/unit_tests/themes/api_test.py | 45 +-
tests/unit_tests/utils/csv_tests.py | 3 +
tests/unit_tests/utils/filters_test.py | 119 +-
tests/unit_tests/utils/test_core.py | 13 +-
tests/unit_tests/utils/test_date_parsing.py | 91 +
tests/unit_tests/utils/urls_tests.py | 50 +-
tests/unit_tests/versioning/test_diff_caps.py | 218 +
tests/unit_tests/versioning/test_listener.py | 204 +
tests/unit_tests/views/datasource/views_test.py | 28 +-
tests/unit_tests/views/test_base.py | 5 +-
tests/unit_tests/views/test_bootstrap_auth.py | 93 +-
998 files changed, 75552 insertions(+), 36222 deletions(-)
create mode 100644 docs/static/img/logos/camptocamp.svg
create mode 100644 docs/static/img/logos/craig.png
create mode 100644 docs/static/img/logos/geo2france.png
create mode 100644 docs/static/img/logos/geobretagne.svg
create mode 100644 docs/static/img/logos/georchestra.svg
create mode 100644 docs/static/img/logos/jDev.svg
create mode 100644 docs/static/img/logos/mel.jpg
create mode 100644 docs/static/img/logos/pi-Geosolutions.png
create mode 100644 docs/static/img/logos/rennes-ville-metropole_noir.svg
create mode 100644 helm/superset/UPGRADING.md
create mode 100644 helm/superset/tests/checksum_test.yaml
create mode 100644 helm/superset/tests/config_test.yaml
create mode 100644 helm/superset/tests/deprecation_test.yaml
create mode 100644 helm/superset/tests/initscript_test.yaml
create mode 100644 helm/superset/tests/secret_env_test.yaml
create mode 100644 helm/superset/tests/serviceaccount_test.yaml
create mode 100644 helm/superset/tests/values_defaults_test.yaml
create mode 100644 helm/superset/values.schema.json
create mode 100755 scripts/stylelint.sh
create mode 100644 scripts/translations/apply_do_not_translate.py
create mode 100644 superset-frontend/.stylelintignore
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/emojiWidthPatch.test.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/emojiWidthPatch.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/copyCellValue.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/getColumnStateSignature.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/src/utils/getRowBasicColorFormatter.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/cellSelectionWiring.test.tsx
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/transformProps.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/copyCellValue.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/getColumnStateSignature.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-ag-grid-table/test/utils/getRowBasicColorFormatter.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-pivot-table/test/PivotTableChart.test.tsx
create mode 100644
superset-frontend/plugins/preset-chart-deckgl/src/utilities/tooltipUtils.test.tsx
create mode 100644
superset-frontend/src/SqlLab/components/ResultSet/buildResultsGridThemeOverrides.test.ts
create mode 100644
superset-frontend/src/SqlLab/components/ResultSet/buildResultsGridThemeOverrides.ts
delete mode 100644
superset-frontend/src/components/FacePile/FacePile.stories.tsx
delete mode 100644 superset-frontend/src/components/FacePile/FacePile.test.tsx
delete mode 100644 superset-frontend/src/components/FacePile/index.tsx
delete mode 100644 superset-frontend/src/components/FacePile/utils.tsx
create mode 100644
superset-frontend/src/dashboard/components/Header/useHeaderAutoRefresh.test.tsx
delete mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/hooks/useAccessOptions.ts
create mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/sections/AccessSection.stories.tsx
delete mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/utils.test.ts
delete mode 100644
superset-frontend/src/dashboard/components/PropertiesModal/utils.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/buildTarget.test.ts
create mode 100644
superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/transformers/buildTarget.ts
create mode 100644
superset-frontend/src/features/databases/DatabaseModal/ModalHeader.test.tsx
delete mode 100644
superset-frontend/src/features/owners/OwnerSelectLabel/OwnerSelectLabel.test.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPicker/SubjectPicker.stories.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPicker/SubjectPicker.test.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPicker/index.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPicker/utils.ts
create mode 100644
superset-frontend/src/features/subjects/SubjectPile/SubjectPile.stories.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPile/SubjectPile.test.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectPile/index.tsx
create mode 100644
superset-frontend/src/features/subjects/SubjectSelectLabel/SubjectSelectLabel.stories.tsx
rename superset-frontend/src/features/{owners/OwnerSelectLabel =>
subjects/SubjectSelectLabel}/index.tsx (56%)
rename superset-frontend/src/{components/FacePile/types.ts =>
types/Subject.ts} (67%)
rename superset-frontend/src/types/{Owner.ts => User.ts} (87%)
rename superset-frontend/src/utils/{getOwnerName.test.ts =>
getUserName.test.ts} (65%)
rename superset-frontend/src/utils/{getOwnerName.ts => getUserName.ts} (80%)
copy superset-frontend/{spec/fixtures/mockReportState.js =>
stylelint.config.js} (63%)
rename superset-websocket/{eslint.config.js => eslint.config.mjs} (75%)
create mode 100644 superset/cli/sync_subjects.py
copy tests/unit_tests/mcp_service/test_schema_discovery.py =>
superset/commands/chart/restore.py (53%)
create mode 100644 superset/commands/dataset/restore.py
create mode 100644 superset/daos/group.py
copy superset/daos/{role.py => subject.py} (73%)
create mode 100644 superset/daos/version.py
create mode 100644 superset/mcp_service/chart/tool/delete_chart.py
create mode 100644 superset/mcp_service/dashboard/tool/delete_dashboard.py
create mode 100644 superset/mcp_service/guest_scope.py
create mode 100644 superset/mcp_service/guest_token_verifier.py
copy {superset-core/src/superset_core/common =>
superset/mcp_service/semantic_layer}/__init__.py (100%)
create mode 100644 superset/mcp_service/semantic_layer/schemas.py
copy superset/{daos/role.py => mcp_service/semantic_layer/tool/__init__.py}
(64%)
create mode 100644
superset/mcp_service/semantic_layer/tool/get_compatible_dimensions.py
create mode 100644
superset/mcp_service/semantic_layer/tool/get_compatible_metrics.py
create mode 100644 superset/mcp_service/semantic_layer/tool/get_table.py
create mode 100644 superset/mcp_service/semantic_layer/tool/list_metrics.py
copy superset/{daos/role.py => mcp_service/theme/__init__.py} (75%)
copy superset/mcp_service/{tag => theme}/schemas.py (56%)
copy superset/{daos/role.py => mcp_service/theme/tool/__init__.py} (75%)
create mode 100644 superset/mcp_service/theme/tool/create_theme.py
copy superset/mcp_service/{tag/tool/get_tag_info.py =>
theme/tool/get_theme_info.py} (55%)
copy superset/mcp_service/{tag/tool/list_tags.py => theme/tool/list_themes.py}
(56%)
create mode 100644 superset/mcp_service/utils/query_utils.py
create mode 100644
superset/migrations/versions/2026-03-23_10-00_b1c2d3e4f5a6_add_subjects_tables.py
create mode 100644
superset/migrations/versions/2026-05-08_12-00_7c4a8d09ca37_add_deleted_at_to_slices.py
create mode 100644
superset/migrations/versions/2026-05-08_12-10_3a8e6f2c1b95_add_deleted_at_to_tables.py
create mode 100644
superset/migrations/versions/2026-05-28_19-50_56cd24c07170_add_versioning_tables.py
create mode 100644
superset/migrations/versions/2026-06-03_12-00_8f3a1b2c4d5e_shadow_live_row_indexes.py
copy {superset-core/src/superset_core/common => superset/subjects}/__init__.py
(100%)
create mode 100644 superset/subjects/api.py
copy superset/{daos/role.py => subjects/exceptions.py} (72%)
create mode 100644 superset/subjects/filters.py
create mode 100644 superset/subjects/hooks.py
create mode 100644 superset/subjects/models.py
create mode 100644 superset/subjects/schemas.py
create mode 100644 superset/subjects/sync.py
copy superset/{daos/role.py => subjects/types.py} (75%)
create mode 100644 superset/subjects/utils.py
create mode 100644 superset/tasks/native_filter_cache.py
create mode 100644 superset/translations/do-not-translate.txt
copy {superset-core/src/superset_core/common =>
superset/versioning}/__init__.py (100%)
create mode 100644 superset/versioning/api_helpers.py
create mode 100644 superset/versioning/baseline/__init__.py
create mode 100644 superset/versioning/baseline/children.py
create mode 100644 superset/versioning/baseline/collection.py
create mode 100644 superset/versioning/baseline/dirty.py
create mode 100644 superset/versioning/baseline/insertion.py
create mode 100644 superset/versioning/baseline/listener.py
create mode 100644 superset/versioning/baseline/shadow.py
create mode 100644 superset/versioning/changes/__init__.py
create mode 100644 superset/versioning/changes/listener.py
create mode 100644 superset/versioning/changes/shadow_queries.py
create mode 100644 superset/versioning/changes/state.py
create mode 100644 superset/versioning/changes/table.py
create mode 100644 superset/versioning/diff.py
create mode 100644 superset/versioning/etag.py
create mode 100644 superset/versioning/factory.py
create mode 100644 superset/versioning/queries.py
create mode 100644 superset/versioning/schemas.py
create mode 100644 superset/versioning/utils.py
create mode 100644 tests/integration_tests/charts/soft_delete_tests.py
delete mode 100644
tests/integration_tests/dashboards/security/security_rbac_tests.py
create mode 100644 tests/integration_tests/datasets/soft_delete_tests.py
copy {superset-core/src/superset_core/common =>
tests/integration_tests/subjects}/__init__.py (100%)
create mode 100644 tests/integration_tests/subjects/api_tests.py
copy {superset-core/src/superset_core/common =>
tests/integration_tests/versioning}/__init__.py (100%)
create mode 100644 tests/integration_tests/versioning/capture_disabled_tests.py
create mode 100644 tests/integration_tests/versioning/conftest.py
create mode 100644
tests/integration_tests/versioning/snapshot_projection_tests.py
create mode 100644
tests/integration_tests/versioning/transaction_correctness_tests.py
create mode 100644 tests/integration_tests/versioning/versions_api_tests.py
create mode 100644 tests/unit_tests/charts/test_filters.py
create mode 100644 tests/unit_tests/cli/thumbnails_test.py
create mode 100644 tests/unit_tests/commands/chart/restore_test.py
create mode 100644 tests/unit_tests/commands/dataset/restore_test.py
create mode 100644 tests/unit_tests/dao/dashboard_test.py
create mode 100644 tests/unit_tests/dao/datasource_test.py
create mode 100644 tests/unit_tests/dao/group_test.py
create mode 100644 tests/unit_tests/dao/role_test.py
create mode 100644 tests/unit_tests/dao/subject_test.py
create mode 100644 tests/unit_tests/databases/commands/delete_test.py
create mode 100644
tests/unit_tests/mcp_service/chart/test_chart_config_coercion.py
create mode 100644 tests/unit_tests/mcp_service/chart/tool/test_delete_chart.py
create mode 100644
tests/unit_tests/mcp_service/dashboard/tool/test_delete_dashboard.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/semantic_layer}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/semantic_layer/tool}/__init__.py (100%)
create mode 100644
tests/unit_tests/mcp_service/semantic_layer/tool/test_get_compatible_dimensions.py
create mode 100644
tests/unit_tests/mcp_service/semantic_layer/tool/test_get_compatible_metrics.py
create mode 100644
tests/unit_tests/mcp_service/semantic_layer/tool/test_get_table.py
create mode 100644
tests/unit_tests/mcp_service/semantic_layer/tool/test_list_metrics.py
create mode 100644 tests/unit_tests/mcp_service/test_guest_scope.py
create mode 100644 tests/unit_tests/mcp_service/test_guest_token_auth.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/theme}/__init__.py (100%)
copy {superset-core/src/superset_core/common =>
tests/unit_tests/mcp_service/theme/tool}/__init__.py (100%)
create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_create_theme.py
create mode 100644
tests/unit_tests/mcp_service/theme/tool/test_get_theme_info.py
create mode 100644 tests/unit_tests/mcp_service/theme/tool/test_list_themes.py
create mode 100644 tests/unit_tests/mcp_service/user/test_schemas.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_query_utils.py
create mode 100644 tests/unit_tests/mcp_service/utils/test_response_utils.py
create mode 100644 tests/unit_tests/migrations/test_add_deleted_at_to_slices.py
create mode 100644 tests/unit_tests/migrations/test_add_deleted_at_to_tables.py
create mode 100644 tests/unit_tests/models/multi_space_column_names_test.py
create mode 100644 tests/unit_tests/models/owner_association_tables_test.py
create mode 100644 tests/unit_tests/models/test_time_filter_hour_offset.py
copy {superset-core/src/superset_core/common =>
tests/unit_tests/subjects}/__init__.py (100%)
create mode 100644 tests/unit_tests/subjects/test_copy_command.py
create mode 100644 tests/unit_tests/subjects/test_filters.py
create mode 100644 tests/unit_tests/subjects/test_raise_for_access.py
create mode 100644 tests/unit_tests/subjects/test_security.py
create mode 100644 tests/unit_tests/subjects/test_utils.py
create mode 100644 tests/unit_tests/tasks/test_native_filter_cache.py
create mode 100644 tests/unit_tests/test_marshmallow_compatibility.py
create mode 100644 tests/unit_tests/versioning/test_diff_caps.py
create mode 100644 tests/unit_tests/versioning/test_listener.py