feat(artifacts): last updated time on skills and files; each installer's copy marked
A row said nothing about when its content last changed, and the install list could not tell who still runs an old version. `artifacts.version_at` (new column, existing rows from `updated_at`) is stamped only when a snapshot is replaced — a rename or share toggle leaves it — and served as `versionAt`: skill and file rows read "Updated 3h ago", the detail sheet "Last updated". `GET /api/artifacts/:id/installs` gives each skill install a `state` — latest / outdated / removed / unknown — from its Claude skill copies' hash against the newest snapshot, shown as a badge.
This commit is contained in:
+11
-1
@@ -4720,11 +4720,21 @@ export interface Artifact {
|
||||
suggestedForMe?: boolean;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
/** When its content last changed (a new snapshot); a page or plugin: when it was added. */
|
||||
versionAt: string;
|
||||
}
|
||||
|
||||
/** GET /api/artifacts/:id/installs. `paths` only for your own installs (or an admin). */
|
||||
export interface ArtifactInstalls {
|
||||
items: { user: string | null; mine: boolean; at: string; replaced: boolean; paths?: string[] }[];
|
||||
items: {
|
||||
user: string | null;
|
||||
mine: boolean;
|
||||
at: string;
|
||||
replaced: boolean;
|
||||
/** Skills: where that install's copy stands against the newest version now. */
|
||||
state?: "latest" | "outdated" | "removed" | "unknown";
|
||||
paths?: string[];
|
||||
}[];
|
||||
/** Installs counted before the list was kept. */
|
||||
unrecorded: number;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user