feat: Discard all, claude-style image pastes, large local drops, per-account / list
- Changes panel: **Discard all** beside Commit discards every non-conflicted file in one `discard`, after a dialog naming how many untracked files go. - Terminal: a `claude` pane gets dropped/pasted images as bare paths (shown as `[Image #n]`) and other files as `@` mentions (`claudePastes`); a local browser's copied `file://` paths and text-drag file lists paste by path. - `POST /api/run/drop-file`: a loopback browser outside server mode may drop up to 2 GB, streamed to disk; remote stays 20 MB. - cc-config skills/commands/plugins read the USER scope of the account the pane runs as (S3 member home by `cwd`), never another user's or the host's for a non-admin without an account; the run form passes its cwd to plugins.
This commit is contained in:
@@ -169,6 +169,22 @@ export function claudeMention(path: string): string {
|
||||
return /\s/.test(p) ? `@"${p}"` : `@${p}`;
|
||||
}
|
||||
|
||||
const IMAGE_PATH = /\.(png|jpe?g|gif|webp)$/i;
|
||||
|
||||
/** What a terminal pastes for files dropped or pasted on a `claude` pane, one
|
||||
* paste per entry, as a local terminal hands them over: the images as their
|
||||
* bare paths, each a paste of its own — the shape Claude Code turns into
|
||||
* `[Image #n]`, as it does a native drop — and every other file as an `@`
|
||||
* mention, together in one. A Windows path, or
|
||||
* one with a space, stays a mention — the bare path stayed plain text there
|
||||
* (see `claudeMention`). */
|
||||
export function claudePastes(paths: string[]): string[] {
|
||||
const bare = (p: string) => IMAGE_PATH.test(p) && p.startsWith("/") && !/\s/.test(p);
|
||||
const images = paths.filter(bare);
|
||||
const others = paths.filter((p) => !bare(p)).map(claudeMention);
|
||||
return [...images, others.join(" ")].filter(Boolean);
|
||||
}
|
||||
|
||||
export const SKILL_MIME = "application/x-agenthub-skill";
|
||||
// A skill's name as Claude Code types it: `name` or `plugin:name`.
|
||||
const SKILL_RE = /^[\w.-]+(?::[\w.-]+)?$/;
|
||||
|
||||
Reference in New Issue
Block a user