Compare commits

..

439 Commits

Author SHA1 Message Date
Nicola Mometto
3b49e17e43 support bigints 2025-09-23 15:32:06 +01:00
Romeo Van Snick
4ca3759f4a Make transforms-python it's own plugin 2025-09-23 16:28:15 +10:00
Romeo Van Snick
65af07681e Use isResourceNotFoundError 2025-09-23 15:34:58 +10:00
Romeo Van Snick
7218316f22 Check type in isPythonTransform assertion 2025-09-23 15:32:33 +10:00
Romeo Van Snick
bf647fe6d9 Return alias instead of throwing 2025-09-23 15:30:54 +10:00
Romeo Van Snick
c07520cc93 Remove token feature gate in enterprise folder 2025-09-23 15:29:59 +10:00
Romeo Van Snick
a45ac1119b Use AnsiLogs in LogOutput component 2025-09-23 15:28:07 +10:00
Romeo Van Snick
58d8a20c5b Use AnsiLogs in Logs components 2025-09-23 15:27:48 +10:00
Romeo Van Snick
9c23b6f68b Add AnsiLogs component 2025-09-23 15:27:36 +10:00
Romeo Van Snick
5e42728ca2 Translate pandas definitions 2025-09-23 13:25:45 +10:00
Romeo Van Snick
585b73d250 Add python runner settings in CI 2025-09-22 22:55:23 +10:00
Romeo Van Snick
3d3680e8e9 Fix e2e test helper 2025-09-22 22:34:43 +10:00
Romeo Van Snick
92a2e083ec Fix Revert on python library when it does not exist 2025-09-22 21:37:31 +10:00
Romeo Van Snick
c1ebb1882c Add check for python output 2025-09-22 21:32:53 +10:00
Romeo Van Snick
b8208dc345 Add helper to update Python library 2025-09-22 21:25:22 +10:00
Romeo Van Snick
9fc3a644c0 Tag tests for python transforms with @transforms-python 2025-09-22 21:25:22 +10:00
Dan Stone
e03713fd9d Fix private 2025-09-22 12:05:20 +01:00
Dan Stone
cf9d57e584 Fix missing require 2025-09-22 12:05:06 +01:00
Dan Stone
05464a05f7 Remove dead code 2025-09-22 12:03:04 +01:00
Dan Stone
37c2c41b14 Merge branch 'proj-python/feature-branch' into proj-python/s01e04
# Conflicts:
#	enterprise/backend/src/metabase_enterprise/transforms/api.clj
#	enterprise/backend/src/metabase_enterprise/transforms/canceling.clj
#	enterprise/backend/src/metabase_enterprise/transforms/jobs.clj
#	enterprise/backend/src/metabase_enterprise/transforms/ordering.clj
#	enterprise/backend/src/metabase_enterprise/transforms/util.clj
#	enterprise/backend/test/metabase_enterprise/transforms/api_test.clj
#	enterprise/backend/test/metabase_enterprise/transforms/test_util.clj
2025-09-22 11:42:25 +01:00
Ngoc Khuat
473e07809b Transforms python APIs (#63762)
* transforms python api

* new tests pass locally

* clean up the db id utils

* move to util

* fix: missing refer

* chore: missing tests/kondo

* kondo

* more kondo

* fix: make function resilient

* eh, validate on old

* on new

* Add python transform support for jobs (#63764)

* Add python transforms job support

* Fix whitespace in when

* Avoid churn due to new local

* Add feature test

* Add ignore for logs (there might be away to avoid this)

* Use new target-database-id util

* Remove duplicated fn

---------

Co-authored-by: Nicola Mometto <nicola.mometto@metabase.com>
Co-authored-by: Dan Stone <wotbrew@gmail.com>
2025-09-22 12:12:48 +02:00
Romeo Van Snick
160d867260 Do not include python-runner in test docker-compose yet 2025-09-22 19:24:10 +10:00
Romeo Van Snick
5a5fde8a54 Fix e2e tests 2025-09-22 18:56:29 +10:00
Romeo Van Snick
3d767af895 Add transforms-python feature 2025-09-22 18:30:25 +10:00
Romeo Van Snick
83ed774cbc Use useHasTokenFeature hook where possible 2025-09-22 18:24:10 +10:00
Romeo Van Snick
8936750aa5 Hide Python transforms features when the user does not have transforms-python token 2025-09-22 16:55:46 +10:00
Romeo Van Snick
8bd2d83ae8 Do not show Python library link when the user does not have python transforms support 2025-09-22 16:03:06 +10:00
Romeo Van Snick
c7b47f276f Move Python runner amdin page to transforms plugin 2025-09-22 16:01:14 +10:00
Romeo Van Snick
96ecb29881 Remove unused variables 2025-09-22 15:47:17 +10:00
Romeo Van Snick
715e082a94 Hide python runner admin route when user does not have the feature for it 2025-09-22 14:58:12 +10:00
Nicola Mometto
92e8270aa1 Merge remote-tracking branch 'origin/proj-python/feature-branch' into proj-python/s01e04 2025-09-19 16:42:54 +01:00
Ngoc Khuat
57618b5245 execute.clj (#63755)
* execute.clj

* with drivers test and execute test

* with wait tables

* missing utils

* /s/open/start

* fix failing tests due to getting the wrong source and target

* kondo

* move cancel-python-code-http-call to python-runner

* Dan's feedback

* we have 2 implementstation of cancel

* and 2 db-routing-enabled?

---------

Co-authored-by: Nicola Mometto <nicola.mometto@metabase.com>
2025-09-19 17:41:43 +02:00
Nicola Mometto
2a3f25b6c0 Merge branch 'python-transform-execute' into proj-python/s01e04 2025-09-19 16:15:14 +01:00
Ngoc Khuat
ca2d010f96 we have 2 implementstation of cancel 2025-09-19 22:09:22 +07:00
Ngoc Khuat
f43429605d Dan's feedback 2025-09-19 22:08:30 +07:00
Nicola Mometto
3bdb8b3745 move cancel-python-code-http-call to python-runner 2025-09-19 16:07:48 +01:00
Nicola Mometto
0bd78f3d99 kondo 2025-09-19 16:04:39 +01:00
Ngoc Khuat
e9c82648a9 fix failing tests due to getting the wrong source and target 2025-09-19 21:52:00 +07:00
Ngoc Khuat
d3c66a05a7 /s/open/start 2025-09-19 21:41:29 +07:00
Ngoc Khuat
98fdefb3af missing utils 2025-09-19 21:40:31 +07:00
Ngoc Khuat
5829f65cc8 with wait tables 2025-09-19 21:35:15 +07:00
Ngoc Khuat
e2a8599507 with drivers test and execute test 2025-09-19 21:30:50 +07:00
Ngoc Khuat
45b432db7f execute.clj 2025-09-19 21:18:55 +07:00
Nicola Mometto
2d2b6826af Merge remote-tracking branch 'origin/proj-python/feature-branch' into proj-python/s01e04 2025-09-19 15:09:20 +01:00
Nicola Mometto
6e39a2451e Merge branch 'proj-python/runner' into proj-python/s01e04 2025-09-19 15:05:35 +01:00
Dan Stone
13b011b48b Add python_runner.clj (#63747)
* Add python runner

* Kondo

* Traceback fix

* Remove dead code

* start the runner by default

* Cancellation not used yet

* Remove unused keys from fields-metadata

* cherry pick driver fixes

* start for postgres and mysql as well

* clickhouse fixes

* relax for snowflake

* typo

* exclude transform-python-test from appdb

* exclude transforms-python-test as well

* try exclude-tag here too

---------

Co-authored-by: Ngoc Khuat <qn.khuat@gmail.com>
Co-authored-by: Nicola Mometto <nicola.mometto@metabase.com>
2025-09-19 15:59:41 +02:00
Nicola Mometto
aa914db7c7 disable flake 2025-09-19 14:48:12 +01:00
Nicola Mometto
81657554bc try exclude-tag here too 2025-09-19 14:38:49 +01:00
Ngoc Khuat
007e322139 exclude transforms-python-test as well 2025-09-19 20:27:09 +07:00
Nicola Mometto
894b446311 further relax 2025-09-19 14:14:09 +01:00
Nicola Mometto
e2ffa4481a exclude transform-python-test from appdb 2025-09-19 13:58:47 +01:00
Nicola Mometto
fee9768887 typo 2025-09-19 13:57:45 +01:00
Nicola Mometto
fbf7b96655 typo 2025-09-19 13:56:59 +01:00
Nicola Mometto
a38b97c894 fix 2025-09-19 13:48:11 +01:00
Nicola Mometto
1b45e41bf4 relax for snowflake 2025-09-19 13:34:54 +01:00
Nicola Mometto
f909d81aaf relax for snowflake 2025-09-19 13:34:38 +01:00
Nicola Mometto
3808c9e403 clickhouse fixes 2025-09-19 13:21:26 +01:00
Nicola Mometto
37ae7feec5 clickhouse fixes 2025-09-19 13:18:11 +01:00
Ngoc Khuat
3c35fff1b3 start for postgres and mysql as well 2025-09-19 19:14:27 +07:00
Nicola Mometto
5b9f005c94 order 2025-09-19 13:01:13 +01:00
Nicola Mometto
4027e703bb cherry pick driver fixes 2025-09-19 13:00:50 +01:00
Nicola Mometto
ae341c30e8 Merge remote-tracking branch 'origin/proj-python/feature-branch' into proj-python/s01e04 2025-09-19 12:56:17 +01:00
Nicola Mometto
f21066e627 fix for redshift 2025-09-19 12:55:35 +01:00
Dan Stone
b78c9d0322 Remove unused keys from fields-metadata 2025-09-19 12:49:28 +01:00
Dan Stone
efd2076773 Cancellation not used yet 2025-09-19 12:46:56 +01:00
Nicola Mometto
2e9b7dfc04 bump 2025-09-19 12:44:12 +01:00
Nicola Mometto
743d6f2ce5 fix 2025-09-19 12:43:08 +01:00
Ngoc Khuat
bf4382bccf start the runner by default 2025-09-19 18:31:41 +07:00
Dan Stone
460e29f0be Remove dead code 2025-09-19 12:10:41 +01:00
Dan Stone
8a3eb3e46c Traceback fix 2025-09-19 12:09:20 +01:00
Nicola Mometto
8b81aaef89 fix test 2025-09-19 12:00:46 +01:00
Dan Stone
357d18f987 Kondo 2025-09-19 11:57:46 +01:00
Dan Stone
f3282ed482 Add python runner 2025-09-19 11:57:46 +01:00
Ngoc Khuat
a350606c67 split CI into separate jobs (#63746) 2025-09-19 11:53:38 +01:00
Nicola Mometto
620d15cfa8 fixes for clickhouse 2025-09-19 11:51:56 +01:00
Ngoc Khuat
98df5a72fd Transforms python tests with its own CI (#63744) 2025-09-19 15:57:42 +07:00
Romeo Van Snick
7bcbc93848 Avoid starting the container in e2e tests twice 2025-09-19 18:33:29 +10:00
Romeo Van Snick
ad553839b7 Clone python runner when running CI 2025-09-19 18:22:23 +10:00
Dan Stone
68e7486947 Reorder the final message-log flush to occur before the succeed call
Should fix issues in tests that block on until a 'terminal' state, log output could be late and cause the test to fail.
2025-09-19 09:19:21 +01:00
Romeo Van Snick
a15d6eeec8 Fix some e2e tests 2025-09-19 16:42:16 +10:00
Romeo Van Snick
eab7a7a23e Further adjust to design file 2025-09-19 16:28:52 +10:00
Romeo Van Snick
1171f638a9 Implement data picker according to designs 2025-09-19 16:28:47 +10:00
Romeo Van Snick
409391e434 Simpify new transform page structure 2025-09-19 16:28:15 +10:00
Romeo Van Snick
eeb7c748a0 Fix new python transform page nesting 2025-09-19 16:28:13 +10:00
Romeo Van Snick
ee2b0e47fb Move draft back to new python transform page 2025-09-19 16:28:10 +10:00
Romeo Van Snick
fd9ba52e7c Remove extension 2025-09-19 16:28:08 +10:00
Romeo Van Snick
772abb574f Fix import 2025-09-19 16:28:04 +10:00
Romeo Van Snick
8716c6763a Add border to empty results 2025-09-19 16:28:01 +10:00
Romeo Van Snick
f4d559099f Remove unused props 2025-09-19 16:27:59 +10:00
Romeo Van Snick
e51b465624 Move AliasInput to separate file 2025-09-19 16:27:57 +10:00
Romeo Van Snick
572674ee4d Simplify props 2025-09-19 16:27:51 +10:00
Romeo Van Snick
4273556b67 Remove TableOption type 2025-09-19 16:27:49 +10:00
Romeo Van Snick
8b311b71ad Move TableInput to separate file 2025-09-19 16:27:47 +10:00
Romeo Van Snick
b9a69ace7e Validate source more 2025-09-19 16:27:46 +10:00
Romeo Van Snick
b33910f807 Remove unused component 2025-09-19 16:27:43 +10:00
Romeo Van Snick
4130322ad7 Remove vibe-comment 2025-09-19 16:27:40 +10:00
Romeo Van Snick
8a262ba858 Remove api transforms 2025-09-19 16:27:34 +10:00
Romeo Van Snick
d9a052ff23 Move library types to metabase-types/api 2025-09-19 16:27:33 +10:00
Romeo Van Snick
5ae6151a15 Remove source/draft ambiguity in types 2025-09-19 16:27:30 +10:00
Romeo Van Snick
2f91103e4d Use DatabaseId in python transform 2025-09-19 16:27:27 +10:00
Nicola Mometto
c2645a07a3 Merge remote-tracking branch 'origin/proj-python/feature-branch' into proj-python/s01e04 2025-09-18 23:46:49 +01:00
Nicola Mometto
cfb45c4ddf port prometheus/instrumentation (#63631)
* port prometheus metrics

* port instrumentation

* instrument existing transform paths

* wider buckets

* remove nil handling

* warn on nil bytes/rows

* add stage-type mapping

* typo
2025-09-18 22:05:45 +00:00
Nicola Mometto
4b1c3e50a2 eh, that was worse, we're probably nondeterministic somewhere, TODO 2025-09-18 21:53:35 +01:00
Nicola Mometto
559727b0fa fix: order 2025-09-18 21:13:54 +01:00
Nicola Mometto
4ca3c253be Merge remote-tracking branch 'origin/proj-python/feature-branch' into proj-python/s01e04 2025-09-18 20:40:49 +01:00
Nicola Mometto
413c50b888 shorter 2025-09-18 20:19:15 +01:00
Chris Truter
25c66f6028 Add s3 dependencies (#63706) 2025-09-18 19:14:43 +00:00
Nicola Mometto
61ab46858c shorter name 2025-09-18 20:00:05 +01:00
Nicola Mometto
ac0945a0f2 less fancy for maria 2025-09-18 19:51:29 +01:00
Nicola Mometto
82704fd83e switch to wait-for-table 2025-09-18 19:27:22 +01:00
Nicola Mometto
d6d52b002a wait for fields 2025-09-18 19:25:38 +01:00
Nicola Mometto
2742939e11 remove exotic maria type not in CI 2025-09-18 19:20:22 +01:00
Nicola Mometto
14ac84fd36 fix yet another test that never worked 2025-09-18 18:55:51 +01:00
Nicola Mometto
39c99824aa fix broken test 2025-09-18 18:50:36 +01:00
Nicola Mometto
d33886138a fix: proper sleep 2025-09-18 18:38:08 +01:00
Nicola Mometto
fa388420fa fix: missing feature 2025-09-18 18:34:40 +01:00
Nicola Mometto
bc829a898d fix 2025-09-18 18:16:35 +01:00
Nicola Mometto
6713ee3e63 kondo 2025-09-18 18:05:17 +01:00
Nicola Mometto
e216611038 disable h2 here too 2025-09-18 18:01:32 +01:00
Nicola Mometto
c1033e494d log/warnf is a macro, we can't with-redefs. how did this test ever work? 2025-09-18 17:59:57 +01:00
Chris Truter
be695dff40 Merge branch 'merge-s3-fixes' into proj-python/s01e04 2025-09-18 18:52:07 +02:00
Chris Truter
a79cbf4662 Remove stray stub 2025-09-18 18:51:25 +02:00
Nicola Mometto
420631e095 h2 ain't enabled for now 2025-09-18 17:50:30 +01:00
Chris Truter
6615d5ba1a Merge branch 'add-s3-deps' into proj-python/s01e04 2025-09-18 18:49:25 +02:00
Chris Truter
e4d7bb13e0 Disable s3 tests when run in the wrong group 2025-09-18 18:46:07 +02:00
Nicola Mometto
d8ae17ac38 fix case 2025-09-18 17:41:04 +01:00
Chris Truter
98bf85bae6 Simplify control flow a bit 2025-09-18 18:35:29 +02:00
Chris Truter
847be6f69c Remove rich comments 2025-09-18 18:34:41 +02:00
Nicola Mometto
c503083864 missed 2025-09-18 17:32:15 +01:00
Nicola Mometto
d12c7d40b5 fix test 2025-09-18 17:24:16 +01:00
Nicola Mometto
c4cb1b88ae comment out postgres driver tests during appddb workflow 2025-09-18 17:20:42 +01:00
Nicola Mometto
72463b8b6d Merge remote-tracking branch 'origin/add-s3-deps' into proj-python/s01e04 2025-09-18 17:20:28 +01:00
Nicola Mometto
831eb23131 typo 2025-09-18 17:16:53 +01:00
Nicola Mometto
3dae67b634 linter fixes 2025-09-18 16:57:41 +01:00
Nicola Mometto
a7af06ac42 tests are passing 2025-09-18 16:55:18 +01:00
Nicola Mometto
fccba413b0 fix driver matrix 2025-09-18 16:37:16 +01:00
Nicola Mometto
4ff9edeb28 pull out type restriction helper 2025-09-18 16:30:28 +01:00
Nicola Mometto
970535439c add stage-type mapping 2025-09-18 16:30:27 +01:00
Nicola Mometto
f9ca2ad6a9 warn on nil bytes/rows 2025-09-18 16:30:06 +01:00
Nicola Mometto
2f46305503 remove nil handling 2025-09-18 16:30:06 +01:00
Nicola Mometto
0886e7eaca wider buckets 2025-09-18 16:30:06 +01:00
Nicola Mometto
60504bdcc9 instrument existing transform paths 2025-09-18 16:30:04 +01:00
Dan Stone
4c39b11d08 Fix SocketException handling on interrupt during logging (#63705) 2025-09-18 16:28:22 +01:00
Chris Truter
1a40bac681 Make s3 a driver test to get localstack 2025-09-18 16:57:48 +02:00
Chris Truter
be815dedd1 Add dependencies 2025-09-18 16:45:29 +02:00
Nicola Mometto
5aa5c9206f chore: update drivers matrix to type restriction 2025-09-18 15:24:00 +01:00
Chris Truter
1b95cd0ddd Merge branch 'proj-python/feature-branch' into proj-python/s01e04 2025-09-18 16:22:52 +02:00
Chris Truter
57e68d2a62 S3 transport layer for python-runner (#63697) 2025-09-18 15:02:57 +01:00
Ngoc Khuat
a19b3a46da setup ci properly (#63693) 2025-09-18 15:02:57 +01:00
Nicola Mometto
90eb7e53cd cherry pick driver code (#63628)
* cherry pick driver code

* update changelog

* add type->database-type unit tests

* kondo

* create/insert table

* insert-from-jsonl test

* missing rename-tables for snowflake

* extend rename-tables-test to more drivers

* line breaks

* add driver python transform feature

* handle review comments

* kondo

* feat: replace string->val with a more generic insert-col->val

* remove non transactional impls

* chore: docsstrings

* TODO

* extra test

* fix extra test

* test all base-types

* fix sqls
2025-09-18 15:02:57 +01:00
Sébastien
64630276e3 Closes EMB-50 tabs dimmed out on iOS (#63690) 2025-09-18 15:57:35 +02:00
Nicola Mometto
eecc0b9a10 Merge remote-tracking branch 'origin/master' into proj-python/s01e04 2025-09-18 14:51:49 +01:00
Brad Anderson
6f660a3090 Fix #63629: Filter on cards causes an unnecessary horizontal scroll bar for public/static embedding (#63650) 2025-09-18 09:51:31 -04:00
Nicola Mometto
eab4bf076d Transforms prepare for python (#63698)
* pull out transform run utils to prepare for python transforms

* fix: check running-run on transform-id, not run-id

* chore: put on a new line
2025-09-18 13:46:24 +00:00
Jakub Chodorowicz
2be60d80c3 Fix command z not working in connection string input (#63689)
- Stop preventing default event handling onPaste.
- Improve Cypress paste emulation to be compatible with React way of handling paste events.
2025-09-18 15:20:03 +02:00
Nicola Mometto
1b5e427878 cherry pick changes from feature branch 2025-09-18 14:03:15 +01:00
Ngoc Khuat
3d1682e966 spin python runner for postgres app db tests as well 2025-09-18 19:53:37 +07:00
Ngoc Khuat
4fea38de35 fix drivers ci 2025-09-18 19:50:00 +07:00
Chris Truter
554890a168 Merge branch 'merge-s3-changes' into proj-python/s01e04 2025-09-18 14:49:20 +02:00
Chris Truter
403623894f Merge branch 's3-helpers' into proj-python/s01e04 2025-09-18 14:48:01 +02:00
Ngoc Khuat
94d9921324 check feature flag for proper transform when create and run (#63641) 2025-09-18 19:42:15 +07:00
Chris Truter
38dd9b1a82 Fix whitespace 2025-09-18 14:38:06 +02:00
Chris Truter
e00d3a0351 Fix-up rename 2025-09-18 14:35:24 +02:00
Chris Truter
32702eadbb Better names 2025-09-18 14:34:34 +02:00
Chris Truter
9c08b6777f Better docstring for the most complex method 2025-09-18 14:23:53 +02:00
Nicola Mometto
ee3ab9acde Merge branch 'proj-python-master' into proj-python/s01e04 2025-09-18 13:10:04 +01:00
Chris Truter
9b5fed78aa Test it 2025-09-18 14:09:12 +02:00
Chris Truter
fbc328ba2b Yoinked s3 code 2025-09-18 13:03:26 +02:00
Chris Truter
723a19e001 Remove staging settings from defaults 2025-09-18 13:02:58 +02:00
Chris Truter
f3e96cff26 Fix lints and minor bug 2025-09-18 12:57:13 +02:00
Chris Truter
1515d90cc7 Super embarrassing 2025-09-18 12:52:06 +02:00
Chris Truter
78d1cee978 Yoink s3 code out 2025-09-18 12:50:11 +02:00
Romeo Van Snick
3038880e46 Transform run cancellation (#62387)
* Add cancellation to transform api

* Use effect to set polling state

* Add cancellation button to run button

* Set up cancellation on transform page

* Use confirmation modal to cancel transform

* Add run cancel button to run list

* Make api endpoint take transform id instead of run id.

* Fix cancelation api

* Add canceled state to TransformRunStatus

* Add canceled state to transform page

* Add polling to RunListPage

* Remove comment in code

* Set status to canceling when you click cancel

* Add canceling status

* Poll when the transform is canceling

* Add copy for runs that are being canceled

* Manually track fetching status for running and canceling

* Handle canceling status in utils

* Avoid wrapping cancel button in run list

* Add test for canceling run on transform page

* Add e2e for canceling test from runs page

* Fix prop type

* Change copy to Canceling

* Add custom color to canceled state

* Remove mock code

* Increase cancelation tiemout

* Fix copy in text

* Fix snowplow event

* Remove void specifier and close modal in handler directyle

* Add optimistic update for run cancelation

* Avoid manually tracking cancelation status

* Avoid useEffect when changing isPolling

* Add in missing helper

* Remove another useEffect

* Add placeholder run when starting

---------

Co-authored-by: Eric Normand <ericwnormand@gmail.com>
Co-authored-by: Alexander Polyankin <alexander.polyankin@metabase.com>
2025-09-18 10:34:50 +00:00
Chris Truter
463bb865e8 Merge branch 'merge-from-master-sep-18' into proj-python/s01e04 2025-09-18 12:33:31 +02:00
Chris Truter
8a9bb6df63 Merge branch 'master' into proj-python/s01e04 2025-09-18 12:31:22 +02:00
Nicola Mometto
c3096b0bd1 maintain ordering 2025-09-18 11:23:44 +01:00
Romeo Van Snick
8518d7124f Improve tests for python transform 2025-09-18 20:21:11 +10:00
Romeo Van Snick
a7a740a0bf Use data picker to pick tables 2025-09-18 20:21:11 +10:00
Romeo Van Snick
de0a212a8e Use data selector for database picker 2025-09-18 20:21:11 +10:00
Romeo Van Snick
fb9704ce22 Further refactors 2025-09-18 20:21:11 +10:00
Nicola Mometto
82b64197e4 chore 2025-09-18 11:11:05 +01:00
Ngoc Khuat
1585d8cf00 setup ci properly (#63693) 2025-09-18 10:59:58 +01:00
Nemanja Glumac
b2b04e9206 Add analytics to history revision and data reference (#63587) 2025-09-18 09:44:49 +00:00
Chris Truter
95a2ab4e8c Missed a line somehow 2025-09-18 11:11:19 +02:00
Nicola Mometto
c40ab083ef cherry pick driver code (#63628)
* cherry pick driver code

* update changelog

* add type->database-type unit tests

* kondo

* create/insert table

* insert-from-jsonl test

* missing rename-tables for snowflake

* extend rename-tables-test to more drivers

* line breaks

* add driver python transform feature

* handle review comments

* kondo

* feat: replace string->val with a more generic insert-col->val

* remove non transactional impls

* chore: docsstrings

* TODO

* extra test

* fix extra test

* test all base-types

* fix sqls
2025-09-18 11:04:01 +02:00
Chris Truter
7c0580d524 Remove staging creds from code 2025-09-18 10:50:27 +02:00
Chris Truter
68167fd68a Rename setting for consistency 2025-09-18 10:46:29 +02:00
Chris Truter
8ce510608b Track versioning (#63534) 2025-09-18 10:31:36 +02:00
Alexander Polyankin
ef8111537e Update copy in UpdateTargetModal.tsx (#63667) 2025-09-18 08:11:11 +00:00
Romeo Van Snick
1c3d229286 Refactor PythonDataPicker 2025-09-18 18:01:51 +10:00
Romeo Van Snick
ff5160741f Fix some type imports 2025-09-18 17:06:03 +10:00
Nemanja Glumac
7bce3ff38a Add analytics to Metabot events (#63415)
* Add Metabot events

* Fix tooltip label

* Add new event for metabot chat controlled from the native editor
2025-09-18 08:44:19 +02:00
Romeo Van Snick
b060c51715 Add type for transform alias map 2025-09-18 16:07:33 +10:00
Romeo Van Snick
3ac0532a1e Use slugify from metabase/lib/formatting 2025-09-18 16:02:24 +10:00
Romeo Van Snick
b325cbb292 Do not allow picking unsupported databases 2025-09-18 16:01:37 +10:00
Romeo Van Snick
d152afb7cb Add transforms/python feature 2025-09-18 16:01:20 +10:00
Cam Saul
066d3a233d Pure Lib QP: remove code to wrap legacy middleware (#63645)
* cumulative-aggregations-middleware => Lib

* Ensure MBQL 5

* Fix NOCOMMIT

* Fix indentation

* Pure-Lib QP :party:

* Remove some more unused legacy MBQL utils
2025-09-18 00:13:20 +00:00
Fraser
095ad3c39c Tag latest flaky tests (#63617) 2025-09-18 11:54:13 +12:00
Fraser
d50561227f Fix skipped chart drill-through e2e tests (#63548) 2025-09-18 11:18:02 +12:00
Ryan Laurie
63f9d193a9 Use Iframe for changelog (#62943)
* use iframe for changelog

* add query params and tabs

* always show update info

it's useful even if you're on the latest version

* remove metabase as configurable host

* always allow changelog/releases in iframes

* fix tests

* fix tests

* update tests

* use root metabase domains

* fix test

---------

Co-authored-by: John Swanson <john.d.swanson@gmail.com>
2025-09-17 14:40:52 -06:00
Alexander Polyankin
0a18c13feb Skip failing tests (#63663) 2025-09-17 18:57:52 +00:00
Nemanja Glumac
a58c63a74f Add analytics to x-rays (#63498) 2025-09-17 19:55:51 +02:00
Ngoc Khuat
f889842faa Proper CI setup: clone instead of sub modules (#63654) 2025-09-17 23:40:34 +07:00
Alexander Polyankin
96f1ef42a2 Disable transform editing buttons when running (#63642) 2025-09-17 16:05:51 +00:00
Jakub Chodorowicz
fd073fb8b1 PRG-130 Send parse connection string parsing events only on blur (#63558)
* Send parse connection string parsing events only on blur

* Use synchronous last parsing result for monitoring

* Improve test assertions for connection string events

* Make sure we don' track the same parsing event again

* Refactor ts-match to simple if conditions

* Make lastStatus have the same success value depending on non undefined values

* Improve the snowplow Cypress test setup for connection string
2025-09-17 16:03:04 +00:00
Alexander Polyankin
a7971b43b1 Fix table layout issues in transform pages (#63540) 2025-09-17 11:49:22 -04:00
Cam Saul
0d1b4e253a cumulative-aggregations-middleware => Lib (#63592)
* cumulative-aggregations-middleware => Lib

* Ensure MBQL 5

* Fix NOCOMMIT
2025-09-17 15:47:13 +00:00
Sébastien
9986021635 Closes EMB-303 search bar in embedding no longer awfully long (#63632) 2025-09-17 17:09:28 +02:00
Anderson
ae422678b2 [Admin settings] Show help documentation to connect DB in a side panel (#63420)
* [Admin settings] Show help documentation to connect DB in a side panel

* Add unit tests

* Add more tests / tweaks

* Add e2e tests

* Make sure help content is not rendered if not available

* Self-review tweaks

* Use useDocsUrl in DatabaseHelpSidePanel.tsx

* Use aside element for the side panel

* Use await findBy when possible

* Use JSDoc / Remove unnecessary comment

* Add some style to blockquote

* Add test file for useHelpLink

* Fix failing test

* Add analytics event
2025-09-17 11:59:05 -03:00
Cam Saul
8ecc5c6718 add-rows-truncated middleware => Lib (#63616) 2025-09-17 14:52:21 +00:00
Cam Saul
dec95aabe7 resolve-joins middleware => Lib, remove add-source-metadata (#63608) 2025-09-17 14:50:07 +00:00
Nicola Mometto
14933f5d94 typo 2025-09-17 15:36:47 +01:00
Nicola Mometto
7eb8454293 s/keep/filter 2025-09-17 15:31:30 +01:00
Nicola Mometto
eba026fe3f fix: order 2025-09-17 15:29:52 +01:00
Nicola Mometto
47cc2574ad type restriction. 2025-09-17 15:26:16 +01:00
Chris Truter
5b6e257871 Fix for empty input tables with LocalStack (#63639) 2025-09-17 16:24:57 +02:00
Ngoc Khuat
98e29f6c39 [Transform python] python lib apis and settings (#63568) 2025-09-17 14:23:11 +00:00
lbrdnk
b110c02981 Fix empty db url for metric collector job (#63633) 2025-09-17 14:15:20 +00:00
github-automation-metabase
a5056280e8 Update generated docs (master) (#63611)
Co-authored-by: github-actions <github-actions@github.com>
2025-09-17 10:10:53 -04:00
Nicola Mometto
a36ce63e50 fix sqls 2025-09-17 15:06:53 +01:00
Alexander Polyankin
33f5b24a0a Fix flaky "Change target" behavior for transforms (#63526) 2025-09-17 09:15:43 -04:00
Romeo Van Snick
b0574988f8 Fix LogOutput styling 2025-09-17 22:58:12 +10:00
Romeo Van Snick
3bceb9f3db Use css instead of styled components 2025-09-17 22:37:59 +10:00
Romeo Van Snick
37c6a82298 Remove duplicate schema field 2025-09-17 22:37:58 +10:00
Romeo Van Snick
9f79d2b5f7 Add LogOutput back to runsection 2025-09-17 22:37:58 +10:00
Romeo Van Snick
1c56af8cb1 Revert "Remove unused LogOutput"
This reverts commit 90c0704344.
2025-09-17 22:37:58 +10:00
Nicola Mometto
d3be8d4347 TODO 2025-09-17 13:21:08 +01:00
Nicola Mometto
947a52c1ea chore: docsstrings 2025-09-17 13:21:08 +01:00
Nicola Mometto
4eafb237c7 remove non transactional impls 2025-09-17 13:21:08 +01:00
Nicola Mometto
fa72ebd4ee feat: replace string->val with a more generic insert-col->val 2025-09-17 13:21:08 +01:00
Nicola Mometto
c10c14324b kondo 2025-09-17 13:21:08 +01:00
Nicola Mometto
025544d742 handle review comments 2025-09-17 13:21:08 +01:00
Nicola Mometto
892cfce52d add driver python transform feature 2025-09-17 13:21:08 +01:00
Nicola Mometto
dd04f39158 line breaks 2025-09-17 13:21:07 +01:00
Nicola Mometto
39810bee7d extend rename-tables-test to more drivers 2025-09-17 13:21:07 +01:00
Nicola Mometto
7f662b9321 missing rename-tables for snowflake 2025-09-17 13:21:07 +01:00
Romeo Van Snick
69ca0b2c6b Fix table layout 2025-09-17 22:07:40 +10:00
Romeo Van Snick
a6d3f4e488 Fix font sizes 2025-09-17 21:50:38 +10:00
Romeo Van Snick
cff794b6c2 Set up python runner in CI (#63566)
* Check out with submodules in CI

* Include python-runner in docker compose for tests

* Set up python runner in CI

* Fix import

* Update python-runner
2025-09-17 21:41:06 +10:00
Romeo Van Snick
90c0704344 Remove unused LogOutput 2025-09-17 21:35:44 +10:00
Romeo Van Snick
3ee4162738 Add more generic RunInfo 2025-09-17 21:35:24 +10:00
Romeo Van Snick
3877cdb6eb Remove cancelation code for now 2025-09-17 21:22:55 +10:00
Romeo Van Snick
b2ff9c847e Add syntax highlighting to Python script on Transform page 2025-09-17 21:15:50 +10:00
Romeo Van Snick
8c0ac25468 Disable debugger hotkey for python transforms 2025-09-17 21:13:22 +10:00
Romeo Van Snick
e07e10062c Disable debugger for python transforms for now, allow to open it with query param 2025-09-17 21:13:19 +10:00
Romeo Van Snick
b3dfb7548f Move type to metabase-api/types 2025-09-17 21:13:17 +10:00
Romeo Van Snick
4a34306c4b Move python transform api to general transforms folder 2025-09-17 21:13:15 +10:00
Romeo Van Snick
020c546b53 Add e2e tests for python common lib 2025-09-17 21:13:12 +10:00
Romeo Van Snick
f5f6155b1c Fix parameter 2025-09-17 21:13:10 +10:00
Romeo Van Snick
d8f02a8545 Fix types 2025-09-17 21:13:06 +10:00
Romeo Van Snick
71fe53f41f Add e2e test for Python transform cretion 2025-09-17 21:12:59 +10:00
Romeo Van Snick
bbef002e2d Reuse transform save modal 2025-09-17 21:12:31 +10:00
Romeo Van Snick
fbb1774d67 Fix import path 2025-09-17 21:12:29 +10:00
Romeo Van Snick
9cf2e10377 Add test ids 2025-09-17 21:12:26 +10:00
Romeo Van Snick
0da7a46952 Disable default schema 2025-09-17 21:12:20 +10:00
Romeo Van Snick
e2689d6350 Add helpers for python editor 2025-09-17 21:12:10 +10:00
Romeo Van Snick
03ef177df5 Split up component more 2025-09-17 21:11:33 +10:00
Romeo Van Snick
8981f73a67 Restructure Python transform editor 2025-09-17 21:11:31 +10:00
Romeo Van Snick
9cd205e099 Nest Python editor components in PythonTransformEditor 2025-09-17 21:11:28 +10:00
Romeo Van Snick
59188cdae2 Move PythonQueryEditor to top-level components 2025-09-17 21:11:25 +10:00
Romeo Van Snick
36edbab3f3 Remove unused props 2025-09-17 21:10:58 +10:00
Romeo Van Snick
7b2ffce97a Reduce specialization in Transform editor 2025-09-17 21:10:52 +10:00
Romeo Van Snick
68dd3fe87f Remove dead code 2025-09-17 21:10:20 +10:00
Romeo Van Snick
08aca57e82 Rename shared to common 2025-09-17 21:09:43 +10:00
Romeo Van Snick
a5f3577d71 Flatten Python transform page 2025-09-17 21:09:43 +10:00
Romeo Van Snick
c0b1ce6763 Move script rewriter to utils 2025-09-17 21:09:42 +10:00
Romeo Van Snick
9c2a8da244 Rename PythonEditor to PythonQueryEditor 2025-09-17 21:09:42 +10:00
Romeo Van Snick
d5c2d719b2 Remove unused props 2025-09-17 21:09:42 +10:00
Romeo Van Snick
25e16b10eb Handle json-line output 2025-09-17 21:09:42 +10:00
Romeo Van Snick
af38cff267 Use normal title case 2025-09-17 21:09:31 +10:00
Uladzimir Havenchyk
323e6f3823 chore: drop unused files (#63500) 2025-09-17 13:29:30 +03:00
Nicola Mometto
9d76366f07 Changes from cherry-pick branch 2025-09-17 10:03:49 +01:00
Timofey Kachalov
b5b9bad486 Add the better handling of the missing enterprise token for Sample Apps e2e (#63573) 2025-09-17 11:51:20 +04:00
Thomas Schmidt
7f4cb813c2 Adjust legacy sql generation button to toggle Metabot chat (#63554)
* Adjust legacy sql generation button to toggle Metabot chat

* Change placeholder text
2025-09-17 07:01:08 +00:00
Oleksandr Solovyov
068f460124 [metabot] tool_calls should be a vector (#63579)
Co-authored-by: Noah Moss <32746338+noahmoss@users.noreply.github.com>
2025-09-17 09:09:28 +03:00
Oleksandr Solovyov
50e10ee9c2 enable metabot stats and prevent recursive token checks (#63574) 2025-09-17 09:09:06 +03:00
Cam Saul
4d54129a72 viz-settings middleware => Lib (#63597) 2025-09-16 22:32:46 -07:00
Cam Saul
3d2789c2f1 Fix #63571 (#63595) 2025-09-16 20:31:19 -07:00
Ryan Laurie
2e4c39904e Handle when tags are not defined (#63588)
Co-authored-by: Fraser <fraser@metabase.com>
2025-09-17 00:29:57 +00:00
Alexander Polyankin
0911bbe3b3 Simplify state management and fix the flicker with the transform run button (#63586)r
* Fix optimistic updates with transforms

* Fix optimistic updates with transforms
2025-09-16 18:49:37 -04:00
Luis Paolini
e08969edd9 Document password handling for special characters (#63590)
* Document password handling for special characters

* Add section on special character passwords in MariaDB

Added information about handling passwords with special characters in MariaDB connection strings.

* Apply suggestions from code review

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

* Update docs/databases/connections/mysql.md

---------

Co-authored-by: Alex Yarosh <alexandra@metabase.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2025-09-16 19:22:14 -03:00
Aleksandr Lesnenko
b5942d4f36 respect decimals setting when compact formatting is enabled (#63457) 2025-09-16 17:54:07 -04:00
Alex Yarosh
914d56b2c0 docs: transforms draft (#63594)
* skeleton

* transforms

* privileges

* Apply suggestions from code review

Co-authored-by: Jeff Bruemmer <jeff.bruemmer@gmail.com>

* edits

---------

Co-authored-by: Jeff Bruemmer <jeff.bruemmer@gmail.com>
2025-09-16 21:53:21 +00:00
Anton Kulyk
035be556eb Improve the look and feel of charts in dashboards (#62610)
* Fix vertical legend position for cartesian charts

* Set dashcard title font size to 14px

* Decrease legend dot size

* Decrease value labels density for cartesian charts

* Use normal font weight for axis names, labels, etc

* Make y axis split lines solid vs dashed

* Show scalar card title in dashcard header

* Always show pie chart total

* Hide axis names on small dashcards

* Update screenshots

* Fix tests

* Fix number cards font size

* Fix hiding cartesian chart axis

* Fix font styles in other legend components

* Fix e2e tests

* Hide cartesian chart axes independently

* Use different legend style only in dashboards

* Apply min spacing to labels per series

* Fix legend dot size in edit mode

* Update label sizes for funnels and sankey charts

* Use bold font for data labels

* Update screenshots

* prettier

* Update Loki Snapshots

---------

Co-authored-by: Metabase Automation <github-automation@metabase.com>
2025-09-16 21:09:38 +00:00
Cam Saul
1919a6cd62 Trivial middleware, qp.compile, qp.execute => Lib (#63419)
* Trivial preprocessing middleware => Lib

* Handle already-native MBQL 5 queries

* substitute-persisted-query => Lib

* A bunch of post-processing middleware is actually MBQL-5 ready

* Fixx 🔧

* Test fixes 🔧

* More fixes 🔧

* Fix more stuff

* Wow even more test fixes =(

* (Hopefully) final round of test fixes

* Kondo

* More test fixes 🔧

* Fixes 🔧
2025-09-16 22:08:09 +03:00
Jeff Bruemmer
1a16244f86 docs - note on images (#63583) 2025-09-16 13:54:25 -04:00
Nicola Mometto
8bb58b8ed9 insert-from-jsonl test 2025-09-16 18:05:25 +01:00
Nicola Mometto
08496e13ec create/insert table 2025-09-16 17:14:02 +01:00
Nicola Mometto
f3ccf8fb12 kondo 2025-09-16 17:14:02 +01:00
Nicola Mometto
3e45ec2456 add type->database-type unit tests 2025-09-16 17:14:02 +01:00
Nicola Mometto
dc0f77f702 update changelog 2025-09-16 16:49:22 +01:00
Nicola Mometto
2a4ef82f04 cherry pick driver code 2025-09-16 16:42:00 +01:00
Alexander Polyankin
ea5b0d4a9e Make description input in transforms bigger (#63541) 2025-09-16 15:13:57 +00:00
Nicola Mometto
c3fcb6c4f1 snowflake test 2025-09-16 15:54:46 +01:00
Nicola Mometto
8efca18157 text fallback 2025-09-16 15:54:34 +01:00
Dan Stone
5fa08ec51a Fix regression where we lost ex-message at end of logs
Test case extended, subsequence was convenient for now
could instead respecify test cases using regex to deal with intermediate
messages
2025-09-16 15:44:50 +01:00
Ryan Laurie
b84b11532e skip broken about e2e test (#63572) 2025-09-16 08:07:07 -06:00
Oleksandr Solovyov
5e3968f517 report date for metabot usage info to HM (#63560)
* report date for metabot usage info to HM

* disable metabot stats to resurrect stats
2025-09-16 16:45:11 +03:00
Jeff Bruemmer
1b2ebb4fd7 docs - clarify webhook permissions (#63567)
* update webhook docs

* summary

* more perms
2025-09-16 09:30:17 -04:00
github-automation-metabase
d888aa8ee1 Update generated docs (master) (#63542)
Co-authored-by: github-actions <github-actions@github.com>
2025-09-16 09:01:00 -04:00
Nicola Mometto
c5f626609a fix clickhouse rename-tables 2025-09-16 13:56:22 +01:00
Nicola Mometto
b36868cd08 safeguard 2025-09-16 13:37:49 +01:00
Nicola Mometto
6be338e592 test fixes 2025-09-16 13:34:02 +01:00
Nicola Mometto
7f6fb642db more test refactoring 2025-09-16 13:22:48 +01:00
Nicola Mometto
3bd98820b8 refactoring 2025-09-16 13:17:31 +01:00
Nicola Mometto
6186daa722 remove dead test 2025-09-16 13:17:31 +01:00
Nicola Mometto
4f810f2195 chore: mysql reduce precision for non-representable types 2025-09-16 13:17:31 +01:00
Nicola Mometto
2138b76093 default to type/Text if no type present 2025-09-16 13:17:31 +01:00
Nicola Mometto
096b6ae885 create resulting table 2025-09-16 13:17:31 +01:00
Nicola Mometto
c7c2471b20 fixes for postgres arrays 2025-09-16 13:17:31 +01:00
Nicola Mometto
c4423114c7 more test 2025-09-16 13:17:31 +01:00
Ngoc Khuat
51016ac69a lots of test fixes 2025-09-16 18:52:15 +07:00
Ngoc Khuat
7aa3f7fed1 Send pulse skip legacy alerts (#63497) 2025-09-16 11:44:43 +00:00
Ngoc Khuat
b54256b448 our own settings 2025-09-16 18:24:44 +07:00
Phoomparin Mano
be673c4771 Unskip and fix flaky locale test for embedded analytics js (#63518) 2025-09-16 18:05:54 +07:00
Dan Stone
6c461c2e2a Factor out python specific api tests (#63552)
* Factor out python specific api tests

* Kondo
2025-09-16 11:21:53 +01:00
Fraser
41db01c5e2 Unskip About page e2e test (#63538) 2025-09-16 22:19:55 +12:00
Oleksandr Solovyov
b0299c474d fix metabot token count query (#63556) 2025-09-16 13:04:04 +03:00
Chris Truter
c2e93f408e The least encapsulated module of all time 2025-09-16 12:01:49 +02:00
Chris Truter
a4ea8c5e8e Fixing linters 2025-09-16 11:58:29 +02:00
Chris Truter
36df56509a Remove hacky script tester API and some shadowed code 2025-09-16 11:48:21 +02:00
Ngoc Khuat
f48349a46a Merge branch 'master' into proj-python/s01e04 2025-09-16 16:33:16 +07:00
Ngoc Khuat
3275cb9a44 Driver table CRUD to skip QP (#63427) 2025-09-16 09:10:17 +00:00
lbrdnk
e7b70ba03f :metabase-search/semantic-fallback-results-usage (#63442) 2025-09-16 11:00:09 +02:00
Ngoc Khuat
9d0c57d594 use new feature flag for python transform tests 2025-09-16 15:28:07 +07:00
Ngoc Khuat
0d777beb36 fix mixing imports from old modules 2025-09-16 15:28:07 +07:00
Dan Stone
e566259f01 Fix logging regression / test breakage 2025-09-16 09:27:04 +01:00
Jakub Chodorowicz
25adbcfee8 Adjust label spacing in the db form (#63499)
# Conflicts:
#	frontend/src/metabase/databases/components/DatabaseEngineField/DatabaseEngineSelect.tsx
2025-09-16 10:24:52 +02:00
Dan Stone
7c905eea0a Shorter name for sleep variable 2025-09-16 09:24:49 +01:00
Dan Stone
43428da019 Indentation 2025-09-16 09:24:20 +01:00
Dan Stone
fdb337e991 Remove dev time comment 2025-09-16 09:24:03 +01:00
Dan Stone
c8374c760c Remove dead code 2025-09-16 09:19:30 +01:00
Timofey Kachalov
94b90013cb refactor(sdk): Replase Zod with Yup for SDK bundle schema validation (#63489) 2025-09-16 10:34:39 +04:00
Oleksandr Solovyov
065d6ce5aa Store Metabot conversation history with token usage and report it to HM (#63073) 2025-09-16 09:02:01 +03:00
Romeo Van Snick
2ce5dc4e46 Native editor sidebar for transforms (#63287)
* Swap cancel and save button

* Render sidebar in native query editor for transforms

* use toggleSnippetSidebar from props

* Fix snippets sidebar

* Export SelectionRange

* Add aria label for data reference button

* Open database on mount

* Add aria-label to snippets button

* Add e2e tests for sidebar in SQL transforms

* Rename prop for clarity

* Return instead of throwing

* Use Lib.rawNativeQuery

* Pass selected text to native editor

* Fix types

* Move longer handlers to hooks in utils

* Handle empty text and reshuffle code
2025-09-16 15:36:49 +10:00
Aleksandr Lesnenko
5b450f29aa support value and goal column selection in progress visualization (#62963)
* progress bar: support value and goal column selection

* design feedback

* fix spacing

* BE review

* FE review

* spec
2025-09-16 04:16:13 +00:00
Nathan Voxland
dbc6913076 Reindex has to be async on language change callback (#63531) 2025-09-16 03:27:35 +00:00
Cam Saul
c1a3971ae8 add-implicit-clauses middleware => Lib (#63360)
* add-implicit-clauses middleware => Lib

* Test fixes 🔧

* Some lib.convert fixes from #61398

* Test fixes 🔧

* More test fixes

* Test fixes 🔧

* Handful of test fixes 🔧

* Discourage use of legacy MBQL utils in QP

* Integrate the platinum metadata provider

* Only one failing test left

* Test fix 🔧

* Kondo

* Test fixes 🔧

* Test fix 🔧

* Test fixes 🔧

* Handle legacy pivot viz settings where `base-type` might not be present

* Handle legacy pivot viz settings where `base-type` might not be present

* Handle legacy pivot viz settings where `base-type` might not be present

* Handle legacy pivot viz settings where `base-type` might not be present

* Handle legacy pivot viz settings where `base-type` might not be present

* Handle legacy pivot viz settings where `base-type` might not be present

* Handle legacy pivot viz settings where `base-type` might not be present

* Handle legacy pivot viz settings where `base-type` might not be present

* Handle legacy pivot viz settings where `base-type` might not be present

* Test fix 🔧

* Test fix 🔧

* Kondo

* Test fix

* Test fix 🔧

* Skip failing transforms tests

* Mark failing tests flaky
2025-09-15 19:35:54 -07:00
appleby
319fc114ab Update :bookmarked and :user_recency scorer to work with mysql and mariadb (#63205)
* Update :bookmark scorer to work with mysql and mariadb

* Update :user_recency scorer to work with mysql and mariadb
2025-09-15 18:43:22 -07:00
Alexander Polyankin
c456cb5a6f Disable failing transform tests (#63535) 2025-09-15 22:52:32 +00:00
Fraser
a743c86b25 Enable skipped implicit-join and breakout e2e tests (#63486) 2025-09-16 10:50:36 +12:00
Fraser
0348e0b3c3 Remove skipped pie chart label truncation e2e test (#63471) 2025-09-16 10:47:59 +12:00
Fraser
a32eeb88a2 Fix skipped time series binning e2e test (#63428) 2025-09-16 09:37:24 +12:00
Fraser
7ad5cdac94 Fix skipped notebook info popoever e2e tests (#63487) 2025-09-16 09:37:07 +12:00
Phoomparin Mano
0aa42f596f Integration branch for Embedding Hub (#62986)
* Setup sidebar and onboarding page for embedding hub (#62517)

* Add the add data and new dashboard modals to embedding hub (#62528)

* mark sandboxed step as done (#62758)

* Auto-mark 'secure your embeds' step as done when either JWT or SAML is configured (#62736)

Co-authored-by: Nicolò Pretto <info@npretto.com>

* Add UTM tags to documentation links in the embedding hub (#62747)

* Add a wizard to select a table to x-ray in embedding hub (#62715)

* Mark the create embed steps in embedding hub as done from embed flow (#62759)

* Add a dropdown to switch embedding solutions in embedding hub (#62870)

* fix(embed-hub): adds key prop to component passed to jt (#63060)

* feat(embed-hub): checklist endpoint (#62875)

* feat(embed-hub): EMB-770 and EMB-742, add checklist endpoint with
'create-dashboard'

* feat(embed-hub): EMB-740 auto mark "Add data" as done

* Revert "mark sandboxed step as done (#62758)"

This reverts commit be775aceed.

* feat(embed-hub): EMB-768 move sandbox check to the BE

* EMB-772: move all "done" checks on the be, move endpoints to ee

* cleanup

fmt

configure enterprise module to make linting pass

test: activate license to make e2e tests pass again

remove fe unit test now that all the logic is on the be

add doc to the endpoint to maybe the tests will pass?

whitespace?

fixes

idk anymore how to make all the linters be happy

last try

refactor has-configured-sso to a function

revert  visibility to see if tests pass

sort config.edn

* tests: remove cy.wait from embed hub tests (#63066)

* Bit of cleanup

- remove warn-on-reflection; there is no interop
- clean up a bit of duplication in sql clause generation
- remove unncessary try/catch around t2 access
- remove a few boolean calls on boolean functions

---------

Co-authored-by: dan sutton <dan@dpsutton.com>

* fix(embed-js): disable the next button when embedded js is disabled (#63134)

* Replace the accordion in embedding hub with steppers (#63271)

* Move embedding settings into its own top-level menu (#63339)

* Add related setting cards to modular embedding and setup guide (#63340)

* Remove the Embed menu from the New menu (#63385)

* Completing later steps on embedding hub should not tick off the former steps (#63393)

* Modular embedding toggle label should depend on toggle states (#63391)

* Add the interactive embedding upsell to the settings page (#63399)

* Lock embed in production step in embedding hub checklist until sso configured (#63449)

* Use ee plugins to check if embedding is enabled in nav (#63446)

* Check for CSV uploads in embedding-hub checklist endpoint (#63501)

* update embedded-analytics-js.md to have consistent quickstart pages

---------

Co-authored-by: Nicolò Pretto <info@npretto.com>
Co-authored-by: dan sutton <dan@dpsutton.com>
Co-authored-by: Alexander Polyankin <alexander.polyankin@metabase.com>
2025-09-15 22:27:57 +01:00
Chris Truter
74bb4fe4f6 Send token auth header (#63532) 2025-09-15 22:56:11 +02:00
Brad Anderson
dd68df30c9 Fix: UXW-683 Saving document resets undo history (#63462)
Fixes issue where undo history is deleted on save. Also fixes issue where CommentsSidesheet stays open (big unclosable grey box) when navigating to a different document when it was open.
2025-09-15 16:19:52 -04:00
Jeff Bruemmer
af495f2ff3 elaborate on privacy (#63524) 2025-09-15 14:46:39 -04:00
Alexander Polyankin
c343eaa0a3 Fix flaky transform tests (#63523) 2025-09-15 14:36:33 -04:00
Nicola Mometto
b36b3d8560 fix: no json for maria 2025-09-15 17:36:29 +01:00
Nicola Mometto
e35f7b54b3 mongo 2025-09-15 17:36:29 +01:00
Ngoc Khuat
29c013a78a Add rename-tables! driver method (#63302) 2025-09-15 16:36:13 +00:00
Chris Truter
fdb1eb9e8b Fix lints in python_runner_test 2025-09-15 18:20:47 +02:00
Chris Truter
9a14667493 Fix another test 2025-09-15 18:18:31 +02:00
Chris Truter
c8919412a3 Fix a test - marking a regression? 2025-09-15 18:13:12 +02:00
Chris Truter
cf2ef23e8f Unique run ids 2025-09-15 18:12:57 +02:00
Alexander Polyankin
a85675ef2a Fix some transform flaky tests (#63517) 2025-09-15 12:00:00 -04:00
Ngoc Khuat
663374b067 fix import on test 2025-09-15 22:56:19 +07:00
Chris Truter
ba92a1150a Bump submodule 2025-09-15 17:55:38 +02:00
Nicola Mometto
cdf95855c3 bump 2025-09-15 16:52:13 +01:00
Nicola Mometto
e69d8882ed fix: bad rebase 2025-09-15 16:51:37 +01:00
Chris Truter
9050c12b6c Fix resolution path after module move 2025-09-15 17:47:33 +02:00
Ngoc Khuat
a278a27ef1 feature check for python db too 2025-09-15 22:45:35 +07:00
Nicola Mometto
a889243fcb bump python runner 2025-09-15 16:42:42 +01:00
Chris Truter
3bd6ef4e5b Fix submodule reference 2025-09-15 17:40:33 +02:00
Chris Truter
b03ffdf1e2 Don't swallow /cancel responses. Small fixes. 2025-09-15 17:38:24 +02:00
Chris Truter
92ab4507e8 Note two routes in the wrong place 2025-09-15 17:37:46 +02:00
Nicola Mometto
8067a89464 python transforms matrix test (#63495)
* tests

* cleanup unused tests for now

* fix for missing dtypes
2025-09-15 16:37:30 +01:00
Ngoc Khuat
2b88496689 fix case where transform have target db is not the same with source db 2025-09-15 22:29:14 +07:00
Alexander Polyankin
8c1582e601 Fix metrics stats in anonymous tracking (#63507) 2025-09-15 15:28:29 +00:00
Nicola Mometto
3394ee6a66 add string->val 2025-09-15 16:25:26 +01:00
Nicola Mometto
8f65216db5 remove debug 2025-09-15 16:25:23 +01:00
Jakub Chodorowicz
a7eacc1c96 PRG-138 fix mongo and sql server YAML setup (#63496)
* Move sqlserver description to extra info tooltip

* Fix mongo additional-options not appearing in advanced-options section

# Conflicts:
#	e2e/test/scenarios/admin/databases.cy.spec.js
2025-09-15 17:21:10 +02:00
Jakub Chodorowicz
6ab20070a4 PRG-137 add engine icons (#63491)
* Add new DB engine icons, add icon to regular add DB flow

* Refactor old export style

* update h2 icon

* Fix layout of browse databases cards

* Adjust padding of browse databases cards

* Remove empty comment

* Render default db icon in case of empty engine key
2025-09-15 17:18:18 +02:00
Chris Truter
9ac0b94414 Less verbose name 2025-09-15 17:11:33 +02:00
Chris Truter
d2998fad92 Differentiate read and write durations 2025-09-15 17:11:06 +02:00
Chris Truter
f92d9914e4 Trim some fat 2025-09-15 17:07:05 +02:00
Ngoc Khuat
7bbd95fe3e transforms python module (#63503) 2025-09-15 21:37:54 +07:00
Alexander Polyankin
7bc2093651 Ignore new flaky transform tests until they are fixed (#63516) 2025-09-15 08:34:04 -06:00
Dan Stone
28a9104b27 Docstring tweak 2025-09-15 15:28:06 +01:00
Alexander Polyankin
fa9d4ad2a4 Make RTK queries populate metadata created by the getMetadata selector without using the entity framework (#63262) 2025-09-15 10:19:48 -04:00
Dan Stone
65231151b3 Logs pass 1 (#63384)
* Fix bad variable name

* Ensure logs are not lost for certain kinds of error

Step change:
- reduced number of unique error handling / redundant paths
- prefer a custom error message if provided in ex-info during error
handling
- improved documentation, names

* Fix bad debug format string

* Add tests for log behaviour

* Kondo
2025-09-15 15:08:13 +01:00
metamben
ea74e4e1dc Fall back to DESCRIBE if Athena JDBC reports duplicate column names (#63452)
* Fall back to DESCRIBE if Athena JDBC reports duplicate column names

* Make test fail another way

* Fix test

* Verify that the hijacked function gets called
2025-09-15 10:51:27 -03:00
Chris Truter
212595564e Cleaning up 2025-09-15 15:35:37 +02:00
Nicola Mometto
314633b3cf stop parsing dtype, driver fixes 2025-09-15 13:56:01 +01:00
Fraser
1920cc924c Delete old skipped test (#63372) 2025-09-15 21:49:49 +12:00
Nicola Mometto
7d595c03d1 feat: update rename-table! impls to rename-tables!* 2025-09-15 10:39:25 +01:00
Nicola Mometto
b6e9f3f0df dead code 2025-09-15 10:33:09 +01:00
Nicola Mometto
36413f0c35 Merge remote-tracking branch 'origin/master' into proj-python/s01e04 2025-09-15 10:28:05 +01:00
Nicola Mometto
3214a98103 Python jsonl (#63437)
* feat: jsonl

* bump
2025-09-15 10:15:34 +01:00
Sébastien
df7ba12468 Closes EMB-791 custom pivot column title not being translated (#63436) 2025-09-15 10:23:13 +02:00
Romeo Van Snick
35f9175eb0 Hide empty breakout step in readonly notebook (#63367) 2025-09-15 14:28:50 +10:00
Fraser
eeab38518a Remove skipped Metabase Cloud e2e tests (#63417) 2025-09-15 10:57:54 +12:00
Fraser
bc7d55b0dd Remove field filter popover cutoff e2e test (#63418) 2025-09-15 10:57:25 +12:00
Alexander Polyankin
c5b5970b77 Handle legacy viz settings where base-type might not be present (#63468) 2025-09-13 02:14:00 +00:00
Nathan Voxland
c8982e0d1d Fixed lint error (#63460) 2025-09-12 21:42:48 +00:00
Aleksandr Lesnenko
3477b876a2 fix trend chart month cut off (#63453) 2025-09-12 21:08:21 +00:00
Alexander Polyankin
63a60230f1 Migrate the Revision entity to RTK query (#63440) 2025-09-12 17:08:12 -04:00
Jeff Bruemmer
b9838f7cf7 docs - embedding chat (#63259) 2025-09-12 16:32:36 -04:00
Nathan Voxland
c024186f79 Search Indexing Improvements (#63099) 2025-09-12 15:01:39 -05:00
Cam Saul
acbff0c969 ℳℯ𝓉𝒶𝒹𝒶𝓉𝒶 𝒫𝓇ℴ𝓋𝒾𝒹ℯ𝓇 𝒫𝓁𝒶𝓉𝒾𝓃𝓊𝓂 ℰ𝒹𝒾𝓉𝒾ℴ𝓃 (#63368)
* Metadata Provider Platinum Edition

* Revert some formatting changes

* Revert changes to QP tests

* Revert NOCOMMIT changes

* Fix missing ns alias

* Pull in missing changes from other branches

* Misc fixes and changes

* Fixes

* Fix bugs in JVM metadatas

* Fix composed provider not propagating inactive

* JS fixes 🔧

* Test fix 🔧

* Test fixes 🔧

* Test fixes 🔧

* Another JS test fix 🔧

* More FE fixes 🔧

* Don't be too strict

* Set database

* Fix merge conflict

* Fix kondo

---------

Co-authored-by: Alexander Polyankin <alexander.polyankin@metabase.com>
2025-09-12 18:46:03 +00:00
Jeff Bruemmer
75d56ef281 docs - rename file (#63451)
* rename file

* links
2025-09-12 18:20:26 +00:00
Jeff Bruemmer
d2b1aadf84 docs - docs (#63413) 2025-09-12 13:49:04 -04:00
Ryan Laurie
f07baad1f8 add environment var to disable embedding builds (#63441) 2025-09-12 10:40:59 -06:00
Cam Saul
eecf97f077 Sandboxing middleware => Lib (#63321)
* Sandboxing middleware => Lib

* Test fix 🔧

* Remove some unused stuff

* rename `row-level-restricitions` middleware => `sandboxing`

* Remove TODO

* :model/GroupTableAccessPolicy => :model/Sandbox

* Test fixes 🔧

* Test fix and mark more stuff deprecated

* Test and Kondo fixes 🔧

* "Fix" sandboxes with extra columns because I don't want to update e2e tests

* cljfmt
2025-09-12 09:34:57 -07:00
Alex Yarosh
4768c58a01 docs - add modular embedding to securing embeds (#63444)
* docs - add modular embedding

Also adjust headers a bit because ToC is difficult to scan

* Update docs/embedding/securing-embeds.md

* Update docs/embedding/securing-embeds.md
2025-09-12 16:16:44 +00:00
github-automation-metabase
84530c5a58 Update generated docs (master) (#63421)
Co-authored-by: github-actions <github-actions@github.com>
2025-09-12 12:16:07 -04:00
Ryan Laurie
0d1522742e Make question moving errors bubble correctly (#63409)
* make sure errors bubble correctly

* e2e tests

* fix test
2025-09-12 09:48:37 -06:00
Brad Anderson
2fcecd5de8 Fix: UXW-606 Bookmark drag and drop handle shown when there's nothing to rearrange (#63358)
* UXW-606 Hides bookmark drag handle when there's only one bookmark

* UXW-606 Adds unit tests
2025-09-12 10:25:58 -04:00
Riley Thompson
9164ad955e Disable transforms when db routing is enabled (#63402)
* disable transforms with routing

* disable selecting dbs with routing enabled
2025-09-12 09:32:35 -04:00
Ngoc Khuat
dae2fe7378 Atomically swapping tables for python transform (#63292) 2025-09-12 20:29:39 +07:00
Sébastien
293120750e Closes EMB-792 dashcard title and description translation (#63432) 2025-09-12 14:26:59 +02:00
Anton Kulyk
b8b61d0647 Update "Customize Homepage" modal UI (#62280)
* Update "Customize Homepage" modal UI

* Update tests

* Reset selected dashboard on "Cancel" btn click

* Fix button name in test
2025-09-12 13:23:08 +01:00
Anton Kulyk
e4744ae67f Always use "public" schema for x-rays if it exists (#62285)
* Always use "public" schema for x-rays if it exists

* Handle null schema

* Fix type error
2025-09-12 13:13:00 +01:00
Ngoc Khuat
a2dd096507 Python library APIs (#63378)
Co-authored-by: Romeo Van Snick <romeo@romeovansnick.be>
2025-09-12 18:44:49 +07:00
Nicola Mometto
2f5655beec fix 2025-09-12 12:28:51 +01:00
Nicola Mometto
3a23ad9566 docstrings 2025-09-12 11:15:41 +01:00
Nicola Mometto
577c760848 feat: move driver-specific hacks during preprocessing 2025-09-12 10:55:02 +01:00
Chris Truter
2a19738f66 Upgrade to latest python-runner 2025-09-12 11:02:40 +02:00
Nemanja Glumac
aa59dca84e Make "database" the first option in the "Add data" modal (#63412) 2025-09-12 10:52:22 +02:00
Cam Saul
5f5b2f6d07 Minor lib.convert fixes (#63401)
* Some lib.convert fixes from #61398

* Fix conversion of :dimension pseudo-clauses

* cljfmt
2025-09-11 20:12:13 -07:00
Cam Saul
40420f8d44 Test to confirm #63261 is fixed in master (#63414) 2025-09-12 03:11:34 +00:00
Cam Saul
34bddeb931 Normalize horribly broken fingerprints (#63407)
* Normalize horribly broken fingerprints

* Handle nil fingerprints
2025-09-12 03:02:09 +00:00
github-automation-metabase
16daec0315 Bump com.github.seancorfield/next.jdbc from 1.3.1048 to 1.3.1070 (#63220)
Inspect dependency changes here: https://github.com/seancorfield/next-jdbc/blob/v1.3.1070/CHANGELOG.md
2025-09-12 02:38:10 +00:00
github-automation-metabase
5caa919d59 Bump nrepl/nrepl from 1.3.1 to 1.4.0 (#63222)
Inspect dependency changes here: https://github.com/nrepl/nrepl/blob/v1.4.0/CHANGELOG.md
2025-09-12 02:22:22 +00:00
github-automation-metabase
69bda6feef Bump babashka/fs from 0.5.26 to 0.5.27 (#63216)
Inspect dependency changes here: https://github.com/babashka/fs/blob/v0.5.27/CHANGELOG.md
2025-09-12 02:18:39 +00:00
github-automation-metabase
cb1c25d58b Bump io.github.metabase/hawk from 1.0.11 to 1.0.12 (#63221)
Inspect dependency changes here:
2025-09-12 02:12:07 +00:00
Anderson
d998df052e [PRG-114] Show help & more specific error message when a database connection fails (#62956)
* Implement new DatabaseFormError component & break DatabaseForm component down

* Implement scrolling actions / Avoid 'div in p' console error

* Fix typing check issues / Add 'Read the docs' link url

* Define 'invite teammate' and 'contact support' urls

* add more tests / further refactoring

* css tweaks

* Simplify tests a bit

* Remove comment / Fix translation cases

* Refactor tests

* Adjust 'Check Host and Port settings' button / Fix css lint

* Fix test

* Add target=_blank to doc links / Use existing color for the error container border

* Use cloud-gateway-ips setting when showing IPs to whitelist / Move some helpers to a local utils.tsx

* Use 'be.visible' over 'exist' in cypress test

* Use useDisclosure

* Make Alert title have dark text color by default / Add storybook case to show warning color variant
2025-09-11 22:07:06 -03:00
Fraser
ce15cfeea9 Mark pagination test as flaky (#63328) 2025-09-12 10:54:50 +12:00
Nicola Mometto
c6f0ec1dcf reintroduce fix for floats on bigquery
Closes QUE-2444
2025-09-11 23:09:07 +01:00
Ryan Laurie
a10afa8256 Deprecate old Alert (#63408) 2025-09-11 21:22:34 +00:00
Alex Yarosh
daca8d6c4e docs: translations are case-insensitive (#63383)
* docs: translations are case-insensitive

* Update docs/embedding/translations.md

Co-authored-by: Jeff Bruemmer <jeff.bruemmer@gmail.com>

* Add localization details for embedded Metabase

Added section on localizing embedded Metabase.

---------

Co-authored-by: Jeff Bruemmer <jeff.bruemmer@gmail.com>
2025-09-11 17:09:35 +00:00
Timothy S. Dean
80d6389e6e Handle mixed catalog table errors in Trino sync (#63356)
Trino's Hive plugin shows the tables in question in its metadata, but if you try to get a handle on these tables, it will always throw an exception with error code `UNSUPPORTED_TABLE_TYPE`. The Iceberg plugin has a similar exception for such circumstances.

For us, there doesn't seem to be much difference between not being able to query a table because it's an unsupported type and not being able to query because we don't have permissions, so`have-select-privilege?` is modified to return false in these cases. We can examine the vendor-specific error code on the SQLException to detect them.
2025-09-11 09:53:04 -06:00
Kamil Mielnik
7f723a20de Document Comments (#62800)
* Update Start new thread UI

* Refactor

* Lint migrations

* Lint migrations

* Lint

* Fix comments count

* Thread submit input improvements

* Align 'Start new thread' button

* mention metabase entities

* Stupid link copying

* Deep linking to comments

* fix: sidebar style improvements

* Fix line breaking bug on submit

* Maz Comments styling tweaks (#62964)

* add tabs hiding/showing logic

* only show persistent button for open comments

* move comment buttons to the right

* attempt to fix tests

* always display the add-a-comment input in the sidebar

* Remove unused attr

* Placeholders without flags

* Refactor comments' tabs markup

* Refactor CommentsMenu

---------

Co-authored-by: Kamil Mielnik <kamil@kamilmielnik.com>
Co-authored-by: Stas Gavrylov <stasgavrylov@gmail.com>

* Fix incorrect counter for unresolved comments

* Fix warning

* Fix key warning in Discussions

* Make document read-only when comments sidebar is open

* Refactor URL generation

* Automatically open correct tab for the comment targeted by URL hash

* Clean up

* Use createPortal instead of Portal from metabase/ui to fix CommentsMenu appearing above CommentsSidesheet when visiting a specific comment via URL

* Remove more/less feature

* Set max-height when editing comments, fix scrolling area

* Extra padding

* Make it possible to mention yourself

* Add ability to resolve deleted threads

* Remove ability to comment on resolved threads

* Remove ability to add new comments on Resolved tab

* allow using @ character without showing mention list

* Fix type errors

* Fix types

* Resolve/unresolve deleted comments

* Remove DocumentContext

* Fix inserting mentions on Enter press

* Minor styling fixes for mentions

* Remove unused endpoint

* Clean up

* Remove unused component

* Remove stories

* Fix storybook

* Remove TODO

* Remove unused file

* Remove outdated comment

* Avoid cast

* Remove redundant code

* Deal with any

* Don't trim empty nodes

* Simplify Discussions component

* Align avatar, submit button and code editor

* Do not show last divider if not necessary

* Get rid of currentIndex

* Fix typo

* Remove hack

* Check only unresolved comments when deciding whether to autofocus comment editor when sidebar opens

* Enable inline_code styling in comments

* Rename css file

* Fix cast

* Use top instead of transform

* Use a flag

* Remove commented-out code

* Move getCommentsUrl to utils

* Use Menu

* Add Avatar to metabase/ui

* Bring back accidentally removed code

* Resolve CSS duplication

* Use void

* Add comment

* Add all comments sidebar

* Use createSelector

* Fix no results styling

* Autofocus editor when editing comments

* Disable menu when editing is disabled

* Add a toast when copying the link

* Prevent deleting and editing someone else's comments

* Fix types

* Update copy

* Cleanup all comments sidebar

* Extract isMetabotBlock

* Use CustomStarterKit

* Copy

* feat: add Emoji picker (#62991)

* feat: add Emoji picker

* fix: styles

* fix: class for loading label

* Add ability to inline emojis in CommentEditor

* fix: keyboard events for emoji picker

* fix: focus visible for emoji picker viewport

* Implement proper keyboard support for inline emojis

* Temporarily hide emoji reaction button

* Improve UX around selecting first emoji

---------

Co-authored-by: Stas Gavrylov <stasgavrylov@gmail.com>

* Pass editable

* Use mentions plugin

* Fix z-index

* Add reactions BE

* Improve list paddings

* Add users support to SmartLink and MentionExtension

* Remove old mentions

* use semantic colors for Avatar

similar logic to what do for users in admin

* show add comment input when we switch from resolved tab

* Limit number of user results

* feat: add comment reactions (#63072)

* feat: add comment reactions

* fix: typescript

* fix: click to react

* fix: styling

* tweak spacing between replies (#63100)

* fix: reply styles

* Update submit shortcut to Cmd-Enter. Fix emoji picking behavior

* fix: do not close discussion sidesheet on some escape events

* fix: cancel editing on escape press

* Make DocumentPage 400px narrower when comments modal is opened

* Extract shared tiptap-related code

* Move EmojiPicker to common/components

* Fix DiscussionComment error when creator is null

* Fix missing formatting menu in CommentEditor

* Add tests boilerplate

* Allow many reactions on a comment

* Hydrate creator info on deleted comments

* Add first test and helpers

* Add tests for more types of nodes

* Add comment

* Improve test name

* Test highlighting

* Add test for splitting paragraphs

* fix: blur comment editor on submit

* Add schema upgrade test

* Add test for creating comments and threads

* Add tests for deleting comments

* Editing a comment

* Test for Esc

* fix: limit editable functionality and add comment styles (#63161)

* Fix test

* Update test

* Fix flaky test

* Fix tooltip

* fix: do not react on deleted comments

* fix: show resolved threads

* fix duplicate replies display

* Add mentions tests

* Make suggestions taller to accommodate users search results without a vertical scrollbar

* don't count deleted comments for the comment badge

* don't show threads if all comments deleted

* Add emoji tests

* fix: can react true by default

* Fix floating menu positioning in CommentEditor

* fix document / menu selected item styling

* Sort comment reactions by created_at ASC

* Make Esc close emoji popup

* first pass at comments api

* Fix reactions ascending order

* WIP

* fix linting

* model resolution

* update test setup to include _id, so equality check works correctly

* replace is_deleted with deleted_at to detect deleted comments

* fix types

* remove ?new=true from url after adding a new comment

* Fix tests

* Improve arrow navigation when emoji popup is opened. Allow selecting with Tab

* Add test

* Refactor

* Update test

* Fix emoji popup Esc handler removal

* Add formatting tests

* Rename test

* Add e2e API helpers to create and delete comments

* Update test name

* Refactor

* Fix types

* update is not deleted eh

* Add test for the comment button

* Add test

* Add a test

* Add test

* test: basic resolve/unresolve tests (#63243)

* test: add resolve other person thread test

* Add test for disabling document editing when comments are open

* Add test for unsaved document changes

* Add test for show all comments button and fix the issue

* Add tests for deleting/editing other people's comments

* Add e2e tests for comment links

* add e2e tests for all comments

* way better/less verbose permission checks

* test: cannot reply to resolved threads

* ESLint

* Update assertion

* Fix unresolved comments count

* e2e tests for comments reactions

* first iteration of notifications

* fix migration lint errors

* fix module tests

* Add label attribute for SmartLinks to simplify server-side notifications rendering

* add e2e test for removing ?new=true after creating a comment

* Fix

* fix clj syntax

* Remove commented-out code

* Use H.readClipboard()

* Refactor

* Update reaction icon

* Move util

* Lint

* Fix

* Lift conditional rendering, move Reaction component to a separate file

* Refactor

* Do not render invalid links

* Refactor

* Update new comment notification template

* add e2e test for top blocks

* fix: comment date to respect browser locale

* Update reactions icon

* Add 1st test for email subscriptions

* Update email template to match figma, remove the comment content

* Add document icon to email template

* Update test

* Remove protocol from the link

* Extract verifyEmail helper

* fix migrations because mysql is majorly unhappy about those rollbacks

* correct urls for comments, notifications on mentions

* Update assertion

* Insert both comment URL and document URL into the email template

* Fix url

* fix copy tests

* Add a setup for next test

* Implement assertions

* 2nd email variant

* Add another test

* Add an assertion

* add more tests for email template

* Ignore whitespace

* Error handling for mutations - toasts

* add more tests

* feedback: drop blue border from paragraph

* feedback: placeholder

* fix e2e test to pass

* Update setup

* Comments design polish (#63352)

* use new Send icon instead of up_arrow

* remove extra space below a Discussion

* restyle Discussions

* fix CommentEditor spacing

* restyle current user reaction

* only show No Comments message on the All Comments sheet

* add on-hover highlighting for All Comments section

* fix for fe-type-check

* fix test

* Cleanup

---------

Co-authored-by: Kamil Mielnik <kamil@kamilmielnik.com>

* put user permissions check back and new api for mentions

* pagination

* Use new GET /api/ee/comment/mentions in frontend

* Use new GET /api/ee/comment/mentions in smart link node

* paid feature in tests

* seed notifications

* oh

* clj-kondo 🤦

* port numbers

* Try to fix flaky test

* attempt to fix flaky e2e

* disable returning users for mentions

* disable mention related tests

---------

Co-authored-by: Stas Gavrylov <stasgavrylov@gmail.com>
Co-authored-by: Anton Kulyk <kuliks.anton@gmail.com>
Co-authored-by: Konstantin Darutkin <spalt08@mail.ru>
Co-authored-by: Maz Ameli <maz@metabase.com>
Co-authored-by: Uladzimir Havenchyk <uladzimir@metabase.com>
Co-authored-by: Oleksandr Solovyov <o@solovyov.net>
2025-09-11 22:09:54 +07:00
Aleksandr Lesnenko
179d170826 fix question title layout (#63348)
* fix question title layout

* fix dashboards as well
2025-09-11 10:32:34 -04:00
Aleksandr Lesnenko
b263bd0bc0 fix missing tooltip max width (#63353)
* fix missing tooltip max width

* repro
2025-09-11 10:32:25 -04:00
Aleksandr Lesnenko
4e851e0e19 fix date picker month navigation timezone issue (#63366) 2025-09-11 10:32:15 -04:00
Nicola Mometto
dd36cb7eea feat: better insert-from-source abstraction 2025-09-11 15:06:14 +01:00
Braden Shepherdson
8ac41c91d2 [ClickHouse] Fix SQL for equality filters on UUID columns (#62922)
Fixes #62492.

A literal UUID was reaching the driver as
`[:value "uuid-string" {:base_type :type/UUID}]`
but this was not recognized as a UUID-valued field because `:value`
clauses have `:base_type` and not `:base-type` like `:field` clauses.

Therefore the `:sql` core driver was rewriting this clause to cast the
UUID field to a string and compare that against the literal string.
With that logic now correctly recognizing such a `:value` clause, the
UUID fields are compared directly. This is much better for indexing,
but also works with *nullable* UUID columns, where the
`CAST(my_uuid AS text)` would cause SQL compilation errors.
2025-09-11 13:59:39 +00:00
1353 changed files with 32379 additions and 15480 deletions

View File

@@ -173,6 +173,7 @@
metabase.driver.sql-jdbc.execute/execute-prepared-statement!
metabase.notification.models/create-notification!
metabase.pulse.send/send-pulse!
metabase-enterprise.transforms-python.python-runner-test/execute!
;; Safe in tests, where we typically use a private, temporary index per thread.
metabase.search.core/reindex!
metabase.util/run-count!
@@ -228,7 +229,7 @@
(clojure.core.logic/fresh)
(clojure.core.logic/matcha)
(clojure.core.logic/run)
(clojure.test/is [query= =? malli= qv=])
(clojure.test/is [=? malli= qv=])
(clojure.tools.macro/macrolet)
instaparse.core/transform
(metabase.server.streaming-response/streaming-response)
@@ -520,6 +521,7 @@
metabase-enterprise.cache.config-test/with-temp-persist-models hooks.common/with-seven-bindings
metabase-enterprise.semantic-search.db.connection/with-migrate-tx hooks.common/let-one-with-optional-value
metabase-enterprise.serialization.test-util/with-temp-dpc hooks.toucan2.tools.with-temp/with-temp
metabase-enterprise.transforms-python.drivers-test/with-test-table hooks.common/with-two-bindings
metabase.api.common.internal-test/with-jetty-server hooks.common/with-one-binding
metabase.api.macros/defendpoint hooks.metabase.api.macros/defendpoint
metabase.app-db.schema-migrations-test.impl/test-migrations hooks.metabase.app-db.schema-migrations-test.impl/test-migrations
@@ -625,7 +627,7 @@
metabase.test/with-temp hooks.toucan2.tools.with-temp/with-temp
metabase.test/with-temp-file hooks.metabase.test.util/with-temp-file
metabase.test/with-temporary-setting-values hooks.metabase.test.util/with-temporary-setting-values
metabase.users.api-test/with-temp-user-email! hooks.common/with-one-binding
metabase.users.api-test/with-temp-user-email! hooks.common/with-one-binding
metabase.util.i18n/deferred-trs hooks.metabase.util.i18n/deferred-trs
metabase.util.i18n/deferred-tru hooks.metabase.util.i18n/deferred-tru
metabase.util.i18n/trs hooks.metabase.util.i18n/trs
@@ -714,13 +716,18 @@
{:pattern "^metabase\\.lib\\..*"
:name metabase-lib-excluding-legacy-mbql}
;;
;; QP source namespaces: `metabase.query-processor.*`, `metabase-enterprise.sandbox.query-processor.*`, and
;; `metabase.driver.*`, excluding `-test` namespaces.
;; QP and driver source namespaces: `metabase.query-processor.*`, `metabase-enterprise.sandbox.query-processor.*`,
;; and `metabase.driver.*`, excluding `-test` namespaces.
;;
{:pattern "metabase(?:(?:(?:-enterprise\\.sandbox)?\\.query-processor\\.)|(?:\\.driver\\.)).*(?<!-test)$"
:name qp-and-driver-source-namespaces}
;;
;; driver namespaces
;; QP source namespaces
;;
{:pattern "metabase(?:(?:-enterprise\\.sandbox)?\\.query-processor\\.).*(?<!-test)$"
:name qp-source-namespaces}
;;
;; driver namespaces, including tests
;;
{:pattern "metabase\\.driver.*$"
:name driver-namespaces}
@@ -762,8 +769,8 @@
source-namespaces
{:linters
{:metabase/validate-escaped-single-quotes-in-i18n {:level :warning}
:metabase/validate-string-or-str-args-to-i18n {:level :warning}
:metabase/discourage-millis-duration {:level :warning}
:metabase/validate-string-or-str-args-to-i18n {:level :warning}
:metabase/discourage-millis-duration {:level :warning}
:discouraged-var
{clojure.core/with-redefs {:message "Don't use with-redefs outside of tests"}
@@ -782,7 +789,7 @@
clojure.string/lower-case {:level :off}
clojure.string/upper-case {:level :off}}}}
;; enable all the extra linters we haven't enabled in the core app yet in MLv2. It's all new code so we can adhere
;; enable all the extra linters we haven't enabled in the core app yet in Lib. It's all new code so we can adhere
;; to the new stricter rules from day 1
metabase-lib
{:linters
@@ -802,19 +809,25 @@
metabase.test/with-temp {:message "Don't use application database inside Lib code"}}
:discouraged-namespace
{metabase.driver {:message "MLv2 code should be independent of driver code/methods"}
metabase.test {:message "MLv2 tests should only use MLv2 test helpers"}
metabase.test.data {:message "MLv2 tests should only use MLv2 test helpers"}
metabase.util.malli.schema {:message "Prefer metabase.lib.schema schemas in MLv2 code"}
toucan.db {:message "Don't use application database inside MLv2 code"}
toucan.models {:message "Don't use application database inside MLv2 code"}
toucan.util.test {:message "Don't use application database inside MLv2 code"}
toucan2.core {:message "Don't use application database inside MLv2 code"}}}}
{metabase.driver {:message "Lib code should be independent of driver code/methods"}
metabase.test {:message "Lib tests should only use Lib test helpers"}
metabase.test.data {:message "Lib tests should only use Lib test helpers"}
metabase.util.malli.schema {:message "Prefer metabase.lib.schema schemas in Lib code"}
toucan.db {:message "Don't use application database inside Lib code"}
toucan.models {:message "Don't use application database inside Lib code"}
toucan.util.test {:message "Don't use application database inside Lib code"}
toucan2.core {:message "Don't use application database inside Lib code"}}}}
metabase-lib-excluding-legacy-mbql
{:linters
{:discouraged-var
{metabase.legacy-mbql.util/unique-name-generator {:message "Use metabase.lib.util/unique-name-generator or non-truncating-unique-name-generator"}}}}
{metabase.legacy-mbql.util/unique-name-generator {:message "Use metabase.lib.util/unique-name-generator or non-truncating-unique-name-generator"}}}
:discouraged-namespace
{metabase.legacy-mbql.js {:message "Avoid legacy MBQL utils in Lib; move things into Lib if needded."}
metabase.legacy-mbql.jvm-util {:message "Avoid legacy MBQL utils in Lib; move things into Lib if needded."}
metabase.legacy-mbql.predicates {:message "Avoid legacy MBQL utils in Lib; move things into Lib if needded."}
metabase.legacy-mbql.util {:message "Avoid legacy MBQL utils in Lib; move things into Lib if needded."}}}
driver-namespaces
{:linters
@@ -831,19 +844,31 @@
{:discouraged-namespace
{metabase.query-processor.store {:level :off}
metabase.util.malli.schema {:message "Prefer metabase.lib.schema or metabase.legacy-mbql.schema schemas in QP/driver code"}
toucan.db {:message "Don't use application database directly in QP code; use QP Store/metadata provider"}
toucan.models {:message "Don't use application database directly in QP code; use QP Store/metadata provider"}
toucan.util.test {:message "Don't use application database directly in QP code; use QP Store/metadata provider"}
toucan2.core {:message "Don't use application database directly in QP code; use QP Store/metadata provider"}}
toucan.db {:message "Don't use application database directly in QP code; use the MetadataProvider"}
toucan.models {:message "Don't use application database directly in QP code; use the MetadataProvider"}
toucan.util.test {:message "Don't use application database directly in QP code; use the MetadataProvider"}
toucan2.core {:message "Don't use application database directly in QP code; use the MetadataProvider"}}
:discouraged-var
{medley.core/map-keys {:message "Use metabase.util.performance/update-keys"}
medley.core/map-vals {:message "Use clojure.core/update-vals"}
metabase.app-db.core/query {:message "Don't use application database directly in QP code; use QP Store/metadata provider"}
metabase.app-db.core/reducible-query {:message "Don't use application database directly in QP code; use QP Store/metadata provider"}
metabase.app-db.core/query {:message "Don't use application database directly in QP code; use the MetadataProvider"}
metabase.app-db.core/reducible-query {:message "Don't use application database directly in QP code; use the MetadataProvider"}
metabase.lib.convert/->legacy-MBQL {:level :off}
metabase.lib.core/->legacy-MBQL {:level :off}}}}
qp-source-namespaces
{:linters
{:discouraged-namespace
{metabase.legacy-mbql.js {:message "Avoid legacy MBQL namespaces in the QP, use Lib instead"}
metabase.legacy-mbql.jvm-util {:message "Avoid legacy MBQL namespaces in the QP, use Lib instead"}
metabase.legacy-mbql.normalize {:message "Avoid legacy MBQL namespaces in the QP, use Lib instead"}
metabase.legacy-mbql.predicates {:message "Avoid legacy MBQL namespaces in the QP, use Lib instead"}
metabase.legacy-mbql.schema {:message "Avoid legacy MBQL namespaces in the QP, use Lib instead"}
metabase.legacy-mbql.schema.helpers {:message "Avoid legacy MBQL namespaces in the QP, use Lib instead"}
metabase.legacy-mbql.schema.macros {:message "Avoid legacy MBQL namespaces in the QP, use Lib instead"}
metabase.legacy-mbql.util {:message "Avoid legacy MBQL namespaces in the QP, use Lib instead"}}}}
general-qp-and-driver-test-namespaces
{:linters
{:discouraged-var

View File

@@ -1625,6 +1625,17 @@
util
enterprise/harbormaster}}
enterprise/comments
{:team "Workflows"
:api #{metabase-enterprise.comments.api
metabase-enterprise.comments.init}
:uses #{api
events
models
request
users
util}}
enterprise/content-translation
{:team "UX West"
:api #{metabase-enterprise.content-translation.dictionary
@@ -1723,6 +1734,17 @@
settings
util}}
enterprise/embedding-hub
{:team "Embedding"
:api #{metabase-enterprise.embedding-hub.api}
:uses #{api
appearance
audit-app
embedding
premium-features
util
enterprise/sso}}
enterprise/gsheets
{:team "Cloud"
:api #{metabase-enterprise.gsheets.api
@@ -1960,8 +1982,8 @@
:api #{metabase-enterprise.transforms.api
metabase-enterprise.transforms.core
metabase-enterprise.transforms.init
;; TODO: Remove this from API once we remove the python-runner callback to metabase
metabase-enterprise.transforms.settings}
metabase-enterprise.transforms.instrumentation
metabase-enterprise.transforms.util}
:uses #{analytics
api
app-db
@@ -1979,18 +2001,25 @@
sync
task
task-history
;; TODO: Remove this once we're using a better file format than CSV
upload
util}}
util
enterprise/transforms-python}}
enterprise/python-transform
{:team "Transform"
:api #{metabase-enterprise.python-transform.api
metabase-enterprise.python-transform.core
metabase-enterprise.python-transform.init}
enterprise/transforms-python
{:team "Querying"
:api #{metabase-enterprise.transforms-python.api
metabase-enterprise.transforms-python.execute
metabase-enterprise.transforms-python.init
metabase-enterprise.transforms-python.settings}
:uses #{api
app-db
config
driver
models
util}}
query-processor
settings
util
enterprise/transforms}}
enterprise/upload-management
{:team "UX West"

29
.github/scripts/setup-python-runner.sh vendored Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
set -e
# Parse command line arguments
SKIP_START=false
while [[ $# -gt 0 ]]; do
case $1 in
--skip-start)
SKIP_START=true
shift
;;
*)
echo "Unknown option: $1"
echo "Usage: $0 [--skip-start]"
exit 1
;;
esac
done
echo "Cloning python-runner repository..."
git clone --depth 1 https://${METABASE_AUTOMATION_USER_TOKEN}@github.com/metabase/python-runner-container.git python-runner
if [ "$SKIP_START" = false ]; then
echo "Starting python-runner..."
cd python-runner
make run-ci
cd ..
fi

View File

@@ -35,21 +35,21 @@ jobs:
build-static-viz: false
test-args: >-
:only '"enterprise/backend/test"'
exclude-tag: ':mb/driver-tests'
exclude-tag: ':mb/driver-tests :mb/transforms-python-test'
- name: EE App DB Tests (Part 1)
build-static-viz: true
test-args: >-
:only '"test"'
:partition/total 2
:partition/index 0
exclude-tag: ':mb/driver-tests'
exclude-tag: ':mb/driver-tests :mb/transforms-python-test'
- name: EE App DB Tests (Part 2)
build-static-viz: true
test-args: >-
:only '"test"'
:partition/total 2
:partition/index 1
exclude-tag: ':mb/driver-tests'
exclude-tag: ':mb/driver-tests :mb/transforms-python-test'
services:
mysql:
@@ -147,21 +147,21 @@ jobs:
build-static-viz: false
test-args: >-
:only '"enterprise/backend/test"'
exclude-tag: ':mb/driver-tests'
exclude-tag: ':mb/driver-tests :mb/transforms-python-test'
- name: EE App DB Tests (Part 1)
build-static-viz: true
test-args: >-
:only '"test"'
:partition/total 2
:partition/index 0
exclude-tag: ':mb/driver-tests'
exclude-tag: ':mb/driver-tests :mb/transforms-python-test'
- name: EE App DB Tests (Part 2)
build-static-viz: true
test-args: >-
:only '"test"'
:partition/total 2
:partition/index 1
exclude-tag: ':mb/driver-tests'
exclude-tag: ':mb/driver-tests :mb/transforms-python-test'
services:
mysql:
@@ -259,11 +259,13 @@ jobs:
build-static-viz: false
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
exclude-tag: ':mb/transforms-python-test'
- name: Enterprise Tests
build-static-viz: false
test-args: >-
:only '"enterprise/backend/test"'
exclude-tag: ':mb/driver-tests'
exclude-tag: ':mb/driver-tests :mb/transforms-python-test'
- name: EE App DB Tests (Part 1)
build-static-viz: true
test-args: >-
@@ -271,14 +273,14 @@ jobs:
:exclude-tags [:mb/driver-tests]
:partition/total 2
:partition/index 0
exclude-tag: ':mb/driver-tests'
exclude-tag: ':mb/driver-tests :mb/transforms-python-test'
- name: EE App DB Tests (Part 2)
build-static-viz: true
test-args: >-
:only '"test"'
:partition/total 2
:partition/index 1
exclude-tag: ':mb/driver-tests'
exclude-tag: ':mb/driver-tests :mb/transforms-python-test'
name: "${{ matrix.version.name }} ${{ matrix.job.name }}"
env:
# Only run old migrations tests on pushes to master or release branches. All other branches should skip tests
@@ -328,6 +330,10 @@ jobs:
test-args: >-
${{ matrix.job.test-args }}
:exclude-tags '[ ${{ matrix.job.exclude-tag }} ${{ env.__ADDITIONAL_EXCLUDED_TAG__ }}]'
- name: Setup python-runner
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()

View File

@@ -90,6 +90,7 @@ jobs:
junit-name: 'be-tests-athena-ee'
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -106,6 +107,18 @@ jobs:
if: ${{ !inputs.skip }}
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
job:
- name: Driver Tests
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Transforms Python Tests
test-args: >-
:only-tags [:mb/transforms-python-test]
needs-python-runner: true
env:
CI: 'true'
DRIVERS: bigquery-cloud-sdk
@@ -116,15 +129,19 @@ jobs:
MB_BIGQUERY_TEST_REFRESH_TOKEN: ${{ secrets.MB_BIGQUERY_TEST_REFRESH_TOKEN }}
MB_BIGQUERY_CLOUD_SDK_TEST_SERVICE_ACCOUNT_JSON: ${{ secrets.MB_BIGQUERY_CLOUD_SDK_TEST_SERVICE_ACCOUNT_JSON }}
MB_BIGQUERY_CLOUD_SDK_TEST_SERVICE_ACCOUNT_JSON_ROUTING: ${{ secrets.MB_BIGQUERY_CLOUD_SDK_TEST_SERVICE_ACCOUNT_JSON_ROUTING }}
name: BigQuery
name: BigQuery ${{ matrix.job.name }}
steps:
- uses: actions/checkout@v4
- name: Setup python-runner
if: ${{ matrix.job.needs-python-runner == true }}
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Test BigQuery Cloud SDK driver
uses: ./.github/actions/test-driver
with:
junit-name: 'be-tests-bigquery-cloud-sdk-ee'
test-args: >-
:only-tags [:mb/driver-tests]
test-args: ${{ matrix.job.test-args }}
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -141,6 +158,18 @@ jobs:
if: ${{ !inputs.skip }}
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
job:
- name: Driver Tests
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Transforms Python Tests
test-args: >-
:only-tags [:mb/transforms-python-test]
needs-python-runner: true
env:
CI: 'true'
DRIVERS: clickhouse
@@ -148,9 +177,14 @@ jobs:
MB_CLICKHOUSE_TEST_PORT: 8123
MB_CLICKHOUSE_TEST_OLD_PORT: 8124
MB_CLICKHOUSE_TEST_NGINX_PORT: 8127
name: Clickhouse
name: Clickhouse ${{ matrix.job.name }}
steps:
- uses: actions/checkout@v4
- name: Setup python-runner
if: ${{ matrix.job.needs-python-runner == true }}
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Add ClickHouse TLS instance to /etc/hosts
run: |
sudo echo "127.0.0.1 server.clickhouseconnect.test" | sudo tee -a /etc/hosts
@@ -170,8 +204,7 @@ jobs:
uses: ./.github/actions/test-driver
with:
junit-name: 'be-tests-clickhouse-ee'
test-args: >-
:only-tags [:mb/driver-tests]
test-args: ${{ matrix.job.test-args }}
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -208,6 +241,7 @@ jobs:
junit-name: 'be-tests-druid-ee'
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -244,6 +278,7 @@ jobs:
junit-name: 'be-tests-druid-jdbc-ee'
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -280,6 +315,7 @@ jobs:
junit-name: 'be-tests-databricks-ee'
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -317,6 +353,7 @@ jobs:
junit-name: 'be-tests-databricks-multi-catalog-ee'
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -338,18 +375,17 @@ jobs:
name: H2
steps:
- uses: actions/checkout@v4
with:
submodules: true
token: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
- name: Start python-runner
working-directory: python-runner
run: make run
- name: Setup python-runner
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Test H2 driver
uses: ./.github/actions/test-driver
with:
junit-name: 'be-tests-h2'
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -394,6 +430,11 @@ jobs:
- name: Driver Tests
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Transforms Python Tests
test-args: >-
:only-tags [:mb/transforms-python-test]
needs-python-runner: true
services:
mysql:
@@ -448,12 +489,11 @@ jobs:
name: "${{ matrix.version.name }} ${{ matrix.job.name }}"
steps:
- uses: actions/checkout@v4
with:
submodules: true
token: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
- name: Start python-runner
working-directory: python-runner
run: make run
- name: Setup python-runner
#if: ${{ matrix.job.needs-python-runner == true }}
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Test ${{ matrix.version.name }}
uses: ./.github/actions/test-driver
with:
@@ -488,6 +528,15 @@ jobs:
- name: MongoDB Latest
junit-name: be-tests-mongo-latest-ee
image: mongo:latest
job:
- name: Driver Tests
test-args: >-
:exclude-tags '[:mongo-sharded-cluster-tests :mb/transforms-python-test]'
:only-tags [:mb/driver-tests]
- name: Transforms Python Tests
test-args: >-
:only-tags [:mb/transforms-python-test]
needs-python-runner: true
env:
CI: 'true'
DRIVERS: mongo
@@ -501,16 +550,19 @@ jobs:
env:
MONGO_INITDB_ROOT_USERNAME: metabase
MONGO_INITDB_ROOT_PASSWORD: metasample123
name: ${{ matrix.version.name }}
name: ${{ matrix.version.name }} ${{ matrix.job.name }}
steps:
- uses: actions/checkout@v4
- name: Setup python-runner
if: ${{ matrix.job.needs-python-runner == true }}
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Test ${{ matrix.version.name }}
uses: ./.github/actions/test-driver
with:
junit-name: ${{ matrix.version.junit-name }}
test-args: >-
:exclude-tags [:mongo-sharded-cluster-tests]
:only-tags [:mb/driver-tests]
test-args: ${{ matrix.job.test-args }}
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -574,7 +626,7 @@ jobs:
with:
junit-name: ${{ matrix.version.junit-name }}
test-args: >-
:exclude-tags [:mongo-sharded-cluster-tests]
:exclude-tags '[:mongo-sharded-cluster-tests :mb/transforms-python-test]'
:only-tags [:mb/driver-tests]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
@@ -682,6 +734,7 @@ jobs:
junit-name: ${{ matrix.version.junit-name }}
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -716,6 +769,11 @@ jobs:
- name: Driver Tests
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Transforms Python Tests
test-args: >-
:only-tags [:mb/transforms-python-test]
needs-python-runner: true
name: "${{ matrix.version.name }} ${{ matrix.job.name }}"
env:
# Only run old migrations tests on pushes to master or release branches. All other branches should skip tests
@@ -757,12 +815,11 @@ jobs:
POSTGRES_HOST_AUTH_METHOD: trust
steps:
- uses: actions/checkout@v4
with:
submodules: true
token: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
- name: Start python-runner
working-directory: python-runner
run: make run
- name: Setup python-runner
#if: ${{ matrix.job.needs-python-runner == true }}
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Test ${{ matrix.version.name }} (${{ matrix.job.name }})
uses: ./.github/actions/test-driver
with:
@@ -839,6 +896,7 @@ jobs:
junit-name: 'be-tests-presto-jdbc-ee'
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -868,8 +926,14 @@ jobs:
skip: false
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/upload-tests]
:exclude-tags '[:mb/upload-tests :mb/transforms-python-test]'
:fail-fast? true
- name: Redshift Transforms Python Tests
skip: false
test-args: >-
:only-tags [:mb/transforms-python-test]
:fail-fast? true
needs-python-runner: true
env:
CI: 'true'
@@ -882,6 +946,11 @@ jobs:
name: ${{ matrix.job.name }}
steps:
- uses: actions/checkout@v4
- name: Setup python-runner
if: ${{ matrix.job.needs-python-runner == true }}
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Test ${{ matrix.job.name }}
if: ${{ !matrix.job.skip }}
uses: ./.github/actions/test-driver
@@ -905,6 +974,18 @@ jobs:
if: ${{ !inputs.skip }}
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
job:
- name: Driver Tests
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Transforms Python Tests
test-args: >-
:only-tags [:mb/transforms-python-test]
needs-python-runner: true
env:
CI: 'true'
DRIVERS: snowflake
@@ -923,15 +1004,19 @@ jobs:
MB_SNOWFLAKE_TEST_RSA_ROLE_TEST_CUSTOM_USER: RSA_ROLE_TEST_CUSTOM_USER
MB_SNOWFLAKE_TEST_RSA_ROLE_TEST_ROLE: RSA_ROLE_TEST_ROLE
MB_SNOWFLAKE_TEST_RSA_ROLE_TEST_DB: RSA_ROLE_TEST_DB
name: Snowflake
name: Snowflake ${{ matrix.job.name }}
steps:
- uses: actions/checkout@v4
- name: Setup python-runner
if: ${{ matrix.job.needs-python-runner == true }}
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Test Snowflake driver
uses: ./.github/actions/test-driver
with:
junit-name: 'be-tests-snowflake-ee'
test-args: >-
:only-tags [:mb/driver-tests]
test-args: ${{ matrix.job.test-args }}
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -966,6 +1051,7 @@ jobs:
junit-name: 'be-tests-sparksql-ee'
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -995,6 +1081,7 @@ jobs:
junit-name: 'be-tests-sqlite-ee'
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()
@@ -1022,6 +1109,15 @@ jobs:
- name: SQL Server 2022
junit-name: be-tests-sqlserver-2022-ee
image: mcr.microsoft.com/mssql/server:2022-latest
job:
- name: Driver Tests
test-args: >-
:only-tags [:mb/driver-tests]
:exclude-tags [:mb/transforms-python-test]
- name: Transforms Python Tests
test-args: >-
:only-tags [:mb/transforms-python-test]
needs-python-runner: true
env:
CI: 'true'
DRIVERS: sqlserver
@@ -1037,15 +1133,19 @@ jobs:
ACCEPT_EULA: Y
SA_PASSWORD: 'P@ssw0rd'
MSSQL_MEMORY_LIMIT_MB: 1024
name: ${{ matrix.version.name }}
name: ${{ matrix.version.name }} ${{ matrix.job.name }}
steps:
- uses: actions/checkout@v4
- name: Setup python-runner
if: ${{ matrix.job.needs-python-runner == true }}
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Test ${{ matrix.version.name }}
uses: ./.github/actions/test-driver
with:
junit-name: ${{ matrix.version.junit-name }}
test-args: >-
:only-tags [:mb/driver-tests]
test-args: ${{ matrix.job.test-args }}
- name: Upload Test Results
uses: ./.github/actions/upload-test-results
if: always()

View File

@@ -60,6 +60,14 @@ jobs:
CYPRESS_IS_EMBEDDING_SDK: "${{ inputs.name == 'embedding-sdk' }}"
steps:
- uses: actions/checkout@v4
with:
submodules: true
token: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
- name: Setup python-runner
env:
METABASE_AUTOMATION_USER_TOKEN: ${{ secrets.METABASE_AUTOMATION_USER_TOKEN }}
run: ./.github/scripts/setup-python-runner.sh
- name: Prepare Docker containers
uses: ./.github/actions/e2e-prepare-containers
@@ -143,7 +151,7 @@ jobs:
run: |
echo "Running tests with specs: $SPEC_PATH"
node e2e/runner/run_cypress_ci.js e2e \
--env grepTags="${{inputs.tags}}+-@skip",grepOmitFiltered=true \
--env grepTags="${{inputs.tags && format('{0}+-@skip', inputs.tags) || '-@skip'}}",grepOmitFiltered=true \
--spec "$SPEC_PATH" \
--browser ${{ steps.cypress-prep.outputs.chrome-path }}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Some files were not shown because too many files have changed in this diff Show More