fix: sidebar workspace tree + pages DB — emojis → outlined icons

Root cause: 3 sources d'icônes colorées dans le sidebar:
1. _workspace_tree_macro.html L28: {{ page.icon }} raw → filtré via valid_icons
2. db.py: DEFAULT '📄' → 'file'
3. board.py _file_icon(): 15 émojis → 'file'/'edit'/'image'
4. board.py/dashboard.py: JSON icon: 📄/📁 → file/folder
5. base.html L931: JS favorites icon → validNames filter
6. base.html render_tree_item: valid_icons list étendue + fallback

Migration: nouvelles pages utilisent 'file'/'folder'. Pages existantes
avec émojis → les templates utilisent le fallback automatiquement.
143 tests passent
This commit is contained in:
2026-07-21 09:28:28 -04:00
parent 3fcc12ad8c
commit 53d31572e6
5 changed files with 31 additions and 26 deletions
+4 -4
View File
@@ -96,7 +96,7 @@ def _sidebar_data(request: Request, repos: list[dict], include_workspace: bool =
recent_pages.append({
"id": full_name,
"name": repo.get("name", full_name),
"icon": "📁",
"icon": "folder",
"url": f"/board/{full_name}",
"active": False,
"indent": 0,
@@ -430,7 +430,7 @@ async def help_page(request: Request):
</div>
<div class="help-card">
<h3><span class="icon">📁</span>Workspaces</h3>
<h3><span class="icon">{{ fd_icon("folder",16) }}</span>Workspaces</h3>
<p>Organize your work into separate workspaces. Each has its own pages and files.</p>
<ul>
<li><span class="help-badge local">Local</span> Files stored on your server</li>
@@ -1100,7 +1100,7 @@ def _nav_breadcrumb(conn, page_id: int) -> list:
"id": row["id"],
"label": title,
"url": None,
"icon": "\U0001F4C1" if is_folder else _file_icon(title, row["content_format"]),
"icon": "folder" if is_folder else _file_icon(title, row["content_format"]),
"menu": True,
})
current = row["parent_id"]
@@ -1160,7 +1160,7 @@ async def nav_menu(request: Request, workspace_id: int = None, parent_id: int =
items.append({
"id": r["id"],
"name": title,
"icon": "\U0001F4C1" if is_folder else _file_icon(title, r["content_format"]),
"icon": "folder" if is_folder else _file_icon(title, r["content_format"]),
"has_children": child_counts.get(r["id"], 0) > 0,
"url": f"/pages/{r['id']}",
})