feat(FN-3753): unify agent action gating classifications and add even cards

The merge adds the `fusion-plugin-even-cards` workspace plugin with board card endpoints and auth support, refactors agent action gating classifications into a unified `gating-classifications.ts` module, refreshes review state on manual triggers, repoints roadmap type imports to the plugin package,

Fusion-Task-Id: FN-3753
This commit is contained in:
Fusion
2026-05-08 13:46:28 -07:00
committed by gsxdsm
parent fc34a842ac
commit b43ec7920b
2 changed files with 49 additions and 1 deletions

View File

@@ -2999,10 +2999,12 @@
.gm-pull-split-toggle {
flex: 0 0 auto;
width: auto;
min-width: var(--space-xl);
border-top-left-radius: 0;
border-bottom-left-radius: 0;
border-left: 0;
padding-inline: var(--space-sm);
padding-inline: var(--space-xs);
}
.gm-pull-menu {
@@ -3648,6 +3650,11 @@
flex: 1 1 100%;
}
.gm-pull-split-toggle {
min-width: 36px;
min-height: 36px;
}
.gm-pull-menu {
left: 0;
right: auto;

View File

@@ -1395,6 +1395,47 @@ describe("GitManagerModal", () => {
});
});
it("FN-3753: pull split toggle is narrower than the main Pull button", async () => {
render(
<GitManagerModal isOpen={true} onClose={vi.fn()} tasks={mockTasks} addToast={mockAddToast} />
);
fireEvent.click(screen.getByRole("tab", { name: /remotes/i }));
const syncCard = await screen.findByTestId("remote-sync-card");
const pullMainButton = within(syncCard).getByRole("button", { name: /^pull$/i });
const pullToggleButton = within(syncCard).getByRole("button", { name: /pull options/i });
expect(pullToggleButton).toHaveClass("gm-pull-split-toggle");
expect(pullToggleButton).toHaveClass("btn-icon");
vi.spyOn(pullMainButton, "getBoundingClientRect").mockReturnValue({
x: 0,
y: 0,
width: 96,
height: 36,
top: 0,
right: 96,
bottom: 36,
left: 0,
toJSON: () => ({}),
});
vi.spyOn(pullToggleButton, "getBoundingClientRect").mockReturnValue({
x: 96,
y: 0,
width: 36,
height: 36,
top: 0,
right: 132,
bottom: 36,
left: 96,
toJSON: () => ({}),
});
expect(pullToggleButton.getBoundingClientRect().width).toBeLessThan(
pullMainButton.getBoundingClientRect().width
);
});
it("closes pull options menu on outside click and Escape", async () => {
const user = userEvent.setup();
render(