Bruno Charest b985a7cdbb feat: add non-markdown files to metadata endpoints
- Added support for non-markdown files (images, PDFs, code, etc) in vault metadata endpoints
- Implemented filesystem scanning for non-markdown files with configurable extension whitelist
- Added deduplication by file path to prevent duplicates between Meilisearch and filesystem
- Enhanced folder filtering and kind filtering to properly handle non-markdown files
- Added validation to remove stale entries not present on disk
- Improved logging to track
2025-10-31 23:20:36 -04:00

330 lines
17 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Page snapshot
```yaml
- generic [ref=e5]:
- complementary [ref=e6]:
- generic [ref=e8]:
- generic [ref=e9]:
- link "ObsiViewer IT - ObsiViewer" [ref=e10] [cursor=pointer]:
- /url: /
- img "ObsiViewer" [ref=e11] [cursor=pointer]
- generic [ref=e12] [cursor=pointer]: IT - ObsiViewer
- button "⟨⟨" [ref=e13] [cursor=pointer]
- generic [ref=e14]:
- generic [ref=e15]:
- button "▾ ⚡ Quick Links" [ref=e16] [cursor=pointer]:
- generic [ref=e17] [cursor=pointer]:
- generic [ref=e18] [cursor=pointer]:
- generic [ref=e19] [cursor=pointer]:
- link "Quick Links" [ref=e20] [cursor=pointer]:
- /url: /
- list [ref=e24]:
- listitem [ref=e25]:
- button "🗂️ All Pages count" [ref=e26] [cursor=pointer]:
- generic [ref=e27] [cursor=pointer]:
- generic [ref=e28] [cursor=pointer]: 🗂️
- generic [ref=e29] [cursor=pointer]: All Pages
- generic "count" [ref=e31] [cursor=pointer]: "29"
- listitem [ref=e32]:
- button "❤️ Favoris count" [ref=e33] [cursor=pointer]:
- generic [ref=e34] [cursor=pointer]:
- generic [ref=e35] [cursor=pointer]: ❤️
- generic [ref=e36] [cursor=pointer]: Favoris
- generic "count" [ref=e38] [cursor=pointer]: "9"
- listitem [ref=e39]:
- button "🌐 Publish count" [ref=e40] [cursor=pointer]:
- generic [ref=e41] [cursor=pointer]:
- generic [ref=e42] [cursor=pointer]: 🌐
- generic [ref=e43] [cursor=pointer]: Publish
- generic "count" [ref=e45] [cursor=pointer]: "6"
- listitem [ref=e46]:
- button "📝 Draft count" [ref=e47] [cursor=pointer]:
- generic [ref=e48] [cursor=pointer]:
- generic [ref=e49] [cursor=pointer]: 📝
- generic [ref=e50] [cursor=pointer]: Draft
- generic "count" [ref=e52] [cursor=pointer]: "6"
- listitem [ref=e53]:
- button "📑 Template count" [ref=e54] [cursor=pointer]:
- generic [ref=e55] [cursor=pointer]:
- generic [ref=e56] [cursor=pointer]: 📑
- generic [ref=e57] [cursor=pointer]: Template
- generic "count" [ref=e59] [cursor=pointer]: "5"
- listitem [ref=e60]:
- button "🗒️ Task count" [ref=e61] [cursor=pointer]:
- generic [ref=e62] [cursor=pointer]:
- generic [ref=e63] [cursor=pointer]: 🗒️
- generic [ref=e64] [cursor=pointer]: Task
- generic "count" [ref=e66] [cursor=pointer]: "6"
- listitem [ref=e67]:
- button "🔒 Private count" [ref=e68] [cursor=pointer]:
- generic [ref=e69] [cursor=pointer]:
- generic [ref=e70] [cursor=pointer]: 🔒
- generic [ref=e71] [cursor=pointer]: Private
- generic "count" [ref=e73] [cursor=pointer]: "6"
- listitem [ref=e74]:
- button "🗃️ Archive count" [ref=e75] [cursor=pointer]:
- generic [ref=e76] [cursor=pointer]:
- generic [ref=e77] [cursor=pointer]: 🗃️
- generic [ref=e78] [cursor=pointer]: Archive
- generic "count" [ref=e80] [cursor=pointer]: "5"
- button "▸ 📁 Folders" [ref=e83] [cursor=pointer]:
- generic [ref=e84] [cursor=pointer]:
- generic [ref=e85] [cursor=pointer]: 📁
- generic [ref=e86] [cursor=pointer]: Folders
- button "▸ 🏷️ Tags" [ref=e88] [cursor=pointer]:
- generic [ref=e89] [cursor=pointer]:
- generic [ref=e90] [cursor=pointer]:
- generic [ref=e91] [cursor=pointer]: 🏷️
- generic [ref=e92] [cursor=pointer]: Tags
- button "▸ 🗑️ Trash" [ref=e94] [cursor=pointer]:
- generic [ref=e95] [cursor=pointer]:
- generic [ref=e96] [cursor=pointer]:
- generic [ref=e97] [cursor=pointer]: 🗑️
- generic [ref=e98] [cursor=pointer]: Trash
- generic [ref=e100]:
- button "🆘 Help Page" [ref=e101] [cursor=pointer]:
- generic [ref=e102] [cursor=pointer]: 🆘
- generic [ref=e103] [cursor=pointer]: Help Page
- button " About" [ref=e104] [cursor=pointer]:
- generic [ref=e105] [cursor=pointer]:
- generic [ref=e106] [cursor=pointer]: About
- scrollbar [ref=e107]
- generic [ref=e108]: ObsiViewer
- separator "Redimensionner la barre latérale gauche" [ref=e109]
- generic [ref=e113]:
- generic [ref=e114]:
- textbox "Rechercher..." [ref=e116]
- generic [ref=e117]:
- generic [ref=e118]:
- button "Trier par" [ref=e119] [cursor=pointer]:
- img [ref=e120] [cursor=pointer]
- button "Mode d'affichage" [ref=e121] [cursor=pointer]:
- img [ref=e122] [cursor=pointer]
- generic [ref=e127]:
- img [ref=e128]
- text: "56"
- generic [ref=e131]:
- list [ref=e133]:
- listitem [ref=e134] [cursor=pointer]:
- generic [ref=e135] [cursor=pointer]:
- button "Éditer la note" [ref=e136] [cursor=pointer]:
- img [ref=e137] [cursor=pointer]
- button "Supprimer la note" [ref=e140] [cursor=pointer]:
- img [ref=e141] [cursor=pointer]
- generic [ref=e143] [cursor=pointer]:
- generic "Type" [ref=e145] [cursor=pointer]: </>
- generic [ref=e146] [cursor=pointer]:
- generic [ref=e147] [cursor=pointer]: workspace.json
- generic [ref=e148] [cursor=pointer]: .obsidian/workspace.json
- listitem [ref=e149] [cursor=pointer]:
- generic [ref=e150] [cursor=pointer]:
- button "Éditer la note" [ref=e151] [cursor=pointer]:
- img [ref=e152] [cursor=pointer]
- button "Supprimer la note" [ref=e155] [cursor=pointer]:
- img [ref=e156] [cursor=pointer]
- generic [ref=e158] [cursor=pointer]:
- generic "Type" [ref=e160] [cursor=pointer]: 📝
- generic [ref=e161] [cursor=pointer]:
- generic [ref=e162] [cursor=pointer]: Nouveau-markdown
- generic [ref=e163] [cursor=pointer]: Allo-3/Nouveau-markdown.md
- listitem [ref=e164] [cursor=pointer]:
- generic [ref=e165] [cursor=pointer]:
- button "Éditer la note" [ref=e166] [cursor=pointer]:
- img [ref=e167] [cursor=pointer]
- button "Supprimer la note" [ref=e170] [cursor=pointer]:
- img [ref=e171] [cursor=pointer]
- generic [ref=e173] [cursor=pointer]:
- generic "Type" [ref=e175] [cursor=pointer]: 📝
- generic [ref=e176] [cursor=pointer]:
- generic [ref=e177] [cursor=pointer]: test2
- generic [ref=e178] [cursor=pointer]: tata/test2.md
- listitem [ref=e179] [cursor=pointer]:
- generic [ref=e180] [cursor=pointer]:
- button "Éditer la note" [ref=e181] [cursor=pointer]:
- img [ref=e182] [cursor=pointer]
- button "Supprimer la note" [ref=e185] [cursor=pointer]:
- img [ref=e186] [cursor=pointer]
- generic [ref=e188] [cursor=pointer]:
- generic "Type" [ref=e190] [cursor=pointer]: </>
- generic [ref=e191] [cursor=pointer]:
- generic [ref=e192] [cursor=pointer]: data.json
- generic [ref=e193] [cursor=pointer]: .obsidian/plugins/obsidian-excalidraw-plugin/data.json
- listitem [ref=e194] [cursor=pointer]:
- generic [ref=e195] [cursor=pointer]:
- button "Éditer la note" [ref=e196] [cursor=pointer]:
- img [ref=e197] [cursor=pointer]
- button "Supprimer la note" [ref=e200] [cursor=pointer]:
- img [ref=e201] [cursor=pointer]
- generic [ref=e203] [cursor=pointer]:
- generic "Type" [ref=e205] [cursor=pointer]: </>
- generic [ref=e206] [cursor=pointer]:
- generic [ref=e207] [cursor=pointer]: community-plugins.json
- generic [ref=e208] [cursor=pointer]: .obsidian/community-plugins.json
- listitem [ref=e209] [cursor=pointer]:
- generic [ref=e210] [cursor=pointer]:
- button "Éditer la note" [ref=e211] [cursor=pointer]:
- img [ref=e212] [cursor=pointer]
- button "Supprimer la note" [ref=e215] [cursor=pointer]:
- img [ref=e216] [cursor=pointer]
- generic [ref=e218] [cursor=pointer]:
- generic "Type" [ref=e220] [cursor=pointer]: </>
- generic [ref=e221] [cursor=pointer]:
- generic [ref=e222] [cursor=pointer]: appearance.json
- generic [ref=e223] [cursor=pointer]: .obsidian/appearance.json
- listitem [ref=e224] [cursor=pointer]:
- generic [ref=e225] [cursor=pointer]:
- button "Éditer la note" [ref=e226] [cursor=pointer]:
- img [ref=e227] [cursor=pointer]
- button "Supprimer la note" [ref=e230] [cursor=pointer]:
- img [ref=e231] [cursor=pointer]
- generic [ref=e233] [cursor=pointer]:
- generic "Type" [ref=e235] [cursor=pointer]: </>
- generic [ref=e236] [cursor=pointer]:
- generic [ref=e237] [cursor=pointer]: app.json
- generic [ref=e238] [cursor=pointer]: .obsidian/app.json
- listitem [ref=e239] [cursor=pointer]:
- generic [ref=e240] [cursor=pointer]:
- button "Éditer la note" [ref=e241] [cursor=pointer]:
- img [ref=e242] [cursor=pointer]
- button "Supprimer la note" [ref=e245] [cursor=pointer]:
- img [ref=e246] [cursor=pointer]
- generic [ref=e248] [cursor=pointer]:
- generic "Type" [ref=e250] [cursor=pointer]: </>
- generic [ref=e251] [cursor=pointer]:
- generic [ref=e252] [cursor=pointer]: core-plugins.json
- generic [ref=e253] [cursor=pointer]: .obsidian/core-plugins.json
- listitem [ref=e254] [cursor=pointer]:
- generic [ref=e255] [cursor=pointer]:
- button "Éditer la note" [ref=e256] [cursor=pointer]:
- img [ref=e257] [cursor=pointer]
- button "Supprimer la note" [ref=e260] [cursor=pointer]:
- img [ref=e261] [cursor=pointer]
- generic [ref=e263] [cursor=pointer]:
- generic "Type" [ref=e265] [cursor=pointer]: 📝
- generic [ref=e266] [cursor=pointer]:
- generic [ref=e267] [cursor=pointer]: test
- generic [ref=e268] [cursor=pointer]: test.md
- listitem [ref=e269] [cursor=pointer]:
- generic [ref=e270] [cursor=pointer]:
- button "Éditer la note" [ref=e271] [cursor=pointer]:
- img [ref=e272] [cursor=pointer]
- button "Supprimer la note" [ref=e275] [cursor=pointer]:
- img [ref=e276] [cursor=pointer]
- generic [ref=e278] [cursor=pointer]:
- generic "Type" [ref=e280] [cursor=pointer]: 📝
- generic [ref=e281] [cursor=pointer]:
- generic [ref=e282] [cursor=pointer]: tata
- generic [ref=e283] [cursor=pointer]: Allo-3/tata.md
- listitem [ref=e284] [cursor=pointer]:
- generic [ref=e285] [cursor=pointer]:
- button "Éditer la note" [ref=e286] [cursor=pointer]:
- img [ref=e287] [cursor=pointer]
- button "Supprimer la note" [ref=e290] [cursor=pointer]:
- img [ref=e291] [cursor=pointer]
- generic [ref=e293] [cursor=pointer]:
- generic "Type" [ref=e295] [cursor=pointer]: 📝
- generic [ref=e296] [cursor=pointer]:
- generic [ref=e297] [cursor=pointer]: HOME
- generic [ref=e298] [cursor=pointer]: HOME.md
- listitem [ref=e299] [cursor=pointer]:
- generic [ref=e300] [cursor=pointer]:
- button "Éditer la note" [ref=e301] [cursor=pointer]:
- img [ref=e302] [cursor=pointer]
- button "Supprimer la note" [ref=e305] [cursor=pointer]:
- img [ref=e306] [cursor=pointer]
- generic [ref=e308] [cursor=pointer]:
- generic "Type" [ref=e310] [cursor=pointer]: ✏️
- generic [ref=e311] [cursor=pointer]:
- generic [ref=e312] [cursor=pointer]: Dessin-02.excalidraw
- generic [ref=e313] [cursor=pointer]: Dessin-02.excalidraw.md
- listitem [ref=e314] [cursor=pointer]:
- generic [ref=e315] [cursor=pointer]:
- button "Éditer la note" [ref=e316] [cursor=pointer]:
- img [ref=e317] [cursor=pointer]
- button "Supprimer la note" [ref=e320] [cursor=pointer]:
- img [ref=e321] [cursor=pointer]
- generic [ref=e323] [cursor=pointer]:
- generic "Type" [ref=e325] [cursor=pointer]: 📝
- generic [ref=e326] [cursor=pointer]:
- generic [ref=e327] [cursor=pointer]: Test 1 Markdown copy
- generic [ref=e328] [cursor=pointer]: Test 1 Markdown copy.md
- listitem [ref=e329] [cursor=pointer]:
- generic [ref=e330] [cursor=pointer]:
- button "Éditer la note" [ref=e331] [cursor=pointer]:
- img [ref=e332] [cursor=pointer]
- button "Supprimer la note" [ref=e335] [cursor=pointer]:
- img [ref=e336] [cursor=pointer]
- generic [ref=e338] [cursor=pointer]:
- generic "Type" [ref=e340] [cursor=pointer]: 📝
- generic [ref=e341] [cursor=pointer]:
- generic [ref=e342] [cursor=pointer]: Nouvelle note 13
- generic [ref=e343] [cursor=pointer]: Allo-3/Nouvelle note 13.md
- listitem [ref=e344]: 56 notes chargées
- scrollbar [ref=e346]
- separator "Redimensionner la zone de liste" [ref=e347]
- generic [ref=e348]:
- generic [ref=e349]:
- generic [ref=e351]:
- status [ref=e352]
- generic [ref=e353]:
- generic [ref=e354]:
- generic [ref=e356]:
- generic [ref=e357]:
- button "Copier le chemin" [ref=e358] [cursor=pointer]:
- img [ref=e359] [cursor=pointer]
- button "Afficher les propriétés du document" [ref=e362] [cursor=pointer]:
- img [ref=e363] [cursor=pointer]
- group "Chemin du fichier file-5_2025-10-25T20-16-40-755Z.md" [ref=e366]:
- button ".trash ▾" [ref=e369] [cursor=pointer]:
- generic "undefined" [ref=e370] [cursor=pointer]: .trash
- generic [ref=e371] [cursor=pointer]:
- generic "Renommer le fichier" [ref=e372] [cursor=pointer]:
- text: file-5_2025-10-25T20-16-40-755Z.md
- img [ref=e374] [cursor=pointer]
- button "Modifier les tags" [ref=e378] [cursor=pointer]:
- img [ref=e379] [cursor=pointer]
- generic [ref=e381]:
- button "Éditer" [ref=e382] [cursor=pointer]:
- img [ref=e383] [cursor=pointer]
- button "Open in full screen" [ref=e386] [cursor=pointer]: ⤢
- button "Afficher sommaire" [ref=e388] [cursor=pointer]:
- img [ref=e389] [cursor=pointer]
- button "Rechercher" [ref=e391] [cursor=pointer]:
- img [ref=e392] [cursor=pointer]
- button "Copier tout le markdown" [ref=e395] [cursor=pointer]:
- img [ref=e396] [cursor=pointer]
- button "More options" [ref=e400] [cursor=pointer]: ⋯
- generic [ref=e401]:
- generic [ref=e402]:
- generic [ref=e403]:
- img [ref=e404]
- text: 25 oct. 2025, 16:16:41
- generic [ref=e406]:
- img [ref=e407]
- text: Bruno Charest
- generic [ref=e409]:
- button "Non favori" [ref=e410] [cursor=pointer]:
- img [ref=e411] [cursor=pointer]
- button "Non publié" [ref=e413] [cursor=pointer]:
- img [ref=e414] [cursor=pointer]
- button "Pas un brouillon" [ref=e417] [cursor=pointer]:
- img [ref=e418] [cursor=pointer]
- button "Non modèle" [ref=e420] [cursor=pointer]:
- img [ref=e421] [cursor=pointer]
- button "Pas une tâche" [ref=e423] [cursor=pointer]:
- img [ref=e424] [cursor=pointer]
- button "Public" [ref=e426] [cursor=pointer]:
- img [ref=e427] [cursor=pointer]
- button "Document non archivé" [ref=e430] [cursor=pointer]:
- img [ref=e431] [cursor=pointer]
- paragraph [ref=e435]: nouveau message !!!
- scrollbar [ref=e436]
- complementary:
- generic:
- generic:
- heading "Sommaire" [level=2]
- button "Fermer le sommaire":
- img
- list
- scrollbar [ref=e437]
```