feat(FN-1073): add desktop CLI workflow and packaging support

- Add new `fn desktop` CLI command with argument handling and comprehensive command/bin tests
- Implement desktop build and hot-reload dev scripts and wire package scripts/dependencies for Electron workflows
- Add electron-builder configuration and desktop main-process/integration test coverage to stabilize packaging behavior
- Document desktop development and usage in README files and include a changeset for the published CLI package
This commit is contained in:
gsxdsm
2026-04-08 01:40:05 -07:00
parent 025b60164d
commit be19cb974c
19 changed files with 1006 additions and 50 deletions

View File

@@ -2,6 +2,7 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
const runTaskCreate = vi.fn();
const runTaskList = vi.fn();
const runDesktop = vi.fn();
const runTaskPlan = vi.fn();
const runTaskImportFromGitHub = vi.fn();
const runSettingsShow = vi.fn();
@@ -36,6 +37,10 @@ vi.mock("../commands/dashboard.js", () => ({
runDashboard: vi.fn(),
}));
vi.mock("../commands/desktop.js", () => ({
runDesktop,
}));
vi.mock("../commands/task.js", () => ({
runTaskCreate,
runTaskList,
@@ -272,6 +277,16 @@ describe("bin", () => {
expect(errorSpy).toHaveBeenCalledWith("Unknown subcommand: node wat");
});
it("routes desktop command flags", async () => {
await runBin(["desktop", "--dev", "--paused", "--interactive"]);
expect(runDesktop).toHaveBeenCalledWith({
paused: true,
dev: true,
interactive: true,
});
});
it("rejects duplicate --project flags", async () => {
await expect(runBin(["task", "list", "--project", "one", "-P", "two"]))
.rejects.toThrow("Duplicate --project flag. Specify a project only once.");