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
This commit is contained in:
Mondo Diaz
2026-02-03 10:55:00 -06:00
parent f7643a5c13
commit f5b60468ce

View File

@@ -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<string, string | undefined>) => {
@@ -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) => (
<strong
className={`tag-name-link ${selectedArtifact?.id === a.id ? 'selected' : ''}`}
@@ -371,6 +372,7 @@ function PackagePage() {
{
key: 'original_name',
header: 'Filename',
sortable: true,
className: 'cell-truncate',
render: (a: PackageArtifact) => (
<span title={a.original_name || a.id}>{a.original_name || a.id.slice(0, 12)}</span>
@@ -379,6 +381,7 @@ function PackagePage() {
{
key: 'size',
header: 'Size',
sortable: true,
render: (a: PackageArtifact) => <span>{formatBytes(a.size)}</span>,
},
{
@@ -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) => (
<strong
className={`tag-name-link ${selectedArtifact?.id === a.id ? 'selected' : ''}`}
@@ -440,6 +444,7 @@ function PackagePage() {
{
key: 'version',
header: 'Version',
// version is from format_metadata, not a sortable DB field
render: (a: PackageArtifact) => (
<span className="version-badge">{getArtifactVersion(a) || '—'}</span>
),
@@ -447,6 +452,7 @@ function PackagePage() {
{
key: 'original_name',
header: 'Filename',
sortable: true,
className: 'cell-truncate',
render: (a: PackageArtifact) => (
<span title={a.original_name || undefined}>{a.original_name || '—'}</span>
@@ -455,6 +461,7 @@ function PackagePage() {
{
key: 'size',
header: 'Size',
sortable: true,
render: (a: PackageArtifact) => <span>{formatBytes(a.size)}</span>,
},
{