Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f2473d910 | ||
|
|
b56a35f3ee |
@@ -11,6 +11,7 @@ import { activeTab, type Dir, type Node } from "../../layout.js";
|
|||||||
import { usePreview } from "../../hooks/usePreview.js";
|
import { usePreview } from "../../hooks/usePreview.js";
|
||||||
import type { LayoutStore, LayoutStoreApi } from "../../stores/layoutStore.js";
|
import type { LayoutStore, LayoutStoreApi } from "../../stores/layoutStore.js";
|
||||||
import type { Session, Uuid } from "../../types.js";
|
import type { Session, Uuid } from "../../types.js";
|
||||||
|
import { requestToggleDrawer } from "../../uiEvents.js";
|
||||||
import { PaneContainer, type PaneContainerHandle } from "./PaneContainer.js";
|
import { PaneContainer, type PaneContainerHandle } from "./PaneContainer.js";
|
||||||
import { PaneTitle } from "./PaneTitle.js";
|
import { PaneTitle } from "./PaneTitle.js";
|
||||||
import { TabBar } from "./TabBar.js";
|
import { TabBar } from "./TabBar.js";
|
||||||
@@ -204,6 +205,14 @@ function Pane({
|
|||||||
<div
|
<div
|
||||||
className="mv-pane-header attach-header flex items-center justify-between gap-sp-2 border-b border-border-strong px-sp-2 py-sp-1 text-fs-12"
|
className="mv-pane-header attach-header flex items-center justify-between gap-sp-2 border-b border-border-strong px-sp-2 py-sp-1 text-fs-12"
|
||||||
>
|
>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="sessions-btn mv-tool rounded-r-1 px-sp-1 text-faint hover:bg-surface-3 hover:text-ink"
|
||||||
|
title="Sessions"
|
||||||
|
onClick={() => requestToggleDrawer()}
|
||||||
|
>
|
||||||
|
☰
|
||||||
|
</button>
|
||||||
{leaf.sessionId ? (
|
{leaf.sessionId ? (
|
||||||
<PaneTitle sessionId={leaf.sessionId} session={session} />
|
<PaneTitle sessionId={leaf.sessionId} session={session} />
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
@@ -170,16 +170,14 @@ describe("tool rows and activity groups", () => {
|
|||||||
snapshot(socket, [
|
snapshot(socket, [
|
||||||
chunk("user:1", "user", "go"),
|
chunk("user:1", "user", "go"),
|
||||||
row("tool:1", "tool_call", { title: "Read(a.ts)", kind: "read", status: "completed" }),
|
row("tool:1", "tool_call", { title: "Read(a.ts)", kind: "read", status: "completed" }),
|
||||||
chunk("agent:1", "agent_text", "still working"),
|
|
||||||
row("tool:2", "tool_call", { title: "Read(b.ts)", kind: "read", status: "completed" }),
|
row("tool:2", "tool_call", { title: "Read(b.ts)", kind: "read", status: "completed" }),
|
||||||
chunk("agent:2", "agent_text", "the answer"),
|
chunk("agent:1", "agent_text", "the answer"),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const head = screen.getByText(/^2 tool calls/).closest("button")!;
|
const head = screen.getByText(/^2 tool calls/).closest("button")!;
|
||||||
expect(head.getAttribute("aria-expanded")).toBe("false");
|
expect(head.getAttribute("aria-expanded")).toBe("false");
|
||||||
// The final answer stays outside the group; the intermediate text is in it.
|
// The final answer stays outside the group.
|
||||||
expect(document.querySelector(".st-tool-group")!.contains(screen.getByText("the answer"))).toBe(false);
|
expect(document.querySelector(".st-tool-group")!.contains(screen.getByText("the answer"))).toBe(false);
|
||||||
expect(document.querySelector(".st-tool-group")!.contains(screen.getByText("still working"))).toBe(true);
|
|
||||||
|
|
||||||
fireEvent.click(head);
|
fireEvent.click(head);
|
||||||
expect(head.getAttribute("aria-expanded")).toBe("true");
|
expect(head.getAttribute("aria-expanded")).toBe("true");
|
||||||
|
|||||||
@@ -4651,6 +4651,12 @@ input.leaf-rename:focus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 859px) {
|
@media (max-width: 859px) {
|
||||||
|
/* On mobile the sidebar drawer is the only session-switching surface, so
|
||||||
|
the tab bar is redundant — hide it unconditionally. */
|
||||||
|
.mv-tabs {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* sidebar → off-canvas drawer (override the route-based show/hide) */
|
/* sidebar → off-canvas drawer (override the route-based show/hide) */
|
||||||
.app-shell > .sidebar {
|
.app-shell > .sidebar {
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
|
|||||||
Reference in New Issue
Block a user