v1.8.0rc1
Pre-release
Pre-release
What's Changed
- docs(cloud): add breaking change for context docs views by @manuelawei8 in #18843
- perf(graphql): batch Container.entities count-only resolution to eliminate N+1 by @gdatahub in #18640
- fix(ingest): exclude nltk 3.10.1, which silently breaks document chunking by @nwadams in #18847
- ci(build): Use chainguard indexes for python packages by @devashish2203 in #18714
- docs(ingest): clarify allow/deny pattern matching is prefix-anchored by @javabrett in #18564
- fix(ingest/cassandra): shut down Cluster in addition to Session on close by @alokr-dhub in #18829
- perf(graphql): resolve batch mutation validation in one existence check by @gdatahub in #18830
- perf(roles): batch actor existence checks and role membership writes by @gdatahub in #18715
- feat(entity-registry): enforce one aspect per relationship edge signature by @david-leifker in #18845
- fix(deps): bump cryptography and harden datahub-actions CVE floors by @david-leifker in #18867
- fix(ingest/hex): cap skipped_cells report growth with LossyList by @sgomezvillamor in #18871
- feat(api): support structured fields on custom assertions by @AdrianMachado in #18748
- feat(ui): render structured CUSTOM assertions with DATASET parity by @AdrianMachado in #18750
- feat(ingestion): add S3 and GCS-backed CLI version matrix sources by @alokr-dhub in #18202
- chore(release): bump 1.7.0 cli by @david-leifker in #18877
- feat(entity-service): add pluggable DB-routing seam to EbeanAspectDao by @Dutt23 in #18859
- perf(search): trim home-widget result fragment by @benjiaming in #18841
- feat(assertions): migrate notes to dedicated aspect by @AdrianMachado in #18771
- feat(ingest): emit CUSTOM assertions for dbt, GX, and data contracts by @AdrianMachado in #18749
- docs(logical-models): update centralized management to include domain propagation by @asikowitz in #18880
- docs: finalize v1.7.0 release notes in updating-datahub.md by @david-leifker in #18883
- chore(): bump quickstart default to v1.7.0 by @david-leifker in #18884
- feat(documents): add more filters and sorting functionality ACR-8526 by @annadoesdesign in #18846
- chore(ebean): bump ebean datasource version by @Dutt23 in #18885
- fix(pgqueue): register usage GenericProducer for OTEL audit export by @david-leifker in #18872
- fix(ingest/vertexai): skip projects with the Vertex AI API disabled instead of aborting the sweep by @hhobson in #18302
- feat(cli/migrate): 3-stage migration framework, urns-mapping command, and assertion/aspect fixes by @treff7es in #18544
- refactor(ingest): remove the deprecated Great Expectations SQL profiler by @sgomezvillamor in #18864
- docs(clickhouse): document required ClickHouse permissions by @alfiyas-datahub in #18893
- perf(gms): eliminate per-entity fanout in batch form assign/remove by @gdatahub in #18693
- feat(entity-service): post-commit aspect retention with coalescing drain buffer by @Dutt23 in #18661
- fix(ingest/snowflake): preserve native CLL for single-target stream queries by @sgomezvillamor in #18682
- fix(ingest/tableau): apply lineage_overrides to URN construction by @acrylJonny in #17617
- test(ingest/doris): pin positional DATA_LENGTH access in profiling enrichment by @acrylJonny in #18825
- fix(ingestion/airbyte): per-table schema outranking the connector-wide from airbyte api by @acrylJonny in #18856
- feat(ingest/doris): support non-default catalogs for Iceberg ingestion by @acrylJonny in #18827
- fix(ingest/openapi): handle empty servers list when resolving basepath by @brock-acryl in #18905
- fix(ui): clean up the schema header by @annadoesdesign in #18876
- fix(ingest/doris): keep tables whose column reflection fails by @acrylJonny in #18828
- docs(managed-datahub): update source connector count to 140+ by @tylerjbarry in #18909
- fix(auth): remove hardcoded systemClientSecret default from server configs by @supersingh05 in #18886
- feat(data products): add parentDataProduct for data product hierarchies by @ani-malgari in #18890
- fix(ingest): fail the run when every document fails to process by @nwadams in #18848
- feat(data products): GraphQL layer for data product parent hierarchies by @ani-malgari in #18919
- chore: product update for 2.1 by @benjiaming in #18916
- fix(entity): consume aspect batch streams within the transaction scope by @Dutt23 in #18921
- ci(ingest): capture diagnostics for intermittent exit-139 test crashes by @alokr-dhub in #18929
- fix(smoke-test): harden flaky smoke tests by @Dutt23 in #18923
- docs(cloud): release 2.1.1 hotfix by @anshbansal in #18930
- perf(graphql): batch step-state writes and drop per-id exists probe by @gdatahub in #18713
- fix(timeseries): avoid divide-by-zero in batchGetAspectValues when limit is 0 by @gdatahub in #18939
- fix(ingest): filter no-op delimiter nodes in Block statement handling by @sgomezvillamor in #18414
- feat(search): add getActiveIncidentStats batched aggregation primitive by @gdatahub in #18585
- fix(ingest/stateful): refresh createdOn on checkpoint soft-delete to prevent GC hard-deletion by @sgomezvillamor in #18937
- fix(graphql): expose ServiceProperties.customProperties and Application status/exists by @JohnRTurner in #18756
- feat(looker): emit per-field explore usage (fieldCounts) from System Activity by @askumar27 in #18955
- fix(cli): parse unquoted multi-word values in search filters by @nwadams in #18917
- fix(netrc): Fix netrc and add validator by @AdrianMachado in #18948
- perf(smoke-test): cut redundant auto-waits, fix wait-mechanism race by @shirshanka in #18881
- fix(smoke-test): retry relatedDocuments lookup instead of a fixed sleep by @shirshanka in #18962
- refactor(entity): route retention & aspect DB access through OperationContext; collapse EntityServiceImpl ctors by @Dutt23 in #18914
- fix(docker): unblock Chainguard CI Python image builds on arm64 by @devashish2203 in #18941
- feat(ci): add base_branch to workflow metrics for PR triggers by @devashish2203 in #18968
- feat(entity): add optimistic locking for aspect DB writes by @kewats in #18895
- perf(smoke-test): weight batches by wall clock, not summed test duration by @shirshanka in #18960
- docs(deploy): document MCP/Kafka ingest throttling by @david-leifker in #18976
- adding sort functionality to the domains sidebar by @annadoesdesign in #18952
- feat(metrics): add Documents-style sidebar filters, sort, and expand-all by @annadoesdesign in #18954
- feat(glossary): sorting and filtering in the glossary sidebar by @annadoesdesign in #18953
- fix: address nightly docker smoke failures for migrate, CDC, and search by @david-leifker in #18940
- perf(ui): serve useGetAuthenticatedUser from UserContext by @benjiaming in #18844
- feat(auth): support domain-scoped CREATE_ENTITY for writers by @david-leifker in #18944
- feat(schemaField): mirror dataset domains and ownership via MCP side effects by @david-leifker in #18868
- feat(zdu): enable ZDU stage flags for quickstart by @david-leifker in #18972
- fix(upgrade): gate ZDU alias swap on launch-time doc count by @david-leifker in #18978
- feat(ui): add alchemy CodeBlock and promote ButtonTabs by @annadoesdesign in #18988
- fix(looker): parse JSON array query.fields and use -NULL filter syntax by @askumar27 in #18992
- docs: fix README.md quickstart anchor by @taylor-chen in #18990
- feat(client): add outbound request-context enricher seam (HTTP + Restli) by @Dutt23 in #18970
- ci: restore Depot runners for build-and-test via determine-runners by @devashish2203 in #18998
- fix(search): log restricted cluster-info access at WARN instead of ERROR by @alexjst in #18995
- fix(smoke): harden usage bucket and access-token list flakes by @david-leifker in #19001
- chore(deps): Dependencies bump by @skrydal in #18947
- chore(tests): Fix flaky, order-based test by @skrydal in #19036
- chore(test): Update test weights from CI runs (2026-08-09) by @github-actions[bot] in #19013
- perf(dataproducts): Improve some batching in data product batch mutations by @supradeep-datahub in #18963
- chore(ingestion): MLFLow does not depend on setuptools by @skrydal in #19037
- fix(ingest): use tempfile.gettempdir() instead of hardcoded /tmp by @EazyHood in #18811
- fix(ingest): accept relative start_time in generated JSON schema by @hhobson in #18114
- feat(ingest/elasticsearch): use opensearch-py to support Elasticsearch and OpenSearch by @skrydal in #19033
- docs(ingestion): describe actual MLflow connector coverage by @aistanbulresearch in #18620
- fix(cli): send version-skew warning to stderr so stdout stays parseable by @Vashu2003 in #18863
- perf(ci): unfreeze the Gradle cache, scale workers, and cut JDK download time by @shirshanka in #19003
- fix(ci): stop the Gradle build cache ratcheting until it cannot save by @shirshanka in #19007
- fix(ci): stop PR runs from duplicating shared caches against the 10GB Actions budget by @shirshanka in #19008
- perf(graphql): batch analytics highlights into 2 Elasticsearch queries by @gdatahub in #18997
- fix(test/playwright): fix flaky playwright test in upload-files by @purnimagarg1 in #19051
- fix(linear): Update linear routing by @AdrianMachado in #18839
- feat(profiler): add profiling_isolation_level option for MySQL/Postgres by @kyungsoo-datahub in #18690
- fix(incidents): preserve omitted update fields by @Yatsuiii in #18826
- feat(ingest/airbyte): opt in to inactive connection ingestion by @acrylJonny in #19062
- docs(mcp): use header auth instead of the ?token= URL by @nwadams in #19083
- fix(sec): bump wire-runtime 5.2.0 → 6.3.0 for CVE-2026-45799 by @supersingh05 in #19094
- perf(playwright): enable workers_per_shard=2 with cross-worker seed locking by @devashish2203 in #19081
- fix(ingest): include datapack resources in package_data by @solomonadzape95 in #19038
- fix(graphql): revert Container.entities count-only batching (#18640) by @gdatahub in #19104
- chore(ingestion): Bump urllib3 and tableau floors by @skrydal in #19056
- ci(playwright): enable no-wait-for-timeout lint check by @priyabratadas-dh in #19109
- fix(build): give the betterleaks mise pin a resolvable backend by @pedro93 in #19118
- fix(ingest/dbt): warn when column lineage is dropped due to missing c… by @N-45div in #18823
- docs(website): update announcement banner to promote CONTEXT 2026 summit by @tylerjbarry in #19121
- feat(summary): extend modular summary tab by @annadoesdesign in #18879
- docs: clarify assertion API support across SDK versions by @chinnuteja in #19055
- fix(ci): fall back unrouted PRs/issues to OSS Linear team by @AdrianMachado in #19126
- feat(ingest): embed short documents by default in document sources by @alexsku in #19103
- chore: add Cursor Bugbot project rules by @AdrianMachado in #19101
- refactor(search): resolve ES index prefix per-operation via IndexPrefixResolver by @Dutt23 in #19102
- docs(managed-datahub): release notes for v2.1.2 by @anshbansal in #19107
- fix(gms): Prevent Caffeine 2 from creeping into GMS classpath by @supradeep-datahub in #19048
- ci(playwright): duration-based bin-packing for Playwright shards by @priyabratadas-dh in #19140
- ci: remove Cypress from OSS CI (deprecated) by @benjiaming in #19128
- fix(zdu): isolate reindex and sweep upgrade ids to restore the daily E2E by @gdatahub in #19122
- fix(event-generator/timeline): report v2 field path type changes as MODIFY by @treff7es in #19136
- fix(test): isolate Postgres IT schemas by @Dutt23 in #19142
- perf(graphql): Container.entities count-only batching with AST-based selection by @gdatahub in #19106
- fix(entity): key Postgres advisory write lock on (urn, aspect) not the whole entity by @Dutt23 in #19137
- feat(entity): Hazelcast per-URN write gate to mitigate optimistic-locking thundering herd by @Dutt23 in #19029
- fix(gms): Finish adding support for applications on glossary nodes by @chriscollins3456 in #19120
- test(product-update): gate What's New JSONs on the latest release by @benjiaming in #18986
- docs(release): add v1.6.0.1 release notes by @supersingh05 in #19151
- docs(agent-context): document Copilot Studio MCP OAuth for DataHub Cloud by @acrylJonny in #19133
- feat(auth): add Micrometer login metrics and session failure usage events by @david-leifker in #19147
- fix(smoke-test): put search fixture namespace in name/title fields by @david-leifker in #19153
- fix(lineage): fall back to type icon for hydrated transformation nodes (CAT-2698) by @benjiaming in #19150
- fix(restore-indices): don't silently match zero rows when only gePitEpochMs is set by @yjyspree in #18860
- fix(dbt): add missing
add_domainsupport in meta_mapping by @otto-the-otter-bot[bot] in #19157 - fix(smoke-test): remove non-deterministic networkidle wait in structured-properties beforeEach by @shirshanka in #19159
- fix(documents): make search-index mode an explicit DocumentService contract by @shirshanka in #19161
- fix(gms): skip the aliases aspect when the URN is already lowercased by @aviraj-gour in #19138
- fix(ingestion): correct imports and read pattern in mlfeature_table_read example by @RaYYeR220 in #18632
- feat(docs): emit the Python SDK class name for every aspect by @aistanbulresearch in #18668
- chore: remove deprecated Cypress tests and tooling by @priyabratadas-dh in #19164
- fix(test/playwright): stabilize flaky playwright test in edit-documentation by @purnimagarg1 in #19054
- chore: bump micrometer-core, reactor-netty-core, httpcore5 for security fixes by @supersingh05 in #19172
- fix: align all Jetty 12 modules to 12.1.10 (CVE-2026-10050) by @supersingh05 in #19176
- fix(graphql): preserve double precision for structured property numbers by @david-leifker in #19177
- fix(docker): start Kafka for the debug-elasticsearch profile by @david-leifker in #19180
- fix(ingest/dbt): emit platform-instance aspects for target siblings by @javabrett in #18539
- docs(snowflake): fix external MCP server setup for Snowflake CoWork by @nwadams in #19183
- fix(deps): bump Apache Parquet stack to 1.18.0 for shaded Jackson CVEs by @david-leifker in #19188
- fix(deps): bump Log4j to 2.25.5 for CVE-2026-49844 by @david-leifker in #19193
- chore(quickstart): remap v1.6.0 to v1.6.0.1 by @david-leifker in #19184
- fix(deps): bump Logback to 1.5.38 for CVE-2026-9828 by @david-leifker in #19195
- feat(views): support structured property filters in the View builder by @acrylJonny in #19149
- fix(upgrade): scope KEDA ScaledObject deletion to the namespace by @Ashish37-sh in #19205
- fix(ingest/airbyte): make integration-test ID rewrite reliable and loud by @puneetagarwal-datahub in #19165
- docs(structured-properties): explain hard-delete name reuse block by @david-leifker in #19215
- docs(website): remove UTM tags from internal links; update integrations SEO copy by @tylerjbarry in #19178
- fix(auth): restrict container and schemaField under VBAC by default by @david-leifker in #19212
- fix(ci): fixes buildx flake on credentials by @RyanHolstien in #19189
- fix(plugins): fix stale plugin loading by @RyanHolstien in #19148
- fix(docs): clarify permissions for SF dynamic table extraction by @kevinkarchacryl in #19214
- fix(ingestion): support Qlik stale metadata removal by @Sakshamm-Goyal in #18344
- fix(actions): Bump actions executor dependencies by @skrydal in #19219
- chore(openapi): deprecate v2 entity and relationship APIs by @david-leifker in #19218
- feat(lineage): Add lineage counts resolver that supports including ghost entities by @asikowitz in #19146
- docs: Clarify anomaly detection 14-day history requirement by @AdrianMachado in #19223
- fix(smoke-test): harden search pagination total under ES lag by @david-leifker in #19220
- docs(feature-guides): add Metrics & Semantic Models feature guide by @maggiehays in #19221
- test(sqlalchemy): unit coverage for SQLAlchemyQueryCombiner by @kyungsoo-datahub in #18703
- perf(gms): cache resolved retention policies on aspect writes by @chakru-r in #19174
- docs(feature-guides): fix invalid SDK expression example on metrics g… by @maggiehays in #19226
- perf(ci): build only the docker images a PR can affect, reuse the rest by @shirshanka in #18983
- fix(ci): keep the -slim suffix inside the actions image tag variable by @shirshanka in #19238
- fix(ingestion): require opensearch-py 3.x for elasticsearch extra by @david-leifker in #19234
- fix(smoke-test): pin consumer-lag polls to the bootstrap admin token by @david-leifker in #19235
- feat(upgrade): backfill dataset aliases lowercasedUrn on system update by @aviraj-gour in #18679
- chore(build): migrate to compile-time Java 25 (Gradle 9) by @Dutt23 in #19237
- perf(recommendations): Cache check for existence of usage events index by @supradeep-datahub in #19139
- perf(gms): Cache result of ActorContext.isActive() for the lifetime of an actor by @supradeep-datahub in #19169
- chore(ingest/cassandra): require cassandra-driver>=3.30.1 to fix crash at exit by @alokr-dhub in #18934
- fix(ingestion/kafka-connect): fix JDBC sink lineage for Oracle, SQL Server, and non-standard JDBC URLs by @acrylJonny in #16647
- ci(ingestion): report failed pytest results to PostHog by @devashish2203 in #19250
- chore: remove stale PySpark references and bump test-only pyspark pin by @max-datahub in #18761
- fix(ui): Decode schema field names when displaying in the UI by @chriscollins3456 in #19175
- fix(schemaField): skip disable-cleanup deletes when mirroring is off by @david-leifker in #19224
- feat(forms): assign compliance forms to owners of a specific type by @acrylJonny in #17787
- chore(docker): default local Elasticsearch image to 8.19.2 by @alexjst in #19245
- feat(auth): disable non-expiring access tokens by default by @david-leifker in #19222
- feat(ingestion): Document and use uv cache hardlinking by @skrydal in #19043
- fix(search): remove broken hasFailingAssertions filter by @AdrianMachado in #19216
- fix(components): Update card and pill component by @annadoesdesign in #19261
- chore: bump libthrift 0.22.0 → 0.23.0 (CVE-2026-43869) by @supersingh05 in #19262
- feat(incidents): optional caller-provided id for idempotent raiseIncident by @Yatsuiii in #18900
- fix(smoke-test): wait for searchable ingest and UPSERT missing migrate lineage by @david-leifker in #19256
- perf(entity): cache DefaultAspectsUtil dataPlatform lookups by @chakru-r in #19251
- perf(recommendations): Support selective module fetching in listRecommendations by @supradeep-datahub in #19246
- chore(entity): de-duplicate scoped-retry failed results to prevent duplicate dead-letter events by @Dutt23 in #19260
- chore(web): fail lint on new antd imports by @ani-malgari in #19272
- docs(managed-datahub): restructure OSS vs Cloud comparison guide by @lakshay-nasa in #19110
- fix(entity): route EntityClient default methods through cached batchGetV2 by @chakru-r in #19253
- fix(graph): match relatedEntityTypes case-insensitively by @alexjst in #19268
- test(smoke): fix flaky test_list_groups and container smoke tests by @devashish2203 in #19281
- fix(ingestion/profiling): stop losing columns that differ only by case by @treff7es in #19186
- test(smoke): add p0 and domain markers with --domain selection by @sachetansabhahit in #19200
- fix(load-indices): do not default lePitEpochMs to now by @david-leifker in #19285
- test(smoke): tag every smoke-test module with its owning domain by @sachetansabhahit in #19202
- chore(ingest/deps): bump nltk to 3.10.3 for CVE-2026-12075 by @radulaurentiu02 in #19201
- docs(website): update footer blog link to datahub.com/blog by @tylerjbarry in #19263
- fix(gms): fetch indexed search fields for entity graph cache by @david-leifker in #19288
- perf(gms): batch optimistic-lock CAS updates via JDBC executeBatch by @Dutt23 in #19287
- feat(dataproducts): ingestion support for parent data products by @ani-malgari in #18925
- feat(metadata-models): add UsageFeatures and StorageFeatures aspects for pre-computed timeseries stats by @JohnRTurner in #18104
- perf(frontend): slim down sibling fragment in search and data product queries by @JohnRTurner in #17863
- feat(dataproducts): UI updates to support parent data products by @ani-malgari in #18927
- fix(ui): add errorPolicy 'all' to useSearchUsersQuery by @javabrett in #17933
- fix(embed): reject dangerous renderUrl schemes to prevent stored XSS by @supersingh05 in #19299
- fix(editor): sanitize PDF preview iframe src to prevent stored XSS by @supersingh05 in #19300
- feat(groups): expand maximum CorpGroup name length to 250 characters by @rob-1019 in #17903
- fix(ingest/powerbi): resolve Snowflake database for parameterized Value.NativeQuery by @javabrett in #18724
- fix(react): sanitize query and incident descriptions to prevent stored XSS by @supersingh05 in #19298
- fix(policy): fix for default view self policy by @RyanHolstien in #19297
- ci(deps): auto-select a fast APT mirror, gated by CI_USE_FAST_API_MIRROR by @chakru-r in #19307
- fix(ci): do not treat pytest collection-error XML as all-passed by @chakru-r in #19305
- docs(metadata-ingestion): move connector agent guidance by @anshbansal in #19309
- fix(playwright): remove wait for networkidle state on homepage in search tests by @purnimagarg1 in #19311
- fix(permissions): add debouncing to searches in policy builder and lists by @v-tarasevich-blitz-brain in #18767
- perf(search): skip unused sibling search work by @MSDehghan in #19286
- fix(gms): refuse startup when UI search indexing paths are both off by @david-leifker in #19295
- feat(ingest/snowflake): add preserve_column_case to keep column casing by @treff7es in #19187
- build(deps): bump netty 4.2.16 to 4.2.17 (CVE-2026-59902) by @supersingh05 in #19304
- feat(ui): Add type filter dropdown to ingestion source page by @chriscollins3456 in #19264
- fix(gms): skip null entity-graph-cache relationship endpoints by @david-leifker in #19301
- fix(ci): Fix linting in playwright test by @chriscollins3456 in #19323
- fix(auth): restrict GMS /auth helpers to system client by @david-leifker in #19316
- feat(incidents): add incident support for mlModel and mlFeature entities by @Danishlynx in #19112
- docs(ingestion): clarify that Manage Metadata Ingestion runs recipe code by @david-leifker in #19291
- fix(embed): normalize BigQuery URLs for entity lookup by @takeuchiiiiii in #18313
- feat(ingestion/sqlmesh): add SQLMesh ingestion connector by @rob-1019 in #18799
- feat(ingest): read Confluent Cloud Stream Catalog metadata in the kafka and kafka-connect sources by @acrylJonny in #18764
- chore(smoke-test): adopt AGENTS.md + CLAUDE.md shim pattern by @anshbansal in #19318
- feat(metadata-model): deprecate SemanticModelInfo.datasets, ship container-model authoring + migration by @ani-malgari in #18956
- docs: move Use Docs with AI Tools out of the What Is DataHub? section by @lakshay-nasa in #19325
- docs: make town hall links evergreen and update community count to 16k by @lakshay-nasa in #19328
- docs(website): bump version dropdown to 1.7.0 and archive 1.6.0 by @lakshay-nasa in #19330
- fix(ingest/redshift): scope query-text scans to the ingestion window by @puneetagarwal-datahub in #19167
- feat(incidents): complete incident UI for mlModel and mlFeature by @Danishlynx in #19132
- ci: separate lint from Gradle build and test by @devashish2203 in #19290
- feat(ingestion): move the executor engine into datahub.executor by @rajatoss in #18942
- fix(smoke-test): Fix flaky tests caused by self-referential domains by @supradeep-datahub in #19335
- feat(semantic-search): add a minScore relevance floor on the semantic kNN path by @alexjst in #19270
- fix(ingest/airbyte): treat /streams errors as a warning by @acrylJonny in #19331
- fix(search): do not expand container filters on non-hierarchical conditions by @max-datahub in #19339
- fix(ingest/sap-datasphere): prefix bare analytic-model business-layer upstreams with space by @acrylJonny in #19352
- docs(managed-datahub): release notes for v2.1.3 by @devashish2203 in #19353
- feat(agent-context): add incident tools (list/raise/resolve) to mcp_tools by @Choppaaahh in #18341
- test(smoke): stabilize top OSS pytest flakes under shared GMS by @devashish2203 in #19324
- fix(cli): use messaging lag endpoints in datahub check get-kafka-consumer-offsets by @pedro93 in #19247
- fix(): Improve structure of github-documents source by @jjoyce0510 in #19333
- feat(incidents): add incident support for schemaField by @cnpierrepapi in #19115
- feat(agent-context): add SchemaFieldEntity incident fragment to list_incidents by @Choppaaahh in #19357
- feat(gms): optimize GraphQL aspect fetching for all entity types by @benjiaming in #18987
- feat(dataproducts): dataproducts marketplace GraphQL layer by @ani-malgari in #19334
- test(smoke): harden login_as against xdist /logIn 400s by @david-leifker in #19356
- fix(auth): accept LoginSource enum names in getSource by @david-leifker in #19355
- fix(gms): add @noAspects to SchemaFieldEntity incidents field by @benjiaming in #19358
- fix(ingestion/recording): scrub secrets from recorded HTTP cassettes by @supersingh05 in #19332
- feat(ui/lineage): Show hidden column lineage counts beside columns by @asikowitz in #19181
- feat(graphql, web): SemanticModel entities API and lineage bounding boxes by @ani-malgari in #18957
- perf(analytics): batch DailyReport Elasticsearch queries call by @gdatahub in #19021
- feat(ingest/informix): add IBM/HCL Informix connector by @max-datahub in #18589
- ci: stop cancelling protected-branch workflow runs on new pushes by @devashish2203 in #19354
- fix(ingest/ldap): bound connect and operation timeouts by @alokr-dhub in #18931
- fix(ingestion): pin the test clock to UTC by @agarwal-shreyas in #19203
- perf(graphql): batch exists, parentContainers and parentNodes resolution via DataLoaders by @gdatahub in #19199
- feat(dataproducts): Data Product profile enhancements by @ani-malgari in #19342
- fix(ingest/informix): correct VARCHAR length decoding, harden catalog joins, resolve extended types by @max-datahub in #19371
- chore(system-update): default-disable completed pre-v1.0.0 backfills by @Dutt23 in #19378
- feat(dataproducts): Data Product Marketplace UI by @ani-malgari in #19343
- feat(incidents): support incidents on mlFeatureTable (all six gates) by @Danishlynx in #19367
- docs(cli): add datahub evals command reference by @nwadams in #19329
- feat(i18n): Adding Japanese locale [BETA] (cat-2997) by @benjiaming in #19361
- fix(auth): stop trusting client appSource for aspect authorization by @david-leifker in #19384
- fix(gms): load rate-limit policy from file and JSON overlay by @david-leifker in #19271
- fix(policies): apply validator level aspect edit controls for user and group aspects by @RyanHolstien in #19360
- fix(ingest): dispatch CLI telemetry off the startup critical path by @alexsku in #19386
- chore(test): Update test weights from CI runs (2026-08-23) by @github-actions[bot] in #19393
- fix(ui/lineage): Support potentially displaying query nodes in bounding boxes by @asikowitz in #19258
- fix(ingest/powerbi): only warn on M-Query parse failures for genuine M-Query expressions by @NehaGslab in #18720
- fix(i18n): apply native-speaker corrections to the Swedish (sv) locale by @max-datahub in #19401
- fix(incidents): authorize field incidents against the parent entity by @cnpierrepapi in #19405
- fix(ingest/sql-queries): harden error handling and remove dead code by @askumar27 in #19099
- fix(lineage): bound scrollAcrossLineage traversal to prevent GMS OOM by @alexjst in #19413
- fix(search): scope query filter rewriters to their declared search types by @max-datahub in #19411
- fix(docker): add grpcio to chainguard-ci no-build packages by @devashish2203 in #19417
- docs(managed-datahub): release notes for v2.1.4 by @devashish2203 in #19420
- perf(gms): batch frontier scrolls in hierarchy graph fallback by @david-leifker in #19412
- perf(gms): Cache corpGroup roleMembership via SystemEntityClient by @supradeep-datahub in #19404
- fix(ingestion): use ephemeral ports in integration test Docker fixtures by @alokr-dhub in #19310
- fix(ingest/databricks): tolerate VARIANT during SQLAlchemy profiler reflection by @acrylJonny in #19243
- feat(ingest): OAuth for the GraphQL API and circuit breakers by @max-datahub in #18548
- fix(ingest/fivetran): skip blank column names in column lineage by @alfiyas-datahub in #18945
- fix(executor): address review findings from the executor port by @rajatoss in #19373
- fix(ingest/snowflake): stop paginating database-wide SHOW commands by @treff7es in #19143
- fix(restli-client): send only the current batch in batchIngestProposals by @Dutt23 in #19426
- chore(ingest): allow sqlparse 0.6.0 and drop the unused sql-metadata dep by @treff7es in #19407
- docs: harmonize product naming on DataHub Core and DataHub Cloud by @max-datahub in #19418
- refactor(frontend): polish semantic model summary modules and shared … by @annadoesdesign in #19098
- docs(observe): add SQLMesh and ODCS to quality-signal integrations by @AdrianMachado in #19439
- docs(managed-datahub): fix executor AWS Secrets Manager IAM policy by @rajatoss in #19448
- test(ingestion): fix flaky matrix-source read-fails test by @alokr-dhub in #19450
- docs: use Change Proposals naming and add Logical Model Propagation row by @max-datahub in #19446
- perf(graphql): batch-load Dashboard.usageStats buckets and metrics by @gdatahub in #18266
- fix(embed): resolve Power BI Workspace App URLs in Chrome extension lookup (CUS-9841) by @benjiaming in #19217
- feat(frontend): add editable CodeBlock with SQL validation and format… by @annadoesdesign in #19462
- fix(ingest/mongodb): add missing bytes and DatetimeMS type mappings by @JohnRTurner in #19389
- feat(docs): Make changes to AGENTS.md files to improve token efficiency by @chriscollins3456 in #19429
- feat(system-update): add progress ETA for entity-consistency scans by @david-leifker in #19388
- fix(openapi): redact unauthorized lineage scroll endpoints as restricted by @david-leifker in #19463
- fix(dataProduct): batch unset side effect graph queries for large membership writes by @david-leifker in #19465
- perf(trace): pool Kafka consumers and bound trace executor by @david-leifker in #19464
- feat(ingest/cube): ingest Cube views as Semantic Model by @acrylJonny in #19440
- fix(ingest/documents): stop checkpoint poisoning by failed documents by @alexjst in #19466
- fix(i18n): improve Japanese localization wording by @takeuchiiiiii in #19443
- fix(ingest/spark): restore lineage lost to shaded-jar relocations and a Scala 2.12/2.13 mismatch by @treff7es in #19254
- fix(search): prevent structured-property text-mapping poisoning and surface ES shard failures by @alexjst in #19442
- fix(i18n): slim the parity PR comment to per-locale counts by @max-datahub in #19471
- feat(ingest/microstrategy): ingest project schema as Semantic Model by @acrylJonny in #19472
- feat(ingest): retier connector support statuses as Alpha/Beta/GA by @treff7es in #19454
- fix(structured-properties): clarify field-collision error for hard-deleted properties [PFP-5468] by @alexjst in #19444
- feat(structured-properties): require soft delete before hard delete [PFP-5468] by @alexjst in #19445
- fix(gms): share AWS credentials to prevent IRSA refresh task leaks by @david-leifker in #19483
- fix(graphql): restore Container IsPartOf INCOMING via GraphClient by @david-leifker in #19489
- fix(openapi): restore numeric prefixes to OpenAPI group names so v3 spec is the default by @supersingh05 in #19198
- feat(search): include metrics and semantic models in global search by @ani-malgari in #19492
- fix(ui): updated data marketplace by @annadoesdesign in #19467
- docs: add Otto the Otter community FAQ by @lakshay-nasa in #19491
- fix(ingest/powerbi): recover Databricks lineage lost to three M-Query shapes by @puneetagarwal-datahub in #19364
- fix(ingest/powerbi): resolve M-Query names against enclosing let scopes by @puneetagarwal-datahub in #19370
- perf(applications): batch writes and reads in application batch mutations by @gdatahub in #18721
- fix(dataproducts): fixes for data marketplace by @annadoesdesign in #19504
- fix(graph): stop entity-graph cache from silently dropping relationships by @max-datahub in #19498
- ci: add is_community_contribution flag to PostHog CI metrics by @devashish2203 in #19452
- fix(search): make structured-property mappings explicit (target-index updates + dynamic:false) by @alexjst in #19490
- fix(ui/lineage): Fix bugs around column-level lineage by @asikowitz in #19493
- chore(test): Update test weights from CI runs (2026-08-30) by @github-actions[bot] in #19512
- fix(executor): make Task an ABC so incomplete tasks are rejected by @rajatoss in #19460
- fix(ingest): serialize workunit processor report values in as_obj by @aviraj-gour in #19423
- perf(gms): Use cached aspect for per-request CorpUserFlags fetches by @supradeep-datahub in #19476
- chore(uv): narrow chainguard-ci no-build-package to grpcio by @devashish2203 in #19520
- fix(bigquery): warn that extract_column_lineage is legacy-path only by @agarwal-shreyas in #19204
- fix(i18n): fix German translation to avoid overflow by @v-tarasevich-blitz-brain in #19475
- fix(ingestion/mode): stabilize the threading speedup test on CI by @Danishlynx in #19278
- feat(ui): make deprecation date input editable by @v-tarasevich-blitz-brain in #19424
- fix(ingest/fabric-onelake): add workspace external URL by @billpratt in #19468
- docs(managed-datahub): release notes for v2.1.5 by @david-leifker in #19523
- fix(ui): allow a deprecated column's replacement to come from another parent by @v-tarasevich-blitz-brain in #19461
- feat(profiler): enforce MySQL-family profiling row/size guardrails by @kyungsoo-datahub in #18699
- feat(auth): enforce timeseries view privileges across APIs by @david-leifker in #19508
- fix(ingest/ci): restore integration test weights from before 2026-08-30 update by @skrydal in #19527
- fix(ingest/reporting): improve masking of CLI report outputs by @skrydal in #19515
- perf(graphql): batch and scope
siblingsSearchresolution by @gdatahub in #19303 - feat(ui): add global styles and support for dark mode by @purnimagarg1 in #16965
- fix(ingest/clickhouse): resolve query-log lineage to database-qualified URNs by @aviraj-gour in #19350
- fix(ci): match Compose v2 hyphen prefixes in docker_logs.sh by @devashish2203 in #19545
- chore(ci): bump GitHub Actions pins off Node 20 by @devashish2203 in #19544
- fix(gms): evict entity client cache on sync ingest to fix read-your-writes by @Dutt23 in #19546
- feat(ingestion/metabase): add column-level lineage, models, collection tags/containers, and hardening by @acrylJonny in #15262
- fix(ingest/masking): unify registration, make masking idempotent and fail-closed by @skrydal in #19526
- fix(lineage): don't scan the whole graph index for entities with no lineage edges by @nwadams in #19528
- chore(docker): remove packages from chainguard-ci no-build list by @devashish2203 in #19552
- feat(ingest/bigquery): relocate profiler into profiling/ package + add SQL/identifier guards [1/9] by @acrylJonny in #19478
- docs(release): add v1.6.0.2 release notes by @david-leifker in #19550
- fix(deps): bump mariadb-java-client to 2.7.14 for CVE-2026-55856/557/558 by @david-leifker in #19555
- docs: Reorganize Data Quality & Observability docs to managed-datahub by @AdrianMachado in #19553
- feat(api): add per-platform entity inventory counts by @david-leifker in #19559
- perf(ingest/bigquery): partition-ID sentinel constants + prebuilt system-tables deny pattern [2/9] by @acrylJonny in #19479
- fix(docker): use printf for requirement lists in datahub-actions image build (1/2 for AI smoke) by @alexjst in #19560
- fix(test/playwright): stabilize playwright tests (#11983) by @purnimagarg1 in #19503
- fix(test): isolate lineage smoke test from migrate xdist collision by @devashish2203 in #19558
- test(smoke): correct domain markers on misclassified smoke modules by @sachetansabhahit in #19570
- fix(groups): converge native group membership after group delete and recreate by @v-tarasevich-blitz-brain in #18687
- fix(ingest/masking): install masking once per process on handlers, remove teardown by @skrydal in #19561
- fix(ingest): give db2 a real filesystem for CREATE DATABASE, probe readiness by connecting by @skrydal in #19574
- test(db2): remove temporary skip now that the CI fix has landed by @skrydal in #19582
- feat(eslint): add eslint rule to restrict generic imports from phosphor by @purnimagarg1 in #19315
- fix(ingest): raise GitPython floor to 3.1.58 for security fixes by @supersingh05 in #19506
- docs: fix self-hosted MCP endpoint and document shared HTTP deployment by @lakshay-nasa in #19577
- docs(smoke-test): add authoring guidelines for pytest smoke tests by @devashish2203 in #19580
- docs(smoke-test): fix review-skill nits from PR 19580 by @devashish2203 in #19586
- fix(deps): bump httpclient5, Spring Boot, and OTel agent for v1.7.0.1rc1 CVEs by @david-leifker in #19564
- feat(ingest/bigquery): support multi-column PartitionInfo [3/9] by @acrylJonny in #19480
- fix(docker): cache-bust python apk layer in datahub-actions image for setuptools CVE-2025-47273 by @supersingh05 in #19590
- fix(search): don't mutate caller-supplied target mappings in structured-property merge (unblocks AI smoke) by @alexjst in #19562
- chore(translation): Add Simplified Chinese (zh-CN support) by @benjiaming in #19531
- fix(ingest/documents): record which text was embedded, and why documents were skipped by @alexjst in #19530
- docs(managed-datahub): release notes for v2.2.0 by @devashish2203 in #19410
- feat(ingest/masking): register stdin envelope secrets on receipt by @skrydal in #19589
- fix(ci): bump product version by @Dutt23 in #19593
- feat(ingest/bigquery): support BigQuery Sharing linked datasets by @agarwal-shreyas in #19279
- ci(product-update): run the release-sync gate on docs PRs by @devashish2203 in #19594
- fix(ingestion/profiling): tag profiling queries instead of inspecting the call stack by @sgomezvillamor in #19584
- feat(metrics): Micrometer metrics for form-assignment scroll and ingestion rollback by @Dutt23 in #19427
- docs(okta): replace example Okta API token with a placeholder by @max-datahub in #19598
- docs(okta): replace example token in okta_api_token field description by @max-datahub in #19600
- chore(cli): bump default cli by @david-leifker in #19602
- feat(search): make data products filterable by @v-tarasevich-blitz-brain in #18554
- fix(ui): show Remote Executor tokens by Manage Metadata Ingestion by @david-leifker in #19606
- chore(aws): drop unused S3ObjectStorageClient constructors by @david-leifker in #19610
- fix(views): preserve a View's entity-type scope when editing its filters by @max-datahub in #18516
- feat(ingest/sql-parsing): make the SQL lineage timeout configurable by @daha in #19345
- test(ci): dedupe workflow metrics fixtures and cover empty pull_requests by @cclaude-datahub-project[bot] in #19615
- ci(release): add automation for releases by @anshbansal in #19578
New Contributors
- @taylor-chen made their first contribution in #18990
- @supradeep-datahub made their first contribution in #18963
- @EazyHood made their first contribution in #18811
- @aistanbulresearch made their first contribution in #18620
- @Vashu2003 made their first contribution in #18863
- @Yatsuiii made their first contribution in #18826
- @solomonadzape95 made their first contribution in #19038
- @N-45div made their first contribution in #18823
- @chinnuteja made their first contribution in #19055
- @RaYYeR220 made their first contribution in #18632
- @Sakshamm-Goyal made their first contribution in #18344
- @radulaurentiu02 made their first contribution in #19201
- @MSDehghan made their first contribution in #19286
- @Danishlynx made their first contribution in #19112
- @takeuchiiiiii made their first contribution in #18313
- @Choppaaahh made their first contribution in #18341
- @cnpierrepapi made their first contribution in #19115
- @agarwal-shreyas made their first contribution in #19203
- @cclaude-datahub-project[bot] made their first contribution in #19615
Full Changelog: v1.7.0...v1.8.0rc1