fix: CI préexistante — imports coffres (ruff I001) + planchers pyasn1/pypdf #59
+3
-3
@@ -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.
|
||||||
|
|
||||||
[]()
|
[]()
|
||||||
[](https://opensource.org/licenses/MIT)
|
[](https://opensource.org/licenses/MIT)
|
||||||
[](https://www.docker.com/)
|
[](https://www.docker.com/)
|
||||||
[](https://www.python.org/)
|
[](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*
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
[]()
|
[]()
|
||||||
[](https://opensource.org/licenses/MIT)
|
[](https://opensource.org/licenses/MIT)
|
||||||
[](https://www.docker.com/)
|
[](https://www.docker.com/)
|
||||||
[](https://www.python.org/)
|
[](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*
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Generated
+1
-1
@@ -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
@@ -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,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
@@ -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
@@ -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": {
|
||||||
|
|||||||
@@ -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`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user