Skip to content

Commit 41129ba

Browse files
authored
fix(ui): align sidebar menu state with visibility (#236)
1 parent cfa455a commit 41129ba

4 files changed

Lines changed: 73 additions & 6 deletions

File tree

src/ui/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@ export function App({
485485
showHelp,
486486
showHunkHeaders,
487487
showLineNumbers,
488-
sidebarVisible,
488+
renderSidebar,
489489
toggleAgentNotes,
490490
toggleFocusArea,
491491
toggleHelp,
@@ -510,7 +510,7 @@ export function App({
510510
showHelp,
511511
showHunkHeaders,
512512
showLineNumbers,
513-
sidebarVisible,
513+
renderSidebar,
514514
toggleAgentNotes,
515515
toggleFocusArea,
516516
toggleHelp,

src/ui/AppHost.responsive.test.tsx

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,73 @@ describe("responsive app", () => {
108108
expect(tight).not.toMatch(/.*/);
109109
});
110110

111+
test("View menu sidebar checkmark follows actual medium-viewport visibility", async () => {
112+
const setup = await testRender(<AppHost bootstrap={createBootstrap("auto")} />, {
113+
width: 180,
114+
height: 24,
115+
});
116+
117+
try {
118+
await act(async () => {
119+
await setup.renderOnce();
120+
});
121+
122+
const initialFrame = setup.captureCharFrame();
123+
expect((initialFrame.match(/alpha\.ts/g) ?? []).length).toBe(1);
124+
125+
await act(async () => {
126+
await setup.mockInput.pressKey("F10");
127+
});
128+
await act(async () => {
129+
await setup.renderOnce();
130+
});
131+
await act(async () => {
132+
await setup.mockInput.pressArrow("right");
133+
});
134+
await act(async () => {
135+
await setup.renderOnce();
136+
});
137+
138+
const menuFrame = setup.captureCharFrame();
139+
expect(menuFrame).toContain("[ ] Sidebar");
140+
expect(menuFrame).not.toContain("[x] Sidebar");
141+
} finally {
142+
await act(async () => {
143+
setup.renderer.destroy();
144+
});
145+
}
146+
});
147+
148+
test("sidebar shortcut opens the hidden sidebar on medium viewport", async () => {
149+
const setup = await testRender(<AppHost bootstrap={createBootstrap("auto")} />, {
150+
width: 180,
151+
height: 24,
152+
});
153+
154+
try {
155+
await act(async () => {
156+
await setup.renderOnce();
157+
});
158+
159+
let frame = setup.captureCharFrame();
160+
expect((frame.match(/alpha\.ts/g) ?? []).length).toBe(1);
161+
162+
await act(async () => {
163+
await setup.mockInput.typeText("s");
164+
});
165+
await act(async () => {
166+
await setup.renderOnce();
167+
});
168+
169+
frame = setup.captureCharFrame();
170+
expect((frame.match(/alpha\.ts/g) ?? []).length).toBe(2);
171+
} finally {
172+
await act(async () => {
173+
setup.renderer.destroy();
174+
});
175+
}
176+
});
177+
111178
test("explicit split and stack modes override responsive auto switching", async () => {
112179
const forcedSplit = await captureFrameForBootstrap(createBootstrap("split"), 140);
113180
const forcedStack = await captureFrameForBootstrap(createBootstrap("stack"), 240);

src/ui/lib/appMenus.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export interface BuildAppMenusOptions {
1818
showHelp: boolean;
1919
showHunkHeaders: boolean;
2020
showLineNumbers: boolean;
21-
sidebarVisible: boolean;
21+
renderSidebar: boolean;
2222
toggleAgentNotes: () => void;
2323
toggleFocusArea: () => void;
2424
toggleHelp: () => void;
@@ -46,7 +46,7 @@ export function buildAppMenus({
4646
showHelp,
4747
showHunkHeaders,
4848
showLineNumbers,
49-
sidebarVisible,
49+
renderSidebar,
5050
toggleAgentNotes,
5151
toggleFocusArea,
5252
toggleHelp,
@@ -126,7 +126,7 @@ export function buildAppMenus({
126126
kind: "item",
127127
label: "Sidebar",
128128
hint: "s",
129-
checked: sidebarVisible,
129+
checked: renderSidebar,
130130
action: toggleSidebar,
131131
},
132132
{ kind: "separator" },

src/ui/lib/ui-lib.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ describe("ui helpers", () => {
136136
showHelp: false,
137137
showHunkHeaders: false,
138138
showLineNumbers: true,
139-
sidebarVisible: false,
139+
renderSidebar: false,
140140
toggleAgentNotes: () => {},
141141
toggleFocusArea: () => {},
142142
toggleHelp: () => {},

0 commit comments

Comments
 (0)