chore: v2.8.12 — clone queue and progress, session defaults, chat agents, drops as @ mentions

Whole tree from parallel sessions, plus the version bump:
- Clone: a queue with live progress (Add workspace and extra folders),
  clones run under nice/ionice so the machine stays responsive.
- Settings → AI tools → Session defaults: a new session's default
  permission mode / bypass per account.
- Chat lists the background subagents that have not reported back yet.
- A file pasted or dropped into a claude pane goes in as an @ mention.
- Changes panel: say why amend/undo is refused on a pushed commit.
- openapi.yaml regenerated (Artifacts, Host, resumeById).
This commit is contained in:
2026-10-19 17:19:41 +07:00
parent 1a6b550e89
commit 49f87c4da3
61 changed files with 2824 additions and 114 deletions
+31
View File
@@ -3576,11 +3576,22 @@ export const api = {
title?: string;
tool?: LaneTool;
credentials?: { username: string; password: string; remember?: boolean };
/** Blobless clone (`--filter=blob:none`): file contents fetched on checkout. */
partial?: boolean;
/** This clone's name for {@link lanes.cloneProgress}. */
progressToken?: string;
}) =>
request<{ lane: Lane; created: boolean; path: string }>("/lanes/clone", {
method: "POST",
body: JSON.stringify(body),
}),
/**
* GET /api/lanes/clone/progress/:token — a clone's place in the
* machine-wide queue, then git's own progress; 404 until the POST
* carrying `progressToken` arrives, and a minute after it ends.
*/
cloneProgress: (token: string) =>
request<CloneProgressView>(`/lanes/clone/progress/${encodeURIComponent(token)}`),
/**
* GET /api/lanes/pipelines — every pipeline template the server can render
* a lane against, built-in plus any `DASHBOARD_PIPELINES_DIR` override.
@@ -3977,6 +3988,9 @@ export const api = {
url: string;
name?: string;
credentials?: { username: string; password: string; remember?: boolean };
/** Blobless clone, like {@link lanes.clone}'s `partial`. */
partial?: boolean;
progressToken?: string;
}
) =>
request<LaneSourcesView & { path: string }>(`/lanes/${id}/sources/clone`, {
@@ -5290,6 +5304,23 @@ export interface LaneSource {
}
/** Response shape of GET /api/lanes/:id/sources (and of every sources write). */
/** `GET /api/lanes/clone/progress/:token` — see server/lib/clone-queue.js. */
export interface CloneProgressView {
state: "queued" | "running" | "done" | "failed";
/** 1-based place among the waiting clones while `queued`. */
position: number | null;
/** Clones running / waiting machine-wide, and how many may run at once. */
running: number;
waiting: number;
limit: number;
phase: "remote" | "receiving" | "resolving" | "checkout" | "other" | null;
/** git's own words for the phase (shown for `other`). */
label: string | null;
percent: number | null;
/** e.g. "450/1000, 120.50 MiB | 5.20 MiB/s". */
detail: string | null;
}
export interface LaneSourcesView {
instructions: string;
/** The workspace's tool can take folders and instructions (claude, codex). */