What's Changed
- 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-caseto 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 --oauthtokens 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
- perf(mcp): enable rewriteBatchedStatements on MySQL by @supradeep-datahub in #20185
- feat(s3/abs/gcs): add enable_schema_inference config flag to skip schema inference by @rospe in #17613
- test(ingest): close the Power BI MiniRacer before pytest exits by @alokr-dhub in #20273
- fix(ingest/clickhouse): ingest XML-defined dictionaries by @aviraj-gour in #20222
- fix(release): publish non-tip SHAs with workflow authorization by @anshbansal in #20288
- fix(ui): merge glossaryTerm query results in the Apollo cache by @v-tarasevich-blitz-brain in #20200
- fix(search): follow-ups to the Search V3 shared search fields by @alexjst in #20261
- fix(ui): hide ai chat pannel by @annadoesdesign in #20270
- fix(documents): align UI and docs with document entity privileges by @jjoyce0510 in #20278
- fix(ui): remove mui icons to domains picker by @annadoesdesign in #20275
- test(ingest/dremio): run the integration suite on the host's own architecture by @treff7es in #20300
- perf(web): load entity profile UI outside the logged-in shell by @benjiaming in #20281
- feat(documents): cascade soft-delete to nested documents by @ani-malgari in #20308
- docs(managed-datahub): release notes for v2.3.1 by @anshbansal in #20256
- perf(lineage): reduce OpenSearch calls and request size in impact lineage walks by @vasavimadhurima96 in #20192
- chore(i18n): backfill missing German translations (274 keys) by @v-tarasevich-blitz-brain in #20224
- fix(frontend): eliminate appConfig race by seeding Apollo link flags from GMS at startup by @JohnRTurner in #18595
- fix(auth): domain seeding no longer hides other policy fields from authorization by @max-datahub in #20312
- fix(docker): declare libssl3 for the actions MSSQL ODBC driver by @david-leifker in #20322
- chore(security): bump lz4-java to 1.11.4 for CVE-2026-106451 by @david-leifker in #20298
- fix(ui): stack mixed controls in ingestion settings by @annadoesdesign in #20326
- test(ui): await lazy profile chunks before the embed assertion by @benjiaming in #20332
- build(ingest): remove the cloud extra by @skrydal in #20325
- docs(managed-datahub): complete the v2.3.1 release notes by @anshbansal in #20310
- chore(test): Update test weights from CI runs (2026-10-12) by @github-actions[bot] in #20340
- feat(ingest/dbt): support glob patterns in manifest_path for multi-project ingestion by @max-datahub in #19473
- fix(ingest/clickhouse): extract typed dictionary function lineage by @aviraj-gour in #20274
- fix(ingest/cli): stop double-counting telemetry for explicitly decorated commands by @treff7es in #20031
- test(oracle,mssql): connect integration fixtures over TLS by @david-leifker in #20329
- fix(auth): reuse the OIDC provider when SSO settings are unchanged by @benjiaming in #20327
- fix(misc): close remaining P0 and P1 review findings by @david-leifker in #20382
- fix(auth): require Manage User Credentials for credential writes by @david-leifker in #20388
- docs: fix doubled words and misspellings by @supersingh05 in #20392
- feat(ingest/google-drive): add Google Drive source for Google Docs by @shirshanka in #20341
- feat(delete): add a dispatcher seam for hard deletes by @Dutt23 in #20296
- feat(ci): add rollback compatibility analysis tool by @gdatahub in #20221
- test(search): make late query embedding deadline deterministic by @Dutt23 in #20396
- feat(ingestion): add a dispatcher seam for ingestion rollback by @Dutt23 in #20335
- fix(ingestion): pull cryptography with the mysql extra for MySQL 8 auth by @treff7es in #20036
- fix(ingest/dbt-cloud): report a failure when auto-discovery finds no jobs by @max-datahub in #20313
- fix(auth): don't reuse cached authorization results under resource field overrides by @max-datahub in #20368
- feat(ingest/spark): upgrade OpenLineage to 1.53.0 by @MSDehghan in #19573
- feat(snowflake): add workload identity federation auth type by @Danishlynx in #19889
- fix(ingest/dbt): attach freshness assertions to the warehouse dataset's own platform instance by @max-datahub in #20343
- fix(ingestion/tableau): match Snowflake columns against the ingested schema by @treff7es in #19206
- chore(i18n): backfill missing Russian translations (123 keys) by @v-tarasevich-blitz-brain in #20236
- chore(i18n): backfill missing Spanish translations (274 keys) by @v-tarasevich-blitz-brain in #20226
- chore(i18n): backfill missing Brazilian Portuguese translations (290 keys) by @v-tarasevich-blitz-brain in #20227
- chore(i18n): backfill missing French translations (289 keys) by @v-tarasevich-blitz-brain in #20228
- chore(i18n): backfill missing Chinese (Taiwan) translations (122 keys) by @v-tarasevich-blitz-brain in #20235
- feat(ingest/hive,presto): replace PyHive with impyla and presto-python-client by @treff7es in #20350
- fix(auth): make legacy entity ingest authorization existence-aware by @max-datahub in #20349
- build(deps): align buildscript avro-compiler with runtime Avro 1.11.5 by @max-datahub in #20410
- perf(editor): render read-only docs without starting Remirror by @benjiaming in #20306
- fix(applications): register applicationProperties patch template by @max-datahub in #18671
- perf(search): defer the result profile until a row is selected by @benjiaming in #20307
- perf(search): skip typeahead until the search bar is in use by @benjiaming in #20305
- fix(graphql): authorize upsertCustomAssertion against existing assertee by @max-datahub in #20351
- fix(smoke): align timeseries refresh with the CI wait by @david-leifker in #20411
- feat(gms): add configurable semantic no-op aspect comparison by @david-leifker in #20334
- fix(frontend): close keep-alive connections on spot shutdown by @Dutt23 in #20402
- fix(auth): log OIDC discovery time when the metadata read fails by @benjiaming in #20387
- fix(quickstart): pin json-file log driver in preflight check by @javabrett in #20403
- refactor(ui): migrate entity action and identity feedback to alchemy toast by @annadoesdesign in #20107
- feat(ui): group documents sidebar by domain with sticky setting by @annadoesdesign in #20331
- docs(policies): document policy match conditions in policy builder by @manuelawei8 in #20429
- perf(gms): Avoid deep hashCode() computations on every authorization request by @supradeep-datahub in #20347
- fix(ingest/lookml): validate remote_dependency URLs before git clone by @alfiyas-datahub in #19715
- feat(ingest): advertise the Probe capability on sources that can be probed by @treff7es in #20243
- fix(ui/views): fix delete confirmation in view select disappears before it can be confirmed by @purnimagarg1 in #20262
- fix(ui): keep manage lineage modal open when transformation node hover card closes by @purnimagarg1 in #20323
- fix(ingest/unity): resolve usage tables locally and scope usage writes to ingested tables by @askumar27 in #20282
- docs(release-notes): link the public Helm chart repositories in recommended versions by @max-datahub in #20436
- feat(ingest/glue,s3,gcs): probe support for Glue, S3 and GCS by @treff7es in #20130
- ci(ui): budget the JS that index.html loads by @v-tarasevich-blitz-brain in #20370
- refactor(ui): break import cycles that cross entity profile chunks by @v-tarasevich-blitz-brain in #20371
- chore(ui): stop requesting the retired showThemeV2 setting by @v-tarasevich-blitz-brain in #20372
- perf(ui): lazy-load routes and keep the signed-in shell off /login by @v-tarasevich-blitz-brain in #20373
- chore(i18n): backfill missing Italian translations (289 keys) by @v-tarasevich-blitz-brain in #20229
- chore(i18n): backfill missing Norwegian Bokmål translations (289 keys) by @v-tarasevich-blitz-brain in #20230
- chore(i18n): backfill missing Swedish translations (289 keys) by @v-tarasevich-blitz-brain in #20231
- chore(i18n): backfill missing Finnish translations (306 keys) by @v-tarasevich-blitz-brain in #20233
- feat(ingest/glue): lineage and URNs for Lake Formation database-level resource links by @NehaGslab in #20315
- feat(ingest/unity): probe support for Databricks / Unity Catalog by @treff7es in #20125
- feat(ingest/tableau,powerbi): probe support for Tableau and Power BI by @treff7es in #20119
- perf(serving): cache content-hashed frontend assets as immutable by @benjiaming in #20432
- fix(dataproduct): authorize PATCH writes to dataProductProperties for every item type by @max-datahub in #20438
- fix(versioning): authorize version set writes when ingesting versionProperties by @max-datahub in #20352
- feat(ingest/google-drive): add probe support by @shirshanka in #20434
- fix(validation): enforce tag and structured property privilege constraints on PATCH writes by @max-datahub in #20440
- perf(profiling): schedule a table's column queries in one batch by @kyungsoo-datahub in #20210
- docs(cloud): add v2.3.2 DataHub Cloud release notes by @devashish2203 in #20441
- fix(validation): authorize PATCH writes to logicalParent and executionRequestInput by @max-datahub in #20453
- feat(ingest/looker): probe support for the Looker source by @treff7es in #20126
- chore(i18n): backfill missing Hungarian translations (290 keys) by @v-tarasevich-blitz-brain in #20232
- fix(ui): route entity profile tabs by a stable path instead of the translated name by @v-tarasevich-blitz-brain in #20311
- refactor(ui): consolidate app (part 6) by @v-tarasevich-blitz-brain in #20317
- feat(ingest/sigma): resolve chart formula refs through siblings, joins and loaded Data Models by @kyungsoo-datahub in #20017
- chore(i18n): backfill missing Japanese translations (129 keys) by @v-tarasevich-blitz-brain in #20234
- fix(dbt): stop restamping unchanged lineage and assertion definitions by @david-leifker in #20333
- perf(profiling): fold the row count in, and contain a failed batch by @kyungsoo-datahub in #20211
- refactor(search): drop searchTier without a schemaVersion bump by @david-leifker in #20459
- feat(ui): show "Not granted" in Access tab when user has no access and no request URL by @bmaquet in #20100
- docs(ingest/iceberg): document header. catalog properties for REST catalog headers by @yjyspree in #18356
- fix(graphql): map structured property text containing an urn as text by @Danishlynx in #19540
- refactor(ui): migrate entity profile feedback to alchemy toast by @annadoesdesign in #20109
- chore(product-updates): enable DataHub Cloud 2.3 toast by @benjiaming in #20449
- fix(auth): align invite token permissions and verification by @craig-rueda in #20468
- docs(metrics): map the entity model to Apache Ossie by @ani-malgari in #20272
- ci: move PR-to-Linear routing and langchain examples to Claude Haiku 5.5 by @nwadams in #20474
- perf(search): wait for the default view before the first search by @benjiaming in #20422
- fix(search): defer the result profile until a row is selected by @benjiaming in #20431
- perf(fonts): serve Mulish as WOFF2 by @benjiaming in #20451
- perf(frontend): optimize welcome video LCP by @benjiaming in #20454
- feat(monitoring): Track ES took as a metric for all search operations by @supradeep-datahub in #20435
- docs(automations): update Knowledge Catalog sync for multi-platform support by @javabrett in #20394
- perf(graphql): Only fetch domain entity counts where required by @supradeep-datahub in #20456
- fix(ingestion/sac): canonicalize localized public root folder by @acrylJonny in #19880
- fix(ingestion/sac): give models a browse path instead of the dotted-name default by @acrylJonny in #19881
- refactor(search): move Search V3 queries into a v3 package by @david-leifker in #20476
- feat(ingestion/sac): optionally ingest non-public content with folderType-aware roots by @acrylJonny in #19890
- fix(ui, graphql): show created date on summary tab for several entity types by @asikowitz in #20265
- perf(web): load the incident drawer on demand instead of with the logged-in shell by @benjiaming in #20477
- docs(cloud): add v2.3.3 DataHub Cloud release notes by @naeemdh in #20496
- docs(cloud): tidy v2.3.x release notes by @askumar27 in #20500
- perf(bundle): keep syntax catalogs off home and entity routes by @benjiaming in #20497
- docs(cloud): tidy v2.0 to v2.3 release notes by @askumar27 in #20505
- fix(metadata-io): resolve keyed forms patches in the auth check, route system-client hard deletes through HardDeleteService by @Dutt23 in #20486
- feat(search): search V3 structured properties on their root fields by @david-leifker in #20472
- feat(search): move Search V3 system metadata to a root _system field by @david-leifker in #20488
- feat(search): unify semantic search labels by @david-leifker in #20460
- chore(test): Update test weights from CI runs (2026-10-19) by @github-actions[bot] in #20509
- fix(ingestion/sac): emit model platform instance as a dataPlatformInstance urn by @acrylJonny in #20490
- fix(ingestion/sap-datasphere): paginate dwaas-core lists safely and route labels to descriptions by @acrylJonny in #20483
- fix(ingestion/sac): correct SAP Datasphere upstream name suffix via graph by @acrylJonny in #20484
- fix(ui): show download progress in legacy embedded search CSV export by @max-datahub in #20314
- ci(ui): report logged-in page gzip on frontend PRs by @benjiaming in #20499
- ci(ui): add boot-only Lighthouse A/B to frontend previews by @benjiaming in #20501
- ci(ui): budget the logged-in shell and search bundles by @benjiaming in #20502
- docs(profiling): explain the transaction options and the row-count estimate by @kyungsoo-datahub in #20204
- fix(ui): apply the search bar view in physical children, siblings and Owner Of lists by @rob-1019 in #20285
- refactor(delete): return an outcome and counts from HardDeleteDispatcher by @Dutt23 in #20512
- fix(test): generate test TLS material without the openssl binary by @kyungsoo-datahub in #20523
- feat(searchV3): add migration support for search v3 to system upgrade by @RyanHolstien in #20390
- style: use ASCII hyphens in pre-commit comments by @javabrett in #19192
- feat(ingest/dataplex,fabric-onelake): probe support for Dataplex and Fabric OneLake by @treff7es in #20127
- chore(ingest/kafka-connect): normalise the Cloud golden format by @javabrett in #19156
- feat(ingest/iceberg): probe support for the Iceberg source by @treff7es in #20113
- docs(ingest/hive-metastore): use database_pattern, not schema_pattern for db filter by @kevinkarchacryl in #20529
- feat(ingest/fivetran,kafka-connect,azure-data-factory): probe support for pipeline sources by @treff7es in #20120
- feat(profiling): add options to cap combine batch size and statement runtime by @kyungsoo-datahub in #20206
- docs(workflows): document CHILD_*_OF hierarchy resolvers for action workflows by @max-datahub in #20297
- fix(ingestion): don't inject max_overflow for non-pooling dialects by @Yarmoluk in #18803
- perf(bundle): keep Monaco, React Flow, and syntax highlighting off first paint by @benjiaming in #20507
- fix(ui/assertions): allow assertion activity to paginate beyond the first page by @jameslai-datahub in #20447
- fix(ui): harden documents sidebar source and domain grouping AI-3266 by @annadoesdesign in #20450
- fix(glossary): hide undefined terms from glossary sidebar root by @asikowitz in #20538
- fix(delete): don't overwrite concurrent edits during reference cleanup and group membership sweep by @Dutt23 in #20338
- chore(ingest/confluent): use ASCII punctuation in new code by @javabrett in #19130
- feat(apis): Add input and output datasets to API entity model by @chriscollins3456 in #20123
- ci: record Pages deployments under the names Meticulous listens for by @benjiaming in #20545
- docs(agent-context): add DataHub Cloud plugins guide for Claude, ChatGPT, and Codex by @nwadams in #20539
- fix(ingest): encode reserved characters in S3 and ABS dataset URNs by @agarwal-shreyas in #20220
- chore: Bump metadata-ingestion constraints by @skrydal in #20543
- fix(ingest/sql-parsing): treat Databricks columns as case-insensitive by @treff7es in #20367
- fix(ingest/airflow): align OpenLineage object-storage URNs and add inlet/outlet filter by @treff7es in #20284
- fix(ingest/vertexai): reset regional caches per region by @hhobson in #18910
- test(smoke): bound read-only lineage walks to 2 hops by @vasavimadhurima96 in #20550
- test(rate-limit): isolate Hazelcast instances in parallel test forks by @Dutt23 in #20555
- feat(lineage): tag lineage timers and fix lineage usage attribution by @vasavimadhurima96 in #20455
- fix(zdu): rebase test-fixture patch onto #20460 PDL changes by @gdatahub in #20553
- fix(ingest/deps): Sec bumps for oauthlib and certifi by @skrydal in #20558
- feat(ingest/mssql): emit Query entities for all query-history queries by @brock-acryl in #20246
- fix(ui): keep styled-components styles after lazily loaded stylesheets by @asikowitz in #20541
- feat(search): score Search V3 against a graded catalog pack by @david-leifker in #20542
- feat(search): expose Search V3 templates through APIs by @david-leifker in #20448
- feat(search): execute Search V3 queries from templates by @david-leifker in #20521
- feat(search): add the SearchTemplate metadata model by @david-leifker in #20522
- feat(search): store selected aspect JSON in the Search V3 source by @david-leifker in #20518
- feat(search): index child values on their own Search V3 field by @david-leifker in #20495
- fix(domain): keep a self-parented domain from breaking search by @david-leifker in #20566
- docs(search): add the Search V3 design by @david-leifker in #20393
- feat(search): store Search V3 URNs as parsed and full-URN siblings by @david-leifker in #20504
- perf(ui): load the visible welcome-tour video and shrink tour media by @benjiaming in #20535
- feat(ingest/dbt): use custom test name as assertion title and description as note by @kyungsoo-datahub in #20544
- fix(ui/lineage): render a DataFlow's own lineage on its Lineage tab by @JohnRTurner in #20417
- refactor(search): collapse the V3 mappings constructor and name disagreeing roots by @david-leifker in #20570
- test(search): grade structured property matches in the quality pack by @david-leifker in #20569
- fix(gms): stop Kafka consumers and pgqueue polling cleanly on shutdown by @Dutt23 in #20557
- test(search): cover URN structured property template queries by @david-leifker in #20571
- refactor(search): drop lineage and browse search templates by @david-leifker in #20572
- docs(cloud): add v2.3.4 DataHub Cloud release notes by @nwadams in #20576
- fix(ui): show Last Updated in dataset sidebar when lastModified or operations is missing by @max-datahub in #20365
- feat(ingest/mssql): attribute query history to users via audit log or Extended Events by @brock-acryl in #20249
- chore(i18n): backfill missing Chinese (China) translations (122 keys) by @v-tarasevich-blitz-brain in #20225
- test(search): probe structured property fulltext analyzers by @david-leifker in #20575
- docs(ingest/oracle): document TNS connect descriptors and HA failover by @max-datahub in #20586
- fix(schema): ignore PDL files that only arrive during a merge by @chakru-r in #20587
- fix(ingest): truncate oversized upstreamLineage patches by @aviraj-gour in #20437
- chore(deps): bump Node.js to 22.23.4 for the October 2026 security release by @vejeta in #20605
- fix(ingest/deps): bump authlib to 1.9.1 and joserfc to 1.7.7 for CVEs by @skrydal in #20568
- refactor(ui): remove unused V1 files and use the V2 entity registry everywhere by @purnimagarg1 in #20319
- refactor(ui): merge shared and sharedV2 folders by @purnimagarg1 in #20406
- fix(ingest/mssql): resolve temp tables across statements in query-log lineage by @brock-acryl in #20559
- fix(ingest/adf): recurse into ForEach/IfCondition/Until container activities for lineage extraction by @brock-acryl in #19488
- fix(ingest): drop procedure-call edges with no resolvable callee by @kyungsoo-datahub in #20165
- chore(release): pin CLI 1.7.0.14 and publish v1.8.0 upgrade notes by @anshbansal in #20584
- test(ingestion-scheduler): run the initial schedule refresh synchronously in IngestionSchedulerTest by @Dutt23 in #20608
- docs(search): list the Search V3 enable and disable switches by @david-leifker in #20574
- feat(forms): search the column list on a compliance form by @JohnRTurner in #20423
- feat(search): index Search V3 fields once by @david-leifker in #20581
- docs(metrics): add Metrics & Semantic Models Best Practices guide by @maggiehays in #20578
- fix(documents): keep a document's search text in step with its text by @nwadams in #19677
- chore(product-updates): stage the DataHub Cloud 2.4 toast by @benjiaming in #20577
- fix(openapi/logical): accept bodyless DELETE without Content-Type when removing logical parents by @ani-malgari in #20621
- docs(metrics): correct ingestion details in metrics best practices guide by @alexsku in #20617
- docs(cloud): add v2.3.5 DataHub Cloud release notes by @nwadams in https://github.com/datahub-project/datahub/pull/20626
- fix(ingest/adf): list nested activities in probe and stop dropping them on id reuse by @brock-acryl in https://github.com/datahub-project/datahub/pull/20625
- fix(ci): Mark the test_container_entities_survives_large_query_normalization p0 by @supradeep-datahub in https://github.com/datahub-project/datahub/pull/20628
- chore: Bump pip version to bump vendored certifi by @skrydal in https://github.com/datahub-project/datahub/pull/20616
- docs(website): bump version dropdown to 1.8.0 and archive 1.7.0 by @lakshay-nasa in https://github.com/datahub-project/datahub/pull/20636
- fix(ingest/deps): floor opentelemetry-api at 1.45.1 for CVE-2026-114603. by @skrydal in https://github.com/datahub-project/datahub/pull/20637
- feat(search): narrow the Search V3 default query by @david-leifker in https://github.com/datahub-project/datahub/pull/20612
- test(search): check caller sort and default-query field isolation by @david-leifker in https://github.com/datahub-project/datahub/pull/20618
- feat(search): serve Search V3 autocomplete from a prefix template by @david-leifker in https://github.com/datahub-project/datahub/pull/20620
- fix(ingest/sap-datasphere): resolve projection column aliases by @acrylJonny in https://github.com/datahub-project/datahub/pull/20615
- feat(search): make Search V3 query-by-default opt-in by @david-leifker in https://github.com/datahub-project/datahub/pull/20644
- fix(ingest/dremio): build container paths from emitted parents to avoid orphan containers by @max-datahub in https://github.com/datahub-project/datahub/pull/20635
- fix(ingest/unity): add hive_metastore tables to usage of queries that also read ingested tables by @treff7es in https://github.com/datahub-project/datahub/pull/20439
- feat(search): match Search V3 highlights from the returned page by @david-leifker in https://github.com/datahub-project/datahub/pull/20624
- fix(gms): keep the MCP's headers and system metadata on generic patches, so conditional writes apply by @craig-rueda in https://github.com/datahub-project/datahub/pull/20623
- fix(sdk): preserve zero-valued assertion parameters by @MSDehghan in https://github.com/datahub-project/datahub/pull/20171
- feat(search): label platform, container, domain, and data product fields by @david-leifker in https://github.com/datahub-project/datahub/pull/20651
- fix(ingest/adf): resolve real database/catalog names and platform instances for cross-platform lineage by @brock-acryl in https://github.com/datahub-project/datahub/pull/19494
- fix(ingest/sap-datasphere): resolve dotted same-space names in lineage by @acrylJonny in https://github.com/datahub-project/datahub/pull/20643
- test(search): widen the pet profile ranking probe to top 5 by @david-leifker in https://github.com/datahub-project/datahub/pull/20661
- fix(ci): derive quickstart compose hook env scrub from compose sources by @skrydal in https://github.com/datahub-project/datahub/pull/20672
- test(search): align the pet profile pack test with the top-five probe by @NexuChat in https://github.com/datahub-project/datahub/pull/20666
- chore(test): Update test weights from CI runs (2026-10-26) by @github-actions[bot] in https://github.com/datahub-project/datahub/pull/20677
- fix(zdu): rebase test-fixture patch onto recent PDL and snapshot changes by @gdatahub in https://github.com/datahub-project/datahub/pull/20585
- fix(lifecycle): authorize and validate setLifecycleStage by @max-datahub in https://github.com/datahub-project/datahub/pull/20630
- feat(e2e-playwright): tag P0 tests and their owning domains by @priyabratadas-dh in https://github.com/datahub-project/datahub/pull/20646
- fix(ingest/odcs): report failed logicalParent lookups; clean up schema refresh temp files by @max-datahub in https://github.com/datahub-project/datahub/pull/20681
- fix(ingestion): ship ODCS schemas and connector registry in the wheel by @malharlakdawala in https://github.com/datahub-project/datahub/pull/18903
- feat(ingest/odcs): partial ODCS v3.2.0 support (accept v3.2, map unambiguous additions) by @max-datahub in https://github.com/datahub-project/datahub/pull/20481
- fix(ingestion): correct S3/GCS console externalUrl deep-links by @acrylJonny in https://github.com/datahub-project/datahub/pull/19817
- feat(montecarlo): detect schema drift, build queries dynamically by @alokr-dhub in https://github.com/datahub-project/datahub/pull/19830
- fix(ingest/unity): pass authentication to the hive_metastore connection by @aviraj-gour in https://github.com/datahub-project/datahub/pull/20680
- test(ingest/timescaledb): seed sensor_data over whole days by @aviraj-gour in https://github.com/datahub-project/datahub/pull/20684
- fix(rollback): stamp rollback status and removed-aspect changelogs with the caller by @Dutt23 in https://github.com/datahub-project/datahub/pull/20562
- feat(ingest/dynamodb): add S3 export lineage and Glue DynamoDB job URNs by @acrylJonny in https://github.com/datahub-project/datahub/pull/19381
- feat(propagation): add external tag handling and attribution formatting by @NehaGslab in https://github.com/datahub-project/datahub/pull/19501
- fix(ingestion/powerbi): map Table.RenameColumns onto column lineage by @acrylJonny in https://github.com/datahub-project/datahub/pull/20491
- fix(ui/ingest): make the Oracle form's usage toggle write a valid config and restore the profiling label by @naeemdh in https://github.com/datahub-project/datahub/pull/20464
- fix(ui/ingest): hide in-form Create Secret without Manage Secrets privilege by @max-datahub in https://github.com/datahub-project/datahub/pull/20690
- refactor(ui): migrate ingest, home, and settings feedback to alchemy toast by @annadoesdesign in https://github.com/datahub-project/datahub/pull/20108
- fix(ingest/odcs): skip authoritativeDefinitions URLs GMS rejects by @max-datahub in https://github.com/datahub-project/datahub/pull/20696
- fix(mce-consumer): dead-letter only the proposals that fail validation in a batch by @max-datahub in https://github.com/datahub-project/datahub/pull/20645
- fix(ingest): record the calling user for async-ingested changes by @max-datahub in https://github.com/datahub-project/datahub/pull/20642
- feat(ingest/dynamodb): report S3 export destinations missing from DataHub by @acrylJonny in https://github.com/datahub-project/datahub/pull/20693
- fix(ui): load glossary related terms when the term changes by @benjiaming in https://github.com/datahub-project/datahub/pull/20619
- fix(ui): show the stored assertion type in the assertion list, with the custom type on hover by @jameslai-datahub in https://github.com/datahub-project/datahub/pull/20427
- feat(search): add configurable time-based query canonicalization by @gdatahub in https://github.com/datahub-project/datahub/pull/19259
- docs(remote-executor): document executor status reports and cgroup limit change by @rajatoss in https://github.com/datahub-project/datahub/pull/20678
- feat(search): add template components and score from the template by @david-leifker in https://github.com/datahub-project/datahub/pull/20671
- fix(tests): re-add skipped test modules as it has been skipping critical tests by @RyanHolstien in https://github.com/datahub-project/datahub/pull/20658
- feat(search): carry the search template runtime on SearchContext by @david-leifker in https://github.com/datahub-project/datahub/pull/20706
- perf(graphql): Don't fetch hydrated facets for getSearchAcrossLineageCounts by @supradeep-datahub in https://github.com/datahub-project/datahub/pull/20548
- fix(ui): show reset password option in users list only for native users by @purnimagarg1 in https://github.com/datahub-project/datahub/pull/20694
New Contributors
- @yianni made their first contribution in #19516
- @vaibhav8a made their first contribution in #19511
- @Laolex made their first contribution in #18869
- @NexuChat made their first contribution in #19680
- @alejandro-publius made their first contribution in #19046
- @8silvergun made their first contribution in #20112
- @vasavimadhurima96 made their first contribution in #20118
- @Yarmoluk made their first contribution in #18803
- @jameslai-datahub made their first contribution in #20447
- @malharlakdawala made their first contribution in https://github.com/datahub-project/datahub/pull/18903
Full Changelog: v1.8.0...v1.9.0rc1