github datahub-project/datahub v1.8.0rc4

latest release: v1.8.0rc5
pre-release7 hours ago

What's Changed

  • feat(executor): register user-supplied env values for masking by @rajatoss in #19644
  • fix(executor): forward the stdin secrets envelope to CLIs that support it by @rajatoss in #19645
  • perf(mcp): Improve a bit of efficiency during MCP validation by @supradeep-datahub in #19397
  • fix(zdu): make rollback dual-write actually run in the MAE consumer by @gdatahub in #19631
  • fix(quickstart): zombies due to healthcheck running as background process by @chakru-r in #19654
  • feat(platforms): register missing data platforms and show them in the home Platforms module by @max-datahub in #19650
  • feat(release): optional SHA input for Cut Branch workflow by @anshbansal in #19663
  • fix(ingestion/postgres): map PostGIS, pgvector, geometric, xml, ltree, citext, cidr and range types instead of NullType by @minleejae in #18577
  • fix(i18n): show custom ownership type names verbatim instead of appending an English "s" by @max-datahub in #19657
  • test(smoke): mark the p0 tests selected by domain leads by @sachetansabhahit in #19579
  • ci(smoke): run only p0 smoke tests on PRs when PYTEST_P0_SMOKE is set by @sachetansabhahit in #19587
  • ci(smoke): add the run-all-tests PR label to opt out of the p0 tier by @sachetansabhahit in #19599
  • fix(analytics): emit numeric date ranges and boolean terms for ES8 by @david-leifker in #19676
  • fix(openapi): reject unregistered aspects on v3 entity writes by @david-leifker in #19628
  • feat(ingest/sap): shared sap_common EDMX parsing + SAC acquired-model schema by @acrylJonny in #18678
  • docs(release): add v1.7.0.1 release notes by @david-leifker in #19608
  • feat(ingest/sac): emit SAC → SAP Datasphere (DWC) live-model lineage by @acrylJonny in #18646
  • fix(ingest/documents): keep pages retryable when inline embedding fails by @alexjst in #19656
  • fix(i18n): localize product update toast (CAT-3070) by @benjiaming in #19612
  • feat(search-v3): hash entity document _id instead of URL-encoded URN by @david-leifker in #19679
  • fix(cli): allow ingest-sample-data without ~/.datahubenv by @david-leifker in #19705
  • fix(cli): accept four-part quickstart --version tags without confirmation by @david-leifker in #19704
  • feat(search-v3): hash document ids and align V3 indices with V2 per-entity splits by @david-leifker in #19708
  • fix(cli): use quickstart GMS default for datapack load and dry-run by @david-leifker in #19710
  • fix(ingest): don't crash the run summary on a closed shared schema resolver by @agarwal-shreyas in #19406
  • feat(ingest): table-level fallback and self-loop guard for view definitions by @agarwal-shreyas in #19661
  • refactor(ui): consolidate app/businessAttribute schema description field by @v-tarasevich-blitz-brain in #19695
  • refactor(ui): consolidate app/onboarding with the Acryl fork by @v-tarasevich-blitz-brain in #19699
  • refactor(ui): consolidate app/mfeframework with the fork by @v-tarasevich-blitz-brain in #19698
  • test(zdu): cover the standalone-consumer topology in compose profiles and the nightly ZDU job by @gdatahub in #19675
  • feat(ui/policies): add support for adding and displaying conditions in policy builder and update UI to use component library by @purnimagarg1 in #19696
  • fix(graphql): isolate secret decryption failures in getSecretValues by @Danishlynx in #19539
  • feat(components): bring back alchemy components and common changes from metadata tests PR by @purnimagarg1 in #19702
  • fix(pgqueue): backoff empty polls per consumer topic by @david-leifker in #19673
  • fix(auth): mutate view-unrestricted defaults via ADD/REMOVE overlays by @david-leifker in #19717
  • fix(product-updates): replace 404 Cloud toast CTA and gate link reachability (CUS-10161) by @benjiaming in #19711
  • fix(auth): let Edit Domain alone authorize domain changes by @david-leifker in #19719
  • feat(metrics): grouping in the metrics sidebar by @annadoesdesign in #19620
  • test(ui/lineage): Add more playwright test coverage by @asikowitz in #19707
  • fix(otel): preserve OTEL_RESOURCE_ATTRIBUTES on factory TracerProvider by @craig-rueda in #19724
  • feat(profiling): flatten same-shape aggregates behind a flag by @kyungsoo-datahub in #18707
  • docs: fix datahub-dev.sh paths by @bmaquet in #17661
  • refactor(ui): consolidate app/previewV2 by @v-tarasevich-blitz-brain in #19648
  • refactor(ui): consolidate app/browse with the SaaS fork by @v-tarasevich-blitz-brain in #19671
  • refactor(ui): consolidate app/glossary with the SaaS fork by @v-tarasevich-blitz-brain in #19669
  • refactor(ui): consolidate app/analyticsDashboard with SaaS by @v-tarasevich-blitz-brain in #19649
  • refactor(ui): consolidate app/analyticsDashboardV2 with SaaS by @v-tarasevich-blitz-brain in #19651
  • refactor(ui): consolidate app/lineage with the SaaS fork by @v-tarasevich-blitz-brain in #19652
  • refactor(ui): consolidate app/recommendations by @v-tarasevich-blitz-brain in #19660
  • refactor(ui): consolidate app/metrics with the fork by @v-tarasevich-blitz-brain in #19662
  • refactor(ui): consolidate app/domain with the SaaS frontend by @v-tarasevich-blitz-brain in #19665
  • refactor(ui): consolidate app/glossaryV2 with the Acryl fork by @v-tarasevich-blitz-brain in #19714
  • refactor(ui): consolidate app/document with the SaaS fork by @v-tarasevich-blitz-brain in #19716
  • docs(managed-datahub): release notes for v2.1.6 by @david-leifker in #19739
  • feat(gms): optionally omit oversized structured properties from search by @david-leifker in #19727
  • fix(deps): bump Spring Framework 7.0.9, Boot 4.0.8, and Security 7.0.7 by @david-leifker in #19742
  • fix(deps): bump Apache Parquet to 1.18.1 for CVE-2026-73334 by @david-leifker in #19743
  • fix(ui): updated the resources section by @annadoesdesign in #19718
  • fix(search): skip reindex stall retry while ES task is unresolved by @david-leifker in #19741
  • docs(managed-datahub): release notes for v2.2.1 by @devashish2203 in #19686
  • ci: default GitHub Actions Python to 3.11 by @devashish2203 in #19738
  • feat(darkmode): updated colors for darkmode by @annadoesdesign in #19744
  • fix(graphql): require asset summary privilege for updateAssetSettings by @supersingh05 in #19745
  • fix(graphql): require Manage Compliance Forms privilege for form assignment mutations by @supersingh05 in #19746
  • fix(openapi): require Analytics API access privilege for raw analytics search by @supersingh05 in #19749
  • feat(embedding): add in-process ONNX embedding provider by @alexjst in #19722
  • feat(ingest/sac): column-level lineage to SAP Datasphere for DWC live models by @acrylJonny in #18677
  • chore(test): Update test weights from CI runs (2026-09-13) by @github-actions[bot] in #19756
  • refactor(ingest/bigquery): partition discovery metadata layer (stack 5/9) by @acrylJonny in #19482
  • feat(embedding): ship ONNX/DJL only in dedicated ONNX image variants [PFP-3657] by @alexjst in #19753
  • fix(ingest): switch MinIO images from Docker Hub to Quay.io by @sgomezvillamor in #19761
  • fix(examples): enable mypy on metadata-ingestion/examples and fix the broken ones by @sgomezvillamor in #19637
  • feat(i18n): add Russian (ru) locale [Beta] by @denish1204 in #19171
  • feat(search): support OpenSearch 3.x via a unified OpenSearch client shim by @alexjst in #19748
  • fix(tableau): ingest project container owners when ingest_owner is true by @jjjeong in #19275
  • fix(metadata-io): wire Gradle 9 suite Test tasks so CI actually runs by @david-leifker in #19765
  • test(metrics): add Playwright coverage for Metrics experience by @ani-malgari in #19726
  • fix(gms): reuse a process-wide AWS credential chain to stop IRSA provider leaks by @david-leifker in #19747
  • docs(mcp): document connecting clients to a scoped MCP server URL by @nwadams in #19766
  • fix(graphql): drop un-mappable search hits instead of nulling the whole page by @alexsku in #19767
  • chore(ingest): hygiene fixes across ingestion examples, docs, and tests by @puneetagarwal-datahub in #19697
  • perf(gms): Remove line numbers from logback patterns for perf reasons by @supradeep-datahub in #19713
  • feat(ingest/dataplex): support the Dataplex Metadata Export API extraction method by @TejasRGitHub in #18540
  • fix(metadata-io): fill missing search config blocks in test fixture by @Ashish37-sh in #19769
  • fix(sdk): use DataFlow URN as DataJob browse path entry id by @acrylJonny in #18924
  • feat(ingest/sap-datasphere): surface calculated column formula in column description by @acrylJonny in #19763
  • fix(docs): replace site-absolute links with relative paths in connector docs by @sgomezvillamor in #19780
  • feat(config): per-operation configuration reads via ConfigEnrichment by @Ashish37-sh in #19732
  • fix(ingest/dbt): read semantic model meta from config.meta instead of top-level by @sgomezvillamor in #19782
  • fix(documents): keep the agent docs parent folder out of soft-delete by @jjoyce0510 in #19791
  • docs(managed-datahub): release notes for v2.1.7 by @david-leifker in #19792
  • fix(ingestion/mongodb): map unmapped BSON native types instead of falling back to unknown/NullType by @minleejae in #18572
  • feat(search): add opt-in classical embedding provider for CI and smoke tests by @alexjst in #19759
  • perf(schema): speed up schema tab grouping and editable field lookups by @benjiaming in #19125
  • fix: Eager load single JSON per language by @benjiaming in #19709
  • fix(ingest/snowflake): derive dynamic-table lineage from its definition, not the query log by @agarwal-shreyas in #19576
  • fix(groups): correct group member removal and migration, and batch their DB round trips by @gdatahub in #18982
  • build(ingest): remove setuptools<82 cap, support setuptools>=83 by @agarwal-shreyas in #19601
  • refactor(ui): consolidate app/applications with the SaaS fork by @v-tarasevich-blitz-brain in #19670
  • refactor(ui): consolidate app/domainV2 with the SaaS fork by @v-tarasevich-blitz-brain in #19772
  • refactor(ui): consolidate app/permissions with the SaaS fork by @v-tarasevich-blitz-brain in #19773
  • refactor(ui): consolidate app/identity with the SaaS fork by @v-tarasevich-blitz-brain in #19774
  • refactor(ui): consolidate app/lineageV3 with the SaaS fork by @v-tarasevich-blitz-brain in #19775
  • refactor(ui): consolidate app/homeV3 with the SaaS fork by @v-tarasevich-blitz-brain in #19776
  • refactor(ui): consolidate app/searchV2 with the SaaS fork by @v-tarasevich-blitz-brain in #19778
  • refactor(ui): consolidate app/search with the SaaS fork by @v-tarasevich-blitz-brain in #19779
  • refactor(ui): consolidate app/ingest with the SaaS fork by @v-tarasevich-blitz-brain in #19781
  • refactor(ui): consolidate app/ingestV2 with the SaaS fork by @v-tarasevich-blitz-brain in #19785
  • perf(gms): Fix some CPU hotspots on the MCP ingestion path by @supradeep-datahub in #19783
  • feat(homepage): raise Domains module cap from 5 to 25 by @max-datahub in #19771
  • docs(managed-datahub): withdraw Remote Executor v2.1.6-cloud from recommended versions by @rajatoss in #19811
  • feat(policies): add support for structured properties in policies by @purnimagarg1 in #19737
  • feat(metrics): model column-level lineage on metricUpstreams by @ani-malgari in #19751
  • fix(groups): preserve migration failure cause on group member removal by @gdatahub in #19798
  • fix(ingest/sigma): restore Dataset warehouse lineage after dataset deprecation by @kyungsoo-datahub in #19815
  • feat(lineage): guardrail for graph-query timeouts (distinct error + metric + PIT robustness) by @max-datahub in #19799
  • ci: nest pytest domain markers in PostHog test-failure events by @devashish2203 in #19819
  • feat(ingest/powerbi): resolve BigQuery EXTERNAL_QUERY federation lineage by @NehaGslab in #18782
  • feat(platform): give Kafka Connect a distinct logo by @max-datahub in #19821
  • chore(ci/kafka-connect): bump Kafka/Kafka Connect test cluster to CP 7.9.10 + modern connectors by @max-datahub in #19829
  • refactor(ui): consolidate app/homeV2 with the SaaS fork by @v-tarasevich-blitz-brain in #19777
  • refactor(ui): consolidate app/homeV3 with the SaaS fork by @v-tarasevich-blitz-brain in #19806
  • refactor(ui): consolidate app/govern with the SaaS fork by @v-tarasevich-blitz-brain in #19807
  • feat(python): Enable ingestion of structured properties settings by @DiogoVala in #13732
  • refactor(ingest/profiling): simplify formatting in SQLAlchemy profiler by @sgomezvillamor in #19789
  • fix(search): warn when all of a search request's results fail existence checks by @chakru-r in #19827
  • feat(policies): improvements in policies and related components by @purnimagarg1 in #19832
  • fix(ingest/bigquery): read require_partition_filter from the table-level field by @avery-datahub in #19524
  • fix(domains): detach leftover domain refs after Domain delete by @ani-malgari in #19796
  • fix: narrow dependent config types by @benjiaming in #19793
  • test(metadata-io): re-enable excluded lineage and index-builder base tests by @alexjst in #19794
  • fix(ingest/documents): cap per-document semanticContent chunks under the Kafka size floor by @alexjst in #19797
  • feat(metrics): model consumer-owned Metric downstream lineage by @ani-malgari in #19818
  • feat(i18n): add Traditional Chinese (zh-TW) by @benjiaming in #19532
  • fix(i18n): register ru/zh-CN cron locales and guard locale wiring by @max-datahub in #19762
  • feat(bigquery): emit datasetProfile for materialized views by @alokr-dhub in #19514
  • fix(ui): prevent Access Management columns from clipping on narrow screens by @max-datahub in #19822
  • fix(ingest/git): skip private clone test on empty SSH key, not just None by @alokr-dhub in #19849
  • fix(ui): fetch applications on the Data Product query by @max-datahub in #19808
  • fix(i18n): add zh-TW product-update copy and run locale sync pre-merge by @devashish2203 in #19850
  • docs(managed-datahub): release notes for v2.2.2 by @sachetansabhahit in #19851
  • fix(ingest/dbt): resolve real container path for target-platform siblings by @JohnRTurner in #19547
  • docs(snowflake): add key-pair auth migration guide by @alokr-dhub in #19692
  • ci(product-update): skip heavy CI for toast JSON and cigate by @devashish2203 in #19854
  • fix(policies): fix new policy not appearing at the top by @purnimagarg1 in #19855
  • feat(frontend): add opt-in Play security headers via env vars by @kewats in #19848
  • perf(schema-tab): load schema incrementally to fix slow loading for datasets with many columns by @rob-1019 in #18908
  • perf(graphql): stream GraphQL responses via message converter to cap GMS heap by @kewats in #19825
  • ci: replace unpublished cloudflare pages-action with wrangler-action by @david-leifker in #19866
  • feat(darkmode): updates on dark mode colors and beta tag by @annadoesdesign in #19864
  • fix(ingest/cassandra): decode bytes in extensions map to avoid JSON serialization error by @max-datahub in #19863
  • feat(cli): add migrate schema-field-case to re-anchor column metadata after casing changes by @acrylJonny in #19795
  • feat(search): resolve search clients via OperationContext by @david-leifker in #19764
  • feat(ui/lineage): Support column -> entity (metric) lineage by @asikowitz in #19847
  • feat(lineage): write Metric-as-upstream edges through updateLineage by @ani-malgari in #19839
  • feat(search): dual-write document embeddings onto Search V3 by @david-leifker in #19837
  • feat(search)!: drop Elasticsearch 7 as a GMS search backend by @david-leifker in #19865
  • fix(docker): regenerate quickstart compose for resolved AWS env defaults by @david-leifker in #19871
  • feat(structured-properties): preserve allowed value order by @annadoesdesign in #19844
  • chore(ingestion): raise grpcio minimum to 1.84.0 by @david-leifker in #19874
  • feat(lineage): enable manual Metric downstream lineage in the UI by @ani-malgari in #19875
  • fix(ingest/bigquery): detect linked datasets with schema metadata off by @agarwal-shreyas in #19836
  • fix(opcontext): build request-scoped OperationContext in controllers and consumers instead of passing raw systemOperationContext by @Dutt23 in #19858
  • chore(test): Update test weights from CI runs (2026-09-20) by @github-actions[bot] in #19877
  • docs(ingest/airflow): document the plugin changelog per released version by @treff7es in #19860
  • docs(ingest/spark): document the agent changelog per released version by @treff7es in #19859
  • perf(graphql): Introduce GraphQL Query document caching by @supradeep-datahub in #19820
  • ci(smoke-test): pack pytest batches by loadscope makespan by @devashish2203 in #19857
  • feat(ingest/odcs): emit native DataHub data contracts for ODCS by @acrylJonny in #18480
  • fix(ingest): filter unsupported data lake file types by @yianni in #19516
  • ci(test): group weekly test-weight PR stats by JSON file by @devashish2203 in #19884
  • feat(ingest/odcs): add contract datasets to their Data Product as output ports by @acrylJonny in #18723
  • feat(snowflake): show password-auth deprecation banner in UI by @alokr-dhub in #19694
  • chore(ingestion): upgrade confluent-kafka to 2.15.1 by @david-leifker in #19873
  • feat(pgqueue): in-memory queue store for Docker-free local dev and CI by @shirshanka in #19878
  • ci(product-update): gate CTA 404s only when toast JSON changes by @benjiaming in #19869
  • perf(recommendations): request only needed HOME recommendation modules by @benjiaming in #19267
  • fix(ingestion): upgrade unstructured to 0.24.1 for CVE-2026-71428 by @david-leifker in #19554
  • ci: fold AI embedding smoke tests into docker-unified by @devashish2203 in #19621
  • fix(ingest): add iter_entry_points to the pkg_resources shim by @agarwal-shreyas in #19896
  • feat(ingest/sigma): expose every segment of a bracket reference by @kyungsoo-datahub in #19786
  • perf(search): use lightweight lineage counts in search Summary by @benjiaming in #19876
  • feat(metrics): enable Metrics by default and add Beta nav badge by @ani-malgari in #19901
  • fix(ui): documentation padding by @annadoesdesign in #19903
  • docs(context): add context public beta user guide by @manuelawei8 in #19893
  • docs(schemaField): correct entity auto-creation and fetch-flag claims by @yjyspree in #19276
  • feat(snowflake): warn on password-auth deprecation in CLI by @alokr-dhub in #19693
  • perf(ingest/aws): reuse the S3 client in AwsConnectionConfig by @max-datahub in #19496
  • fix(openapi): resolve $refs under patternProperties for map schemas by @acrylJonny in #19383
  • refactor(smoke-test): share batch packing and dump collect-only shard plans by @devashish2203 in #19914
  • refactor(ingest/profiling): drop Great Expectations naming from shared profiling code by @sgomezvillamor in #19891
  • docs(ingest): add user-facing docs for the set_attribution transformer by @sgomezvillamor in #19912
  • refactor(ui): consolidate app/entityV2 with the SaaS fork by @v-tarasevich-blitz-brain in #19833
  • refactor(settings): give settingsPaths an extension point for extra pages by @v-tarasevich-blitz-brain in #19834
  • refactor(ui): converge app/entity, app/entityV2 and alchemy-components with SaaS by @v-tarasevich-blitz-brain in #19862
  • fix(ingest/dataplex): fix lookupEntryLinks request and attach glossary terms to containers by @sgomezvillamor in #17553
  • fix(ingestion/looker): default transport_options.headers to empty dict by @alokr-dhub in #19659
  • docs: update entity change event category from OWNER to OWNERSHIP by @NehaGslab in #19911
  • fix(ingest): drop the sqlglot requirement from auto_resolve_lineage_urns by @aviraj-gour in #19882
  • fix(auth-api): repair javadoc reference that blocks the jar release by @treff7es in #19917
  • chore(security): bump Bouncy Castle jdk18on to 1.86 by @david-leifker in #19924
  • fix(search): use aggregation entity's valueType for structured-property bucket display names by @rob-1019 in #18973
  • chore(security): bump anyio>=4.14.2 and soupsieve>=2.9.0 by @david-leifker in #19925
  • fix(graphql): authorize patchEntity by URN type with Edit Entity or the type's management privilege by @supersingh05 in #19872
  • chore(security): raise deepdiff and click floors for CVEs by @david-leifker in #19928
  • fix(ingest/deps): move pip to 26.2 for CVE-2026-13346 by @rajatoss in #19918
  • fix(ingest): raise snowflake-connector-python floor to 4.7.1 for CVE-2026-15925 by @rajatoss in #19921
  • perf(gms): Turn off GMS debug logs by default by @supradeep-datahub in #19908
  • fix(ingest/tests): prune each module's docker images after its compose suites by @naeemdh in #19735
  • ci(smoke-test): split entity graph cache tests and raise full-suite batches to 9 by @devashish2203 in #19915
  • docs: fix typo arbitary -> arbitrary by @vaibhav8a in #19511
  • fix(ingest/airflow): stop duplicating OpenLineage facet extraction by @treff7es in #19910
  • fix(platform): add Azure Blob Storage metadata by @yianni in #19416
  • perf(structured-properties): page, filter and lazily hydrate property values; searchable pickers by @rob-1019 in #19900
  • chore(security): bump libthrift to 0.24.0 for CVE-2026-48586 by @david-leifker in #19932
  • fix(actions): handle SIGTERM so container stops shut down cleanly by @max-datahub in #19402
  • fix(auth): require Manage User Credentials to read corpUserCredentials on every API by @supersingh05 in #19931
  • fix(ingest/documents): don't fail the run when orphans fill a hydration batch by @nwadams in #19944
  • feat(ingest/openapi): typed get_token config + credential-leak hardening by @acrylJonny in #19905
  • fix(search): normalize adjust_pure_negative in Elasticsearch 8 kNN filters by @alexjst in #19935
  • feat(search): serve semantic search from the Search V3 document index by @alexjst in #19934
  • fix(events): include sourceDetails in documentation ECE parameters by @shirshanka in #19936
  • perf(ui): tree-shake lodash via per-function imports by @benjiaming in #19904
  • feat(ingest/openapi): harden malformed-input handling by @acrylJonny in #19906
  • fix(search): pre-filter Elasticsearch kNN queries by @alexjst in #19938
  • fix(ingest/looker): preserve cross-project view project assignment in explore lineage by @alokr-dhub in #19306
  • build(deps): bump dompurify from 3.2.4 to 3.4.0 in /datahub-web-react by @dependabot[bot] in #17046
  • build(deps): bump picomatch from 2.3.1 to 2.3.2 in /docs-website by @dependabot[bot] in #16794
  • build(deps): bump node-forge from 1.3.1 to 1.4.0 in /docs-website by @dependabot[bot] in #16805
  • build(deps): bump brace-expansion from 1.1.11 to 1.1.13 in /docs-website by @dependabot[bot] in #16817
  • build(deps): bump follow-redirects from 1.15.6 to 1.16.0 in /docs-website by @dependabot[bot] in #17012
  • build(deps): bump basic-ftp from 5.2.0 to 5.3.1 in /docs-website by @dependabot[bot] in #17345
  • chore(deps): bump joi from 17.12.3 to 17.13.7 in /docs-website by @dependabot[bot] in #19681
  • build(deps): bump yaml from 1.10.2 to 1.10.3 in /docs-website by @dependabot[bot] in #16783
  • chore(deps): bump baseline-browser-mapping from 2.9.19 to 2.11.21 in /docs-website by @dependabot[bot] in #19682
  • build(deps): bump lodash-es from 4.17.23 to 4.18.1 in /docs-website by @dependabot[bot] in #16892
  • chore(deps): bump requests from 2.32.4 to 2.33.0 in /docs-website by @dependabot[bot] in #16786
  • chore(deps): bump svgo from 2.8.0 to 2.8.4 in /docs-website by @dependabot[bot] in #19684
  • fix(search): compact missing lineage neighbors before lightning pagination by @david-leifker in #19948
  • chore(deps): bump jjwt from 0.11.2 to 0.13.0 by @david-leifker in #19963
  • fix(mae): skip hydrating synthetic actors in usage events by @david-leifker in #19965
  • feat(authorization): add VIEW_ENTITY_QUERIES privilege for Dataset, Chart, and Data Job by @rob-1019 in #16319
  • chore(cli): bump default CLI to 1.7.0.12 by @david-leifker in #19946
  • feat(lite): make the DataHub Lite storage engine pluggable, add SQLite by @nwadams in #19898
  • chore(deps): bump Jackson, ZooKeeper, MariaDB Connector/J, JLine, and Jetty by @david-leifker in #19966
  • fix(ui): send values for data product output ports filter by @ani-malgari in #19976
  • fix(ingest/aerospike): pass socket_timeout via query.results() policy by @dotan-mor in #17584
  • chore(deps): bump colord from 2.9.3 to 2.10.0 in /docs-website by @dependabot[bot] in #19683
  • build(deps): bump @babel/plugin-transform-modules-systemjs from 7.24.1 to 7.29.4 in /docs-website by @dependabot[bot] in #17367
  • chore(deps): bump postcss from 8.4.38 to 8.5.10 in /docs-website by @dependabot[bot] in #17186
  • feat(ingest/powerbi): add Trino/Starburst M-Query lineage support by @acrylJonny in #19974
  • refactor(ui): consolidate app/tags with the SaaS frontend by @v-tarasevich-blitz-brain in #19664
  • refactor(ui): consolidate app by @v-tarasevich-blitz-brain in #19939
  • chore(deps): bump immutable from 4.3.5 to 4.3.9 in /docs-website by @dependabot[bot] in #19814
  • test(ingest): swap MinIO CI images to Silo after Quay pull failures by @david-leifker in #19968
  • refactor(ingest/bigquery): partition discovery date-hierarchy + fallbacks (stack 6/9) by @acrylJonny in #19484
  • fix(ingest/deps): lock aiohttp 3.14.3 for CVE-2026-69244 by @rajatoss in #19982
  • fix(graph): guard Neo4j Filter/RelationsipFilter.or againt null in me… by @relaxedboi in #19961
  • fix(search): serve full-text search, scroll, autocomplete and browse from Search V3 tier fields by @alexjst in #19980
  • fix(ingestion): raise snowflake-connector-python floor to 4.7.3 by @supersingh05 in #19991
  • refactor(alchemy): strengthen themed UI primitives by @annadoesdesign in #19989
  • refactor(frontend): migrate shared actions to Alchemy by @annadoesdesign in #19990
  • docs: add v1.6.0.3 LTS hotfix upgrade notes by @david-leifker in #19994
  • fix(schema-registry): stub Confluent associations API on INTERNAL registry by @david-leifker in #19993
  • fix(alchemy): stop clickable pills from hijacking nested button keyboard events by @annadoesdesign in #19999
  • docs(ontology): set ontology feature availability on saasOnly and private beta by @manuelawei8 in #20003
  • fix(pre-commit): remove Docker requirement for ruff hooks by @shirshanka in #20012
  • fix(pre-commit): run pinned Ruff with uv by @shirshanka in #20015
  • fix(graphql): Improve accuracy of GraphQL controller-level latency metrics by @supradeep-datahub in #19981
  • chore(test): Update test weights from CI runs (2026-09-28) by @github-actions[bot] in #20020
  • fix(ingest/mode): gate chart fetching on the report's chart_count, not the query's by @sgomezvillamor in #19941
  • fix(ci): bound test-weight run lookup by created date by @devashish2203 in #20029
  • feat(ingest/cli): add datahub recipe probe for interrogating a source before ingesting by @treff7es in #19655
  • fix(scripts): The PDL change report fix to handle false positive bump issues. by @gdatahub in #20033
  • fix(ui): disable edit buttons and show a tooltip when the user lacks permission by @rob-1019 in #18906
  • refactor(ingest/profiling): hoist Snowflake sampling constants and drop dead sample_clause hook by @sgomezvillamor in #20013
  • refactor(smoke-test): split live e2e from stack-free tests by @devashish2203 in #19927
  • fix(ingest/sigma): report failed Sigma API calls, and fail on a dead listing by @kyungsoo-datahub in #19899
  • fix(deps): upgrade pac4j to 6.5.8 for CVE-2026-82461..82465 by @david-leifker in #20014
  • fix(ui): sidebar documentation edit opens where the profile renders documentation by @rob-1019 in #20050
  • docs(context): add Build a Data Agent guide and Context feature guides by @jjoyce0510 in #20018
  • fix(frontend): cap upstream calls and split health probes off the Play port by @david-leifker in #20049
  • feat(frontend): export Play HTTP server pool metrics via Micrometer by @david-leifker in #20048
  • refactor(messaging): remove DataHubUpgradeHistory_v1 by @david-leifker in #19962
  • fix(ingest/dbt): file target-platform stubs in their siblings' container by @JohnRTurner in #19973
  • fix(build): keep namespaced git tags distinct from release versions by @david-leifker in #20052
  • refactor(frontend): migrate non-query code surfaces to Alchemy by @annadoesdesign in #19995
  • refactor(frontend): migrate query cards to Alchemy by @annadoesdesign in #19996
  • fix(system-update): migrate usage event indices created without their template by @alexjst in #19957
  • feat(search): add per-cluster HTTP proxy with JVM proxy-property fallback by @david-leifker in #19971
  • fix(openapi): emit Pegasus unions in the OpenAPI 3.1 wire format by @david-leifker in #20055
  • fix(ci): harden smoke waits and smoke-label image builds by @david-leifker in #20016
  • fix(ingest/dbt): treat semantic models as logical, not physical by @sgomezvillamor in #19987
  • feat(ingest/dbt): emit semanticModel and metric entities by @sgomezvillamor in #19988
  • fix(ingest/openapi): add missing openapi extra to setup.py by @max-datahub in #20059
  • feat(views): add support for nested conditions in views by @purnimagarg1 in #19954
  • fix(ingestion/deps): bump starlette to >=1.3.1 for CVEs by @rajatoss in #20058
  • feat: Privilege constraints for structured property queries by @DiogoVala in #16478
  • refactor(ui): migrate nav bar menu and settings page to Alchemy components by @annadoesdesign in #20006
  • refactor(ui): migrate assertion list actions to Alchemy Menu and ConfirmationModal by @annadoesdesign in #20007
  • refactor(ui): migrate search filters, sort, and browse results to Alchemy components by @annadoesdesign in #20008
  • refactor(ui): migrate business attributes, charts, and empty states to Alchemy components by @annadoesdesign in #20046
  • refactor(ui): migrate the ingestion source builder to Alchemy components by @annadoesdesign in #20044
  • refactor(ui): migrate ingestion source lists to Alchemy components by @annadoesdesign in #20043
  • refactor(ui): migrate the home page module menu and toast to Alchemy components by @annadoesdesign in #20045
  • feat(executor): file based token provider for executor by @skrydal in #20070
  • chore: Bump pyJWT and urllib3 constraints by @skrydal in #20073
  • fix(ingest/unity): resolve cross-catalog tables via the DataHub graph in the usage path by @askumar27 in #19752
  • fix(ingest/tableau): handle null column names in custom SQL lineage by @naeemdh in #20074
  • fix(ingest): raise snowflake-sqlalchemy floor to 1.11.0 for CVE-2026-15736 by @rajatoss in #19922
  • fix(patch): register a patch template for institutionalMemory by @Laolex in #18869
  • refactor(frontend): migrate the queries list to the Alchemy table by @annadoesdesign in #19997
  • fix(ingest/snowflake): use fixed-size TABLESAMPLE when the row count is unknown by @sgomezvillamor in #20041
  • refactor(ui): migrate schema, lineage, versioning, and glossary menus to Alchemy components by @annadoesdesign in #20011
  • refactor(ui): migrate user, group, and view lists to Alchemy components by @annadoesdesign in #20009
  • fix(ui): open the description editor from the sidebar pencil by @benjiaming in #20076
  • feat(frontend): emit Vite build manifest by @benjiaming in #20077
  • fix(gms): forward ssl.keystore.type/truststore.type to schema registr… by @manuschillerdev in #16997
  • feat(mfe): make MFE remote-module load timeout configurable by @rob-1019 in #18735
  • feat(documents): add explicit save mode for document editor behind fe… by @annadoesdesign in #20053
  • chore(deps): fix (nl.basjes.parse.useragent:yauaa) by @relaxedboi in #15315
  • refactor(ui): migrate domain, application, and entity tab menus to Alchemy components by @annadoesdesign in #20010
  • feat(ui): replace antd tooltips and popovers with FloatingOverlay by @annadoesdesign in #19870
  • refactor(frontend): migrate the query builder and empty state to Alchemy by @annadoesdesign in #19998
  • fix(gms): skip eager string building in debug logs by @david-leifker in #20083
  • fix(ingestion): do not report skipped dbt tests as assertion failures by @max-datahub in #20064
  • fix(cli): refresh datahub init --oauth tokens on each request by @nwadams in #20081
  • fix(ui/lineage): count charts in column lineage counts by @chriscollins3456 in #20087
  • fix(applications): Display parent applications in entity header instead of domain by @chriscollins3456 in #20095
  • fix(ingest): detect EXEC statement boundaries in T-SQL splitter by @kyungsoo-datahub in #19929
  • fix(ingest/mssql): preserve manually added dataJob lineage when incremental_lineage is enabled by @kyungsoo-datahub in #19930
  • feat(config): read metricsEnabled per operation, guard runtime configs with an arch test by @Ashish37-sh in #20068
  • fix(lineage): fix data product lineage issue by hiding assets with no lineage by @purnimagarg1 in #20037
  • docs: correct external data-quality assertion documentation by @max-datahub in #20063
  • ci(ui): fail when a locale file stores keys as nested objects by @v-tarasevich-blitz-brain in #20040
  • fix(ingest/bigquery): don't treat dated copies of a real table as shards by @treff7es in #19430
  • refactor(ui): consolidate app (part 2) by @v-tarasevich-blitz-brain in #19984
  • test(playwright): check impact analysis time filtering in the main lineage tab by @v-tarasevich-blitz-brain in #20099
  • refactor(ui): consolidate app (part 3) by @v-tarasevich-blitz-brain in #20069
  • fix(ingest/sql-parsing): skip table functions when extracting table names by @aviraj-gour in #20061
  • docs(i18n): describe what multi-language support translates by @benjiaming in #20085
  • fix(gms): skip Hazelcast Kubernetes join outside the cluster by @david-leifker in #20088
  • chore(ingest): cut over metadata-ingestion to SQLAlchemy 2.0 by @treff7es in #17982
  • ci: skip collect-metrics on forks by @NexuChat in #19680
  • docs(quickstart): document silent hang when DOCKER_HOST is unset with Colima/Rancher Desktop/Podman by @alejandro-publius in #19046
  • docs: move Ontology docs under Context in sidebar by @jjoyce0510 in #20075
  • docs(managed-datahub): release notes for v2.3.0 by @sachetansabhahit in #19926
  • feat(audit): add jti header for access audit logs by @RyanHolstien in #19902
  • feat(search): add provider-neutral embedding SPI and query dimension check by @alexjst in #20082
  • feat(actions): honour KAFKA_PROPERTIES_* env vars in the Kafka event source by @max-datahub in #20104
  • fix(actions): surface Kafka connection and auth failures instead of reporting the pipeline as running by @max-datahub in #20105
  • ci: pin ubuntu-latest runners to ubuntu-24.04 by @priyabratadas-dh in #20078
  • fix(upgrade): update componentScan package list to include additional migration mutators by @relaxedboi in #20067
  • fix(gms): pin token and write-path reads to primary under replica lag by @david-leifker in #20106
  • fix(ingest/hex): route queriedTables lineage through SchemaResolver by @alfiyas-datahub in #19162
  • feat(ingest/sigma): add a parser for Data Model /spec join keys and unions by @kyungsoo-datahub in #19970
  • fix(ui): show profile scope and aged stats on the Stats tab by @benjiaming in #20002
  • fix(upgrade): backfill asset-side dataProducts via RESTATE side effects by @ani-malgari in #20140
  • feat(search): add includeExplain and searchType search flags by @alexjst in #20084
  • fix(search): forward DFS_QUERY_THEN_FETCH on Elasticsearch 8 by @alexjst in #20093
  • feat(frontend): emit hidden source maps by @benjiaming in #20086
  • fix(ingest/documents): embed SYSTEM documents and reach non-global-context docs by @askumar27 in #20143
  • feat(ingest/sap-datasphere): discover Views not exposed for consumption by @acrylJonny in #20124
  • docs(airflow): clarify what materialize_iolets does by @sgomezvillamor in #20156
  • fix(search): apply latest-version filter to unfiltered searches by @max-datahub in #20148
  • fix(graphql): map missing entity types in EntityTypeMapper by @max-datahub in #20149
  • docs(readme): restructure README and move detailed content into docs by @lakshay-nasa in #19992
  • ci: assign Catalog tickets in PR-to-Linear routing by @lakshay-nasa in #20131
  • fix(ingest/profiling): drop a non-deterministic sample size from partitionSpec, document the rowCount contract by @sgomezvillamor in #20042
  • ci(security): route scan labels into release and security groups by @david-leifker in #20141
  • refactor(web): migrate shared and alchemy icons to phosphor by @annadoesdesign in #20134
  • fix(deps): floor pypdf at 6.19.0 for CVE-2026-103000 by @david-leifker in #20159
  • perf(frontend): serve precompressed brotli and gzip static assets by @benjiaming in #20094
  • fix(darkmode): fixed the colors and replaced antd in login and made sure the bg resp… by @annadoesdesign in #20162
  • refactor(cache): default standalone process caches off via Spring profiles by @david-leifker in #20133
  • refactor(web): migrate search icons to phosphor by @annadoesdesign in #20135
  • feat(ingestion/trino): add Oracle and StarRocks as supported connectors by @daha in #17678
  • fix(zdu): pin system-update image in nuke and nonblocking phases by @gdatahub in #20184
  • fix(actions): keep Wolfi Python working on OpenSSL 4 by @david-leifker in #20167
  • chore(test): Update test weights from CI runs (2026-10-05) by @github-actions[bot] in #20183
  • docs: Datahub Cloud Hotfix v2.2.3-cloud release notes by @devashish2203 in #20186
  • fix(build): diff pushed range in PrettierWriteChanged at pre-push by @devashish2203 in #20187
  • feat(ingest/bigquery): capture job labels as query custom properties by @treff7es in #20145
  • perf(ingest/clickhouse): cut SQL parsing out of the query-log path by @aviraj-gour in #19955
  • refactor(ui): consolidate app (part 4) by @v-tarasevich-blitz-brain in #20153
  • chore(i18n): drop stale translation keys and align a few translations by @v-tarasevich-blitz-brain in #20154
  • fix(test): fix flakiness in siblings search playwright test by @purnimagarg1 in #20121
  • fix(ui): fix scroll and flicker issues in select assets tab in views modal and collection module by @purnimagarg1 in #20098
  • fix(ui): expect phosphor Folder icon in filter utils test by @v-tarasevich-blitz-brain in #20207
  • feat(api): Add graphql and UI for API entity type by @chriscollins3456 in #20102
  • refactor(web): migrate ingest icons to phosphor by @annadoesdesign in #20136
  • fix(ci): test and publish the same nightly image build by @devashish2203 in #20202
  • feat(search): port the per-field Search V3 schema and document projector by @alexjst in #20195
  • feat(search): run V2 queries on Search V3 per-field fields, drop search tiers by @alexjst in #20196
  • fix(ingest/datahub-documents): prune deleted documents from the chunking checkpoint [PFP-6552] by @alexjst in #20215
  • fix(ingest/documents): re-embed when the server's embedding config changes [AI-3177] by @alexjst in #20164
  • feat(search): serve legacy browse, custom search config and dual-write facet counts on Search V3 by @alexjst in #20197
  • refactor(ui): consolidate app (part 5) by @v-tarasevich-blitz-brain in #20203
  • feat(search): allow nested index settings overrides with deep merge by @8silvergun in #20112
  • feat(entity-service): stamp emitModeMarker=sync on externally-originated sync writes by @rob-1019 in #19327
  • fix(graphql): de-duplicate group members across membership edge types by @max-datahub in #19801
  • fix(analytics): fix SearchBarFilter events fail mapping for values by @purnimagarg1 in #20238
  • fix(ingest/tableau): resolve workbook project via REST lookup when bulk listing misses it by @naeemdh in #20245
  • refactor(web): migrate entity V1 icons to phosphor by @annadoesdesign in #20137
  • feat(search): set Elasticsearch refresh interval per index service by @david-leifker in #20163
  • feat(graph-cache): publish finished full walks into partial snapshots by @david-leifker in #20179
  • feat(search): run the Stage 1 query on Search V3 keyword reads by @alexjst in #20213
  • fix(config): allow DATAHUB_POSTGRES_SCHEMA for SqlSetup metadata DDL by @david-leifker in #20217
  • feat(search): run the light Stage 1 query first on Search V3 keyword reads by @alexjst in #20216
  • fix(search): reindex when structured property copy_to mapping mismatches by @david-leifker in #20251
  • feat(search): run Search V3 full-text search on shared _search fields by @alexjst in #20218
  • feat(search): rerank Search V3 keyword results with document vectors by @alexjst in #20219
  • perf(profiling): skip the stddev NULL re-count, and drop the lone-query CTE by @kyungsoo-datahub in #20209
  • feat(search): match structured property values in Search V3 full-text search by @alexjst in #20214
  • feat(graph): add metrics for lineage PIT search and ES connection pool by @vasavimadhurima96 in #20118
  • fix(ingest/unity): use native ? markers for system-table SQL params by @max-datahub in #20194
  • feat(ingest/probe): shared verdict hooks for connector probes by @treff7es in #20111
  • docs(executor): require Kafka channel for Remote Executors on GCP instances by @pedro93 in #20241
  • feat(ingest/redshift,mssql): probe providers for Redshift and SQL Server by @treff7es in #20129
  • fix(ingest/transformer): never emit duplicate entries from the OVERWRITE path by @sgomezvillamor in #20239
  • fix(actions): install OpenSSL 4 TLSv1 shim as sitecustomize in stdlib by @david-leifker in #20252
  • fix(ui): stop counting members of every group owner in owner lists by @v-tarasevich-blitz-brain in #20257
  • fix(ingest/dbt): dedupe owners carried forward by the write_semantics=PATCH merge by @sgomezvillamor in #20240
  • refactor(web): migrate entityV2 shared icons to phosphor by @annadoesdesign in #20138
  • perf(search): defer per-result lineage counts off the search query by @benjiaming in #20144
  • refactor(web): migrate remaining app icons to phosphor by @annadoesdesign in #20139
  • fix(delete): hard delete removes references first and never deletes data written after the request by @Dutt23 in #20268
  • fix(search): pause Search V3 hybrid reranking after repeated failures by @alexjst in #20260
  • fix(ingest/sigma): only resolve a chart formula ref to a column that exists by @kyungsoo-datahub in #20000
  • fix(ingest/bigquery): handle temp UDFs and trailing semicolons by @agarwal-shreyas in #20021
  • fix(ingest/snowflake): use Streamlit app name when title is blank by @agarwal-shreyas in #19916
  • fix(ingest/s3): handle file names with dots in the stem when resolving format extension by @rospe in #17595

New Contributors

Full Changelog: v1.8.0rc3...v1.8.0rc4

Don't miss a new datahub release

NewReleases is sending notifications on new releases.