Explorateur : dossiers Favoris et Personnel, cartouche oidc/local
- Racine : entrées « Favoris » (étoile) et « Personnel » en tête, ni sélectionnables ni déplaçables ; fil d'Ariane et sélecteur « Déplacer vers… » affichent Personnel/Favoris à la place de .perso/.favoris. - Favoris : glisser un schéma sur Favoris (ou l'étoile) crée un lien, sans déplacer l'original ; ouvrir un favori ouvre l'original sans quitter Favoris ; Supprimer y retire seulement le lien ; emplacement de l'original affiché ; favori cassé barré. Plus de favoris sur les dossiers. Le filtre « Favoris » de la ligne de tags est remplacé par le dossier. - Barre du haut : cartouche encadré « OIDC » + e-mail, ou « LOCAL » + nom du compte, avant le bouton de déconnexion. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0174sFqehj4uGqJHQZvWy1gn
This commit is contained in:
1 parent
824871bd24
commit
ea06fdaddf
7 files changed
+259
-72
No files matched your search
+18
-1
@@ -8,6 +8,12 @@ export interface Entry {
|
||||
modTime: string;
|
||||
tags?: string[];
|
||||
favorite?: boolean;
|
||||
/** 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). */
|
||||
link?: string;
|
||||
/** Favori dont l'original a disparu (chemin .favoris/<lien>, à retirer). */
|
||||
broken?: boolean;
|
||||
}
|
||||
|
||||
export interface TagCount {
|
||||
@@ -74,11 +80,12 @@ export interface PublicScene {
|
||||
scene: { elements?: unknown[]; appState?: Record<string, unknown>; files?: Record<string, unknown> };
|
||||
}
|
||||
|
||||
/** Session courante (GET /api/me) ; logout présent en mode OIDC. */
|
||||
/** Session courante (GET /api/me) ; logout présent en mode OIDC, id = dossier de l'utilisateur. */
|
||||
export interface Me {
|
||||
mode: "none" | "local" | "oidc";
|
||||
user?: { sub: string; name: string; email?: string };
|
||||
logout?: string;
|
||||
id: string;
|
||||
}
|
||||
|
||||
export class ApiError extends Error {
|
||||
@@ -247,6 +254,16 @@ export const api = {
|
||||
export const dirname = (p: string) => (p.includes("/") ? p.slice(0, p.lastIndexOf("/")) : "");
|
||||
export const basename = (p: string) => p.slice(p.lastIndexOf("/") + 1);
|
||||
export const join = (dir: string, name: string) => (dir ? `${dir}/${name}` : name);
|
||||
|
||||
// Dossiers propres à l'utilisateur connecté (voir internal/storage/spaces.go).
|
||||
export const PERSO = ".perso";
|
||||
export const FAVORIS = ".favoris";
|
||||
const SPECIAL_LABELS: Record<string, string> = { [PERSO]: "Personnel", [FAVORIS]: "Favoris" };
|
||||
/** Libellé d'un composant de chemin (".perso" → "Personnel"). */
|
||||
export const label = (part: string) => SPECIAL_LABELS[part] ?? part;
|
||||
/** Chemin affiché : "Personnel/projets" pour ".perso/projets". */
|
||||
export const displayPath = (p: string) => p.split("/").map(label).join("/");
|
||||
export const inFavoris = (p: string) => p === FAVORIS || p.startsWith(FAVORIS + "/");
|
||||
export const EXT = ".excalidraw";
|
||||
export const withExt = (name: string) => (name.toLowerCase().endsWith(EXT) ? name : name + EXT);
|
||||
export const stripExt = (name: string) =>
|
||||
|
||||
Reference in new issue
Block a user