bruno
8d768bf9d5
[fix] mypy Coffre + bump 2.80.2 : backend/coffre_crypto.py
2026-10-27 23:10:24 -04:00
bruno
01572736c0
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/webhooks.py
CI / security (pull_request) Successful in 1m57s
CI / lint (pull_request) Failing after 2m7s
CI / test (pull_request) Skipped
CI / build (pull_request) Skipped
CI / e2e (pull_request) Skipped
2026-10-27 22:58:14 -04:00
bruno
b6e5f01748
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/watcher.py
2026-10-27 22:58:11 -04:00
bruno
90da0ac990
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/tools/audit.py
2026-10-27 22:58:08 -04:00
bruno
bc26d1506b
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/share.py
2026-10-27 22:58:05 -04:00
bruno
769e3ca559
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/services/vaults.py
2026-10-27 22:58:02 -04:00
bruno
b5d789f02a
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/services/recent.py
2026-10-27 22:57:59 -04:00
bruno
c8dce25e0d
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/services/backups.py
2026-10-27 22:57:56 -04:00
bruno
b322e2d24a
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/scheduler.py
2026-10-27 22:57:53 -04:00
bruno
414ec69c0a
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/routers/realtime.py
2026-10-27 22:57:50 -04:00
bruno
f5ca656c04
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/routers/backups.py
2026-10-27 22:57:47 -04:00
bruno
e158232aba
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/push.py
2026-10-27 22:57:44 -04:00
bruno
632871ac24
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/notify.py
2026-10-27 22:57:40 -04:00
bruno
7af7b2c8c2
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/indexer.py
2026-10-27 22:57:36 -04:00
bruno
97132770e4
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/guide_export.py
2026-10-27 22:57:32 -04:00
bruno
683ad3ef94
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/export.py
2026-10-27 22:57:29 -04:00
bruno
604383f51c
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/coffre_store.py
2026-10-27 22:57:25 -04:00
bruno
bdeb2f00b3
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/coffre_crypto.py
2026-10-27 22:57:21 -04:00
bruno
8688875fae
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/bookslm_routes.py
2026-10-27 22:57:17 -04:00
bruno
a42271c7de
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/auth/user_store.py
2026-10-27 22:57:13 -04:00
bruno
cf4685eaf1
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/auth/router.py
2026-10-27 22:57:10 -04:00
bruno
5023fb6774
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/audit.py
2026-10-27 22:57:06 -04:00
bruno
04eb70cbe4
[fix] Corrections ruff CI (UP017/UP041/UP012/I001/F401/FURB162) : backend/admin.py
2026-10-27 22:57:01 -04:00
bruno
581a31161c
[Coffre Secrets] Phase 1a : dependance cryptography pour AES-GCM
2026-10-27 21:45:56 -04:00
bruno
5f8f93ba6c
[Coffre Secrets] Phase 1b : montage du routeur coffres a cote de config_router
2026-10-27 21:45:53 -04:00
bruno
40b3e9c5dd
[Coffre Secrets] Phase 1b : routeur /api/coffres, autorisations, octrois, distribution
2026-10-27 21:45:40 -04:00
bruno
2ffc219f47
[Coffre Secrets] Phase 1b : log_coffre_event dans audit.log (sans valeur)
2026-10-27 21:45:38 -04:00
bruno
02394d3278
[Coffre Secrets] Phase 1a : store coffres/valeurs/octrois/consommateurs (0600, atomique, RLock)
2026-10-27 21:45:35 -04:00
bruno
ff1ccca3cd
[Coffre Secrets] Phase 1a : chiffrement par enveloppe AES-256-GCM (KEK/DEK)
2026-10-27 21:45:32 -04:00
Spark
8e073438a3
fix: URLs sœurs dérivées de l'environnement de l'agent — le menu inter-apps ne pointe plus la prod depuis la dev BUG-120
CI / security (push) Successful in 1m55s
CI / lint (push) Successful in 3m5s
CI / test (push) Successful in 5m23s
CI / build (push) Successful in 1m46s
CI / e2e (push) Successful in 18m9s
2026-10-26 00:06:16 +00:00
Spark
6972e9ec87
fix: planchers de sécurité pip-audit — brotli, filelock, opentelemetry-api, pypdf #224
CI / security (push) Successful in 2m42s
CI / lint (push) Successful in 3m22s
CI / test (push) Successful in 5m34s
CI / build (push) Successful in 2m48s
CI / e2e (push) Successful in 19m15s
2026-10-25 21:02:57 +00:00
Spark
f29a22886a
feat: URLs publiques de l'écosystème par configuration — dev/prod sans noms en dur #223
CI / lint (push) Successful in 3m11s
CI / security (push) Failing after 1m55s
CI / test (push) Successful in 5m23s
CI / build (push) Successful in 2m35s
CI / e2e (push) Successful in 18m24s
2026-10-25 18:10:59 +00:00
Spark
287afa1537
fix: CSP — frame-src autorise la console du service d'agents (mode console du panneau Spark) BUG-119
CI / lint (push) Successful in 3m5s
CI / security (push) Failing after 1m49s
CI / test (push) Successful in 5m19s
CI / build (push) Successful in 1m36s
CI / e2e (push) Successful in 18m9s
2026-10-24 03:10:34 +00:00
Spark
f434f30286
feat: émission d'événements vers le journal du service d'agents #220
CI / lint (push) Successful in 2m53s
CI / security (push) Failing after 1m46s
CI / test (push) Successful in 4m57s
CI / build (push) Successful in 1m36s
CI / e2e (push) Successful in 17m40s
2026-10-22 19:58:25 +00:00
Spark
edef1ea708
feat: panneau Spark intégré à la barre commune (Fusion) #218
2026-10-22 03:43:17 +00:00
Spark
68d3dd85a9
feat: validation locale du jeton draco_session — repli SSO dans get_current_user ( #217 )
CI / lint (push) Successful in 3m34s
CI / security (push) Successful in 2m17s
CI / test (push) Successful in 5m38s
CI / build (push) Successful in 2m15s
CI / e2e (push) Successful in 18m31s
2026-10-20 23:47:45 -04:00
Spark
cb80b08f77
feat: émettrice SSO draco_session — cookie partagé .dracodev.net, renouvellement et révocation ( #216 )
CI / lint (push) Successful in 3m32s
CI / security (push) Successful in 2m18s
CI / test (push) Successful in 5m38s
CI / build (push) Successful in 3m52s
CI / e2e (push) Successful in 19m0s
2026-10-20 23:33:52 -04:00
Spark
e5577b9996
fix: planchers de sécurité des dépendances — pip-audit vierge (aiohttp, mcp, pillow, certifi)
CI / lint (push) Successful in 3m40s
CI / security (push) Successful in 2m23s
CI / test (push) Successful in 5m38s
CI / build (push) Successful in 3m16s
CI / e2e (push) Successful in 21m7s
2026-10-20 23:10:34 -04:00
Spark
9bc31d069b
feat: barre d'apps commune et références croisées des notes ( #215 )
CI / lint (push) Successful in 3m32s
CI / security (push) Failing after 2m27s
CI / test (push) Successful in 5m36s
CI / build (push) Successful in 2m12s
CI / e2e (push) Successful in 18m18s
2026-10-20 22:20:48 -04:00
bruno
411667fd88
feat: menu contextuel Déplacer/Dupliquer sidebar + réparation drag & drop interne #201 #BUG-117
CI / lint (push) Successful in 3m13s
CI / security (push) Successful in 1m59s
CI / test (push) Successful in 5m16s
CI / build (push) Successful in 1m52s
CI / e2e (push) Successful in 18m2s
2026-10-15 10:02:48 -04:00
bruno
2ebfe74459
perf: suppression de répertoire incrémentale au lieu du re-scan complet #BUG-113
CI / lint (push) Successful in 3m9s
CI / security (push) Successful in 1m55s
CI / test (push) Successful in 5m25s
CI / build (push) Successful in 1m48s
CI / e2e (push) Successful in 17m56s
2026-10-14 16:56:56 -04:00
bruno
6257adb46b
fix: CI security — bandit B112 sur search_shared_notes (nosec, continue délibéré)
CI / lint (push) Successful in 3m9s
CI / security (push) Successful in 1m56s
CI / test (push) Successful in 5m13s
CI / build (push) Successful in 1m47s
CI / e2e (push) Successful in 18m17s
2026-10-14 13:43:26 -04:00
bruno
f783394f09
feat: intégration TikTak #197-200 + scoped tokens, webhooks filtrés, listes mtime/size ; fix e2e-server BUG-112
CI / lint (push) Successful in 3m17s
CI / security (push) Failing after 1m51s
CI / test (push) Successful in 5m14s
CI / build (push) Successful in 1m50s
CI / e2e (push) Successful in 18m18s
2026-10-14 11:42:53 -04:00
bruno
2be0b15bcf
fix: partage dirigé — ACL court-circuitée après résolution Partage/ + chemin canonique au token #196
...
CI / lint (push) Successful in 3m0s
CI / security (push) Failing after 1m38s
CI / test (push) Successful in 4m58s
CI / build (push) Successful in 1m36s
CI / e2e (push) Successful in 19m55s
- le partage EST l'autorisation: plus de 403 'Accès refusé à la vault' pour un
destinataire sans accès au vault émetteur (api_file, raw, download)
- chemin virtuel canonique Partage/<token>/<nom> — désambiguïse les homonymes,
fallback par nom conservé
- 'reçu' = partagé_avec contient l'utilisateur: un admin ne voit plus les
partages des autres comme reçus (fix File not found: Partage/…)
- +3 tests (14 total)
2026-10-10 23:11:12 -04:00
bruno
de6bde1613
fix: partage dirigé — dossier Partage virtuel + ouverture en onglet #196
...
CI / lint (push) Successful in 3m1s
CI / security (push) Failing after 1m58s
CI / test (push) Successful in 4m43s
CI / build (push) Successful in 1m39s
CI / e2e (push) Successful in 20m28s
- _resolve_shared_file: home-<user>/Partage/<f> -> fichier source (/api/file, raw, download)
- clic dossier Partage: dépliage sans navigation (fix Directory not found)
- fichiers reçus ouverts en onglet applicatif (arbre, recherche, dashboard)
- POST /api/share: path vide/null rejeté (400) — un share path:null cassait /api/shares
- +2 tests (13 total)
2026-10-10 21:48:46 -04:00
bruno
fdc9f47a0d
feat: visibilité & recherche des partages dirigés #196
...
CI / lint (push) Canceled after 0s
CI / test (push) Canceled after 0s
CI / security (push) Canceled after 0s
CI / build (push) Canceled after 0s
CI / e2e (push) Canceled after 0s
- icône share-2 bleue sur les fichiers partagés dans l'arborescence
- dossier virtuel Partage/ Ã la racine du home du destinataire (lecture seule /s/{token})
- recherche plein texte couvre les documents reçus (merge search_vaults, share_token)
- cache front invalidé à la création/révocation ; +2 tests non-fuite
2026-10-10 21:23:00 -04:00
bruno
49c715199d
feat: partage dirigé entre utilisateurs #196
...
CI / test (push) Canceled after 0s
CI / security (push) Canceled after 0s
CI / build (push) Canceled after 0s
CI / e2e (push) Canceled after 0s
CI / lint (push) Canceled after 1m29s
- create_share/shared_with + validation des destinataires
- gate auth sur /s/{token} (+pdf, raw) : 404 opaque hors créateur/admin/destinataires
- GET /api/shares scopé (non-admin = créés + reçus), révocation créateur/admin
- UI : dialogue dirigé/public + destinataires, dashboard « partagé par X »
- i18n FR/EN, tests test_directed_shares.py (9), fiche feature
2026-10-10 20:14:29 -04:00
bruno
8662d23ec8
fix: un dossier perso n'est plus visible par les autres comptes #194
...
CI / lint (push) Successful in 2m57s
CI / security (push) Successful in 1m40s
CI / test (push) Successful in 4m39s
CI / build (push) Successful in 1m34s
CI / e2e (push) Successful in 17m44s
L'admin (vaults: ["*"]) voyait le home de chaque utilisateur dans sa
barre latérale : "*" ouvrait tous les vaults, home-* compris.
- backend/auth/middleware.py : check_vault_access exige un octroi
explicite pour tout vault home-* (nouveau is_home_vault()).
- Filtres « * » en dur remplacés par check_vault_access : dashboard,
conflits, liens retour, favoris, abonnements push.
- /api/search : search_vaults(is_allowed=…) filtre les bruts avant
pagination (total et page restent justes).
- backend/user_home.py : _grant n'écarte plus les comptes « * » —
l'admin reçoit son propre home-admin (auto-réparé au démarrage).
- Tests : test_user_home.py +2, assertion API inversée dans
test_auth_api.py (admin ne voit plus home-alice).
2026-10-10 16:42:00 -04:00
bruno
8235d632b8
feat: dossier personnel par utilisateur — vault home-<user> + registre de vaults persistant #194
...
CI / lint (push) Canceled after 0s
CI / test (push) Canceled after 0s
CI / security (push) Canceled after 0s
CI / build (push) Canceled after 0s
CI / e2e (push) Canceled after 0s
- backend/user_home.py : ensure_user_home()/release_user_home() idempotents
(mkdir, vault, watcher, octroi dans user.vaults), rappelés à la création
d'un compte et au démarrage (migration + réparation + sweep des vaults
home-* orphelins), dossier conservé à la suppression.
- backend/indexer.py : data/vaults.json, registre persistant des vaults
ajoutés à la volée, fusionné par load_vault_config() — ils disparaissaient
au premier reindex complet et au redémarrage. reload_single_vault remet
vault_config[name] après remove_vault_from_index.
- backend/auth/router.py + routers/vaults.py : appels ensure/release +
persistance à l'ajout/retrait d'un vault.
- docker-compose.yml : montage unique /NFS/OBSIDIAN_DOC/Home:/vaults/Home +
OBSIGATE_HOME_ROOT (absente = fonctionnalité inactive).
- Tests : tests/test_user_home.py (12) + tests/test_auth_api.py::TestUserHome (2).
2026-10-10 00:40:35 -04:00
bruno
f4c8504c8d
feat: chat — les posts affichent le markdown rendu comme un document, code coloré #193
CI / lint (push) Successful in 2m50s
CI / security (push) Successful in 1m37s
CI / test (push) Successful in 4m34s
CI / build (push) Successful in 1m31s
CI / e2e (push) Successful in 17m36s
2026-10-09 15:48:04 -04:00