bruno
55696bfb31
feat(ai): phase B function calling in-app (agent loop + endpoint /agent)
...
CI / lint (push) Successful in 57s
CI / security (push) Successful in 39s
CI / test (push) Successful in 1m13s
CI / build (push) Successful in 36s
CI / e2e (push) Successful in 10m13s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
- backend/ai_chat.py: chat_completion provider-agnostique (OpenAI-compat tools/tool_calls + Gemini functionDeclarations/functionCall), retry sans tools si rejete
- backend/agent/loop.py: run_agent multi-etapes (limite 10, truncation, confirmation two-step), LLM injectable
- endpoint opt-in POST /api/ai/bookslm/agent (events SSE tool/message/confirmation), extraction _resolve_system_prompt
- tests: test_ai_chat.py, test_agent_loop.py + 3 tests endpoint (728 passed au total)
- ROADMAP B1/B2/B3/B7 livres ; B4/B5/B6 restants
2026-09-11 12:45:16 -04:00
bruno
5c1823d6d2
feat(ai): phase 0 couche d'outils partagee (backend/tools) + tests
...
CI / lint (push) Successful in 57s
CI / security (push) Successful in 39s
CI / test (push) Failing after 41s
CI / build (push) Skipped
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
- backend/tools/: ToolContext, registry @tool + schemas JSON, audit ai_tool_call
- Services lecture/recherche: list_vaults, list_directory, read_file, search_fulltext, list_tags
- Permissions check_vault_access + resolve_safe_path, confirmation gating (two-step)
- Redaction des secrets, limites de taille, audit JSONL (args sensibles resumes)
- tests/test_tools.py: 30 tests (registry, contexte, execution, confirmation, audit)
- ROADMAP: item #79 phase A livree (A2 partiel)
2026-09-11 12:03:21 -04:00
bruno
e2153435dc
chore(version): passer la version a 2.2.1
...
CI / lint (push) Successful in 56s
CI / security (push) Successful in 38s
CI / test (push) Successful in 1m11s
CI / build (push) Successful in 35s
CI / e2e (push) Successful in 11m20s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
Defaut de build Docker et docs alignes sur 2.2.1.
2026-09-11 10:15:40 -04:00
bruno
84bda90065
fix(version): afficher 2.2.0 au lieu de 2.1.0 dans l'UI
...
Les 3 affichages (badge header, A propos, pied de l'aide) lisaient la version bakee dans l'image Docker, qui retombait sur l'ARG VERSION=2.1.0 car build.sh/build.ps1 ne transmettaient pas le tag git.
- Dockerfile / docker-compose.yml : defaut porte a 2.2.0
- build.sh : export VERSION pour substitution par docker compose
- build.ps1 : version derivee de git describe puis exportee
- CHANGELOG / ROADMAP alignes sur 2.2.0
2026-09-11 09:57:59 -04:00
bruno
d6fdcef4d4
feat(ai): assistant AI multi-contexte + ergonomie sidebar et clavier
...
CI / lint (push) Successful in 1m12s
CI / security (push) Successful in 43s
CI / test (push) Successful in 1m10s
CI / build (push) Successful in 35s
CI / e2e (push) Successful in 11m47s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
Contexte:
- Repertoire (mode historique BooksLM, via menu contextuel dossier)
- Documents (bouton flottant quand des documents sont ouverts)
- General (bouton flottant sans document: aide app + creation de fichiers)
- Le contexte est affiche dans le header; suggestions adaptees au mode
- Blocs obsigate-action rendus en carte avec bouton Appliquer (pas d'execution auto)
Backend:
- /api/ai/bookslm/context et /chat acceptent mode + context_files
- collect_files_context(), empty_context(), build_general_system_prompt()
- mode documents degrade vers general si aucun fichier lisible
Corrige:
- bouton flottant passait le chemin d'un fichier comme repertoire -> erreur
'Aucun fichier markdown trouve dans ce dossier'
- panneau precedent masque (localStorage) ne se rouvrait plus
- selecteur fournisseur/modele deplace sur une ligne dediee (header actions visibles)
- Entree envoie, Ctrl+Entree insere un saut de ligne
Tests: test_bookslm.py (+13) et tests/frontend/ai.test.mjs (+8)
2026-09-11 09:11:00 -04:00
bruno
62023acd4d
feat(api,ai): #72 OpenAPI 3.1 enrichie + fiabilisation de l'outil AI UI
...
CI / lint (push) Successful in 55s
CI / security (push) Successful in 37s
CI / test (push) Successful in 1m19s
CI / build (push) Successful in 34s
CI / e2e (push) Successful in 10m27s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
API (#72 ):
- backend/openapi_docs.py: 18 tags documentes, assignation auto par prefixe,
securite bearerAuth/cookieAuth, erreurs 401/403/404/422/500, exemples,
page /api autonome (liens /docs, /redoc, /openapi.json)
- backend/schemas.py: response_model Pydantic pour ~35 endpoints sans modele
- main.py: FastAPI enrichi + override app.openapi; routes /api et /api/
- ai_routes/bookslm_routes: response_model + doc SSE
- frontend: entree 'API' du menu (i18n FR/EN)
- tests/test_openapi.py (58 tests)
AI UI:
- BooksLM: requetes authentifiees (AuthManager), parsing SSE {token}/error,
message utilisateur correct (plus le placeholder vide), barre de contexte
- AI Editor: Ctrl/Cmd+J lie une seule fois, libelles i18n, modale de
reecriture accessible a la place de window.prompt()
- tests/frontend/ai.test.mjs (7 tests) + CI
2026-09-11 01:40:21 -04:00
bruno
0cbbbf260a
fix(search,excalidraw,e2e): recherche cassee + corruption .excalidraw.md + tests E2E #78
...
CI / lint (push) Successful in 54s
CI / security (push) Successful in 38s
CI / test (push) Successful in 1m7s
CI / build (push) Successful in 33s
CI / e2e (push) Failing after 10m52s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
- frontend/js/search.js : onSearchFilter appelee avec (vault, query, results) — renvoyait undefined, cassait le rendu et basculait sur la recherche offline (0 resultat). Regression plugins depuis 30f2df3 .
- frontend/excalidraw-editor.html + js/excalidraw-viewer.js : ignorer onChange au montage (plus d'auto-save spurieux qui reecrivait .excalidraw.md en JSON brut) + preservation du format Obsidian frontmatter + compressed-json a la sauvegarde.
- frontend/js/app.js : __OBSIGATE_BOOTED pose apres init() (splash + E2E attendent les handlers lies).
- tests/e2e : goHome/login attendent le boot ; excalidraw.spec.js reecrit avec les selecteurs reels (modal, context menu, canvas.first()).
- ROADMAP : C8 (creation via menu contextuel) marque fait.
- Verifie : 86/86 E2E chromium-desktop, 599 backend, ruff, validate-imports, JSDOM.
2026-09-10 22:51:08 -04:00
bruno
4f99d5ce61
docs(excalidraw,roadmap): #78 H1-H3 doc utilisateur + #61/#74 optionnels non retenus
...
CI / lint (push) Successful in 55s
CI / security (push) Successful in 39s
CI / test (push) Successful in 1m6s
CI / build (push) Successful in 34s
CI / e2e (push) Failing after 22m30s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
- README FR/EN : .excalidraw dans les formats supportes + section Diagrammes Excalidraw
- Guide integre : nouvelle section Excalidraw (i18n FR/EN) + note compatibilite plugin Obsidian
- ROADMAP : #78 termine (B5/F3/H1-H3), C8/F2 non retenus ; #61 et #74 optionnels marques non retenus
- CHANGELOG : entree Documentation
2026-09-10 20:51:25 -04:00
bruno
30f2df3004
feat: #61 Plugin system — backend API, sandboxed Web Worker, hooks wired to real app flow, user guide, 47+21 tests
CI / lint (push) Failing after 30s
CI / build (push) Skipped
CI / security (push) Successful in 35s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
2026-09-10 09:01:38 -04:00
bruno
212753f311
test(e2e): #75 I3 — matrice ouverture/fermeture split view (21 tests) + fix chemins Windows run-e2e-local.sh
CI / lint (push) Successful in 42s
CI / security (push) Successful in 27s
CI / test (push) Successful in 55s
CI / build (push) Successful in 23s
CI / e2e (push) Successful in 9m33s
2026-09-08 09:38:10 -04:00
bruno
ccfcb58ed1
docs(roadmap): corrections cases #74/#75/#76/#78 — optionnels non retenus de-coches, reels coches, dedup I2/I3
CI / lint (push) Successful in 44s
CI / security (push) Successful in 26s
CI / test (push) Successful in 53s
CI / build (push) Successful in 22s
CI / e2e (push) Successful in 6m0s
2026-09-08 06:25:46 -04:00
bruno
f9d2c0d2d4
docs(roadmap): menage — aligne le roadmap sur le code reel (#59,63-66,71,74-77,78), resume efforts recalcule + CHANGELOG 2.1.0
CI / lint (push) Successful in 41s
CI / security (push) Successful in 28s
CI / test (push) Successful in 52s
CI / build (push) Successful in 1m10s
CI / e2e (push) Successful in 6m1s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
2026-09-08 00:12:28 -04:00
bruno
ec56bc32f8
feat(pdf): tests pytest + fix bug NameError pour #74
...
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
- tests/test_pdf.py : 13 tests (100% verts) couvrant :
- extract_pdf_text/metadata/toc avec edge cases (corrupt, missing, truncation)
- .pdf dans SUPPORTED_EXTENSIONS
- _scan_vault() extrait le texte des PDFs (vérifié avec fixture reportlab)
- parseur du filtre ext:pdf
- backend/pdf_reader.py : fix NameError quand pymupdf est installé
(PdfReader n'était déclaré que dans la branche except ImportError)
- backend/requirements-test.txt : reportlab pour générer des PDFs de test (devDep only)
- README.md + README.fr.md : section 'PDF support' documentée
- docs/ROADMAP.md : #74 marqué 'pratiquement complet' avec détail honnête des items livrés vs non
- CHANGELOG.md : entrées pour #71 admin (déjà dans commit précédent), #75 I2 et #74
2026-09-07 08:54:55 -04:00
bruno
99c9acccb0
docs(roadmap): #76 BooksLM marqué FAIT + providers AI étendus
CI / lint (push) Failing after 17s
CI / build (push) Skipped
CI / security (push) Successful in 21s
2026-09-06 19:43:07 -04:00
bruno
6292bfd9cb
docs(roadmap): #64 #65 #66 marqués FAIT
CI / lint (push) Failing after 17s
CI / build (push) Skipped
CI / security (push) Successful in 20s
2026-09-06 18:43:57 -04:00
bruno
09912509cb
docs(roadmap): #77 Desktop marqué complet — D/E/F mis à jour
...
CI / lint (push) Failing after 16s
CI / build (push) Skipped
CI / security (push) Successful in 21s
- D. Build et distribution: build local vérifié, CI existant
- E. UX: crash handler, preferences save, first-run defaults
- F. Tests: 16 tests Rust, build debug+release OK
- Items optionnels restants: wizard interactif, jumplist, signature code
2026-09-06 18:25:29 -04:00
bruno
331c614330
feat(boot): écran de chargement inline + staging backend/frontend pour le bundle desktop
...
CI / lint (push) Failing after 16s
CI / build (push) Skipped
CI / security (push) Successful in 18s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
- frontend/index.html : splash #boot-splash 100% inline (CSS+JS), scripts CDN en defer pour ne pas bloquer le premier paint
- frontend/js/app.js : signale le boot terminé via __OBSIGATE_BOOTED (try/finally)
- desktop/src/main.rs : met à jour le statut du splash avant la redirection vers le backend
- ci: stage backend/ + frontend/ sous desktop/ avant tauri build (resources backend/** et frontend/**) dans desktop-build.yml et build-linux.sh
- desktop/gen/schemas/windows-schema.json : régénéré (permissions store/updater)
- docs: README, README.fr, ROADMAP
2026-08-24 15:50:49 -04:00
bruno
ff38dd086e
docs(roadmap): #78 — ajout création .excalidraw (modale, menu contextuel, squelette JSON)
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 19s
2026-07-29 10:44:40 -04:00
bruno
7b02bc9ab4
docs(roadmap): ajout #78 — Éditeur Excalidraw (.excalidraw)
CI / lint (push) Failing after 11s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Successful in 32s
2026-07-29 10:38:49 -04:00
bruno
66d9c17985
chore: ROADMAP #75 — sections synchronisées (C1b/D2/E3/E4/G3 cochées)
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 12s
2026-07-28 10:20:26 -04:00
bruno
03e115b65b
feat: #75 complété — 5 dernières sous-tâches implémentées
...
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 12s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
C1b: Sous-menu « Déplacer vers... » (flyout hover) — liste les autres panneaux
D2: Drag depuis l'arborescence vers panneau — format 'tree:{vault,path}'
E3: Rendu paresseux — display:none sur contenu des panneaux inactifs
E4: Verrouillage éditeur — même fichier déjà ouvert → focus le panneau existant
G3: Bouton reset (🔄 Réinitialiser les panneaux) dans la palette
ROADMAP: section 75 marquée ✅ Complété (reste I2/I3 tests)
2026-07-28 10:15:50 -04:00
bruno
804e6313b3
feat: finalisation split view #75 — boutons, nav clavier, palette, ROADMAP
...
CI / lint (push) Failing after 12s
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
Ajouts:
- C3: Boutons Split ⊞→ ⊞↓ dans la barre d'onglets (visibles au survol)
- C2: Ctrl+Alt+←/→/↑/↓ navigation entre panneaux
- C2: Ctrl+Shift+Alt+W fermer tous les autres panneaux
- H1: 5 commandes palette (Split R/D, Close Pane, Focus Next/Prev)
- ROADMAP.md: section 75 mise à jour avec statut 80% complété
CSS: .tab-split-buttons, .tab-split-btn avec opacity hover
2026-07-28 10:08:11 -04:00
bruno
82fe053c7d
feat: Phase 3 Desktop — native menu, auto-update, hidden terminal
...
CI / lint (push) Successful in 26s
CI / security (push) Successful in 13s
CI / test (push) Successful in 31s
CI / build (push) Successful in 6s
CI / e2e (push) Failing after 33s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled
- #![windows_subsystem = "windows"]: no console window on Windows release builds
- CREATE_NO_WINDOW (0x08000000): Python backend subprocess hidden on Windows
- Native menu bar: Fichier (N/Fermer/Quitter) + Edition (Undo/Redo/Cut/Copy/Paste/SelectAll) + Aide (About)
- Auto-update: tauri-plugin-updater checks Gitea releases endpoint
- tauri.conf.json: updater plugin config with passive install mode
- ROADMAP: Phase 3 marked as complete (11/11 subtasks done)
2026-07-27 00:45:23 -04:00
bruno
593bb9d9c2
feat: CI/CD workflow for automated MSI/AppImage/deb desktop build
...
CI / lint (push) Successful in 24s
CI / security (push) Successful in 13s
CI / test (push) Successful in 27s
CI / build (push) Successful in 6s
CI / e2e (push) Failing after 24s
- .gitea/workflows/desktop-build.yml: compiles on push to main
- Windows runner: Rust + Tauri + Python embed → MSI
- Linux runner: Rust + Tauri + webkit2gtk → AppImage + .deb
- Artifacts uploaded with 30-day retention
- Triggers when desktop/, frontend/, or backend/ changes
- Manual trigger via workflow_dispatch
- Updated ROADMAP #77 to mark CI/CD as done
2026-07-24 18:07:03 -04:00
bruno
8fd69b4b50
docs: add #77 Tauri Desktop app to ROADMAP + begin Windows binary design
...
CI / lint (push) Successful in 26s
CI / security (push) Successful in 13s
CI / test (push) Successful in 36s
CI / build (push) Successful in 22s
CI / e2e (push) Failing after 20s
- New P2 section: Desktop native app with Tauri/Rust
- Architecture: Rust shell → spawn Python backend → webview frontend
- 6 phases: init, Python sidecar, native features, build, UX, tests
- Windows .msi + Linux .AppImage/.deb targets
- Auto-update, tray icon, file associations, system theme
- Updated effort summary: +1 item, 60-80 jours total
2026-07-24 17:59:04 -04:00
bruno
ca721c128c
docs: remove #60 OAuth2, enrich 7 feature descriptions in ROADMAP
...
CI / lint (push) Successful in 25s
CI / security (push) Successful in 18s
CI / test (push) Successful in 33s
CI / build (push) Successful in 5s
CI / e2e (push) Failing after 32s
- Removed #60 OAuth2/OIDC from backlog
- Enriched with plain-language explanations + importance rationale:
- #64 MFA (TOTP + WebAuthn + recovery codes)
- #62 Collaboration temps réel (WebSocket + Yjs/CRDT + awareness)
- #67 Notifications Push API (VAPID + service worker)
- #68 Health check enrichi (memory, disk, backups, connections)
- #70 Recherche sémantique (embeddings + FAISS + recherche hybride)
- #71 Dashboard administrateur (widgets temps réel + users + audit)
- #72 API publique OpenAPI 3.1 (Swagger UI + Redoc)
- Updated effort summary: 18 items restants, 52-68 jours
2026-07-24 16:25:20 -04:00
bruno
cb402ac942
docs: mark i18n roadmap point #63 as complete
CI / lint (push) Failing after 26s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after 10s
2026-06-19 10:37:21 -04:00
bruno
0bd2c12c13
docs: update roadmap point #63 i18n with current status
...
CI / lint (push) Failing after 19s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after 10s
- Marked completed: locale files, t() function, language selector, UI, help guide
- Marked remaining: backend messages, docs i18n, unused keys cleanup, JS files audit
- Estimated completion: 90%
2026-06-19 10:18:37 -04:00
bruno
c51bf0eab0
roadmap: ajout #76 BooksLM — console AI contextuelle style NotebookLM par répertoire
CI / lint (push) Failing after 19s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after 10s
2026-06-18 23:45:11 -04:00
bruno
671befe610
feat: #59 finalisation mode hors-ligne PWA — badge + conflits
...
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after -6s
- Badge hors-ligne dans le header (icone wifi-off + compteur pending)
- Modale resolution de conflits (garder local vs serveur)
- CSS offline-indicator, offline-pending badge
- Integration: initOffline (sync.js), cacheViewedFile (viewer.js), searchOffline (search.js)
- IndexedDB: files, content, pending stores avec sync queue
- ROADMAP: #59 marque FAIT
2026-06-15 23:04:47 -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
89b0a5a024
Consolidate roadmap files into docs/ROADMAP.md
2026-06-09 10:38:50 -04:00
bruno
8f3e602869
docs: CHANGELOG.md + README v1.7.0 + ROADMAPs mis à jour
2026-06-02 09:27:11 -04:00
bruno
58a0ffc76c
feat: quick wins - dockerignore, env secrets, gzip, cache-control
...
- Add .dockerignore to exclude .git, __pycache__, docs, etc. from Docker context
- Create .env.example template with documented env vars
- Move OBSIGATE_ADMIN_PASSWORD from docker-compose.yml to env_file: .env
- Add .env.* to .gitignore (excluding .env.example)
- Enable GZipMiddleware for ~70% bandwidth reduction on text responses
- Add Cache-Control: immutable for /static/ assets
- Update ROADMAP: mark all 4 quick wins as done, add audit findings
- Add comprehensive technical audit report (AUDIT_TECHNIQUE_2026-05-27.md)
2026-05-27 20:35:08 -04:00
bruno
0b611a8735
Add share, webhook, and conflict management features
2026-05-26 11:00:48 -04:00
bruno
482937fb30
Add audit logging, rate limiting, secret redactor, and backlinks
...
Implement several security and feature improvements across the backend
and frontend:
- New IP-based rate limiter for authentication endpoints
- New audit logging system for sensitive operations
- New secret redactor to mask sensitive patterns in rendered content
- Configurable token TTL and IGNORED_DIRS via environment variables
- Add backlink index and API endpoint
- Add preview tab support with single/double-click behavior in tree
- Add file backup before write/delete operations
2026-05-26 10:27:00 -04:00
bruno
5280dc7a50
Add comprehensive documentation and analysis files
...
Add extensive project documentation including analysis review, image
rendering changelog and guide,
contributing guidelines, hidden files configuration guide, PWA
documentation suite, roadmap, and
dashboard specification.
2026-05-26 08:35:58 -04:00