-
+
Trace
{{ trace.detail_key }}
+
+ {{ latestLocalTrace.severity }}
+
+
+
+
+ Issue
+ {{ latestLocalTrace.issue_type }}
+
+
+ Path
+ {{ decodeTracePath(latestLocalTrace.file_path) }}
+
-
- {{ pageStart }}-{{ pageEnd }} of {{ trace.local_trace_count }} local traces
-
@@ -45,11 +59,18 @@
-
-
Loading page...
+
+ {{ pageStart }}-{{ pageEnd }} of {{ trace.local_trace_count }} local traces
+ ยท Loading page...
+
+
@@ -114,6 +135,29 @@ const pageStart = computed(() =>
const pageEnd = computed(() =>
Math.min(currentPage.value * localTracePageSize, trace.value?.local_trace_count ?? 0),
)
+const latestLocalTrace = computed(() => trace.value?.local_traces.at(-1))
+
+function decodeTracePath(path: string): string {
+ try {
+ return decodeURIComponent(path)
+ } catch {
+ return path
+ }
+}
+
+function getSeverityBadgeColor(severity: Labrinth.TechReview.Internal.DelphiSeverity): string {
+ switch (severity) {
+ case 'severe':
+ return 'border-red/60 bg-highlight-red text-red'
+ case 'high':
+ return 'border-orange/60 bg-highlight-orange text-orange'
+ case 'medium':
+ return 'border-green/60 bg-highlight-green text-green'
+ case 'low':
+ default:
+ return 'border-blue/60 bg-highlight-blue text-blue'
+ }
+}
async function fetchTracePage(afterDetailId: string | null) {
return await client.labrinth.tech_review_internal.getGlobalIssueDetail({
From 7df31bdd380c52c45adcaa17e7f864d34e42c00d Mon Sep 17 00:00:00 2001
From: aecsocket <43144841+aecsocket@users.noreply.github.com>
Date: Sun, 12 Jul 2026 10:38:27 +0100
Subject: [PATCH 3/4] deterministic local trace ordering
---
...c71b89daddcc8805a0874d1c5ad8469dd83133ac771b86ea4e.json} | 4 ++--
...aa880ddbe05f741e2a83b50d89f5954ab8d951a090e702de73.json} | 4 ++--
...30a7c7894f7682015c170b2fb325aaef554f08aac34457a3fa.json} | 4 ++--
...601c7ba74d63608ff40af3b6b56f43540ec3798ef30e5c0b9d.json} | 4 ++--
...52f15c3c073e65e8eff6516004d0636357f146047789f8f8c1.json} | 4 ++--
apps/labrinth/src/routes/internal/moderation/tech_review.rs | 6 +++++-
6 files changed, 15 insertions(+), 11 deletions(-)
rename apps/labrinth/.sqlx/{query-50d087248322373b2d5fc40e1c7b8a855b55d907d7fba0af0738c37366cb93e0.json => query-147e143aaaff82c71b89daddcc8805a0874d1c5ad8469dd83133ac771b86ea4e.json} (77%)
rename apps/labrinth/.sqlx/{query-9070b1b6a5b1e93eb1fd1838c522fa6084ad6a5c86fafbfe8448ea7cc86f38ba.json => query-63a9a89443566baa880ddbe05f741e2a83b50d89f5954ab8d951a090e702de73.json} (94%)
rename apps/labrinth/.sqlx/{query-8e38571ffae8bf246973d328c890a45b87c0f71d53cf46f390c4b286677b2b31.json => query-72012eb0655d9130a7c7894f7682015c170b2fb325aaef554f08aac34457a3fa.json} (89%)
rename apps/labrinth/.sqlx/{query-10e2a3b31ba94b93ed2d6c9753a5aabf13190a0b336089e6521022069813cf17.json => query-8d37c8c2633b7d601c7ba74d63608ff40af3b6b56f43540ec3798ef30e5c0b9d.json} (88%)
rename apps/labrinth/.sqlx/{query-632b79f51dd39a75ebff838ca4beab463f84aa32246288cc251881ec41d207f5.json => query-c69a7a5296941a52f15c3c073e65e8eff6516004d0636357f146047789f8f8c1.json} (81%)
diff --git a/apps/labrinth/.sqlx/query-50d087248322373b2d5fc40e1c7b8a855b55d907d7fba0af0738c37366cb93e0.json b/apps/labrinth/.sqlx/query-147e143aaaff82c71b89daddcc8805a0874d1c5ad8469dd83133ac771b86ea4e.json
similarity index 77%
rename from apps/labrinth/.sqlx/query-50d087248322373b2d5fc40e1c7b8a855b55d907d7fba0af0738c37366cb93e0.json
rename to apps/labrinth/.sqlx/query-147e143aaaff82c71b89daddcc8805a0874d1c5ad8469dd83133ac771b86ea4e.json
index a6b04534b8..aed2ace773 100644
--- a/apps/labrinth/.sqlx/query-50d087248322373b2d5fc40e1c7b8a855b55d907d7fba0af0738c37366cb93e0.json
+++ b/apps/labrinth/.sqlx/query-147e143aaaff82c71b89daddcc8805a0874d1c5ad8469dd83133ac771b86ea4e.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "SELECT id FROM versions WHERE mod_id = ANY($1::bigint[])",
+ "query": "SELECT id FROM versions WHERE mod_id = ANY($1::bigint[]) ORDER BY id",
"describe": {
"columns": [
{
@@ -18,5 +18,5 @@
false
]
},
- "hash": "50d087248322373b2d5fc40e1c7b8a855b55d907d7fba0af0738c37366cb93e0"
+ "hash": "147e143aaaff82c71b89daddcc8805a0874d1c5ad8469dd83133ac771b86ea4e"
}
diff --git a/apps/labrinth/.sqlx/query-9070b1b6a5b1e93eb1fd1838c522fa6084ad6a5c86fafbfe8448ea7cc86f38ba.json b/apps/labrinth/.sqlx/query-63a9a89443566baa880ddbe05f741e2a83b50d89f5954ab8d951a090e702de73.json
similarity index 94%
rename from apps/labrinth/.sqlx/query-9070b1b6a5b1e93eb1fd1838c522fa6084ad6a5c86fafbfe8448ea7cc86f38ba.json
rename to apps/labrinth/.sqlx/query-63a9a89443566baa880ddbe05f741e2a83b50d89f5954ab8d951a090e702de73.json
index 5693d97e31..b9c6d3543c 100644
--- a/apps/labrinth/.sqlx/query-9070b1b6a5b1e93eb1fd1838c522fa6084ad6a5c86fafbfe8448ea7cc86f38ba.json
+++ b/apps/labrinth/.sqlx/query-63a9a89443566baa880ddbe05f741e2a83b50d89f5954ab8d951a090e702de73.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "\n SELECT\n didws.id AS \"id!: DelphiReportIssueDetailsId\",\n didws.issue_id AS \"issue_id!: DelphiReportIssueId\",\n didws.key AS \"key!: String\",\n didws.jar AS \"jar?: String\",\n didws.file_path AS \"file_path!: String\",\n didws.data AS \"data!: sqlx::types::Json>\",\n didws.severity AS \"severity!: DelphiSeverity\",\n didws.local_status AS \"local_status?: DelphiStatus\",\n didws.global_status AS \"global_status?: DelphiStatus\",\n didws.status AS \"status!: DelphiStatus\"\n FROM delphi_issue_details_with_statuses didws\n WHERE didws.issue_id = ANY($1::bigint[])\n ",
+ "query": "\n SELECT\n didws.id AS \"id!: DelphiReportIssueDetailsId\",\n didws.issue_id AS \"issue_id!: DelphiReportIssueId\",\n didws.key AS \"key!: String\",\n didws.jar AS \"jar?: String\",\n didws.file_path AS \"file_path!: String\",\n didws.data AS \"data!: sqlx::types::Json>\",\n didws.severity AS \"severity!: DelphiSeverity\",\n didws.local_status AS \"local_status?: DelphiStatus\",\n didws.global_status AS \"global_status?: DelphiStatus\",\n didws.status AS \"status!: DelphiStatus\"\n FROM delphi_issue_details_with_statuses didws\n WHERE didws.issue_id = ANY($1::bigint[])\n ORDER BY didws.issue_id, didws.id\n ",
"describe": {
"columns": [
{
@@ -117,5 +117,5 @@
true
]
},
- "hash": "9070b1b6a5b1e93eb1fd1838c522fa6084ad6a5c86fafbfe8448ea7cc86f38ba"
+ "hash": "63a9a89443566baa880ddbe05f741e2a83b50d89f5954ab8d951a090e702de73"
}
diff --git a/apps/labrinth/.sqlx/query-8e38571ffae8bf246973d328c890a45b87c0f71d53cf46f390c4b286677b2b31.json b/apps/labrinth/.sqlx/query-72012eb0655d9130a7c7894f7682015c170b2fb325aaef554f08aac34457a3fa.json
similarity index 89%
rename from apps/labrinth/.sqlx/query-8e38571ffae8bf246973d328c890a45b87c0f71d53cf46f390c4b286677b2b31.json
rename to apps/labrinth/.sqlx/query-72012eb0655d9130a7c7894f7682015c170b2fb325aaef554f08aac34457a3fa.json
index aeb96383c0..3f11083654 100644
--- a/apps/labrinth/.sqlx/query-8e38571ffae8bf246973d328c890a45b87c0f71d53cf46f390c4b286677b2b31.json
+++ b/apps/labrinth/.sqlx/query-72012eb0655d9130a7c7894f7682015c170b2fb325aaef554f08aac34457a3fa.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "\n SELECT\n id AS \"file_id: DBFileId\",\n version_id AS \"version_id: DBVersionId\",\n url,\n filename,\n size\n FROM files\n WHERE version_id = ANY($1::bigint[])\n ",
+ "query": "\n SELECT\n id AS \"file_id: DBFileId\",\n version_id AS \"version_id: DBVersionId\",\n url,\n filename,\n size\n FROM files\n WHERE version_id = ANY($1::bigint[])\n ORDER BY version_id, id\n ",
"describe": {
"columns": [
{
@@ -42,5 +42,5 @@
false
]
},
- "hash": "8e38571ffae8bf246973d328c890a45b87c0f71d53cf46f390c4b286677b2b31"
+ "hash": "72012eb0655d9130a7c7894f7682015c170b2fb325aaef554f08aac34457a3fa"
}
diff --git a/apps/labrinth/.sqlx/query-10e2a3b31ba94b93ed2d6c9753a5aabf13190a0b336089e6521022069813cf17.json b/apps/labrinth/.sqlx/query-8d37c8c2633b7d601c7ba74d63608ff40af3b6b56f43540ec3798ef30e5c0b9d.json
similarity index 88%
rename from apps/labrinth/.sqlx/query-10e2a3b31ba94b93ed2d6c9753a5aabf13190a0b336089e6521022069813cf17.json
rename to apps/labrinth/.sqlx/query-8d37c8c2633b7d601c7ba74d63608ff40af3b6b56f43540ec3798ef30e5c0b9d.json
index 53cf350301..475dba1b98 100644
--- a/apps/labrinth/.sqlx/query-10e2a3b31ba94b93ed2d6c9753a5aabf13190a0b336089e6521022069813cf17.json
+++ b/apps/labrinth/.sqlx/query-8d37c8c2633b7d601c7ba74d63608ff40af3b6b56f43540ec3798ef30e5c0b9d.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "\n SELECT\n id AS \"report_id!: DelphiReportId\",\n file_id AS \"file_id!: DBFileId\",\n created,\n severity AS \"severity!: DelphiSeverity\"\n FROM delphi_reports\n WHERE file_id = ANY($1::bigint[])\n ",
+ "query": "\n SELECT\n id AS \"report_id!: DelphiReportId\",\n file_id AS \"file_id!: DBFileId\",\n created,\n severity AS \"severity!: DelphiSeverity\"\n FROM delphi_reports\n WHERE file_id = ANY($1::bigint[])\n ORDER BY file_id, created, id\n ",
"describe": {
"columns": [
{
@@ -48,5 +48,5 @@
false
]
},
- "hash": "10e2a3b31ba94b93ed2d6c9753a5aabf13190a0b336089e6521022069813cf17"
+ "hash": "8d37c8c2633b7d601c7ba74d63608ff40af3b6b56f43540ec3798ef30e5c0b9d"
}
diff --git a/apps/labrinth/.sqlx/query-632b79f51dd39a75ebff838ca4beab463f84aa32246288cc251881ec41d207f5.json b/apps/labrinth/.sqlx/query-c69a7a5296941a52f15c3c073e65e8eff6516004d0636357f146047789f8f8c1.json
similarity index 81%
rename from apps/labrinth/.sqlx/query-632b79f51dd39a75ebff838ca4beab463f84aa32246288cc251881ec41d207f5.json
rename to apps/labrinth/.sqlx/query-c69a7a5296941a52f15c3c073e65e8eff6516004d0636357f146047789f8f8c1.json
index a48b3a89a0..06a2b641ef 100644
--- a/apps/labrinth/.sqlx/query-632b79f51dd39a75ebff838ca4beab463f84aa32246288cc251881ec41d207f5.json
+++ b/apps/labrinth/.sqlx/query-c69a7a5296941a52f15c3c073e65e8eff6516004d0636357f146047789f8f8c1.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "\n SELECT\n id AS \"id: DelphiReportIssueId\",\n report_id AS \"report_id: DelphiReportId\",\n issue_type\n FROM delphi_report_issues\n WHERE report_id = ANY($1::bigint[])\n ",
+ "query": "\n SELECT\n id AS \"id: DelphiReportIssueId\",\n report_id AS \"report_id: DelphiReportId\",\n issue_type\n FROM delphi_report_issues\n WHERE report_id = ANY($1::bigint[])\n ORDER BY report_id, id\n ",
"describe": {
"columns": [
{
@@ -30,5 +30,5 @@
false
]
},
- "hash": "632b79f51dd39a75ebff838ca4beab463f84aa32246288cc251881ec41d207f5"
+ "hash": "c69a7a5296941a52f15c3c073e65e8eff6516004d0636357f146047789f8f8c1"
}
diff --git a/apps/labrinth/src/routes/internal/moderation/tech_review.rs b/apps/labrinth/src/routes/internal/moderation/tech_review.rs
index 745509e834..2bd5097c58 100644
--- a/apps/labrinth/src/routes/internal/moderation/tech_review.rs
+++ b/apps/labrinth/src/routes/internal/moderation/tech_review.rs
@@ -443,7 +443,7 @@ async fn fetch_project_reports(
}
let version_id_rows = sqlx::query!(
- "SELECT id FROM versions WHERE mod_id = ANY($1::bigint[])",
+ "SELECT id FROM versions WHERE mod_id = ANY($1::bigint[]) ORDER BY id",
&project_ids.iter().map(|id| id.0).collect::>()
)
.fetch_all(pool)
@@ -469,6 +469,7 @@ async fn fetch_project_reports(
size
FROM files
WHERE version_id = ANY($1::bigint[])
+ ORDER BY version_id, id
"#,
&version_ids.iter().map(|id| id.0).collect::>()
)
@@ -485,6 +486,7 @@ async fn fetch_project_reports(
severity AS "severity!: DelphiSeverity"
FROM delphi_reports
WHERE file_id = ANY($1::bigint[])
+ ORDER BY file_id, created, id
"#,
&file_rows.iter().map(|f| f.file_id.0).collect::>()
)
@@ -500,6 +502,7 @@ async fn fetch_project_reports(
issue_type
FROM delphi_report_issues
WHERE report_id = ANY($1::bigint[])
+ ORDER BY report_id, id
"#,
&report_rows
.iter()
@@ -528,6 +531,7 @@ async fn fetch_project_reports(
didws.status AS "status!: DelphiStatus"
FROM delphi_issue_details_with_statuses didws
WHERE didws.issue_id = ANY($1::bigint[])
+ ORDER BY didws.issue_id, didws.id
"#,
&issue_ids.iter().map(|i| i.0).collect::>()
)
From fd8d4c77468abdbbc536c8c3c82e359d4016af00 Mon Sep 17 00:00:00 2001
From: aecsocket <43144841+aecsocket@users.noreply.github.com>
Date: Sun, 12 Jul 2026 11:09:28 +0100
Subject: [PATCH 4/4] fix preview
---
.github/workflows/frontend-preview.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/frontend-preview.yml b/.github/workflows/frontend-preview.yml
index 66b9883997..0c9d5f2d20 100644
--- a/.github/workflows/frontend-preview.yml
+++ b/.github/workflows/frontend-preview.yml
@@ -76,6 +76,8 @@ jobs:
- name: Deploy Storybook preview
uses: cloudflare/wrangler-action@9acf94ace14e7dc412b076f2c5c20b8ce93c79cd # v3.15.0
+ env:
+ NODE_OPTIONS: --max-old-space-size=6144
with:
apiToken: ${{ secrets.CF_API_TOKEN }}
accountId: ${{ secrets.CF_ACCOUNT_ID }}