diff --git a/app/Models/Project.php b/app/Models/Project.php
index ffcc451877..82b31cd678 100644
--- a/app/Models/Project.php
+++ b/app/Models/Project.php
@@ -45,7 +45,6 @@
* @property bool $showcoveragecode
* @property bool $sharelabelfilters
* @property bool $authenticatesubmissions
- * @property bool $viewsubprojectslink
* @property ?string $ldapfilter
* @property ?string $banner
* @property ?string $logoUrl
@@ -95,7 +94,6 @@ class Project extends Model
'showcoveragecode',
'sharelabelfilters',
'authenticatesubmissions',
- 'viewsubprojectslink',
'ldapfilter',
'banner',
'cmakeprojectroot',
@@ -115,7 +113,6 @@ class Project extends Model
'showcoveragecode' => 'boolean',
'sharelabelfilters' => 'boolean',
'authenticatesubmissions' => 'boolean',
- 'viewsubprojectslink' => 'boolean',
];
public const PROJECT_ADMIN = 2;
diff --git a/app/cdash/app/Model/Project.php b/app/cdash/app/Model/Project.php
index 0d0adf48fd..fc75d266ea 100644
--- a/app/cdash/app/Model/Project.php
+++ b/app/cdash/app/Model/Project.php
@@ -70,7 +70,6 @@ class Project
public $EmailMaxChars = 255;
public $DisplayLabels = 0;
public $ShareLabelFilters = 0;
- public $ViewSubProjectsLink = 0;
public $AuthenticateSubmissions = 0;
public $ShowCoverageCode = 0;
public $AutoremoveTimeframe = 0;
@@ -131,7 +130,6 @@ public function Save(): bool
'emailredundantfailures' => filter_var($this->EmailRedundantFailures, FILTER_VALIDATE_BOOLEAN),
'displaylabels' => filter_var($this->DisplayLabels, FILTER_VALIDATE_BOOLEAN),
'sharelabelfilters' => filter_var($this->ShareLabelFilters, FILTER_VALIDATE_BOOLEAN),
- 'viewsubprojectslink' => filter_var($this->ViewSubProjectsLink, FILTER_VALIDATE_BOOLEAN),
'authenticatesubmissions' => filter_var($this->AuthenticateSubmissions, FILTER_VALIDATE_BOOLEAN),
'showcoveragecode' => filter_var($this->ShowCoverageCode, FILTER_VALIDATE_BOOLEAN),
'autoremovetimeframe' => (int) $this->AutoremoveTimeframe,
@@ -219,7 +217,6 @@ public function Fill(): void
$this->EmailRedundantFailures = (int) $project->emailredundantfailures;
$this->DisplayLabels = $project->displaylabels;
$this->ShareLabelFilters = $project->sharelabelfilters;
- $this->ViewSubProjectsLink = $project->viewsubprojectslink;
$this->AuthenticateSubmissions = $project->authenticatesubmissions;
$this->ShowCoverageCode = $project->showcoveragecode;
$this->AutoremoveTimeframe = $project->autoremovetimeframe;
diff --git a/app/cdash/tests/kwtest/kw_web_tester.php b/app/cdash/tests/kwtest/kw_web_tester.php
index eaffee60da..106deeee25 100644
--- a/app/cdash/tests/kwtest/kw_web_tester.php
+++ b/app/cdash/tests/kwtest/kw_web_tester.php
@@ -433,7 +433,6 @@ public function createProject($input_settings, $update = false,
'TestTimeStd' => 4,
'TestTimeStdThreshold' => 1,
'UploadQuota' => 1073741824,
- 'ViewSubProjectsLink' => true,
'WarningsFilter' => '',
'ErrorsFilter' => '',
];
diff --git a/database/migrations/2026_04_12_214757_drop_project_viewsubprojectslink_column.php b/database/migrations/2026_04_12_214757_drop_project_viewsubprojectslink_column.php
new file mode 100644
index 0000000000..a63daabf5c
--- /dev/null
+++ b/database/migrations/2026_04_12_214757_drop_project_viewsubprojectslink_column.php
@@ -0,0 +1,15 @@
+makePublicProject('Trilinos');
$project->description = 'Submission files donated by the Trilinos project.';
- $project->viewsubprojectslink = true;
$project->save();
$files_to_submit = file_get_contents(app_path('/cdash/tests/data/ActualTrilinosSubmission/orderedFileList.txt'));
diff --git a/graphql/schema.graphql b/graphql/schema.graphql
index eef1a2c5a3..996eea6fc4 100644
--- a/graphql/schema.graphql
+++ b/graphql/schema.graphql
@@ -318,12 +318,6 @@ type Project {
"Forward label filters from index.php to queryTests.php and viewTest.php."
shareLabelFilters: Boolean! @rename(attribute: "sharelabelfilters")
- """
- If true and this Project uses SubProjects, show a per-SubProject breakdown by default. If false,
- CDash will show per-build results instead.
- """
- showViewSubProjectsLink: Boolean! @rename(attribute: "viewsubprojectslink")
-
"Custom text displayed at the top of a project's dashboard."
banner: String
@@ -477,8 +471,6 @@ input UpdateProjectInput @validator {
shareLabelFilters: Boolean @rename(attribute: "sharelabelfilters")
- showViewSubProjectsLink: Boolean @rename(attribute: "viewsubprojectslink")
-
banner: String
}
diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon
index d9c77587a1..c376fc1d52 100644
--- a/phpstan-baseline.neon
+++ b/phpstan-baseline.neon
@@ -10338,12 +10338,6 @@ parameters:
count: 1
path: app/cdash/app/Model/Project.php
- -
- rawMessage: Property CDash\Model\Project::$ViewSubProjectsLink has no type specified.
- identifier: missingType.property
- count: 1
- path: app/cdash/app/Model/Project.php
-
-
rawMessage: Property CDash\Model\Project::$WarningsFilter has no type specified.
identifier: missingType.property
@@ -16147,19 +16141,19 @@ parameters:
path: app/cdash/tests/kwtest/kw_web_tester.php
-
- rawMessage: 'Method class@anonymous/app/cdash/tests/kwtest/kw_web_tester.php:803::__construct() has parameter $response with no type specified.'
+ rawMessage: 'Method class@anonymous/app/cdash/tests/kwtest/kw_web_tester.php:802::__construct() has parameter $response with no type specified.'
identifier: missingType.parameter
count: 1
path: app/cdash/tests/kwtest/kw_web_tester.php
-
- rawMessage: 'Method class@anonymous/app/cdash/tests/kwtest/kw_web_tester.php:803::getSent() has no return type specified.'
+ rawMessage: 'Method class@anonymous/app/cdash/tests/kwtest/kw_web_tester.php:802::getSent() has no return type specified.'
identifier: missingType.return
count: 1
path: app/cdash/tests/kwtest/kw_web_tester.php
-
- rawMessage: 'Method class@anonymous/app/cdash/tests/kwtest/kw_web_tester.php:803::read() has no return type specified.'
+ rawMessage: 'Method class@anonymous/app/cdash/tests/kwtest/kw_web_tester.php:802::read() has no return type specified.'
identifier: missingType.return
count: 1
path: app/cdash/tests/kwtest/kw_web_tester.php
@@ -16387,7 +16381,7 @@ parameters:
path: app/cdash/tests/kwtest/kw_web_tester.php
-
- rawMessage: Property class@anonymous/app/cdash/tests/kwtest/kw_web_tester.php:803::$read has no type specified.
+ rawMessage: Property class@anonymous/app/cdash/tests/kwtest/kw_web_tester.php:802::$read has no type specified.
identifier: missingType.property
count: 1
path: app/cdash/tests/kwtest/kw_web_tester.php
diff --git a/resources/js/vue/components/ProjectSettings/GeneralTab.vue b/resources/js/vue/components/ProjectSettings/GeneralTab.vue
index 6927458040..9be5cb8c79 100644
--- a/resources/js/vue/components/ProjectSettings/GeneralTab.vue
+++ b/resources/js/vue/components/ProjectSettings/GeneralTab.vue
@@ -148,15 +148,6 @@
label="Display Labels"
test-id="display-labels-input"
/>
-
-