From f5b60468ce2b966c78143384eb686cda17731e76 Mon Sep 17 00:00:00 2001 From: Mondo Diaz Date: Tue, 3 Feb 2026 10:55:00 -0600 Subject: [PATCH] Fix invalid sort field error on package artifact listing The artifacts endpoint only supports sorting by: created_at, size, original_name But the frontend was defaulting to 'name' (from the old tags endpoint). - Change default sort from 'name' to 'created_at' - Change default order from 'asc' to 'desc' (newest first) - Remove sortable flag from version/tags columns (not DB fields) - Add sortable flag to original_name and size columns --- frontend/src/pages/PackagePage.tsx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/PackagePage.tsx b/frontend/src/pages/PackagePage.tsx index c0cee96..9d501c5 100644 --- a/frontend/src/pages/PackagePage.tsx +++ b/frontend/src/pages/PackagePage.tsx @@ -112,10 +112,11 @@ function PackagePage() { const isSystemProject = projectName?.startsWith('_') ?? false; // Get params from URL + // Valid sort fields for artifacts: created_at, size, original_name const page = parseInt(searchParams.get('page') || '1', 10); const search = searchParams.get('search') || ''; - const sort = searchParams.get('sort') || 'name'; - const order = (searchParams.get('order') || 'asc') as 'asc' | 'desc'; + const sort = searchParams.get('sort') || 'created_at'; + const order = (searchParams.get('order') || 'desc') as 'asc' | 'desc'; const updateParams = useCallback( (updates: Record) => { @@ -357,7 +358,7 @@ function PackagePage() { { key: 'version', header: 'Version', - sortable: true, + // version is from format_metadata, not a sortable DB field render: (a: PackageArtifact) => ( ( {a.original_name || a.id.slice(0, 12)} @@ -379,6 +381,7 @@ function PackagePage() { { key: 'size', header: 'Size', + sortable: true, render: (a: PackageArtifact) => {formatBytes(a.size)}, }, { @@ -423,10 +426,11 @@ function PackagePage() { ] : [ // Regular project columns: Tag, Version, Filename, Size, Created + // Valid sort fields: created_at, size, original_name { key: 'tags', header: 'Tag', - sortable: true, + // tags is not a sortable DB field render: (a: PackageArtifact) => ( ( {getArtifactVersion(a) || '—'} ), @@ -447,6 +452,7 @@ function PackagePage() { { key: 'original_name', header: 'Filename', + sortable: true, className: 'cell-truncate', render: (a: PackageArtifact) => ( {a.original_name || '—'} @@ -455,6 +461,7 @@ function PackagePage() { { key: 'size', header: 'Size', + sortable: true, render: (a: PackageArtifact) => {formatBytes(a.size)}, }, {