fix(app-tauri,frontend): la fenêtre Tâches planifiées s'affiche en mode détaché — #359 (QA verte)

cause: le panneau Tâches planifiées n'avait aucune variante dans l'enum ViewPanel, open_view_window("scheduledTasks") rejetait INVALID et detachPanel ne touchait le placement qu'en cas de succès — même famille que #299, aucun effet visible ni message.
fix: variante ViewPanel::ScheduledTasks avec contrat stable label view-scheduledTasks / url index.html?panel=scheduledTasks / titre « Scheduled tasks », identité persistée des fenêtres view-scheduledTasks acceptée à la restauration #50; frontend ViewWindow rend le ScheduledTasksPanel du projet focalisé et ProjectsView expose le placement Fenêtre détachée via WindowGateway; retrait de la variante Projects devenue morte après #315 — le panneau Projects (coquille de la fenêtre principale) n'est plus détachable, refus INVALID gardé par tests.
QA verte: view_window_tests dont scheduled_tasks_view_window_contract_is_stable et projects_panel_is_not_detachable, persisted_identity_accepts_scheduled_tasks_view_labels, frontend ViewWindow/window gateway/ProjectsView.detach verts.
This commit is contained in:
2026-09-15 09:20:28 +02:00
parent 7de1d0afbe
commit 31ca03c29b
5 changed files with 103 additions and 4 deletions

View File

@ -92,6 +92,17 @@ describe("ProjectsView detach to OS window (#23)", () => {
expect(screen.queryByRole("dialog", { name: "MCP" })).toBeNull();
});
it("detaches scheduled tasks through WindowGateway", async () => {
const { windowGateway } = await renderWithProject();
const openViewWindow = vi.spyOn(windowGateway, "openViewWindow");
pickPlacement("Tâches planifiées", "Fenêtre détachée");
await waitFor(() => expect(openViewWindow).toHaveBeenCalledWith("scheduledTasks"));
expect(windowGateway.open.has("scheduledTasks")).toBe(true);
expect(screen.queryByRole("dialog", { name: "Tâches planifiées" })).toBeNull();
});
it("detaches project settings through the same retry-safe window path", async () => {
const { windowGateway } = await renderWithProject();