feat(FN-699): remove project badge from Board and ListView components

- Remove projectId/projectName props from Board and ListView components
- Remove Folder icon import and project context badge JSX from both views
- Remove projectId/projectName prop passing from App.tsx
- Add Board test asserting .board-project-context badge is not rendered
This commit is contained in:
gsxdsm
2026-04-01 09:50:54 -07:00
parent 1654c91fb5
commit aa22d64b8a
4 changed files with 8 additions and 33 deletions

View File

@@ -454,8 +454,6 @@ function AppInner() {
searchQuery={searchQuery}
availableModels={availableModels}
onOpenFilesForTask={handleOpenChangedFiles}
projectId={currentProject?.id}
projectName={currentProject?.name}
/>
);
}
@@ -473,8 +471,6 @@ function AppInner() {
onPlanningMode={handleNewTaskPlanningMode}
onSubtaskBreakdown={handleSubtaskBreakdown}
availableModels={availableModels}
projectId={currentProject?.id}
projectName={currentProject?.name}
/>
);
};

View File

@@ -4,7 +4,6 @@ import { Column } from "./Column";
import type { ToastType } from "../hooks/useToast";
import { useState, useMemo, useEffect, useCallback, useRef } from "react";
import { useBatchBadgeFetch } from "../hooks/useBatchBadgeFetch";
import { Folder } from "lucide-react";
import type { ModelInfo } from "../api";
interface BoardProps {
@@ -36,9 +35,6 @@ interface BoardProps {
*/
onSubtaskBreakdown?: (description: string) => void;
onOpenFilesForTask?: (taskId: string, worktree: string | undefined, column: string) => void;
/** Project context for multi-project mode */
projectId?: string;
projectName?: string;
}
function sortTasksForColumn(tasks: Task[]): Task[] {
@@ -57,7 +53,7 @@ function areTaskArraysEqual(previous: Task[], next: Task[]): boolean {
return previous.every((task, index) => task === next[index]);
}
export function Board({ tasks, maxConcurrent, onMoveTask, onOpenDetail, addToast, onQuickCreate, onNewTask, autoMerge, onToggleAutoMerge, globalPaused, onUpdateTask, onArchiveTask, onUnarchiveTask, onArchiveAllDone, searchQuery = "", availableModels, onPlanningMode, onSubtaskBreakdown, onOpenFilesForTask, projectId, projectName }: BoardProps) {
export function Board({ tasks, maxConcurrent, onMoveTask, onOpenDetail, addToast, onQuickCreate, onNewTask, autoMerge, onToggleAutoMerge, globalPaused, onUpdateTask, onArchiveTask, onUnarchiveTask, onArchiveAllDone, searchQuery = "", availableModels, onPlanningMode, onSubtaskBreakdown, onOpenFilesForTask }: BoardProps) {
const [archivedCollapsed, setArchivedCollapsed] = useState(true);
const { fetchBatch } = useBatchBadgeFetch();
const debounceTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
@@ -149,15 +145,6 @@ export function Board({ tasks, maxConcurrent, onMoveTask, onOpenDetail, addToast
return (
<>
{/* Project context badge */}
{projectId && projectName && (
<div className="board-project-context">
<span className="board-project-badge">
<Folder size={14} />
{projectName}
</span>
</div>
)}
<main className="board" id="board">
{COLUMNS.map((col) => (
<Column

View File

@@ -1,5 +1,5 @@
import { useState, useCallback, useMemo, Fragment, useEffect, useRef } from "react";
import { LayoutGrid, List as ListIcon, ArrowUpDown, ArrowUp, ArrowDown, Search, Link, Columns3, EyeOff, Eye, ChevronRight, Folder } from "lucide-react";
import { LayoutGrid, List as ListIcon, ArrowUpDown, ArrowUp, ArrowDown, Search, Link, Columns3, EyeOff, Eye, ChevronRight } from "lucide-react";
import type { Task, TaskDetail, Column, TaskStep, TaskCreateInput } from "@fusion/core";
import { COLUMN_LABELS, COLUMNS } from "@fusion/core";
import { fetchTaskDetail, batchUpdateTaskModels } from "../api";
@@ -48,9 +48,6 @@ interface ListViewProps {
* Allows parent to refresh task list or handle optimistically.
*/
onTasksUpdated?: (updatedTasks: Task[]) => void;
/** Project context for multi-project mode */
projectId?: string;
projectName?: string;
}
function getStepProgress(steps: TaskStep[]): string {
@@ -77,8 +74,6 @@ export function ListView({
onPlanningMode,
onSubtaskBreakdown,
onTasksUpdated,
projectId,
projectName,
}: ListViewProps) {
const [sortField, setSortField] = useState<SortField>("id");
const [sortDirection, setSortDirection] = useState<SortDirection>("desc");
@@ -569,15 +564,6 @@ export function ListView({
return (
<div className="list-view">
{/* Project context badge */}
{projectId && projectName && (
<div className="list-project-context">
<span className="list-project-badge">
<Folder size={14} />
{projectName}
</span>
</div>
)}
<div className="list-toolbar">
<div className="list-filter">
<Search size={14} className="filter-icon" />

View File

@@ -330,4 +330,10 @@ describe("Board", () => {
expect(todoTasks).toHaveLength(1);
});
});
it("does not render a .board-project-context badge", () => {
renderBoard();
const badge = document.querySelector(".board-project-context");
expect(badge).toBeNull();
});
});