# 🔍 Guide Recherche, PDF, Excel & Excalidraw ObsiGate va au-delĂ  de la simple lecture : recherche puissante, rendu des documents riches (PDF, diagrammes) et indexation de leur contenu pour que tout soit retrouvable. > **Public :** tous les utilisateurs > **Fiches techniques :** [`features/semantic-search.md`](../features/semantic-search.md) · > [`features/pdf.md`](../features/pdf.md) · [`features/excalidraw.md`](../features/excalidraw.md) --- ## 1. Recherche plein texte (TF-IDF) Le moteur d'ObsiGate s'appuie sur un **index inversĂ©** et un scoring **TF-IDF** avec : - **Boost titre** — une correspondance dans le titre pĂšse 3× plus. - **Normalisation des accents** — `resume` trouve `rĂ©sumĂ©`, `elephant` trouve `Ă©lĂ©phant`. - **Stemming français** — les variantes des mots sont rapprochĂ©es. - **Snippets surlignĂ©s** — les termes trouvĂ©s sont mis en `` dans l'extrait. - **Facettes** — compteurs par vault, par tag et par extension sur les rĂ©sultats, panneau repliable d'un clic (chevron, Ă©tat mĂ©morisĂ©). - **Pagination** — 50 rĂ©sultats par page. - **Tri** — par pertinence (TF-IDF) ou par date de modification. - **Chips de filtres** — les filtres actifs apparaissent sous forme de puces retirables. - **Historique** — les 50 derniĂšres recherches sont conservĂ©es en `localStorage`. La recherche s'effectue **sans I/O disque** : le contenu est dĂ©jĂ  en mĂ©moire. --- ## 2. Syntaxe de requĂȘte | OpĂ©rateur | Description | Exemple | |---|---|---| | `tag:` | Filtre par tag | `tag:recette docker` | | `#` | Raccourci de tag | `#linux serveur` | | `vault:` | Filtre par vault | `vault:IT kubernetes` | | `title:` | Filtre par titre | `title:pizza` | | `path:` | Filtre par chemin | `path:recettes/soupes` | | `ext:` | Filtre par type de fichier | `ext:md kubernetes` | | `"phrase exacte"` | Recherche d'une phrase | `tag:"multi mots"` | Les opĂ©rateurs sont **combinables** : ```text tag:linux vault:IT ext:md serveur web ``` Cette requĂȘte cherche « serveur web » dans les fichiers Markdown de la vault `IT` portant le tag `linux`. ### Filtres par extension | Extension | Contenu | |---|---| | `ext:md` | Notes Markdown | | `ext:py`, `ext:sh`, `ext:js` | Scripts et code | | `ext:pdf` | Documents PDF (texte extrait) | | `ext:excalidraw` | Diagrammes Excalidraw (texte extrait) | --- ## 3. AutocomplĂ©tion et suggestions - **`/api/suggest`** — suggĂšre des titres de fichiers. - **`/api/tags/suggest`** — suggĂšre des tags. - Navigation clavier : `↑` / `↓` puis `EntrĂ©e` ; `Échap` ferme les suggestions. ### Raccourcis de recherche | Raccourci | Action | |---|---| | `Ctrl + K` / `Cmd + K` | Focaliser la barre de recherche | | `/` | Focaliser la recherche (hors champ texte) | | `↑` / `↓` | Naviguer dans les suggestions | | `EntrĂ©e` | SĂ©lectionner la suggestion active ou lancer la recherche | | `Échap` | Fermer les suggestions / quitter la recherche | Recherches sauvegardĂ©es et signets sont disponibles via l'API (`/api/saved-searches`, `/api/bookmarks`). --- ## 4. Recherche sĂ©mantique (optionnelle) Au classement TF-IDF peut s'ajouter un classement **par embeddings**, fusionnĂ© via la mĂ©thode **RRF** (Reciprocal Rank Fusion). Activation : touche `~` (ou `Alt + S`) dans la recherche. Deux modes : 1. **Sans dĂ©pendance** — un *embedder* par hachage fournit une base utilisable immĂ©diatement. 2. **Embeddings rĂ©els** — installez `backend/requirements-semantic.txt` et/ou renseignez les variables `OBSIGATE_EMBEDDING_*` pour utiliser `all-MiniLM-L6-v2`. DĂ©tails et configuration : [`features/semantic-search.md`](../features/semantic-search.md). --- ## 5. Support PDF ### Lecture Les fichiers PDF de vos vaults s'affichent **en ligne** dans le navigateur via le visualiseur PDF natif (iframe + ``). Le fichier est **streamĂ©** en HTTP Range (`206 Partial Content`) : les gros PDF se chargent progressivement. ### Recherche Le texte est **extrait Ă  l'indexation** (`pypdf` / `pymupdf`), donc le contenu des PDF est recherchable via la recherche plein texte. Utilisez `ext:pdf` pour limiter les rĂ©sultats aux PDF. ### MĂ©tadonnĂ©es `GET /api/file/{vault}/pdf/info` renvoie les mĂ©tadonnĂ©es (pages, titre, auteur) **sans transfĂ©rer** le document. ```bash curl "http://localhost:2020/api/file/Recettes/pdf/info?path=menu.pdf" ``` ### Limites - **Pas d'OCR** : les PDF scannĂ©s (images) ne sont pas recherchables. - Pas d'annotation ni d'Ă©dition du PDF lui-mĂȘme. --- ## 6. Tableurs Excel (XLSX) ### CrĂ©er un classeur Pour dĂ©marrer un tableur, clic droit sur un vault ou un dossier → **Nouveau fichier** (ou **Nouveau fichier ici**), choisissez le type **Excel (.xlsx)** et saisissez un nom : le classeur est créé avec une feuille **Feuille1** et s'ouvre directement dans l'Ă©diteur, prĂȘt Ă  ĂȘtre saisi. La mĂȘme liste de types est accessible depuis la palette de commandes (`Ctrl+Alt+Space`). ### Affichage et Ă©dition Un fichier `.xlsx` s'ouvre dans une visionneuse dĂ©diĂ©e : un tableau par feuille, des onglets pour naviguer entre elles (toujours visibles, mĂȘme Ă  une seule feuille), les en-tĂȘtes A1/B1 et les numĂ©ros de ligne. La barre de commandes reprend l'ordre de Google Sheets (recherche, annuler/rĂ©tablir, impression, peinture, zoom, formats de nombre, police, couleurs, bordures, fusion, alignements, retour ligne, rotation, options) et le bouton **⋼** regroupe figeage, tri, filtre, dimensions, lien, commentaire ; les menus **Mise en forme** / **Structure** restent disponibles. Elle est **Ă©pinglĂ©e en haut** de la page et l'Ă©diteur occupe toute la largeur du contenu, pour que les commandes restent atteignables pendant le dĂ©filement d'un grand tableau. **Mise en page mobile** — sur un Ă©cran Ă©troit (≀ 768 px), la barre de menus et le ruban de formatage sont **repliĂ©s par dĂ©faut** afin que la grille occupe toute la hauteur disponible : seuls les onglets de feuilles, **Enregistrer** et la **barre de formule (fx)** restent affichĂ©s. Le bouton **☰** (Ă  gauche des onglets) dĂ©plie/replie l'ensemble ; les commandes tactiles font au moins 44 px, les onglets dĂ©filent horizontalement et les champs de saisie restent en 16 px pour Ă©viter le zoom automatique d'iOS. Les largeurs de colonnes et hauteurs de lignes s'ajustent en **glissant le bord des en-tĂȘtes** (souris et tactile) : en plaçant le pointeur sur le bord d'un en-tĂȘte de colonne (`A`, `B`, `C`
) ou de ligne (`1`, `2`, `3`
), le curseur change pour indiquer l'ajustement. ### SĂ©lectionner et saisir Comme dans Google Sheets et Excel, une cellule est **sĂ©lectionnĂ©e** ou **en cours de saisie** — jamais les deux Ă  la fois. - **SĂ©lectionner** — un clic ou les flĂšches : la cellule s'entoure, sans curseur clignotant. - **Saisir** — un **double-clic** (le curseur se place sous le pointeur, la saisie se fait en place), la **premiĂšre frappe** (qui *remplace* le contenu au lieu de s'y ajouter), ou `F2`. - **Valider et descendre** — `EntrĂ©e` pendant la saisie enregistre et place le focus **sur la cellule du dessous**. `EntrĂ©e` sur une cellule simplement sĂ©lectionnĂ©e la bascule en saisie. `Tab` fait de mĂȘme vers la droite. Les **flĂšches** valident aussi et dĂ©placent la sĂ©lection. - **Quitter la saisie** — `Échap` restaure la valeur d'origine ; un clic ailleurs conserve ce qui a Ă©tĂ© tapĂ©. - `Alt`+flĂšche insĂšre un saut de ligne **dans** la cellule. **SĂ©lection multiple** — `Maj`+clic ou `Maj`+flĂšches Ă©tendent la plage depuis la cellule d'origine ; glisser Ă  la souris fait de mĂȘme. Un **clic simple** rĂ©duit toujours la sĂ©lection Ă  la cellule cliquĂ©e. La plage est **contourĂ©e** comme dans Excel, et les en-tĂȘtes couverts (lettres et numĂ©ros de ligne) sont mis en Ă©vidence. Depuis les **marges**, un clic sur un numĂ©ro de ligne ou une lettre de colonne sĂ©lectionne la **ligne ou la colonne entiĂšre**, et glisser — ou `Maj`+clic — Ă©tend Ă  **plusieurs lignes ou colonnes** (`A1:Z5`). Une sĂ©lection de plusieurs cellules affiche une mini-barre (lien, commentaire, rĂ©initialiser le filtre, somme). **Enregistrer**, placĂ© Ă  droite des onglets de feuilles, envoie les cellules modifiĂ©es Ă  `PUT /api/file/{vault}/xlsx/save` : une sauvegarde par feuille, avec **backup automatique** du fichier avant Ă©criture, et une Ă©criture **atomique** (le classeur n'est jamais laissĂ© Ă  moitiĂ© Ă©crit). Le bouton **« + »** Ă  cĂŽtĂ© des onglets ajoute une nouvelle feuille. Une pastille **« Lecture seule »** rappelle la seule limite de la vue : les formats `.xls`/`.ods`. ObsiGate calcule par ailleurs les formules courantes Ă  l'Ă©cran (arithmĂ©tique, `SOMME`, `MOYENNE`, `SI`
) ; les fonctions non prises en charge affichent la formule telle qu'enregistrĂ©e, Excel la recalcule Ă  l'ouverture. Le tableau suit le **thĂšme de l'application** : fond, en-tĂȘtes, bordures et lignes alternĂ©es sont dĂ©rivĂ©s du thĂšme actif (tous les thĂšmes, y compris contrastĂ© Ă©levĂ© et sĂ©pia). La grille montre toujours les colonnes **A Ă  Z** et **1000 lignes**, comme un tableur : les lignes et colonnes inutilisĂ©es restent affichĂ©es et leurs cellules vides sont **Ă©ditables** comme les autres. Seule la feuille affichĂ©e est Ă©tendue, Ă  son ouverture. ### Avertissement avant enregistrement Certains classeurs contiennent des Ă©lĂ©ments qu'ObsiGate ne sait pas réécrire : **valeurs calculĂ©es** mises en cache par Excel, segments (slicers), chronologies, contrĂŽles de formulaire, connexions/requĂȘtes, XML personnalisĂ©, signature numĂ©rique, commentaires enrichis, macros. L'ouverture affiche alors un bandeau qui les liste, et la premiĂšre sauvegarde demande confirmation dans une fenĂȘtre intĂ©grĂ©e au thĂšme de l'application. Si vous refusez, rien n'est Ă©crit. > Les **graphiques, images et tableaux croisĂ©s** sont, eux, bien conservĂ©s. Si le classeur est modifiĂ© ailleurs entre-temps (autre poste, Excel, synchronisation
), ObsiGate n'interrompt pas votre travail : un bandeau vous propose de **rĂ©essayer**. Le bouton **RĂ©essayer** relit d'abord le fichier pour rĂ©cupĂ©rer la version courante, puis rejoue l'enregistrement — vos modifications restent en place pendant tout ce temps. ### Formules Par sĂ©curitĂ©, une valeur saisie commençant par `=` ou `@` est **stockĂ©e comme texte** (une formule injectĂ©e s'exĂ©cuterait Ă  l'ouverture du fichier dans Excel). Le bouton `f(x)` de la barre d'outils active les vraies formules pour la session en cours. ```bash curl -X PUT "http://localhost:2020/api/file/Recettes/xlsx/save?path=budget.xlsx" -H "Content-Type: application/json" -d '{"sheet": "Budget", "cells": {"B1": "250"}, "allow_formula": false, "force": false}' ``` - `allow_formula` : `true` pour Ă©crire une vraie formule (`=B1*2`). - `force` : `true` pour enregistrer malgrĂ© les Ă©lĂ©ments non prĂ©servĂ©s (sinon l'API rĂ©pond **409** `xlsx_lossy_content`). - `if_match` (facultatif) : la **version** du fichier attendue, telle que la lecture la renvoie (`xlsx_revision` ou `revision`). Si le fichier a changĂ© depuis, l'Ă©criture est refusĂ©e (**409** `conflict`, `details.reason = "stale_revision"`) au lieu d'Ă©craser le travail de l'autre Ă©crivain ; relisez le fichier puis renvoyez la nouvelle version. Les trois routes d'Ă©criture (`xlsx/save`, `xlsx/structure`, `csv/save`) acceptent l'en-tĂȘte `If-Match` ou le champ `if_match` et renvoient la version Ă  jour dans `revision`. ### Feuilles volumineuses et lecture par fenĂȘtres Le rendu est plafonnĂ© Ă  **500 lignes × 40 colonnes** par feuille. Quand une feuille dĂ©passe ce plafond, un bandeau **« Feuille tronquĂ©e »** l'annonce explicitement (par exemple « 500 lignes affichĂ©es sur 520 ») au lieu de prĂ©senter une table courte comme complĂšte — le classeur, lui, n'est jamais modifiĂ©. La ligne d'en-tĂȘtes de colonnes reste visible pendant le dĂ©filement vertical. CĂŽtĂ© API, `GET /api/file/{vault}/xlsx/sheet` sert une feuille **par fenĂȘtres de lignes**, y compris au-delĂ  du plafond d'affichage — les coordonnĂ©es A1 renvoyĂ©es sont celles de la feuille rĂ©elle : ```bash curl "http://localhost:2020/api/file/Recettes/xlsx/sheet?path=budget.xlsx&sheet=Budget&offset=500&limit=200" ``` - `offset` : premiĂšre ligne renvoyĂ©e (0-based) ; `limit` : nombre de lignes (1 Ă  1 000 par requĂȘte). - La rĂ©ponse porte `total_rows`, `truncated` et `has_more` pour paginer. - Erreurs : **404** si la feuille n'existe pas, **415** si le fichier n'est ni un `.xlsx` ni un `.xlsm`. ### Fonctions avancĂ©es **Barre de formule, zone Nom et navigation clavier** — au-dessus du tableau, la **zone Nom** affiche l'adresse de la cellule active (`B12`) ou de la plage sĂ©lectionnĂ©e (`A1:B3`) et elle est **Ă©ditable** (« Atteindre ») : saisissez une rĂ©fĂ©rence puis `EntrĂ©e` pour y aller (`B12`, `A1:B3`, `$A$1`, ou `Feuille2!A1` pour changer d'onglet) ; une rĂ©fĂ©rence inconnue est refusĂ©e avec un message et l'adresse prĂ©cĂ©dente est restaurĂ©e. La barre de formule reflĂšte la cellule active et propose les **noms de fonctions** courants pendant la saisie. `Tab`/`Maj+Tab` et les flĂšches circulent entre les cellules, `Maj+flĂšches` Ă©tend la sĂ©lection, `EntrĂ©e` valide, `Maj+EntrĂ©e` insĂšre un saut de ligne **dans** la cellule, `F2` ouvre la cellule en Ă©dition, `Suppr` vide la sĂ©lection, `Échap` restaure la valeur d'origine ; `Origine`/`Fin` vont au bord de la ligne, `Ctrl+Origine`/`Ctrl+Fin` aux coins de la feuille affichĂ©e, `PgPrĂ©c`/`PgSuiv` font dĂ©filer d'un Ă©cran, `Ctrl+flĂšches` saute au bout de la plage de donnĂ©es, `Ctrl+A` sĂ©lectionne toute la feuille affichĂ©e et `Ctrl+S` enregistre. Tant que la cellule n'est pas en cours d'Ă©dition, `Suppr` efface la sĂ©lection plutĂŽt qu'un caractĂšre. **Presse-papiers de plage** — copier, couper et coller un **bloc** de cellules (`Ctrl+C`, `Ctrl+X`, `Ctrl+V`, ou les entrĂ©es correspondantes du menu contextuel) : coller un bloc copiĂ© ici **ou depuis Excel** remplit la plage Ă  partir de la cellule active et la laisse sĂ©lectionnĂ©e. Le collage est du **texte** (formules et valeurs recopiĂ©es telles quelles) et reste **annulable** ; « couper » efface la source aprĂšs le collage (un collage sur place ne l'efface pas). Un bloc plus large que la grille affichĂ©e est tronquĂ©, avec un message. **Annuler / rĂ©tablir** — `Ctrl+Z` (ou le bouton **Annuler** du ruban) revient sur les derniĂšres Ă©ditions de cellules, `Ctrl+Maj+Z` / `Ctrl+Y` les rĂ©tablit. **SĂ©lection et menu contextuel** — cliquer une cellule l'active, **glisser** ou `Maj+clic` sĂ©lectionne une plage (affichĂ©e dans la zone Nom, ex. `A1:B3`), et cliquer un **en-tĂȘte** sĂ©lectionne toute la ligne ou colonne. Un **clic droit** (ou un **appui long** sur mobile) ouvre un menu : copier, couper, coller, insĂ©rer/supprimer une ligne ou une colonne, trier A→Z / Z→A, effacer le contenu. Chaque entrĂ©e porte une **icĂŽne** ; le menu se referme dĂšs qu'il perd le focus (clic ailleurs, `Échap`) et se parcourt au clavier (`↑`/`↓`). **Tri, filtre, recherche, export** — le tri (ascendant / descendant) s'applique depuis le menu contextuel et n'affecte que l'affichage ; les lignes se filtrent et la recherche (`Ctrl+F` du panneau) parcourt **toutes les feuilles** : le compteur indique le nombre de feuilles concernĂ©es et passer sur une correspondance **active l'onglet** qui la contient. La sortie est rassemblĂ©e dans un seul menu **Fichier**, placĂ© Ă  droite des onglets de feuilles, juste avant le bouton **Enregistrer**. Il propose cinq actions, toujours sur le **contenu affichĂ©** (et jamais sur les valeurs calculĂ©es en cache) : - **TĂ©lĂ©charger le fichier** — le classeur d'origine, tel qu'il est sur le disque ; - **CSV** — exporte la **sĂ©lection** quand une plage de plusieurs cellules est active (le nom du fichier reprend la plage, ex. `Fruits-A1B2.csv`), sinon la feuille entiĂšre ; - **Markdown** et **HTML** — tableau markdown ou document HTML autonome, mĂȘmes rĂšgles de sĂ©lection ; - **Imprimer** — imprime la feuille ou la sĂ©lection seule, sans le ruban ni les panneaux de l'application. Le menu se ferme au clic extĂ©rieur, Ă  la perte de focus, avec `Échap` ou au dĂ©filement, et se parcourt aux flĂšches. Rien de tout cela ne modifie le classeur. **Structure** — le menu **Structure** de la barre d'outils ajoute, renomme, duplique ou supprime une feuille, et insĂšre/supprime des lignes ou colonnes autour de la cellule active (`PUT 
/xlsx/structure`, backup automatique et confirmation, comme pour l'Ă©dition des cellules). **Mise en forme** — le bouton **Mise en forme** ouvre un menu qui agit sur la **sĂ©lection courante** (une cellule ou une plage), repris aussi dans la barre d'outils (gras, italique, barrĂ©, soulignĂ©, taille, couleurs, bordures, alignements, retour ligne, rotation) : - **caractĂšre** — gras, italique, soulignĂ©, barrĂ©, taille de police, effacer la mise en forme ; - **alignement** — gauche, centrĂ©, droite, justifiĂ© (+ vertical, retour Ă  la ligne, rotation) ; - **bordures** — toutes, extĂ©rieures, aucune ; - **couleurs** — couleur de police et couleur de fond, via un **panneau façon Google Sheets** : *RĂ©initialiser*, une palette de 80 pastilles (une ligne de gris du noir au blanc, puis huit teintes du clair au foncĂ©), une section **Standard** de huit couleurs prĂ©dĂ©finies et une section **PersonnalisĂ©**. Un clic sur une pastille referme le panneau et applique la couleur Ă  la cellule ou Ă  la plage sĂ©lectionnĂ©e. Le bouton **+** ouvre le sĂ©lecteur du systĂšme pour une teinte libre. « Mise en forme conditionnelle » et « Couleurs en alternance » sont annoncĂ©es mais pas encore disponibles ; - **format de nombre** — gĂ©nĂ©ral, nombre, pourcentage, devise, date, texte ; - **structure** — fusionner / dĂ©fusionner les cellules, figer / libĂ©rer les volets, largeur de colonne, hauteur de ligne (fusionner exige une vraie plage). L'Ă©criture passe par `PUT 
/xlsx/style`, avec les mĂȘmes garanties que l'Ă©dition des cellules : backup automatique, Ă©criture atomique, confirmation si l'opĂ©ration dĂ©truirait des Ă©lĂ©ments non prĂ©servables (graphiques, valeurs calculĂ©es en cache
) et **dĂ©tection d'un Ă©crivain externe** (`If-Match` → message « RĂ©essayer »). Un `.csv` ne portant pas de mise en forme, le bouton n'y est pas proposĂ© (il est Ă©galement absent d'une grille en lecture seule). La lecture restitue par ailleurs les couleurs, polices, cellules fusionnĂ©es et volets figĂ©s du fichier ; l'ancrage de la zone figĂ©e est conservĂ© au dĂ©filement. Les **commentaires** se lisent (pastille) et s'Ă©ditent (mini-barre ou menu ⋼) ; les liens s'insĂšrent comme formules `=LIEN(url;libellĂ©)` (ouvr. `Ctrl+clic`). Restent hors pĂ©rimĂštre : validation de donnĂ©es, mise en forme conditionnelle, graphiques et tableaux croisĂ©s dynamiques. **Formats de fichiers** — `.xlsm` s'Ă©dite comme un `.xlsx` et ses **macros sont prĂ©servĂ©es** Ă  l'enregistrement (y compris le chargement des lignes au-delĂ  du plafond) ; `.xls` et `.ods` s'affichent en **lecture seule** ; un `.csv` s'ouvre dans la mĂȘme grille et se réécrit conformĂ©ment Ă  la RFC 4180 (les guillemets et sĂ©parateurs sont Ă©chappĂ©s). Le **sĂ©parateur du CSV est dĂ©tectĂ©** (`;`, `,` ou tabulation) Ă  la lecture et **rĂ©utilisĂ© Ă  l'enregistrement** : un fichier exportĂ© par Excel en français (point-virgule) s'affiche donc en colonnes distinctes et le reste aprĂšs Ă©dition. **Tableau de bord** — le bouton **Tableau de bord** ouvre un **inspecteur latĂ©ral droit** (la grille reste visible Ă  cĂŽtĂ©) qui liste les plages nommĂ©es du classeur (nom, rĂ©fĂ©rence, portĂ©e), signale les feuilles contenant des graphiques ou des tableaux croisĂ©s, et donne pour chaque feuille un rĂ©sumĂ© (cellules, lignes, colonnes, formules, valeurs numĂ©riques) avec quelques chiffres clĂ©s. Cliquer une **plage nommĂ©e** sĂ©lectionne sa premiĂšre cellule dans la grille, et le panneau est **redimensionnable**. L'en-tĂȘte de l'inspecteur offre aussi un accĂšs direct Ă  l'**assistant IA**, qui peut ensuite exploiter ces plages. Ses outils couvrent dĂ©sormais les **trois formats Ă©ditĂ©s** (`.xlsx`, `.xlsm`, `.csv`) : `list_xlsx_sheets` et `xlsx_to_markdown` pour lire, `search_workbook` (recherche dans toutes les feuilles, comptĂ©e par feuille), `analyze_range` (agrĂ©gats — nombre, somme, moyenne, min, max — d'une plage A1), `update_xlsx_cells` et `append_xlsx_rows` pour modifier, et `edit_xlsx_structure` pour la structure (ajouter/renommer/dupliquer/supprimer une feuille, insĂ©rer/supprimer des lignes ou des colonnes). ### Limites - L'affichage intĂ©grĂ© dĂ©marre Ă  **500 lignes × 40 colonnes** par feuille ; sous une feuille plus grande, le bouton **« Charger la suite »** (ou le dĂ©filement vers le bas du tableau) ajoute les lignes suivantes par fenĂȘtres de 500 — elles deviennent aussitĂŽt Ă©ditables et sauvegardables. Le chargement paresseux est **vertical uniquement** : l'axe des colonnes reste tronquĂ© Ă  40 (les colonnes au-delĂ  ne sont ni affichĂ©es ni exportĂ©es). - Un **format de nombre personnalisĂ©** (devise, pourcentage
) est signalĂ© par une police Ă  chasse fixe Ă  la lecture ; depuis le bouton **Mise en forme**, appliquer un format ne change que le format de la cellule, **pas** la valeur affichĂ©e (aucun recalcul n'est fait, cf. les limites d'export ci-dessous). - `.xls` et `.ods` restent en lecture seule (convertir vers `.xlsx` pour Ă©diter) ; les macros d'un `.xlsm` sont conservĂ©es mais ne s'exĂ©cutent pas dans ObsiGate. - La **poignĂ©e de recopie** (fill), la multi-sĂ©lection `Ctrl+clic` et le glisser-dĂ©poser de lignes/colonnes ne sont pas proposĂ©s ; un collage de plusieurs cellules s'annule **cellule par cellule** (`Ctrl+Z` rĂ©pĂ©tĂ©). - Les exports (CSV, Markdown, HTML, impression) reflĂštent ce qui est **affichĂ©** : une feuille tronquĂ©e s'exporte tronquĂ©e, et les formules sortent telles qu'enregistrĂ©es (aucune valeur calculĂ©e n'est recalculĂ©e). Un classeur reste la source de vĂ©ritĂ© : utilisez **Charger la suite** pour exporter au-delĂ  du plafond. - **Moteur de formule local** : ObsiGate calcule Ă  l'Ă©cran l'arithmĂ©tique, les rĂ©fĂ©rences, les plages et une trentaine de fonctions en français et en anglais (`SOMME`, `MOYENNE`, `SI`, `LIEN`
). Une saisie commençant par `=` ou `@` reste stockĂ©e comme **texte** (garde anti-DDE) tant que le bouton `f(x)` n'est pas activĂ© ; l'enregistrement vous le signale par un message. Les fonctions non prises en charge affichent la valeur mise en cache par Excel quand elle existe. Excel reste la rĂ©fĂ©rence pour les valeurs calculĂ©es. - L'**annulation** couvre l'Ă©dition, l'effacement, le tri/filtre et les actions de structure ; en revanche une **suppression** (feuille, ligne, colonne) n'est pas annulable, faute d'inverse. --- ## 7. Diagrammes Excalidraw Les fichiers `.excalidraw` et `.excalidraw.md` (dont le format compressĂ© du **plugin Obsidian Excalidraw**) s'ouvrent dans un **Ă©diteur visuel Excalidraw complet**, dans une iframe sandboxĂ©e. - **Dessin et Ă©dition** sans quitter ObsiGate. - **Sauvegarde automatique** (dĂ©bounce 2 s) ou `Ctrl + S`. - **ThĂšme** clair/sombre suivi automatiquement. - **Texte indexĂ©** : le texte des Ă©lĂ©ments du diagramme est extrait Ă  l'indexation et donc recherchable (`ext:excalidraw`). Fiche technique : [`features/excalidraw.md`](../features/excalidraw.md). --- ## 8. Autres contenus riches ### Mermaid Les blocs de code ` ```mermaid ` sont rendus en diagrammes interactifs (live preview, thĂšmes, zoom, plein Ă©cran, prĂ©-processeur compatible syntaxe Obsidian). ### Images Obsidian Toutes les syntaxes d'images sont supportĂ©es avec rĂ©solution intelligente en 7 stratĂ©gies : 1. chemin absolu ; 2. dossier d'attachements configurĂ© (`VAULT_N_ATTACHMENTS_PATH`) ; 3. index de dĂ©marrage (correspondance unique) ; 4. mĂȘme rĂ©pertoire que la note ; 5. racine de la vault ; 6. index de dĂ©marrage (correspondance la plus proche) ; 7. repli : `[image not found: fichier.ext]`. Rescan manuel des attachements : ```bash curl -X POST "http://localhost:2020/api/attachments/rescan/Recettes" ``` ### Graphe et backlinks - **Graphe** : vue force-directed (Barnes-Hut), filtres (tag, type), profondeur, mode focus, export PNG, aperçu au survol (`Ctrl + clic`). - **Backlinks** : `GET /api/file/{vault}/backlinks?path=
` liste les notes pointant vers un document. --- ## 9. DĂ©pannage | SymptĂŽme | Piste | |---|---| | Un PDF ne s'affiche pas | VĂ©rifier la taille (`OBSIGATE_PDF_MAX_SIZE_MB`, dĂ©faut 50 Mo) | | Le texte d'un PDF scannĂ© n'est pas trouvĂ© | Pas d'OCR : normal | | Une image reste introuvable | Configurer `VAULT_N_ATTACHMENTS_PATH`, puis rescan | | La recherche sĂ©mantique ne s'active pas | VĂ©rifier le toggle `~` et `OBSIGATE_EMBEDDING_*` | | RĂ©sultats obsolĂštes | Forcer une rĂ©indexation : `GET /api/index/reload` |