mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-07 08:26:51 +00:00
fix: update task search to show global history across all workspaces
- Remove workspace filtering in useTaskSearch hook to show all tasks - Update tests to reflect global task history behavior - Fix test expectations for sorting across multiple workspaces - Remove unused cwd variable
This commit is contained in:
parent
9fe17a4be3
commit
d8d4c37510
3 changed files with 23 additions and 16 deletions
|
|
@ -191,7 +191,7 @@ describe("Cline", () => {
|
|||
|
||||
mockExtensionContext = {
|
||||
globalState: {
|
||||
get: vi.fn().mockImplementation((key: keyof GlobalState) => {
|
||||
get: vi.fn().mockImplementation((key: string) => {
|
||||
if (key === "taskHistory") {
|
||||
return [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -63,16 +63,19 @@ describe("useTaskSearch", () => {
|
|||
it("returns all tasks by default", () => {
|
||||
const { result } = renderHook(() => useTaskSearch())
|
||||
|
||||
expect(result.current.tasks).toHaveLength(2) // Only tasks from current workspace
|
||||
expect(result.current.tasks).toHaveLength(3) // All tasks from all workspaces
|
||||
expect(result.current.tasks[0].id).toBe("task-2") // Newest first
|
||||
expect(result.current.tasks[1].id).toBe("task-1")
|
||||
expect(result.current.tasks[2].id).toBe("task-3")
|
||||
})
|
||||
|
||||
it("filters tasks by current workspace by default", () => {
|
||||
it("shows tasks from all workspaces", () => {
|
||||
const { result } = renderHook(() => useTaskSearch())
|
||||
|
||||
expect(result.current.tasks).toHaveLength(2)
|
||||
expect(result.current.tasks.every((task) => task.workspace === "/workspace/project1")).toBe(true)
|
||||
expect(result.current.tasks).toHaveLength(3)
|
||||
const workspaces = result.current.tasks.map((task) => task.workspace)
|
||||
expect(workspaces).toContain("/workspace/project1")
|
||||
expect(workspaces).toContain("/workspace/project2")
|
||||
})
|
||||
|
||||
it("sorts by newest by default", () => {
|
||||
|
|
@ -90,8 +93,9 @@ describe("useTaskSearch", () => {
|
|||
result.current.setSortOption("oldest")
|
||||
})
|
||||
|
||||
expect(result.current.tasks[0].id).toBe("task-1") // Feb 16
|
||||
expect(result.current.tasks[1].id).toBe("task-2") // Feb 17
|
||||
expect(result.current.tasks[0].id).toBe("task-3") // Feb 15
|
||||
expect(result.current.tasks[1].id).toBe("task-1") // Feb 16
|
||||
expect(result.current.tasks[2].id).toBe("task-2") // Feb 17
|
||||
})
|
||||
|
||||
it("sorts by most expensive", () => {
|
||||
|
|
@ -101,8 +105,9 @@ describe("useTaskSearch", () => {
|
|||
result.current.setSortOption("mostExpensive")
|
||||
})
|
||||
|
||||
expect(result.current.tasks[0].id).toBe("task-2") // $0.02
|
||||
expect(result.current.tasks[1].id).toBe("task-1") // $0.01
|
||||
expect(result.current.tasks[0].id).toBe("task-3") // $0.05
|
||||
expect(result.current.tasks[1].id).toBe("task-2") // $0.02
|
||||
expect(result.current.tasks[2].id).toBe("task-1") // $0.01
|
||||
})
|
||||
|
||||
it("sorts by most tokens", () => {
|
||||
|
|
@ -113,9 +118,11 @@ describe("useTaskSearch", () => {
|
|||
})
|
||||
|
||||
// task-2: 200 + 100 + 25 + 10 = 335 tokens
|
||||
// task-3: 150 + 75 = 225 tokens
|
||||
// task-1: 100 + 50 = 150 tokens
|
||||
expect(result.current.tasks[0].id).toBe("task-2")
|
||||
expect(result.current.tasks[1].id).toBe("task-1")
|
||||
expect(result.current.tasks[1].id).toBe("task-3")
|
||||
expect(result.current.tasks[2].id).toBe("task-1")
|
||||
})
|
||||
|
||||
it("filters tasks by search query", () => {
|
||||
|
|
@ -227,8 +234,8 @@ describe("useTaskSearch", () => {
|
|||
|
||||
const { result } = renderHook(() => useTaskSearch())
|
||||
|
||||
// Should only include tasks with both ts and task content from current workspace
|
||||
expect(result.current.tasks).toHaveLength(2)
|
||||
// Should only include tasks with both ts and task content from all workspaces
|
||||
expect(result.current.tasks).toHaveLength(3)
|
||||
expect(result.current.tasks.every((task) => task.ts && task.task)).toBe(true)
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import { useExtensionState } from "@/context/ExtensionStateContext"
|
|||
type SortOption = "newest" | "oldest" | "mostExpensive" | "mostTokens" | "mostRelevant"
|
||||
|
||||
export const useTaskSearch = () => {
|
||||
const { taskHistory, cwd } = useExtensionState()
|
||||
const { taskHistory } = useExtensionState()
|
||||
const [searchQuery, setSearchQuery] = useState("")
|
||||
const [sortOption, setSortOption] = useState<SortOption>("newest")
|
||||
const [lastNonRelevantSort, setLastNonRelevantSort] = useState<SortOption | null>("newest")
|
||||
|
|
@ -23,10 +23,10 @@ export const useTaskSearch = () => {
|
|||
}, [searchQuery, sortOption, lastNonRelevantSort])
|
||||
|
||||
const presentableTasks = useMemo(() => {
|
||||
// Filter tasks by current workspace and ensure they have required fields
|
||||
const tasks = taskHistory.filter((item) => item.ts && item.task && item.workspace === cwd)
|
||||
// Ensure tasks have required fields (no workspace filtering for global history)
|
||||
const tasks = taskHistory.filter((item) => item.ts && item.task)
|
||||
return tasks
|
||||
}, [taskHistory, cwd])
|
||||
}, [taskHistory])
|
||||
|
||||
const fzf = useMemo(() => {
|
||||
return new Fzf(presentableTasks, {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue