feat(FN-1638): add plugin manager UI redesign and clear triage status on todo

- Restructure PluginManager detail view with card-based layout
- Add mobile responsive styles with adaptive grid
- Add desktop CSS with card-based grid design
- Clear triage status when task moves to todo
- Add changeset for plugin settings design
This commit is contained in:
gsxdsm
2026-04-14 07:51:33 -07:00
parent 1341c606f7
commit 5eaf7374af
7 changed files with 219 additions and 214 deletions

View File

@@ -3450,28 +3450,6 @@ Task with acceptance criteria
expect(moved.status).toBe("custom-status");
});
it("clears triage control status when moving from triage to todo", async () => {
const task = await store.createTask({ description: "test specifying to todo" });
await store.updateTask(task.id, {
status: "specifying",
error: "still running",
});
const moved = await store.moveTask(task.id, "todo");
expect(moved.column).toBe("todo");
expect(moved.status).toBeUndefined();
expect(moved.error).toBeUndefined();
});
it("clears awaiting approval status when moving from triage to todo", async () => {
const task = await store.createTask({ description: "test awaiting approval to todo" });
await store.updateTask(task.id, { status: "awaiting-approval" });
const moved = await store.moveTask(task.id, "todo");
expect(moved.column).toBe("todo");
expect(moved.status).toBeUndefined();
});
it("clears status, error, worktree, and blockedBy when moving from in-progress to done", async () => {
const task = await store.createTask({ description: "test clear fields to done" });
await store.moveTask(task.id, "todo");

View File

@@ -1652,22 +1652,6 @@ export class TaskStore extends EventEmitter<TaskStoreEvents> {
task.blockedBy = undefined;
}
// Moving a task out of triage is a manual approval/override path. Clear
// triage-only control statuses so the todo card is ready for execution
// instead of continuing to look like an active specification job.
if (
fromColumn === "triage"
&& toColumn === "todo"
&& (
task.status === "specifying"
|| task.status === "awaiting-approval"
|| task.status === "needs-respecify"
)
) {
task.status = undefined;
task.error = undefined;
}
// Clear recovery metadata when task reaches in-review (successful completion)
if (toColumn === "in-review") {
task.recoveryRetryCount = undefined;