fix: correction raccourci palette + filtrage ext/vault/tag dans palette fichiers
CI / lint (push) Successful in 2m40s
CI / security (push) Failing after 1m53s
CI / test (push) Successful in 4m36s
CI / build (push) Successful in 1m48s
CI / e2e (push) Successful in 17m29s

- Correction du raccourci clavier inversé dans l'aide :
  Ctrl+Shift+Space → Palette de fichiers (navigation rapide)
  Ctrl+Alt+Space → Palette de commandes
- Ajout du support des filtres ext:xxx, vault:nom, tag:monTag dans la palette de fichiers
- parseQuery étendu pour gérer les opérateurs de filtrage
- Filtrage client-side par extension et tag dans searchFiles et searchBrowseGlobal
- Backend : suggest_titles retourne les tags pour chaque suggestion
- Schema TitleSuggestion : ajout du champ tags
- Placeholders mis à jour pour indiquer les nouveaux filtres disponibles

Fixes : raccourci inversé, filtrage par extension/vault/tag dans palette fichiers
This commit is contained in:
2026-10-01 10:29:42 -04:00
parent c5c225a68e
commit 66a5505965
13 changed files with 66 additions and 27 deletions
+1
View File
@@ -666,6 +666,7 @@ class TitleSuggestion(BaseModel):
vault: str = Field(description="Vault name")
path: str = Field(description="Relative file path")
title: str = Field(description="File title")
tags: list[str] = Field(default_factory=list, description="File tags")
class SuggestResponse(BaseModel):
+9 -3
View File
@@ -373,6 +373,7 @@ class InvertedIndex:
self.doc_vault: dict[str, str] = {}
self.vault_docs: dict[str, set] = defaultdict(set)
self.tag_docs: dict[str, set] = defaultdict(set)
self.doc_tags: dict[str, set] = defaultdict(set)
self._sorted_tokens: SortedList = SortedList()
self._ready: bool = False # True after initial build
@@ -403,6 +404,7 @@ class InvertedIndex:
self.doc_vault = {}
self.vault_docs = defaultdict(set)
self.tag_docs = defaultdict(set)
self.doc_tags = defaultdict(set)
for vault_name, vault_data in _indexer.index.items():
for file_info in vault_data.get("files", []):
@@ -417,6 +419,7 @@ class InvertedIndex:
# --- Per-document tag index ---
for tag in file_info.get("tags", []):
self.tag_docs[tag.lower()].add(doc_key)
self.doc_tags[file_info['path']].add(tag.lower())
# --- Title tokens ---
title_tokens = tokenize(file_info.get("title", ""))
@@ -1538,7 +1541,7 @@ def suggest_titles(
prefix: str,
vault_filter: str = "all",
limit: int = SUGGEST_LIMIT,
) -> list[dict[str, str]]:
) -> list[dict[str, Any]]:
"""Suggest file titles matching a prefix (accent-insensitive).
Args:
@@ -1547,7 +1550,7 @@ def suggest_titles(
limit: Maximum suggestions.
Returns:
List of ``{"vault", "path", "title"}`` dicts.
List of ``{"vault", "path", "title", "tags"}`` dicts.
"""
if not prefix or len(prefix) < MIN_PREFIX_LENGTH:
return []
@@ -1565,7 +1568,10 @@ def suggest_titles(
key = f"{entry['vault']}::{entry['path']}"
if key not in seen:
seen.add(key)
results.append(entry)
# Add tags from the index
entry_with_tags: dict[str, Any] = dict(entry)
entry_with_tags["tags"] = list(inv.doc_tags.get(entry["path"], set()))
results.append(entry_with_tags)
if len(results) >= limit:
return results