Amin Ghadersohi
e9f795a338
feat(extensions): Tier 3 persistent storage — full CRUD + list endpoints, pagination, encryption
...
Implements the Extension Storage Layer (Tier 3) from the architecture proposal:
- New `extension_storage` table and SQLAlchemy model with three storage scopes:
global (shared), user-scoped (per-user), resource-linked (tied to a Superset resource)
- `ExtensionStorageDAO` with upsert semantics, Fernet encryption, and scope isolation
- REST API under `/api/v1/extensions/<publisher>/<name>/storage/persistent/`:
GET/PUT/DELETE for global/<key>, user/<key>, resources/<type>/<uuid>/<key>
GET list endpoints (with ?page & ?page_size pagination) for /global/, /user/, /resources/<type>/<uuid>/
- Alembic migration creating `extension_storage` table
- Unit tests covering all three scopes, upsert, delete, pagination, and encryption
(encrypted roundtrip, Fernet token verification, cross-scope coexistence)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-07 11:23:23 -07:00
Amin Ghadersohi
5f9fc31ae2
feat(mcp): add get_chart_type_schema tool for on-demand schema discovery ( #39142 )
2026-04-07 12:07:45 -04:00
Amin Ghadersohi
bf9aff19b5
fix(mcp): compress chart config schemas to reduce search_tools token usage ( #39018 )
2026-04-06 19:52:03 -04:00
Amin Ghadersohi
7be2acb2f3
fix(mcp): add description and certification fields to default list tool columns ( #39017 )
2026-04-06 13:37:52 -04:00
Amin Ghadersohi
83ad1eca26
fix(mcp): add dynamic response truncation for oversized info tool responses ( #39107 )
2026-04-06 12:36:03 -04:00
Amin Ghadersohi
92747246fc
fix(mcp): remove JWT ValueError g.user fallback in auth layer ( #39106 )
2026-04-06 12:35:46 -04:00
Amin Ghadersohi
7380a59ab8
fix(mcp): fix form_data null, dataset URL, ASCII preview, and chart rename ( #39109 )
2026-04-06 12:34:26 -04:00
Maxime Beauchemin
a62be684a0
feat(mcp): add database connection listing and info tools ( #39111 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com >
2026-04-06 11:34:10 -04:00
Sam Firke
12eb40db01
fix(SQL Lab): handle columns without names ( #38986 )
2026-04-06 10:09:16 -04:00
Amin Ghadersohi
851bbeea48
fix(mcp): improve execute_sql response-too-large error to suggest limit parameter ( #39003 )
2026-04-03 10:57:31 -04:00
Joe Li
9e27d682f6
test(alerts/reports): close backend and frontend test coverage gaps ( #38591 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 11:55:24 -07:00
Kamil Gabryjelski
135e0f8099
fix(mcp): Created dashboard should be in draft state by default ( #39011 )
2026-04-02 19:28:51 +02:00
Michael S. Molina
94d8735d4b
fix(query): pass datasource table to template processor for schema-aware Jinja rendering ( #38984 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-01 13:08:12 -03:00
Rui Zhao
53b1d1097c
fix(presto): Fix presto timestamp ( #26467 )
...
Co-authored-by: Claude Code <noreply@anthropic.com >
Co-authored-by: Rui Zhao <zhaorui@dropbox.com >
Co-authored-by: Joe Li <joe@preset.io >
2026-03-31 10:28:06 -07:00
Amin Ghadersohi
daefedebcd
fix(mcp): batch fix for execute_sql crashes, null timestamps, and deck.gl errors ( #38977 )
2026-03-31 12:50:20 -04:00
Amin Ghadersohi
c37a3ec292
fix(mcp): add TEMPORAL_RANGE filter for temporal x-axis in generate_chart ( #38978 )
2026-03-31 12:39:08 -04:00
Amin Ghadersohi
4245720851
feat(mcp): add Big Number chart type support to MCP service ( #38403 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-31 11:53:53 -04:00
Amin Ghadersohi
2c9cf0bd55
fix(mcp): enforce MAX_PAGE_SIZE limit on list tools to prevent oversized responses ( #38959 )
2026-03-30 16:48:03 -04:00
Amin Ghadersohi
38fdfb4ca2
fix(mcp): prevent stale g.user from causing user impersonation across tool calls ( #38747 )
2026-03-30 14:23:46 -04:00
Kamil Gabryjelski
15bab227bb
feat(mcp): support saved metrics from datasets in chart generation ( #38955 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-30 16:38:31 +02:00
Amin Ghadersohi
d331a043a3
fix(mcp): prevent PendingRollbackError from poisoned sessions after SSL drops ( #38934 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-30 10:30:15 -04:00
Amin Ghadersohi
89f7e5e7ba
fix(mcp): validate dataset exists in generate_explore_link before generating URL ( #38951 )
2026-03-30 09:29:29 -04:00
Amin Ghadersohi
aa1a69555b
fix(mcp): prevent GRID_ID injection into ROOT_ID on tabbed dashboards ( #38890 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-30 11:26:58 +02:00
Amin Ghadersohi
d1903afc69
fix(mcp): remove @parse_request decorator for cleaner tool schemas ( #38918 )
2026-03-29 16:09:51 -04:00
Krishna Chaitanya
ac96f46c76
fix(dataset): add email field to owners_data for Chart Explore path ( #38836 )
2026-03-27 09:44:11 -03:00
Alexandru Soare
5c782397bb
refactor(passwords): accept passwords via YAML file ( #38059 )
...
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me >
2026-03-27 14:37:34 +02:00
Enzo Martellucci
40387d5daa
fix(reports): PUT with empty recipients list does not persist the change ( #38711 )
2026-03-27 12:54:13 +01:00
Richard Fogaca Nienkotter
9c288d66b5
fix(dataset): add missing currency_code_column to DatasetPostSchema ( #38853 )
2026-03-26 16:58:04 -03:00
Beto Dealmeida
8983edea66
fix: type probing ( #38889 )
2026-03-26 13:06:49 -04:00
Amin Ghadersohi
6dc3d7ad9f
fix(mcp): add try/except around DAO re-fetch to handle session errors in multi-tenant ( #38859 )
2026-03-26 12:43:21 -04:00
Amin Ghadersohi
23a5e95884
fix(mcp): add permission checks to generate_dashboard and update_chart tools ( #38845 )
2026-03-25 16:37:48 -04:00
Kamil Gabryjelski
16f5a2a41a
fix(mcp): detect unknown chart config fields and suggest correct ones ( #38848 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-25 18:38:23 +01:00
Shaitan
a93e319716
fix(datasource): align access validation in legacy views ( #38647 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: Daniel Vaz Gaspar <danielvazgaspar@gmail.com >
2026-03-25 14:56:59 +00:00
Alexandru Soare
37c4a36fdb
fix(report): raise warning when filter type not recognized ( #38676 )
2026-03-24 16:06:44 -07:00
Amin Ghadersohi
811dcb3715
feat(api-keys): add API key authentication via FAB SecurityManager ( #37973 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com >
2026-03-24 13:37:26 -04:00
Amin Ghadersohi
c596df9294
feat(mcp): add Handlebars chart type support to MCP service ( #38402 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-24 12:25:39 -04:00
Amin Ghadersohi
09594b32f9
fix(mcp): fix generate_dashboard cross-session SQLAlchemy error ( #38827 )
2026-03-24 11:39:37 -04:00
Beto Dealmeida
5d9f53ff0c
feat: prevent Postgres connection to Redshift ( #38693 )
2026-03-24 10:44:38 -04:00
Alexandru Soare
89d1b80ce7
fix(keys): Unsafe dict access in get_native_filters_params() crashes execution ( #38272 )
2026-03-24 15:43:27 +02:00
Shaitan
962abf6904
fix(sqllab): add authorization check to query cost estimation ( #38648 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 12:57:02 +00:00
Amin Ghadersohi
ed3c5280a9
fix(mcp): prevent encoding errors and fix tool bugs on MCP client transports ( #38786 )
2026-03-24 05:41:24 -04:00
Mehmet Salih Yavuz
100ad7d9ee
fix(AlertsReports): validate anchor_list is a list ( #38723 )
2026-03-23 18:19:57 +03:00
Amin Ghadersohi
44c2c765ae
fix(mcp): convert adhoc filters to QueryObject format before query compilation ( #38774 )
2026-03-20 20:43:09 +01:00
Amin Ghadersohi
0d5721910e
fix(mcp): normalize call_tool proxy arguments to prevent encoding TypeError ( #38775 )
2026-03-20 20:42:40 +01:00
Kamil Gabryjelski
1d72480c17
fix(mcp): fix detached Slice instance error in chart/dashboard serialization ( #38767 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-20 18:23:51 +01:00
Enzo Martellucci
e088979fbe
fix(reports): validate nativeFilters on report create/update and deactivate on dashboard filter deletion ( #38715 )
2026-03-20 17:20:02 +01:00
Amin Ghadersohi
c2a21915ff
fix(mcp): fix dashboard slug null and execute_sql encoding error ( #38710 )
2026-03-20 14:41:54 +01:00
Alexandru Soare
6465450b64
fix(firebolt): Firebolt SQL entered with EXCLUDE is rewritten to EXCEPT ( #38742 )
2026-03-19 10:21:50 -07:00
Kamil Gabryjelski
211f29b723
fix(mcp): Chart schema followups - DRY extraction, template fix, alias and test gaps ( #38746 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-19 16:50:42 +01:00
Kamil Gabryjelski
14b1b456e1
fix: Add aliases and groupby list to chart schemas ( #38740 )
2026-03-19 16:15:58 +01:00