Adds an opt-in, consumption-only mobile experience (feature flag
MOBILE_CONSUMPTION_MODE, default off, @lifecycle: development):
- Dashboards: charts stacked full-width with real plugin dimensions
(ChartHolder reports full column count on mobile; heights capped to
the viewport minus chrome), sticky swipeable tab bars with gradient
overflow affordances, filter bar in a drawer (FilterBar mobileMode),
compact header (title scrolls away; edit/publish/fave/refresh controls
hidden; dashboard info moved into the kebab menu)
- Dashboard list: forced card view, full-width cards, search/filters and
sort in a drawer (single FilterControls instance)
- Home: dashboards-only Recents, compact empty states, desktop-only
sections hidden
- Navigation: hamburger drawer (dashboards, theme/language, user
info/logout with row-tap navigation)
- Route guarding: routes declare mobileSupported in routes.tsx;
everything else renders a MobileUnsupported screen; viewport growth
unblocks automatically (useIsMobile subscribes to matchMedia only when
the flag is on, so flag-off deployments have zero render delta)
- Serves a viewport meta tag (flag-gated) so mobile browsers lay out at
device width instead of the ~980px legacy viewport; exposes
is_feature_enabled to Jinja via the common context processor
- User docs (using-superset/mobile-experience.mdx) with a Playwright
screenshot generator following the docs:screenshots pattern
- Docker dev config enables the flag; jest + Playwright coverage
throughout
Squashed from the iterative mobile-dashboard-support history (preserved
at backup/mobile-pre-rebase-2).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* remove depracted keys and associated methods
* remove api methods and tablemodel views
* remove deprecated api and unsued vars
* reremove schedules
* readd code
* fix pylint
* run black
* remove test
* core select start test
* add suggested changes
* fixed whitespace
* commit exclusion of package-lock from large file size precommit hook
* Converted all PNG files to JPG files to save space, stay under <500kb file size
* added link to release notes for 1.0
* chore: Adding pip-compile-multi et al
* Specify requirements.txt path for fossa
* [ci] Fixing CI
Co-authored-by: John Bodley <john.bodley@airbnb.com>
Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>
* chore: bump pyhton dependencies
* bump flask-testing
* Add note to UPDATING and bump flask-testing in requirements-dev.txt
* fix old sqlparse test case that is fixed with sqlparse==0.3.1
* Fix migration and sqlparse set test
* downgrade alembic
* Downgrade sqlalchemy-utils
* pin sqlalchemy-utils due to regression in 0.36.5
* Refine comment in setup.py
* make cachelib an explicit requirement
* Splitting up some of the Docker build steps
* Adding dev target which includes requirements-extra / Updating docker configs to handle async query running