Explorateur : icône personnalisable par dossier
Menu « … » d'un dossier > « Icône… » : grille de 27 icônes Tabler
(projet, serveurs, stockage, réseau, sécurité, documents, archives…)
plus « Par défaut ». L'icône est enregistrée dans .meta.json (champ
icon), partagée par tous, et suit renommages et déplacements.
Nouvelle route POST /api/meta/icon {"paths":[...],"icon":"server"}.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011bGUm1KLMvT6YPbJxZgwkj
This commit is contained in:
1 parent
bddbc27a1d
commit
8c29eb35e7
11 files changed
+489
-6
No files matched your search
@@ -8,6 +8,8 @@ export interface Entry {
|
||||
modTime: string;
|
||||
tags?: string[];
|
||||
favorite?: boolean;
|
||||
/** Dossier : icône choisie (voir folderIcons.tsx). */
|
||||
icon?: string;
|
||||
/** Entrée virtuelle de la racine : "favoris" ou "perso" (espace personnel). */
|
||||
special?: "favoris" | "perso";
|
||||
/** Dans le dossier Favoris : nom du lien (le chemin est celui de l'original). */
|
||||
@@ -151,6 +153,11 @@ export const api = {
|
||||
await request("/api/meta/tags", json({ paths, add, remove }));
|
||||
},
|
||||
|
||||
/** icon = "" : dossier classique. */
|
||||
setIcon: async (paths: string[], icon: string): Promise<void> => {
|
||||
await request("/api/meta/icon", json({ paths, icon }));
|
||||
},
|
||||
|
||||
read: async (path: string): Promise<{ text: string; etag: string }> => {
|
||||
const res = await request(`/api/file?path=${q(path)}`);
|
||||
return { text: await res.text(), etag: res.headers.get("ETag") ?? "" };
|
||||
|
||||
Reference in new issue
Block a user