kaneo (minimalist kanban) fork to experiment adding a tangled integration github.com/usekaneo/kaneo
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(web): use column.id in task move popover

The /tasks API returns project columns as { id: slug, name, isFinal, tasks }
with no `slug` property. TaskMovePopover referenced `column.slug` which was
always undefined, causing every status match to fail silently and ultimately
crashing when the Select rendered items: `getStatusLabel(undefined)` reaches
toDisplayCase, which calls `.replace` on undefined.

Fixes "Cannot read properties of undefined (reading 'replace')" on opening
the task move popover and picking a destination project.

+5 -5
+5 -5
apps/web/src/components/task/task-move-popover.tsx
··· 61 61 62 62 const destinationColumns = destinationProject?.columns ?? []; 63 63 const canKeepCurrentStatus = destinationColumns.some( 64 - (column) => column.slug === task.status, 64 + (column) => column.id === task.status, 65 65 ); 66 - const fallbackStatus = destinationColumns[0]?.slug ?? ""; 66 + const fallbackStatus = destinationColumns[0]?.id ?? ""; 67 67 const effectiveStatus = canKeepCurrentStatus 68 68 ? task.status 69 69 : selectedStatus || fallbackStatus; 70 70 71 71 const selectedStatusLabel = useMemo(() => { 72 72 if (!effectiveStatus || destinationColumns.length === 0) return null; 73 - const column = destinationColumns.find((c) => c.slug === effectiveStatus); 73 + const column = destinationColumns.find((c) => c.id === effectiveStatus); 74 74 return getStatusLabel(effectiveStatus) || column?.name || null; 75 75 }, [destinationColumns, effectiveStatus]); 76 76 ··· 202 202 </SelectTrigger> 203 203 <SelectContent> 204 204 {destinationColumns.map((column) => ( 205 - <SelectItem key={column.id} value={column.slug}> 206 - {getStatusLabel(column.slug) || column.name} 205 + <SelectItem key={column.id} value={column.id}> 206 + {getStatusLabel(column.id) || column.name} 207 207 </SelectItem> 208 208 ))} 209 209 </SelectContent>