Tags et favoris, filtres dans l'explorateur

- DATA_DIR/.meta.json : tags et favoris par chemin, suivis aux renommages,
  déplacements, copies (tags seuls) et suppressions.
- API : GET /api/tags, POST /api/meta/favorite, POST /api/meta/tags ; Entry
  porte tags et favorite ; /api/search accepte tag= et fav=true (q facultatif).
- Tags comparés sans casse ni accents, écriture existante conservée ; ils
  participent à la recherche texte.
- Explorateur : ligne de filtres (Favoris, tags avec leur nombre), étoile et
  tags sur les éléments, menu Favori / Tags…, actions sur la sélection,
  dialogue Tags (ajout, retrait, suggestions).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H6J7vKwXx7uopxKhWfFJpm
This commit is contained in:
claude BotandClaude Opus 5.5 committed 2026-10-07 18:06:45 +02:00
1 parent c78df092c1
commit c1ea1e84a7
13 files changed
+880 -33

No files matched your search

+87
View File
@@ -1140,3 +1140,90 @@ li.active > .row {
.entries.grid .snippet {
text-align: center;
}
/* --- Tags et favoris -------------------------------------------------------- */
.chip {
display: inline-flex;
align-items: center;
gap: 4px;
height: 22px;
padding: 0 8px;
border-radius: 11px;
background: var(--ex-surface-low);
box-shadow: none;
font-size: 11.5px;
letter-spacing: normal;
white-space: nowrap;
}
button.chip.on,
.chip.on {
background: var(--ex-primary);
color: var(--ex-surface-lowest);
}
.chip small {
opacity: 0.7;
font-size: 10.5px;
}
.filters {
display: flex;
gap: 4px;
overflow-x: auto;
flex: none;
padding-bottom: 2px;
}
.row .fav {
display: inline-flex;
margin-right: 4px;
vertical-align: -1px;
color: #f59f00;
}
.row .tags {
display: flex;
flex-wrap: wrap;
gap: 3px;
}
/* En liste : tags sur une ligne sous le nom. */
.entries.list .row {
flex-wrap: wrap;
}
.entries.list .row .tags {
order: 10;
flex-basis: 100%;
margin-top: -4px;
padding: 0 6px 5px 82px;
}
.row .tags .chip {
height: 18px;
padding: 0 6px;
font-size: 10.5px;
}
.entries.grid .row .tags {
justify-content: center;
padding: 0 4px 6px;
}
.tags-dialog .chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
font-size: 13px;
}
.tags-dialog .chip {
height: 26px;
padding: 0 4px 0 10px;
border-radius: 13px;
font-size: 12.5px;
}
.tags-dialog .chip .icon-btn {
width: 20px;
height: 20px;
border-radius: 10px;
}
.tags-dialog .suggestions .chip {
padding: 0 10px;
color: var(--muted);
}
.tag-add {
display: flex;
gap: 6px;
}