merge: main (déblocage CI) dans spark-vault-dir
CI / security (pull_request) Failing after 1s
CI / lint (pull_request) Successful in 1m36s
CI / test (pull_request) Failing after 3h3m4s
CI / build (pull_request) Skipped
CI / e2e (pull_request) Skipped

This commit is contained in:
Spark
2026-11-03 06:21:37 +00:00
11 changed files with 29 additions and 17 deletions
+3 -3
View File
@@ -4,7 +4,7 @@
**Porte d'entrée web ultra-léger pour vos vaults Obsidian** — Accédez, naviguez et recherchez dans toutes vos notes Obsidian depuis n'importe quel appareil via une interface web moderne et responsive. **Porte d'entrée web ultra-léger pour vos vaults Obsidian** — Accédez, naviguez et recherchez dans toutes vos notes Obsidian depuis n'importe quel appareil via une interface web moderne et responsive.
[![Version](https://img.shields.io/badge/Version-2.81.1-blue.svg)]() [![Version](https://img.shields.io/badge/Version-2.82.8-blue.svg)]()
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://www.docker.com/) [![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://www.docker.com/)
[![Python](https://img.shields.io/badge/Python-3.11+-green.svg)](https://www.python.org/) [![Python](https://img.shields.io/badge/Python-3.11+-green.svg)](https://www.python.org/)
@@ -977,8 +977,8 @@ Ce projet est sous licence **MIT** — voir le fichier [LICENSE](LICENSE) pour l
## 📝 Changelog ## 📝 Changelog
Consultez le [CHANGELOG.md](./CHANGELOG.md) pour l'historique complet de toutes les versions (v1.0.0 → v2.81.1). Consultez le [CHANGELOG.md](./CHANGELOG.md) pour l'historique complet de toutes les versions (v1.0.0 → v2.82.8).
--- ---
*Projet : ObsiGate | Version : 2.81.1 | Dernière mise à jour : Septembre 2026* *Projet : ObsiGate | Version : 2.82.8 | Dernière mise à jour : Septembre 2026*
+3 -3
View File
@@ -2,7 +2,7 @@
**Ultra-light web gateway for your Obsidian vaults** — Access, browse, and search all your Obsidian notes from any device via a modern, responsive web interface. **Ultra-light web gateway for your Obsidian vaults** — Access, browse, and search all your Obsidian notes from any device via a modern, responsive web interface.
[![Version](https://img.shields.io/badge/Version-2.81.1-blue.svg)]() [![Version](https://img.shields.io/badge/Version-2.82.8-blue.svg)]()
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://www.docker.com/) [![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://www.docker.com/)
[![Python](https://img.shields.io/badge/Python-3.11+-green.svg)](https://www.python.org/) [![Python](https://img.shields.io/badge/Python-3.11+-green.svg)](https://www.python.org/)
@@ -1152,8 +1152,8 @@ This project is licensed under the **MIT License** - see the [LICENSE](LICENSE)
## 📝 Changelog ## 📝 Changelog
See [CHANGELOG.md](./CHANGELOG.md) for the complete version history (v1.0.0 → v2.81.1). See [CHANGELOG.md](./CHANGELOG.md) for the complete version history (v1.0.0 → v2.82.8).
--- ---
*Project: ObsiGate | Version: 2.81.1 | Last updated: September 2026* *Project: ObsiGate | Version: 2.82.8 | Last updated: September 2026*
+10 -2
View File
@@ -22,10 +22,12 @@ httpx>=0.27.0
# l'utilisateur). #224 : la version préinstallée dans la toolcache du # l'utilisateur). #224 : la version préinstallée dans la toolcache du
# runner (6.19.0) est frappée par 11 CVE supplémentaires (dont # runner (6.19.0) est frappée par 11 CVE supplémentaires (dont
# CVE-2026-113786, CVE-2026-115572, CVE-2026-115585, CVE-2026-115580), # CVE-2026-113786, CVE-2026-115572, CVE-2026-115585, CVE-2026-115580),
# corrigées au plus tard en 6.21.2 — le plancher doit être >= 6.21.2 : # corrigées au plus tard en 6.21.2. La 6.21.2 est à son tour frappée
# (CVE-2026-119203 et suivantes, relevées par le job security sur main),
# corrigées en 6.21.4 — le plancher doit être >= 6.21.4 :
# en dessous, pip répond « already satisfied » pour la toolcache et # en dessous, pip répond « already satisfied » pour la toolcache et
# n'aligne jamais (même piège que BUG-093). # n'aligne jamais (même piège que BUG-093).
pypdf>=6.21.2 pypdf>=6.21.4
pyotp>=2.10.0 pyotp>=2.10.0
segno>=1.5.0 segno>=1.5.0
webauthn==2.6.0 webauthn==2.6.0
@@ -79,3 +81,9 @@ cryptography>=44.0
# Plancher de securite : msgpack est transitif, version 1.2.1 relevee par le job # Plancher de securite : msgpack est transitif, version 1.2.1 relevee par le job
# security (pip-audit, bloquant) — CVE-2026-114613, corrigee en 1.2.3. # security (pip-audit, bloquant) — CVE-2026-114613, corrigee en 1.2.3.
msgpack>=1.2.3 msgpack>=1.2.3
# Plancher de sécurité : pyasn1 est transitive (python-jose/rsa), version
# 0.6.4 relevée par le job security (pip-audit, bloquant) —
# CVE-2026-119194 à CVE-2026-119197, corrigées en 0.6.5. Sans plancher
# explicite, pip répond « already satisfied » pour la toolcache et
# n'aligne jamais (même piège que BUG-093).
pyasn1>=0.6.5
+1 -1
View File
@@ -65,7 +65,6 @@ from backend.coffre_store import (
SecretExpireError, SecretExpireError,
ValidationError, ValidationError,
compter_octrois_actifs, compter_octrois_actifs,
est_expire,
compter_secrets, compter_secrets,
create_coffre, create_coffre,
create_consommateur, create_consommateur,
@@ -73,6 +72,7 @@ from backend.coffre_store import (
create_secret, create_secret,
delete_secret, delete_secret,
distribuer_valeur, distribuer_valeur,
est_expire,
get_coffre, get_coffre,
get_coffre_by_id, get_coffre_by_id,
get_coffre_or_404, get_coffre_or_404,
+1 -1
View File
@@ -2626,7 +2626,7 @@ dependencies = [
[[package]] [[package]]
name = "obsigate-desktop" name = "obsigate-desktop"
version = "2.82.4" version = "2.82.8"
dependencies = [ dependencies = [
"chrono", "chrono",
"env_logger", "env_logger",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "obsigate-desktop" name = "obsigate-desktop"
version = "2.82.4" version = "2.82.8"
description = "ObsiGate Desktop — Porte d'entrée native pour vos vaults Obsidian" description = "ObsiGate Desktop — Porte d'entrée native pour vos vaults Obsidian"
authors = ["Bruno Charest"] authors = ["Bruno Charest"]
edition = "2021" edition = "2021"
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"$schema": "https://raw.githubusercontent.com/nicedoc/obsigate/main/desktop/tauri.conf.schema.json", "$schema": "https://raw.githubusercontent.com/nicedoc/obsigate/main/desktop/tauri.conf.schema.json",
"productName": "ObsiGate", "productName": "ObsiGate",
"version": "2.82.4", "version": "2.82.8",
"identifier": "com.obsigate.desktop", "identifier": "com.obsigate.desktop",
"build": { "build": {
"frontendDist": "../frontend", "frontendDist": "../frontend",
+1 -1
View File
@@ -1,6 +1,6 @@
# ObsiGate — Roadmap # ObsiGate — Roadmap
> **Version :** 2.82.4 | **Dernière mise à jour :** 2026-10-28 > **Version :** 2.82.8 | **Dernière mise à jour :** 2026-11-03
> **Ce fichier ne contient que le travail à venir** (🔵 En cours + ⚪ Backlog) et un index compact > **Ce fichier ne contient que le travail à venir** (🔵 En cours + ⚪ Backlog) et un index compact
> vers les fonctionnalités livrées. > vers les fonctionnalités livrées.
> - **Méthode de livraison à appliquer pour toute tâche : [DELIVERY_WORKFLOW.md](./DELIVERY_WORKFLOW.md)** > - **Méthode de livraison à appliquer pour toute tâche : [DELIVERY_WORKFLOW.md](./DELIVERY_WORKFLOW.md)**
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "obsigate", "name": "obsigate",
"version": "2.82.4", "version": "2.82.8",
"description": "**Porte d'entrée web ultra-léger pour vos vaults Obsidian** — Accédez, naviguez et recherchez dans toutes vos notes Obsidian depuis n'importe quel appareil via une interface web moderne et responsive.", "description": "**Porte d'entrée web ultra-léger pour vos vaults Obsidian** — Accédez, naviguez et recherchez dans toutes vos notes Obsidian depuis n'importe quel appareil via une interface web moderne et responsive.",
"main": "patch.js", "main": "patch.js",
"directories": { "directories": {
+3 -1
View File
@@ -112,8 +112,10 @@ function testModulesHaveImports() {
{ file: 'navfacets.js', reason: 'pure helpers — no deps, imported by vaulthome.js' }, { file: 'navfacets.js', reason: 'pure helpers — no deps, imported by vaulthome.js' },
{ file: 'sidebar_raw.js', reason: 'legacy file — excluded' }, { file: 'sidebar_raw.js', reason: 'legacy file — excluded' },
{ file: 'desktop.js', reason: 'standalone — reads window.__TAURI__ global, no imports needed' }, { file: 'desktop.js', reason: 'standalone — reads window.__TAURI__ global, no imports needed' },
{ file: 'recherche.js', reason: 'standalone — vanilla sans dépendance, vendangé tel quel par chaque hôte (#68)', noExport: true },
]; ];
const expectNoImport = new Set(expected.map(e => e.file)); const expectNoImport = new Set(expected.map(e => e.file));
const expectNoExport = new Set(expected.filter(e => e.noExport).map(e => e.file));
for (const file of files) { for (const file of files) {
const content = readFileSync(join(JS_DIR, file), 'utf-8'); const content = readFileSync(join(JS_DIR, file), 'utf-8');
@@ -123,7 +125,7 @@ function testModulesHaveImports() {
if (!expectNoImport.has(file)) { if (!expectNoImport.has(file)) {
assert.ok(hasImport, `${file} should have at least one import`); assert.ok(hasImport, `${file} should have at least one import`);
} }
if (file !== 'state.js' && file !== 'app.js') { if (file !== 'state.js' && file !== 'app.js' && !expectNoExport.has(file)) {
assert.ok(hasExport, `${file} should have at least one export`); assert.ok(hasExport, `${file} should have at least one export`);
} }
} }
+4 -2
View File
@@ -99,7 +99,8 @@ def test_panneau_console_surimpression_222():
assert "draco-console-sur" in panneau assert "draco-console-sur" in panneau
assert "assurerSurimpression" in panneau assert "assurerSurimpression" in panneau
assert "draco-console-styles" in panneau assert "draco-console-styles" in panneau
assert 'surCadre.src = urlConsole()' in panneau assert 'var url = urlConsole()' in panneau
assert 'surCadre.src = url' in panneau
assert 'surEl.style.width = "100%"' in panneau assert 'surEl.style.width = "100%"' in panneau
assert 'data-dc="sidebar"' in panneau assert 'data-dc="sidebar"' in panneau
assert "Mode sidebar" in panneau assert "Mode sidebar" in panneau
@@ -116,7 +117,8 @@ def test_csp_ouvre_le_service_d_agents_218():
# dérivée de la configuration (backend.draco_config.agent_origine, # dérivée de la configuration (backend.draco_config.agent_origine,
# testée via la config dans tests/test_security_headers.py). # testée via la config dans tests/test_security_headers.py).
main = (Path(__file__).resolve().parent.parent / "backend" / "main.py").read_text(encoding="utf-8") main = (Path(__file__).resolve().parent.parent / "backend" / "main.py").read_text(encoding="utf-8")
ligne = next(l for l in main.splitlines() if "connect-src" in l) ligne = next(l for l in main.splitlines()
if "connect-src" in l and not l.strip().startswith("#"))
assert "agent_origine" in main assert "agent_origine" in main
assert "{agent}" in ligne assert "{agent}" in ligne