dd9b23106c
- Sessions page tabs: Sessions · Events · Agents. QueryExplorer.tsx became AgentsTable.tsx (agents only — sessions and events already had tabs); /query redirects to /sessions?view=agents and leaves the sidebar. GET /api/query is unchanged and still answers all three entities. - Windows picker opens in front: -EncodedCommand script spends the hidden first ShowWindow that windowsHide gives the process, then brings the TopMost owner forward via AttachThreadInput (v2.5.3's owner was itself hidden). - Session page Resume/Fork/Open pane: owningLane and sessionWorktreeName match Windows folders (either separator), with a test.
34 lines
1.5 KiB
TypeScript
34 lines
1.5 KiB
TypeScript
/**
|
|
* @file Tests that a session finds its workspace and its `claude --worktree`
|
|
* name by folder on Windows paths (`D:\…`) as well as POSIX ones — the
|
|
* transcript page's Resume/Fork/Open pane hid on Windows when they matched
|
|
* on "/" only.
|
|
* @author Nguyễn Ngọc Trí Vĩ <vinnt@smartgift.vn>
|
|
*/
|
|
|
|
import { describe, it, expect } from "vitest";
|
|
import type { Lane, Session } from "../../../lib/types";
|
|
import { owningLane } from "../SessionResumeButton";
|
|
import { sessionWorktreeName } from "../WorkspaceSessionList";
|
|
|
|
const lane = (id: number, cwd: string) => ({ id, cwd, tool: "claude" }) as Lane;
|
|
|
|
describe("session paths", () => {
|
|
it("finds the deepest owning workspace with either separator", () => {
|
|
const lanes = [lane(1, "D:\\Project"), lane(2, "D:\\Project\\Hobby\\"), lane(3, "/home/u/app")];
|
|
expect(owningLane("D:\\Project\\Hobby\\tri-vi-portfolio", "claude", lanes)?.id).toBe(2);
|
|
expect(owningLane("D:\\Project\\Hobby", "claude", lanes)?.id).toBe(2);
|
|
expect(owningLane("D:\\ProjectX", "claude", lanes)).toBeNull();
|
|
expect(owningLane("/home/u/app/src", "claude", lanes)?.id).toBe(3);
|
|
});
|
|
|
|
it("reads a worktree name from a Windows or POSIX session folder", () => {
|
|
const at = (cwd: string) => ({ cwd }) as Session;
|
|
expect(
|
|
sessionWorktreeName(lane(1, "D:\\repo"), at("D:\\repo\\.claude\\worktrees\\fix-a"))
|
|
).toBe("fix-a");
|
|
expect(sessionWorktreeName(lane(1, "/r"), at("/r/.claude/worktrees/fix-b/"))).toBe("fix-b");
|
|
expect(sessionWorktreeName(lane(1, "D:\\repo"), at("D:\\repo\\"))).toBeNull();
|
|
});
|
|
});
|