Releases: dagster-io/dagster
Releases · dagster-io/dagster
1.10.0 (core) / 0.26.0 (libraries)
New
- Added a new
AutomationCondition.data_version_changed()
condition. - [dagster-msteams] Added support for sending messages to PowerAutomate flows using AdaptiveCard formatting.
dagster definitions validate
is now less verbose, primarily highlighting load errors.- [ui] Made defunct code locations removable when editing environment variables.
- [ui] Added a warning icon to the Agents item in Deployment settings, indicating when there are no active agents.
- [dagster-tableau] Changed logic to show embedded data sources in case published data sources are not present. Also, pulled more metadata from Tableau. (Thanks @VenkyRules!)
- Added new decorators to reflect our new API lifecycle:
@preview
,@beta
and@superseded
. Also added new annotations and warnings to match these new decorators.
Bugfixes
- [ui] Fixed persistence of the group-by setting in the run timeline view.
- [ui] Fixed timestamped links to asset pages from asset check evaluations in run logs.
- [ui] Fixed excessive rendering and querying on the Concurrency configuration page.
- Fixed the step stats calculations for steps that fail and request a retry before the step starts. This happened if a failure occurred in the step worker before the compute function began execution. This should help with sporadic hanging of step retries.
- Fixed an issue where the Concurrency UI was broken for keys with slashes.
- Fixed an issue with emitting
AssetResult
with ops or multi-assets that are triggered multiple times in the same run. - [dagster-dbt] Fixed a bug introduced in dagster-dbt 0.25.7 that would cause execution to fail when using the
@dbt_assets
decorator with anio_manager_key
specified. - [dagster-dbt] Refactored
UnitTestDefinition
instantiation to address failure to initialize dbt models with unit tests. (Thanks @kang8!) - Fixed issue where
dagster instance migrate
was failing for instances with tables having non-empty concurrency limits. - Fixed an issue where Declarative Automation sensors in code locations that included source assets referencing assets with automation conditions in other code locations would sometimes cause duplicate runs to be created.
- Turned on run blocking for concurrency keys/pools by default. For op granularity, runs are dequeued if there exists at least one op that can execute once the run has started. For run granularity, runs are dequeued if all pools have available slots.
- [dagster-dbt] Added pool support.
- [dagster-dlt] Added pool support.
- [dagster-sling] Added pool support.
Documentation
- Corrected docs on managing concurrency.
- Fixed a Markdown link to "assets metadata." (Thanks @rchrand!)
- Fixed a
pip install
command for Zsh. (Thanks @aimeecodes!)
Breaking Changes
-
The
include_sources
param on allAssetSelection
APIs has been renamed toinclude_external_assets
. -
Disallowed invalid characters (i.e. anything other than letters, numbers, dashes, and underscores) in pool names.
-
Changed the default run coordinator to be the queued run coordinator. This requires the Dagster daemon to be running for runs to be launched. To restore the previous behavior, you can add the following configuration block to your
dagster.yaml
:run_coordinator: module: dagster.core.run_coordinator.sync_in_memory_run_coordinator class: SyncInMemoryRunCoordinator
Deprecations
- [dagster-sdf] Moved the
dagster-sdf
library to the community-supported repo. - [dagster-blueprints] Removed the
dagster-blueprints
package. We are actively developing a project, currently named Components, that has similar goals to Blueprints of increasing the accessibility of Dagster. - Removed the
@experimental
decorator in favor of the@preview
and@beta
decorators. Also removed annotations and warnings related to the@experimental
decorator.
Dagster Plus
- Shipped a range of improvements to alerts in Dagster+, including more granular targeting, streamlined UIs, and more helpful content. Stay tuned for some final changes and a full announcement in the coming weeks!
1.9.13 (core) / 0.25.13 (libraries)
Dagster Plus
- Fixed a bug where runs using global op concurrency would raise an exception when claiming a concurrency slot.
1.9.12 (core) / 0.25.12 (libraries)
New
- Adds a top-level argument
pool
to asset/op definitions to replace the use of op tags to specify concurrency conditions. - The
dagster definitions validate
command now loads locations in-process by default, which speeds up runtime. - All published dagster libraries now include a
py.typed
file, which means their type annotations will be used by static analyzers. Previously a few libraries were missing this file. - Adds concurrency pool information in the UI for asset / op definitions that use concurrency pools.
- Optional data migration to improve performance of the Runs page. Run
dagster instance migrate
to run the data migration. The migration will update serialized backfill objects in the database with an end timestamp attribute computed by querying the runs launched by that backfill to determine when the last run completed. - Added the ability to distinguish between explicitly set concurrency pool limits and default-set pool limits. Requires a schema migration using
dagster instance migrate
. - Moves run queue configuration from its standalone deployment setting into the
concurrency
deployment setting, along with new settings for concurrency pools. - Enabled run granularity concurrency enforcement of concurrency pool limits.
- [dagster-dbt] Specifying a dbt profiles directory and profile is now supported in
DbtProject
. - [dagster-dlt]
DagsterDltTranslator.get_*
methods have been superseded in favor ofDagsterDltTranslator.get_asset_spec
. - [dagster-gcp] Added
PipesDataprocJobClient
, a Pipes client for running workloads on GCP Dataproc in Job mode. - [dagster-looker]
DagsterLookerLkmlTranslator.get_*
methods have been superseded in favor ofDagsterLookerLkmlTranslator.get_asset_spec
. - [dagster-pipes] Dagster Pipes now support passing messages and Dagster context via Google Cloud Storage.
- [ui] Created a standalone view for concurrency pools under the Deployment tab.
- [ui] When launching partitioned assets in the launchpad from the global graph, Dagster will now warn you if you have not made a partition selection.
- [ui] When viewing Runs, allow freeform search for filtering to view runs launched by schedules and sensors.
- [ui] Remove misleading run status dot from the asset events list.
- [ui] Introduce a stepped workflow for creating new Alerts.
Bugfixes
- Fixed an issue where querying for Asset Materialization events from multi-partition runs would assign incorrect partition keys to the events.
- Fixed an issue where partition keys could be dropped when converting a list of partition keys for a
MultiPartitionsDefinition
to aPartitionSubset
. - Fixed an issue where the "Reload definitions" button didn't work when using
dagster dev
on Windows, starting in the 1.9.10 release. - Fixed an issue where dagster could not be imported alongside some other libraries using gRPC with an 'api.proto' file.
- [ui] Fixed an issue where non-
None
default config fields weren't being displayed in the Launchpad view. - [ui] Fixed an issue with the search bar on the Asset partitions page incorrectly filtering partitions when combined with a status filter.
- [ui] Fixed Asset page header display of long key values.
- [ui] Fixed Slack tag in alert creation review step for orgs that have Slack workspaces connected.
- [dagster-dbt] Fixed a bug introduced in
dagster-dbt
0.25.7 which would cause execution to fail when using the@dbt_assets
decorator with anio_manager_key
specified. - [dagster-databricks] Fixed an issue with Dagster Pipes log capturing when running on Databricks.
Documentation
- Fixed a mistake in the docs concerning configuring asset concurrency tags in Dagster+.
- Added a tutorial for using GCP Dataproc with Dagster Pipes.
Dagster Plus
- Relaxed pins on the 'opentelemetry-api' dependency in the 'dagster-cloud' package to
>=1.27.0
to allow usingdagster-cloud
withprotobuf
versions 3 and 4.
1.9.11 (core) / 0.25.11 (libraries)
Bugfixes
- Fixed an issue where running
dagster dev
would fail on Windows machines. - Fixed an issue where partially resolved config with default values were not able to be overridden at runtime.
- Fixed an issue where default config values at the top level were not propagated to nested config values.
1.9.10 (core) / 0.25.10 (libraries)
New
- Added a new
.replace()
method toAutomationCondition
, which allows sub-conditions to be modified in-place. - Added new
.allow()
and.ignore()
methods to the booleanAutomationCondition
operators, which allow asset selections to be propagated to sub-conditions such asAutomationCondition.any_deps_match()
andAutomationCondition.all_deps_match()
. - When using the
DAGSTER_REDACT_USER_CODE_ERRORS
environment variable to mask user code errors, the unmasked log lines are now written using adagster.masked
Python logger instead of being written to stderr, allowing the format of those log lines to be customized. - Added a
get_partition_key()
helper method that can be used on hourly/daily/weekly/monthly partitioned assets to get the partition key for any given partition definition. (Thanks @Gw1p!) - [dagster-aws] Added a
task_definition_prefix
argument toEcsRunLauncher
, allowing the name of the task definition families for launched runs to be customized. Previously, the task definition families always started withrun
. - [dagster-aws] Added the
PipesEMRContainersClient
Dagster Pipes client for running and monitoring workloads on AWS EMR on EKS with Dagster. - [dagster-pipes] Added support for setting timestamp metadata (e.g.
{"my_key": {"raw_value": 111, "type": "timestamp"}}
). - [dagster-databricks, dagster-pipes] Databricks Pipes now support log forwarding when running on existing clusters. It can be enabled by setting
PipesDbfsMessageReader(include_stdio_in_messages=True)
. - [dagster-polars] Added
rust
engine support when writing a Delta Lake table using native partitioning. (Thanks @Milias!)
Bugfixes
- Fixed a bug where setting an
AutomationCondition
on an observable source asset could sometimes result in invalid backfills being launched. - Using
AndAutomationCondition.without()
no longer removes the condition's label. - [ui] Sensors targeting asset checks now list the asset checks when you click to view their targets.
- [dagster-aws] Fixed the execution of EMR Serverless jobs using
PipesEMRServerlessClient
failing if a job is in theQUEUED
state. - [dagster-pipes] Fixed Dagster Pipes log capturing when running on Databricks.
- [dagster-snowflake] Fixed a bug where passing a non-base64-encoded private key to a
SnowflakeResource
resulted in an error. - [dagster-openai] Updated
openai
kinds tag to be "OpenAI" instead of "Open AI" in line with the OpenAI branding.
Documentation
- [dagster-pipes] Added a tutorial for using Dagster Pipes with PySpark.
1.9.9 (core) / 0.25.9 (libraries)
New
- Added a new function
load_definitions_from_module
, which can load all the assets, checks, schedules, sensors, and job objects within a module scope into a single Definitions object. Check out the documentation to learn more. - When using the
DAGSTER_REDACT_USER_CODE_ERRORS
environment variable to mask user code errors, the unmasked log lines are now written using adagster.masked
Python logger instead of being written to stderr, allowing the format of those log lines to be customized. - The
croniter
package is now vendored in dagster. - [ui] Corrected the
minstral
typo and updated the Mistral logo for assetkinds
tag. - [ui] The relevant runs are now shown within the same dialog when viewing details of an automation evaluation.
- [ui] Clicking to view runs with a specific status from the backfill overview now switches to the new backfill runs tab with your filters applied, instead of the global runs page.
- [ui] In the run timeline, all run ids and timings are now shown in the hover popover.
- [ui] Added a new tab on the Runs page that shows a filterable list of recent backfills.
- [dagster-airlift] Added support for Python 3.7.
- [dagster-aws] Added a
task_definition_prefix
argument toEcsRunLauncher
, allowing the name of the task definition families for launched runs to be customized. Previously, the task definition families always started withrun
. - [dagster-azure] Moved azure fake implementations to its own submodule, paving the way for fake implementations to not be imported by default. (Thanks @futurwasfree!)
- [dagster-dlt] The
dagster-dlt
library is added. It replaces the dlt module ofdagster-embedded-elt
. - [dagster-sling] The
dagster-sling
library is added. It replaces the Sling module ofdagster-embedded-elt
. - [helm] Added support for sidecar containers for all Dagster pods, for versions of K8s after 1.29 (Native Sidecars). (Thanks @hom3r!)
Bugfixes
- Fixed an issue where the tick timeline wouldn't load for an automation condition sensor that emitted a backfill.
- Fixed a bug with asset checks where additional_deps/additional_ins were not being threaded through properly in certain cases, and would result in errors at job creation.
- Fixed a bug where the UI will hit an unexpected error when loading details for a run containing a step retry before the step has started.
- Fixed a bug with load_assets_from_x functions where we began erroring when a spec and AssetsDefinition had the same key in a given module. We now only error in this case if include_specs=True.
- Fixed a bug with
load_assets_from_modules
where AssetSpec objects were being given the key_prefix instead of the source_key_prefix. Going forward, when load_specs is set to True, only the source_key_prefix will affect AssetSpec objects. - Fixed a bug with the run queue criteria UI for branch deployments in Dagster Plus.
- [ui] Fixed the "View evaluation" links from the "Automation condition" tag popover on Runs.
- [dagster-aws] Fixed an issue with the EcsRunLauncher where it would sometimes create a new task definition revision for each run if the "task_role_arn" or "execution_role_arn" parameters were specified without the
arn:aws:iam:
prefix. - [dagster-aws] Fixed a bug with
PipesEMRServerlessClient
trying to get the dashboard URL for a run before it transitions to RUNNING state. - [dagster-dbt] Fixed an issue where group names set on partitioned dbt assets created using the
@dbt_assets
decorator would be ignored. - [dagster-azure] Fixed the default configuration for the
show_url_only
parameter on theAzureBlobComputeLogManager
. (Thanks @ion-elgreco!) - [dagster-aws] Fixed an issue handling null
networkConfiguration
parameters for the ECS run launcher. (Thanks @markgrin!)
Documentation
- Added example potential use cases for sensors. (Thanks @gianfrancodemarco!)
- Updated the tutorial to match the outlined structure. (Thanks @vincent0426!)
Deprecations
- [dagster-embedded-elt] the
dagster-embedded-elt
library is deprecated in favor ofdagster-dlt
anddagster-sling
.
Dagster Plus
- The Alert Policies page will now show a warning if a slack channel for a policy no longer exists.
1.9.8 (core) / 0.25.8 (libraries)
Bugfixes
- Fixed a bug with
load_assets_from_x
functions where we began erroring when a spec and AssetsDefinition had the same key in a given module. We now only error in this case ifinclude_specs=True
. - [dagster-azure] Fixed a bug in 1.9.6 and 1.9.7 where the default behavior of the compute log manager switched from showing logs in the UI to showing a URL. You can toggle the
show_url_only
option toTrue
to enable the URL showing behavior. - [dagster-dbt] Fixed an issue where group names set on partitioned dbt assets created using the
@dbt_assets
decorator would be ignored
1.9.7 (core) / 0.25.7 (libraries)
New
- Added new function
load_definitions_from_module
, which can load all the assets, checks, schedules, sensors, and job objects within a module scope into a single Definitions object. Check out the documentation to learn more: https://docs.dagster.io/_apidocs/definitions#dagster.load_definitions_from_module. - Previously, asset backfills could only target selections of assets in which all assets had a
BackfillPolicy
, or none of them did. Mixed selections are now supported. AssetSpecs
may now contain apartitions_def
. DifferentAssetSpecs
passed to the same invocation of@multi_asset
can now have differentPartitionsDefinitions
, as long ascan_subset=True
.- Added the option to use a thread pool to process backfills in parallel.
- Exceptions that are raised when a schedule or sensor is writing to logs will now write an error message to stdout instead of failing the tick.
- Added validation of
title
for asset backfills (not just for job backfills). - [ui] Design tweaks to the asset Automations tab.
- [ui] Asset selection filtering is now case insensitive.
- [ui] Add Teradata icon for kind tags.
- [ui] When creating and editing alerts, when the form is in an invalid state, display the reason on the disabled buttons.
- [ui] Add Automation history to asset checks.
- [ui] Improve performance of Run page for very long-running runs.
- [dagster-airbyte] The
airbyte_assets
decorator has been added. It can be used with theAirbyteCloudWorkspace
resource andDagsterAirbyteTranslator
translator to load Airbyte tables for a given connection as assets in Dagster. Thebuild_airbyte_assets_definitions
factory can be used to create assets for all the connections in your Airbyte workspace. - [dagster-airbyte] Airbyte Cloud assets can now be materialized using the
AirbyteCloudWorkspace.sync_and_poll(…)
method in the definition of a@airbyte_assets
decorator. - [dagster-airlift] Airflow imports are now compatible with Airflow 1.
- [dagster-aws] new
ecs_executor
which executes Dagster steps via AWS ECS tasks. This can be used in conjunction withECSRunLauncher
. - [dagster-dbt]
dbt-core>=1.9
is now supported. - [dagster-dbt] Adds SQL syntax highlighting to raw sql code in dbt asset descriptions.
- [dagster-looker]
load_looker_asset_specs
andbuild_looker_pdt_assets_definitions
are updated to accept an instance ofDagsterLookerApiTranslator
or custom subclass. - [dagster-looker] Type hints in the signature of
DagsterLookerApiTranslator.get_asset_spec
have been updated - the parameterlooker_structure
is now of typeLookerApiTranslatorStructureData
instead ofLookerStructureData
. Custom Looker API translators should be updated. - [dagster-powerbi]
load_powerbi_asset_specs
has been updated to accept an instance ofDagsterPowerBITranslator
or custom subclass. - [dagster-powerbi] Type hints in the signature of
DagsterPowerBITranslator.get_asset_spec
have been updated - the parameterdata
is now of typePowerBITranslatorData
instead ofPowerBIContentData
. Custom Power BI translators should be updated. - [dagster-sigma]
load_sigma_asset_specs
has been updated to accept an instance ofDagsterSigmaTranslator
or a custom subclass. - [dagster-sigma] Type hints in the signature of
DagsterLookerApiTranslator.get_asset_spec
have been updated - the parameterdata
is now of typeUnion[SigmaDatasetTranslatorData, SigmaWorkbookTranslatorData]
instead ofUnion[SigmaDataset, SigmaWorkbook]
. Custom Looker API translators should be updated. - [dagster-sigma] Added the option to filter to specific workbooks in addition to folders.
- [dagster-sigma] Added the option to skip fetching lineage for workbooks in cases where users want to build this information themselves.
- [dagster-tableau]
load_tableau_asset_specs
has been updated to accept an instance ofDagsterTableauTranslator
or custom subclass. - [dagster-tableau] Type hints in the signature of
DagsterTableauTranslator.get_asset_spec
have been updated - the parameterdata
is now of typeTableauTranslatorData
instead ofTableauContentData
. Custom Tableau translators should be updated.
Bugfixes
- Fixed an issue where sensor and schedule tick logs would accumulate disk over time on Dagster code servers.
- [ui] Fixed an issue where the app sometimes loads with styles missing.
- [ui] Fix search string highlighting in global search results.
- Fixed a race condition where immediately after adding a new asset to the graph, a freshness check sensor targeting that asset might raise an InvalidSubsetError in its first one.
- [ui] Fixed a bug where backfills launched by Declarative Automation were not being shown in the table of launched runs.
- The
dagster-airlift
package erroneously introduced a dependency ondagster
. This has been rectified -dagster
is only required for thedagster-airlift[core]
submodule.
Deprecations
- Deprecation of
@multi_asset_sensor
has been rolled back.
Dagster Plus
- Introduce the Catalog Viewer role for Users and Teams.
- Slack, MS Teams, and email alerts for run failures will list the steps that were successful or not executed.
- [experimental] The option
blobStorageSnapshotUploads
has been added which enables a new process for how definition snapshots are uploaded to Dagster Cloud. - Fixed a catalog search issue where exact prefix matches are not prioritized in the search results.
- Fixed a bug with Insights metric customization.
1.9.6 (core) / 0.25.6 (libraries)
New
- Updated
cronitor
pin to allow versions>= 5.0.1
to enable use ofDayOfWeek
as 7. Cronitor4.0.0
is still disallowed. (Thanks, @joshuataylor!) - Added flag
checkDbReadyInitContainer
to optionally disable db check initContainer. - Added job name filtering to increase the throughput for run status sensors that target jobs.
- [ui] Added Google Drive icon for
kind
tags. (Thanks, @dragos-pop!) - [ui] Renamed the run lineage sidebar on the Run details page to
Re-executions
. - [ui] Sensors and schedules that appear in the Runs page are now clickable.
- [ui] Runs targeting assets now show more of the assets in the Runs page.
- [dagster-airbyte] The destination type for an Airbyte asset is now added as a
kind
tag for display in the UI. - [dagster-gcp]
DataprocResource
now receives an optional parameterlabels
to be attached to Dataproc clusters. (Thanks, @thiagoazcampos!) - [dagster-k8s] Added a
checkDbReadyInitContainer
flag to the Dagster Helm chart to allow disabling the default init container behavior. (Thanks, @easontm!) - [dagster-k8s] K8s pod logs are now logged when a pod fails. (Thanks, @apetryla!)
- [dagster-sigma] Introduced
build_materialize_workbook_assets_definition
which can be used to build assets that run materialize schedules for a Sigma workbook. - [dagster-snowflake]
SnowflakeResource
andSnowflakeIOManager
both acceptadditional_snowflake_connection_args
config. This dictionary of arguments will be passed to thesnowflake.connector.connect
method. This config will be ignored if you are using thesqlalchemy
connector. - [helm] Added the ability to set user-deployments labels on k8s deployments as well as pods.
Bugfixes
- Assets with self dependencies and
BackfillPolicy
are now evaluated correctly during backfills. Self dependent assets no longer result in serial partition submissions or disregarded upstream dependencies. - Previously, the freshness check sensor would not re-evaluate freshness checks if an in-flight run was planning on evaluating that check. Now, the freshness check sensor will kick off an independent run of the check, even if there's already an in flight run, as long as the freshness check can potentially fail.
- Previously, if the freshness check was in a failing state, the sensor would wait for a run to update the freshness check before re-evaluating. Now, if there's a materialization later than the last evaluation of the freshness check and no planned evaluation, we will re-evaluate the freshness check automatically.
- [ui] Fixed run log streaming for runs with a large volume of logs.
- [ui] Fixed a bug in the Backfill Preview where a loading spinner would spin forever if an asset had no valid partitions targeted by the backfill.
- [dagster-aws]
PipesCloudWatchMessageReader
correctly identifies streams which are not ready yet and doesn't fail onThrottlingException
. (Thanks, @jenkoian!) - [dagster-fivetran] Column metadata can now be fetched for Fivetran assets using
FivetranWorkspace.sync_and_poll(...).fetch_column_metadata()
. - [dagster-k8s] The k8s client now waits for the main container to be ready instead of only waiting for sidecar init containers. (Thanks, @OrenLederman!)
Documentation
- Fixed a typo in the
dlt_assets
API docs. (Thanks, @zilto!)
1.9.5 (core) / 0.25.5 (libraries)
New
- The automatic run retry daemon has been updated so that there is a single source of truth for if a run will be retried and if the retry has been launched. Tags are now added to run at failure time indicating if the run will be retried by the automatic retry system. Once the automatic retry has been launched, the run ID of the retry is added to the original run.
- When canceling a backfill of a job, the backfill daemon will now cancel all runs launched by that backfill before marking the backfill as canceled.
- Dagster execution info (tags such as
dagster/run-id
,dagster/code-location
,dagster/user
and Dagster Cloud environment variables) typically attached to external resources are now available underDagsterRun.dagster_execution_info
. SensorReturnTypesUnion
is now exported for typing the output of sensor functions.- [dagster-dbt] dbt seeds now get a valid code version (Thanks @marijncv!).
- Manual and automatic retries of runs launched by backfills that occur while the backfill is still in progress are now incorporated into the backfill's status.
- Manual retries of runs launched by backfills are no longer considered part of the backfill if the backfill is complete when the retry is launched.
- [dagster-fivetran] Fivetran assets can now be materialized using the FivetranWorkspace.sync_and_poll(…) method in the definition of a
@fivetran_assets
decorator. - [dagster-fivetran]
load_fivetran_asset_specs
has been updated to accept an instance ofDagsterFivetranTranslator
or custom subclass. - [dagster-fivetran] The
fivetran_assets
decorator was added. It can be used with theFivetranWorkspace
resource andDagsterFivetranTranslator
translator to load Fivetran tables for a given connector as assets in Dagster. Thebuild_fivetran_assets_definitions
factory can be used to create assets for all the connectors in your Fivetran workspace. - [dagster-aws]
ECSPipesClient.run
now waits up to 70 days for tasks completion (waiter parameters are configurable) (Thanks @jenkoian!) - [dagster-dbt] Update dagster-dbt scaffold template to be compatible with uv (Thanks @wingyplus!).
- [dagster-airbyte] A
load_airbyte_cloud_asset_specs
function has
been added. It can be used with theAirbyteCloudWorkspace
resource andDagsterAirbyteTranslator
translator to load your Airbyte Cloud connection streams as external assets in Dagster. - [ui] Add an icon for the
icechunk
kind. - [ui] Improved ui for manual sensor/schedule evaluation.
Bugfixes
- Fixed database locking bug for the
ConsolidatedSqliteEventLogStorage
, which is mostly used for tests. - [dagster-aws] Fixed a bug in the ECSRunLauncher that prevented it from accepting a user-provided task definition when DAGSTER_CURRENT_IMAGE was not set in the code location.
- [ui] Fixed an issue that would sometimes cause the asset graph to fail to render on initial load.
- [ui] Fix global auto-materialize tick timeline when paginating.