Commit Graph
392 Commits
Author SHA1 Message Date
bruno 02564cadfa Add roadmap items for PDF support and split view editor
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Successful in 26s
CI / build (push) Successful in 3s
2026-06-05 20:30:26 -04:00
bruno 739b359de2 feat: Editor POC — multi-zone toolbar mockup (TOOLBAR_DESIGN_ANALYSIS.md)
CI / lint (push) Successful in 15s
CI / security (push) Successful in 9s
CI / build (push) Has been cancelled
CI / test (push) Has been cancelled
Add standalone /editor-poc page demonstrating all 5 toolbar zones:
- Zone 1: Top Fixed Bar (hamburger, title, AI glow button, save indicator)
- Zone 2a: Slash Command Menu (/ on empty line, 15 commands, filtering)
- Zone 2b: Bubble Menu (on text selection, formatting + AI dropdown)
- Zone 3: Floating Quick Insert (per-line, Image/PDF/Code/Table/AI)
- Zone 4: AI Side Panel (Ctrl+J toggle, chat, suggestions)
- Zone 5: Drag & Drop overlay with dashed border

Files:
- new: frontend/editor-poc.html (46KB standalone vanilla JS)
- backend/main.py: +/editor-poc route before catch-all
- frontend/index.html: Editor POC button in header menu
- frontend/js/config.js: initEditorPocBtn() function + export
- frontend/js/legacy.js: re-export initEditorPocBtn
- frontend/js/app.js + frontend/app.js: init call in both versions
2026-06-05 20:29:56 -04:00
bruno 0f400d72cd docs: ajout analyse complète architecture toolbar multi-zone (5 zones: top bar, slash menu, bubble menu, quick insert, AI panel)
CI / lint (push) Successful in 18s
CI / security (push) Successful in 9s
CI / test (push) Successful in 26s
CI / build (push) Successful in 2s
2026-06-05 19:53:05 -04:00
bruno 0f1ae237a0 fix: patch beta diagram colors via JS — setAttribute overrides inline SVG fills (CSS !important fails)
CI / lint (push) Successful in 18s
CI / security (push) Successful in 13s
CI / test (push) Successful in 28s
CI / build (push) Successful in 4s
2026-06-05 13:11:50 -04:00
bruno 0f6bb52776 fix: ER diagram — darker rows (#111d30/#152238), white text for high contrast
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Successful in 23s
CI / build (push) Successful in 2s
2026-06-05 11:49:35 -04:00
bruno 946c0098a9 fix: xychart-beta dark mode — CSS override for cream bars + orange line (ignores themeVariables)
CI / lint (push) Successful in 18s
CI / security (push) Successful in 8s
CI / test (push) Successful in 24s
CI / build (push) Successful in 3s
2026-06-05 11:46:18 -04:00
bruno 24b91b0d62 fix: packet-beta dark mode — CSS override for hardcoded white blocks (themeVariables ignored by beta)
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Successful in 25s
CI / build (push) Has been cancelled
2026-06-05 11:45:11 -04:00
bruno 0fcb917a8d fix: ER diagram row contrast, mindmap branch colors, timeline blue boxes, xyChart blue bars
CI / lint (push) Successful in 15s
CI / security (push) Successful in 7s
CI / test (push) Successful in 24s
CI / build (push) Successful in 2s
2026-06-05 11:38:39 -04:00
bruno 0f9e45dcb1 feat: comprehensive Mermaid dark theme — bleu-tinted palette for flowchart, gantt, git, mindmap, pie
CI / lint (push) Successful in 14s
CI / security (push) Successful in 13s
CI / test (push) Successful in 23s
CI / build (push) Successful in 3s
2026-06-05 11:21:24 -04:00
bruno b55eacad78 feat: Mermaid dark theme with custom themeVariables + re-render on switch + fix code view colors
CI / lint (push) Successful in 13s
CI / security (push) Successful in 8s
CI / test (push) Successful in 28s
CI / build (push) Successful in 2s
2026-06-05 09:57:17 -04:00
bruno 6d7f95186d fix: backup close button — add background + shadow so it's visible over the overlay
CI / lint (push) Successful in 15s
CI / security (push) Successful in 8s
CI / test (push) Successful in 25s
CI / build (push) Successful in 3s
2026-06-05 09:32:29 -04:00
bruno 51a5162e66 feat: theme-adaptive fullscreen background + wire updateMermaidTheme to applyTheme
CI / lint (push) Successful in 15s
CI / security (push) Successful in 8s
CI / test (push) Successful in 24s
CI / build (push) Successful in 2s
2026-06-05 09:24:19 -04:00
bruno 2cf9915208 feat: add 'Copy code Mermaid' button alongside 'Copy SVG' in header + fullscreen
CI / lint (push) Successful in 14s
CI / security (push) Successful in 7s
CI / test (push) Successful in 25s
CI / build (push) Successful in 2s
2026-06-05 09:11:26 -04:00
bruno c7f652ace5 fix: export SVG/PNG targets .mermaid-rendered svg instead of first svg (Lucide icon)
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Successful in 23s
CI / build (push) Successful in 2s
2026-06-05 09:05:18 -04:00
bruno 697f25700b fix: replace requirementDiagram #10 with flowchart — Mermaid 11 does not support requirementDiagram
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Successful in 23s
CI / build (push) Successful in 1s
2026-06-05 08:55:27 -04:00
bruno dea1d73943 fix: requirementDiagram #10 — quote id field, remove period inside text quotes
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / build (push) Has been cancelled
CI / test (push) Has been cancelled
2026-06-05 08:54:57 -04:00
bruno 027eab1368 docs: refonte ROADMAP — numerotation, effort/impact, P3/P4 explosés en 15 items détaillés
CI / lint (push) Successful in 14s
CI / security (push) Successful in 9s
CI / test (push) Successful in 25s
CI / build (push) Successful in 1s
2026-06-05 08:45:53 -04:00
bruno 28ced406bc feat: Mermaid header bar, Code/Preview toggle, Copy SVG, Download PNG, fullscreen header
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Successful in 23s
CI / build (push) Successful in 2s
2026-06-05 08:38:21 -04:00
bruno fff658d551 fix: add isascii() check in safe_name to prevent non-ASCII chars in PDF Content-Disposition header
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Successful in 26s
CI / build (push) Successful in 4s
2026-06-05 08:24:32 -04:00
bruno 4a6e907f3f fix: Mermaid fullscreen — fill viewport instead of showing tiny centered diagram
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Failing after 23s
CI / build (push) Has been skipped
2026-06-05 08:14:54 -04:00
bruno da58b97096 fix: Mermaid test file fixes (accents, escaping) + preprocessObsidian call in renderMermaidBlocks
CI / lint (push) Successful in 15s
CI / security (push) Successful in 8s
CI / test (push) Failing after 25s
CI / build (push) Has been skipped
2026-06-05 08:02:45 -04:00
bruno a0cae4a6a4 fix: close TestClient properly in auth_client fixture to prevent gzip cleanup errors
CI / lint (push) Successful in 14s
CI / security (push) Successful in 11s
CI / test (push) Failing after 23s
CI / build (push) Has been skipped
2026-06-05 07:52:29 -04:00
bruno ccb0fb3e97 fix: add missing initMermaid() call + skip mermaid blocks in highlight.js
CI / lint (push) Successful in 19s
CI / security (push) Successful in 13s
CI / test (push) Failing after 23s
CI / build (push) Has been skipped
2026-06-05 07:43:19 -04:00
bruno 69e86c239b fix: CSP add cdn.jsdelivr.net, fix regex syntax, fix manifest PNG->SVG
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Failing after 22s
CI / build (push) Has been skipped
2026-06-04 23:50:10 -04:00
bruno 00f32ce9c2 fix: reload backend.indexer before watcher in IGNORED_DIRS tests
CI / lint (push) Successful in 14s
CI / security (push) Successful in 8s
CI / test (push) Failing after 21s
CI / build (push) Has been skipped
2026-06-04 23:43:14 -04:00
bruno 8c4ce5e3c0 fix: vaulthome.js import safeCreateIcons from utils.js instead of viewer.js
CI / lint (push) Successful in 13s
CI / security (push) Successful in 9s
CI / test (push) Failing after 26s
CI / build (push) Has been skipped
2026-06-04 23:35:16 -04:00
bruno 3b53de1b33 fix: resolve 57 ruff lint errors (unused imports, unused variables, import placement)
CI / lint (push) Failing after 14s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 11s
2026-06-04 23:32:47 -04:00
bruno 182e40800e docs: roadmap #20-29 marked FAIT
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 8s
2026-06-04 23:24:01 -04:00
bruno 5c5ef561cf feat: Mermaid.js integration #20-29 — full diagram support
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 7s
- CDN: mermaid@11 from jsdelivr
- mermaid-viewer.js: init, render, templates, zoom/pan, fullscreen, focus
- All diagram types: flowchart, sequence, class, state, ER, journey, gantt,
  pie, gitGraph, requirement, mindmap, timeline, quadrant, C4 (x4), beta types
- viewer.js: auto-render Mermaid blocks after markdown rendering
- utils.js: live preview panel in editor (debounced 500ms)
- app.js: initMermaid + setupFocusMode on startup
- CSS: container, controls, error, fullscreen overlay, focus panel, live preview
- Export SVG/PNG download buttons
- Obsidian preprocessor ([[links]], ![[img]], ==highlight==)
2026-06-04 23:23:21 -04:00
bruno 4674328303 docs: add Mermaid UX features #25-29 + clean duplicate #14
CI / lint (push) Failing after 8s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 8s
2026-06-04 23:16:47 -04:00
bruno 6e8a51b21a docs: add Mermaid.js integration roadmap #20-24 + bump to v2.0.0-dev
CI / lint (push) Failing after 7s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 9s
2026-06-04 23:11:31 -04:00
bruno 9e552aa87d docs: roadmap #15-#19 marked FAIT
CI / lint (push) Failing after 3s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 9s
2026-06-04 21:36:34 -04:00
bruno 47dc79683f feat: backup manager #15 #16 #17 #18 #19 — preview, restore, purge vault, compress, auto-backup
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 8s
#15: Click backup item to preview content in side panel (100KB limit)
#16: Purge all backups per vault (red 'Vider' button)
#17: /api/backups/compress — gzip backups older than N days
#18: /api/backups/auto — backup files modified since N hours
#19: Restore button per backup in manager with timestamp extraction
+ Professional side-panel preview, action buttons on hover, vault grouping
2026-06-04 21:36:05 -04:00
bruno 7af347b6be fix: /api/backups — fpath.st_size -> fpath.stat().st_size + try/except
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 8s
2026-06-04 20:24:58 -04:00
bruno 7720d9b96f docs: update ROADMAP — added backup management items #14-19 + reorganized
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 9s
2026-06-04 20:20:31 -04:00
bruno fb87c9f7c3 feat: backup management page + max backups config + auto-cleanup
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 9s
- Config: max_backups_per_file (default 10) in config.json + UI field
- Auto-cleanup: _backup_file deletes oldest backups when limit exceeded
- New endpoints: GET /api/backups (list all), POST /api/backups/delete,
  POST /api/backups/purge (by file or vault)
- New module: backup-manager.js - full-page view with filter, grouped by
  vault/file, individual delete, per-file purge, stats
- Link from backup viewer footer: 'Gerer tous les backups'
2026-06-04 20:15:31 -04:00
bruno ca132c2668 fix: rewrite backups.js with pure ASCII, no template literals - avoids encoding corruption
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 8s
2026-06-04 19:38:22 -04:00
bruno 71646ccfb0 chore: bump service worker cache version to v1.9.0
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 9s
2026-06-04 19:27:15 -04:00
bruno 1f44fc9dfd fix: diff mode button uses ASCII-only text to avoid UTF-8 corruption
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 10s
2026-06-04 19:18:32 -04:00
bruno 0c2b70d3f9 fix: diff mode button now has visible text label (Côte à côte / Unifiée)
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 9s
2026-06-04 18:59:04 -04:00
bruno 652bcb9eef fix: export focusPathInSidebar from sidebar.js and import in viewer.js
CI / lint (push) Failing after 5s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 7s
Breadcrumb path clicks called focusPathInSidebar() which was defined
in sidebar.js but never exported or imported by viewer.js
2026-06-04 18:52:28 -04:00
bruno 8c5a5fd6b2 feat: side-by-side diff view + auto-save skips backup
CI / lint (push) Failing after 7s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 10s
- Side-by-side diff: toggle button (columns-2/align-justify icon) in toolbar
  switches between unified and side-by-side view
- Backend: diff endpoint returns left_content + right_content for side-by-side
- Frontend: SequenceMatcher-based LCS diff for two-column rendering
- CSS: .backup-diff-sidebyside with left/right borders, empty cell styling
- Auto-save: PUT /save?backup=false skips backup creation (auto-save=no backup)
- Footer text updated to reflect backup-on-manual-save behavior
2026-06-04 18:37:14 -04:00
bruno 1e9ecf656f fix: add missing timezone import in main.py
CI / lint (push) Failing after 6s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 9s
_list_backup_files uses datetime.fromtimestamp(ts, tz=timezone.utc)
but only datetime was imported, not timezone
2026-06-04 17:20:44 -04:00
bruno 21117da114 fix: backup listing uses same vault for read/write + global close handler
CI / lint (push) Failing after 16s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 9s
- _get_backup_dir: now resolves relative path using the SPECIFIC vault's
  directory (matching _backup_file exactly), not the first vault in index
- Removed _get_backup_root (unused after refactor)
- backups.js: global document click handler for #backup-close (same
  pattern as Graph View's initGraphView)
2026-06-04 17:10:40 -04:00
bruno 67043a76e5 fix: store .obsigate-backup inside vault directory (not parent) for Docker write permissions
CI / lint (push) Failing after 5s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Failing after 5s
- _backup_file: backup_root = vault_path / '.obsigate-backup' (was vault_parent / ...)
- _get_backup_root: same resolution — inside vault, not parent
- Fixes PermissionError on Docker where /vaults/ is read-only
2026-06-04 16:51:07 -04:00
bruno 9f05059800 fix: backup close button is now a STATIC element in overlay (never replaced by innerHTML)
CI / lint (push) Failing after 5s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Failing after 11s
- Close button created once in createOverlay() as a static DOM element
  outside the panel, positioned absolutely (top-right corner)
- Never touched by setBody() innerHTML replacements
- Uses same class/id pattern as Graph View: editor-btn + backup-close
- Handler attached via addEventListener ONCE, never needs re-binding
- Removed all CLOSE_BTN from render functions (loading/error/empty/main)
2026-06-04 16:36:37 -04:00
bruno 05ac6cd756 fix: rewrite backup viewer close button — match editor-btn pattern
CI / lint (push) Failing after 2m24s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Failing after 5s
- Close button: <button class="backup-close-btn"><i data-lucide="x"></i></button>
  (same HTML pattern as AdminPanel editor-btn)
- Handler: addEventListener via DOM query in setBody() after innerHTML
  (same JS pattern as AdminPanel)
- Removed all inline onclick, global capture handler, window._backupViewerClose
- CSS: .backup-close-btn now matches .editor-btn style (bordered icon button)
- Escape key + overlay click still work for closing
2026-06-04 16:06:39 -04:00
bruno bc8083fd6b fix: backup storage relative to vault parent + global capture click handler for close button
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Failing after 5s
- _backup_file: resolve relative backup path against vault parent (survives CWD changes)
- _get_backup_root: same resolution logic for listing
- backups.js: global document-level capture-phase click handler for .backup-close-btn
  (works regardless of innerHTML replacements, text node targets, or event bubbling)
2026-06-04 15:22:02 -04:00
bruno af05604e99 fix: backup viewer close button — add missing onclick to renderError + Escape key + proper cleanup
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 17s
2026-06-04 15:12:38 -04:00
bruno e22967ada8 fix: inline rename uses .tree-item-text span instead of direct text node
CI / lint (push) Failing after 5s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 9s
2026-06-04 15:01:05 -04:00