bruno
6da7fa6786
fix(wikilinks): supporte les ancres internes [[#Titre|Texte]] et corrige les IDs de titres
...
CI / lint (push) Failing after 19s
CI / build (push) Skipped
CI / security (push) Successful in 23s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
- Ajoute la reconnaissance de la syntaxe Obsidian [[#Titre|Texte]] pour
créer des liens d'ancre vers les titres du document courant.
- Corrige _heading_slugify pour ignorer les balises HTML et décoder les
entités HTML (ex. &) avant de générer l'ID, évitant ainsi la
pollution par les wikilinks placés dans les titres.
- Ajoute le style .wikilink-anchor et des tests couvrant ces cas.
Fixe le rendu du document TestDir/Agents IA - Panorama Complet 2026.md.
2026-08-13 15:24:52 -04:00
bruno
1b5319fde1
feat(excalidraw): support complet des fichiers .excalidraw ( #78 )
...
CI / lint (push) Failing after 9s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 13s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
- Backend: ajout .excalidraw dans SUPPORTED_EXTENSIONS + squelette JSON creation
- Backend: détection is_excalidraw dans api_file() + FileContentResponse
- Frontend: icône pen-tool dans EXT_ICONS
- Frontend: ajout dans la modale de création (ui.js)
- Frontend: excalidraw-editor.html (iframe autonome, React+Excalidraw via esm.sh)
- Frontend: excalidraw-viewer.js (postMessage, auto-save 2s, thème)
- Frontend: dispatch dans viewer.js (renderFile)
- Tests: 6 tests (détection, création squelette, fallback, tree, roundtrip)
- 359/359 tests passent
2026-07-29 10:55:00 -04:00
bruno
ffefe4eb16
fix: grille CSS grid-row/column explicites pour 2/3/4 panneaux
...
CI / lint (push) Failing after 9s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 13s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
Refonte complète du layout grid:
- _computePanePositions: positions explicites (row/col/span) selon n et layout
- _createPaneAt: grid-row/grid-column explicites sur chaque .pane-container
- _addAllResizeHandles: handles placés aux bonnes positions grid
- _rebuildResizeHandles: nettoie et recrée les handles après add/remove
- closePane: repositionne les panneaux restants + rebuild handles
- 3 panneaux horizontal: 2 en haut, 1 pleine largeur en bas
- 3 panneaux vertical: 1 pleine hauteur à gauche, 2 à droite
- 4 panneaux: grille 2×2
Fix aussi: _addPane avec positions explicites + rebuild handles
2026-07-28 11:08:08 -04:00
bruno
257e35198d
fix: split view — supprimé display:none qui cachait les panneaux inactifs
...
CI / lint (push) Failing after 9s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 13s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
Problème: le lazy rendering masquait le contenu du panneau non-sélectionné
→ split view devenait inutile (un seul panneau visible à la fois)
→ Solution: supprimé display:none dans setActivePane, tous les panneaux visibles
Test mis à jour: test_panes_remain_visible_when_inactive
2026-07-28 10:53:27 -04:00
bruno
38569c2f9f
test: I2 + I3 — 46 tests d'intégration + suite E2E Playwright
...
CI / lint (push) Failing after 9s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 16s
I2 (test_pane_manager.py): 46 nouveaux tests
- Module structure: 10 tests (exports, methods, factory, max panes)
- Data flow: 8 tests (drag format, tree format, JSON, migration, localStorage)
- DOM flow: 7 tests (grid, IDs, lazy render, collapse, empty pane, transfer)
- Keyboard: 6 tests (all shortcuts + preventDefault counts)
- Context menu: 4 tests (split, move-to, close actions)
- CSS: 7 tests (grid, container, resize, drop zone, buttons, responsive)
- HTML/App: 5 tests (wrapper, tab-bar, modules, imports)
- Palette: 3 tests (commands, reset, category)
- Editor lock: 2 tests
- Dashboard: 1 test (TabManager vs openFile)
I3 (tests/e2e/): suite Playwright complète
- package.json, playwright.config.js, split-view.spec.js
- 12 test specs: basic ops, tab drag, tree drag, persistence, regression, keyboard nav
- Exécution: cd tests/e2e && npm install && npx playwright test
Total: 353 tests passent (307 + 46)
2026-07-28 10:27:15 -04:00
bruno
ed4c1dcf07
feat: split view pro — TabManager indépendant par panneau avec drag & drop cross-pane
...
CI / lint (push) Failing after 10s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 17s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
- PaneTabManager factory: chaque panneau a sa propre instance avec ses propres onglets
- Drag & drop d'onglets entre panneaux (application/obsigate-tab dataTransfer)
- Split copie l'onglet actif dans le nouveau panneau
- TabManager singleton: délégation automatique vers le panneau actif en mode split
- Persistance complète par panneau (tabs, activeTab, previewTab)
- viewer.js: getContentArea() priorise window._activePaneContentArea
- 307 tests verts, déployé sur 192.168.30.101:2020
2026-07-27 21:37:04 -04:00
bruno
b27b38d32b
feat: split view multi-panneaux ( #75 ) — PaneManager intégré avec split right/down, menu contextuel, raccourcis clavier, CSS responsive et tests
...
CI / lint (push) Failing after 35s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 15s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
- PaneManager: splitRight/splitDown avec 1-4 panneaux, persistance localStorage, resize
- Viewer/TabManager pane-aware: fonctions getContentArea/getTabBar/getTabList
- Menu contextuel onglets: actions Diviser à droite / Diviser en bas / Fermer le panneau
- Raccourcis clavier: Ctrl+Alt+\ (split right), Ctrl+Alt+Shift+\ (split down), Ctrl+Alt+W (fermer panneau)
- CSS pane-grid: grille, poignées resize, bordure active pane, responsive (désactivé <768px)
- Tests: 22 nouveaux tests unitaires + régression (307 total, 100% green)
- Déployé sur Docker test (localhost:2021)
2026-07-27 21:06:47 -04:00
bruno
3f11f4715c
fix: E2E port conflict — 2020→2029 + cleanup stale container
...
CI / lint (push) Successful in 25s
CI / security (push) Successful in 13s
CI / test (push) Successful in 31s
CI / build (push) Successful in 7s
CI / e2e (push) Failing after 37s
- Port 2020 already in use on CI runner
- Changed to port 2029 in CI workflow + playwright config + test
- Added docker rm -f obsigate-e2e before starting
2026-07-24 12:03:53 -04:00
bruno
9af68cfcd7
fix: exempt all 7 modules without imports from frontend test
...
CI / lint (push) Successful in 23s
CI / security (push) Successful in 14s
CI / test (push) Successful in 32s
CI / build (push) Successful in 56s
CI / e2e (push) Failing after 1m52s
- autocomplete.js, i18n.js, offline-db.js, pane-manager.js
- themes.js, sidebar_raw.js, state.js
- All standalone/no-dependency modules
2026-07-24 11:55:02 -04:00
bruno
32a177f5aa
fix: autocomplete.js exempted from import check — standalone module
...
CI / lint (push) Failing after 34s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 14s
- autocomplete.js uses globals (var) with no ES module imports
- Added to test exemption list alongside state.js
2026-07-24 11:53:05 -04:00
bruno
8248bb0846
feat: #58 Tests E2E Playwright — 44 tests desktop + CI
...
CI / lint (push) Failing after 6s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after -6s
- playwright.config.ts: chromium-desktop + chromium-mobile
- tests/e2e/obsigate.spec.ts: 44 tests en 11 sections
- Dashboard & Navigation (8 tests)
- Full-Text Search (10 tests)
- File Navigation & Viewer (5 tests)
- Editor (4 tests: Forge, basic modal, Ctrl+S)
- Mermaid Diagrams (2 tests)
- PDF Export, Dark Mode, Responsive, Saved Searches
- Keyboard Shortcuts (Ctrl+K, /, Escape)
- Context Menu directory
- CI: nouveau job e2e dans .gitea/workflows/ci.yml
- ROADMAP: #58 marque FAIT
- .gitignore: node_modules, test-results, playwright-report
2026-06-15 22:54:30 -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
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
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
ce51ed18e4
docs: Export PDF marqué FAIT (déjà implémenté) + test PDF endpoint
CI / lint (push) Failing after 6s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 8s
2026-06-02 11:41:37 -04:00
bruno
3151721aad
test: coverage 70% — +109 tests (api integ, auth api, watcher mocked)
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-02 10:21:13 -04:00
bruno
e1a658cbcc
Add test infrastructure and example vault content
...
CI / lint (push) Failing after 9s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 27s
- Add docker-compose.test.yml for isolated testing
- Add test vault with sample Markdown notes across categories
- Add frontend audit script for module validation
- Increment user failed_attempts in test data
2026-06-02 09:28:37 -04:00
bruno
ffc6dac172
feat: frontend tests — import/export validator + unit tests + CI integration
...
CI / lint (push) Successful in 14s
CI / security (push) Successful in 11s
CI / test (push) Successful in 17s
CI / build (push) Successful in 2s
- tests/frontend/validate-imports.mjs: 0 errors on 13 modules, 79 exports
Detects: missing exports, broken imports, const reassignments
- tests/frontend/unit.test.mjs: escapeHtml, state object, module syntax
- Added to CI lint job (runs after Ruff + Mypy)
2026-05-28 18:46:10 -04:00
bruno
8d1b766947
test: expand coverage to 49% (+78 new tests, 175 total)
...
Add 78 new tests targeting high-impact uncovered modules:
- tests/test_search_advanced.py (23 tests): InvertedIndex CRUD,
search/advanced_search/suggest functions, tag/title indexing
- tests/test_indexer_advanced.py (15 tests): hooks, file CRUD,
path index, lookup, generation counter
- tests/test_modules.py (40 tests): audit, history, rate limit,
saved searches, vault settings, webhooks, share
Coverage improvements:
ratelimit.py: 80% → 100%
share.py: 24% → 97%
saved_searches: 37% → 95%
history.py: 26% → 86%
audit.py: 0% → 85%
search.py: 44% → 82%
webhooks.py: 31% → 67%
vault_settings: 31% → 69%
indexer.py: 47% → 65%
Overall: 35% → 49%
2026-05-27 22:32:10 -04:00
bruno
edb9e98f81
test: add pytest suite - 97 tests, search + indexer + auth
...
Create comprehensive test suite with 97 passing tests:
- tests/conftest.py: fixtures (TestClient, temp vault dirs, index setup)
- tests/test_search.py (27 tests): tokenizer, snippets, highlight,
tag filter, search API, advanced search, suggest, tags API
- tests/test_indexer.py (32 tests): frontmatter parsing, inline tags,
title extraction, scan_vault, find_file_in_index, backlinks
- tests/test_auth.py (38 tests): password hashing, JWT create/decode,
token revocation, user CRUD, login lockout, rate limiting, middleware
Also fix: lazy WeasyPrint import (graceful fallback when GTK missing),
add data/ to .gitignore (runtime files from test runs).
2026-05-27 22:06:27 -04:00