feat: finalisation éditeur Forge + mode hors-ligne PWA + consolidation roadmap
CI / lint (push) Failing after 7s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Failing after -7s

- Forge: Tab indent, Ctrl+K, auto-focus, AI status, messages erreur FR
- Forge: slash commands clean, cache-bust iframe, preview serveur
- Forge: iframe 82vh, hauteur auto, table inline, sélecteur langage
- PWA hors-ligne: IndexedDB (offline-db.js + offline.js)
- Mermaid: thème dark complet, highlight.js preview
- Backend: màj CSP, rename chain, bookmarks/history/shares
- Roadmap: consolidation dans docs/ROADMAP.md (75 items)
- Infra: docker-compose.podman.yml, suppression test-vault
- .gitignore: exclusion odysseus/
This commit is contained in:
2026-06-14 20:27:37 -04:00
parent 0cdebc5b40
commit feeb46b873
31 changed files with 1769 additions and 981 deletions
+43
View File
@@ -123,3 +123,46 @@ def is_bookmarked(username: str, vault: str, path: str) -> bool:
return False
bookmarks = _read_data(_get_bookmarks_file(username))
return any(b["vault"] == vault and b["path"] == path for b in bookmarks)
def update_bookmarks_after_rename(vault: str, old_path: str, new_path: str):
"""Update all users' bookmarks when a file is renamed."""
if not HISTORY_DIR.exists():
return
for bfile in HISTORY_DIR.glob("*_bookmarks.json"):
try:
bookmarks = _read_data(bfile)
updated = False
for b in bookmarks:
if b.get("vault") == vault and b.get("path") == old_path:
b["path"] = new_path
# Update title from new path
new_title = new_path.split("/")[-1].replace(".md", "").replace("-", " ").replace("_", " ")
b["title"] = new_title
updated = True
if updated:
_write_data(bfile, bookmarks)
logger.info(f"Updated bookmarks in {bfile.name}: {vault}/{old_path} -> {new_path}")
except Exception as e:
logger.error(f"Failed to update bookmarks in {bfile.name}: {e}")
def update_history_after_rename(vault: str, old_path: str, new_path: str):
"""Update all users' history entries when a file is renamed."""
if not HISTORY_DIR.exists():
return
for hfile in HISTORY_DIR.glob("*.json"):
if "_bookmarks" in hfile.name:
continue
try:
history = _read_data(hfile)
updated = False
for h in history:
if h.get("vault") == vault and h.get("path") == old_path:
h["path"] = new_path
updated = True
if updated:
_write_data(hfile, history)
logger.info(f"Updated history in {hfile.name}: {vault}/{old_path} -> {new_path}")
except Exception as e:
logger.error(f"Failed to update history in {hfile.name}: {e}")