Hive Hive
Sign in

fix(server): Ran by filters for automated dashboard runs

GitHub issue · Closed

Metadata
Source
tuist/tuist #11550
Updated
Jul 5, 2026
Domains
Atlas
Details

What changed

This updates the dashboard Ran by filters so choosing a user only returns local runs for that user. Automated continuous integration rows keep using the dedicated continuous integration option instead of appearing under a user when they carry the same account or user identifier.

The same filter semantics now apply across Xcode build runs, Gradle build runs, generate runs, cache runs, test runs, and test-case run listings. The change also adds regression coverage for the visible build-runs issue and strengthens the sibling filters that already had user-filter tests.

Why

The filter is expected to answer who initiated a run. Mixing automated rows into a user-filtered result makes the table harder to trust, especially when the user is checking whether a specific person ran something locally.

Root cause

The user branch of the filter only matched the selected account identifier. It did not also require the row to be a local, non-automated run, so automated rows associated with the same account could pass the filter.

Approach

The existing filter model stays in place. The user filter path now adds the same non-automated constraint everywhere the dashboard supports Ran by, while the dedicated continuous integration filter remains responsible for automated rows.

This keeps the fix close to the query layer and avoids changing table rendering, badges, or how filter values are encoded in the address bar.

Impact

Dashboard users get cleaner Ran by results. Automated rows remain visible through the continuous integration option. There are no database, migration, or data export changes.

Validation

  • mix test test/tuist_web/live/build_runs_live_test.exs:93
    • Reproduced the bug before the fix: the automated row was still visible for a user filter.
  • mix test test/tuist_web/live/build_runs_live_test.exs:93 test/tuist_web/live/gradle_build_runs_live_test.exs:158 test/tuist_web/live/generate_runs_live_test.exs:108 test/tuist_web/live/cache_runs_live_test.exs:114
    • Passed after the fix.
  • git diff --check
    • Passed.
  • Headless Chrome browser verification against a local test server:
    • Before: the filtered table showed both browser-local-user-build and browser-continuous-integration-build.
    • After: the same filtered table showed browser-local-user-build and did not show browser-continuous-integration-build.

Screenshots

Before, the user filter still included the automated row:

Before screenshot showing both local and automated rows

After, the same user filter only includes the local row:

After screenshot showing only the local row

Flights

Investigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.

New Flights are paused Configure model inference, GitHub, and a sandbox provider to start another Flight. Existing results remain available below.
No Flights yet

Start a Flight and preserve its objective, outcome, and session here.

Comments

No GitHub comments yet.