diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index c063f26..1007942 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -149,8 +149,8 @@ jobs: pip install -U pip setuptools pip install bandit pip-audit pip install -r backend/requirements.txt - python -m venv /tmp/semgrep-venv - /tmp/semgrep-venv/bin/pip install --quiet semgrep==1.157.0 + python -m venv "$HOME/semgrep-venv" + "$HOME/semgrep-venv/bin/pip" install --quiet semgrep==1.157.0 - name: Bandit (SAST, bloquant — #87) # B105 est exclu (aligné avec [tool.bandit] de pyproject.toml : @@ -159,10 +159,10 @@ jobs: run: bandit -r backend/ --skip B101,B105,B110,B310 - name: Diagnostic semgrep-core (BUG-091) - # Le core est un exécutable natif : sur un CPU trop ancien il sort en - # 127 sans message exploitable. On trace CPU, taille/permissions du - # core et exécution brute pour distinguer un refus ISA/libc d'un - # simple fichier absent ou non exécutable. + # Le core est un exécutable natif : selon le runner il sort en 127, + # soit avec un message ISA (CPU trop ancien), soit sans message + # (fs noexec, fichier absent, permissions). On trace CPU, options de + # montage, taille/permissions du core et exécution brute. # NOTE runner Gitea Act (BUG-083) : aucun `#` dans le `run:`. run: | echo "== CPU ==" @@ -172,10 +172,10 @@ jobs: if grep -qm1 " $f " /proc/cpuinfo; then echo -n "$f "; fi done echo - echo "== disque ==" - df -h /tmp | tail -1 || true + echo "== montages (noexec ?) ==" + findmnt -no TARGET,OPTIONS / /tmp "$HOME" 2>/dev/null || cat /proc/mounts echo "== core ==" - CORE=$(/tmp/semgrep-venv/bin/python -c "import semgrep,os;print(os.path.join(os.path.dirname(semgrep.__file__),'bin','semgrep-core'))") + CORE=$("$HOME/semgrep-venv/bin/python" -c "import semgrep,os;print(os.path.join(os.path.dirname(semgrep.__file__),'bin','semgrep-core'))") echo "chemin : $CORE" ls -l "$CORE" || echo "core absent" file "$CORE" || true @@ -186,7 +186,7 @@ jobs: # Règles 100 % locales (semgrep-rules/, 8 règles) : aucun # téléchargement de registre (runner au réseau fragile). # Venv isolé (BUG-091) : cf. l'étape « Install dependencies ». - run: /tmp/semgrep-venv/bin/semgrep --config semgrep-rules/ backend/ + run: $HOME/semgrep-venv/bin/semgrep --config semgrep-rules/ backend/ - name: Pip-audit (bloquant — #87) # Bloquant depuis T6 (#87) : dépendances qualifiées (mistune 3.3.3, diff --git a/CHANGELOG.md b/CHANGELOG.md index f6f8229..e59f614 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Format basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/), et [Semantic Versioning](https://semver.org/spec/v2.0.0.html). > **En cours de développement** : les changements à venir sont listés dans la section -> [Unreleased](#unreleased). La dernière version livrée est **2.39.5**. +> [Unreleased](#unreleased). La dernière version livrée est **2.39.6**. --- @@ -14,6 +14,21 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html). --- +## [2.39.6] — 2026-09-29 + +### Correction + +- **BUG-091 (suite) — semgrep-core s'exécutait depuis un venv sous `/tmp`.** + Le binaire natif de semgrep sortait en 127 sans message, alors que sa + version était bien compatible avec le CPU du runner (core statique, + baseline x86-64 v1) : le filesystem `/tmp` du runner est monté `noexec` + et le noyau refuse l'exécution sans message exploitable. Le venv isolé + est donc créé dans `$HOME`, et l'étape de diagnostic du job security + trace désormais CPU, options de montage, taille/permissions du core et + exécution brute. + +--- + ## [2.39.5] — 2026-09-29 ### Correction diff --git a/README.fr.md b/README.fr.md index 4b4fc99..7a1e360 100644 --- a/README.fr.md +++ b/README.fr.md @@ -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. -[![Version](https://img.shields.io/badge/Version-2.39.5-blue.svg)]() +[![Version](https://img.shields.io/badge/Version-2.39.6-blue.svg)]() [![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/) [![Python](https://img.shields.io/badge/Python-3.11+-green.svg)](https://www.python.org/) @@ -976,8 +976,8 @@ Ce projet est sous licence **MIT** — voir le fichier [LICENSE](LICENSE) pour l ## 📝 Changelog -Consultez le [CHANGELOG.md](./CHANGELOG.md) pour l'historique complet de toutes les versions (v1.0.0 → v2.39.5). +Consultez le [CHANGELOG.md](./CHANGELOG.md) pour l'historique complet de toutes les versions (v1.0.0 → v2.39.6). --- -*Projet : ObsiGate | Version : 2.39.5 | Dernière mise à jour : Septembre 2026* +*Projet : ObsiGate | Version : 2.39.6 | Dernière mise à jour : Septembre 2026* diff --git a/README.md b/README.md index ac384ca..d550595 100644 --- a/README.md +++ b/README.md @@ -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. -[![Version](https://img.shields.io/badge/Version-2.39.5-blue.svg)]() +[![Version](https://img.shields.io/badge/Version-2.39.6-blue.svg)]() [![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/) [![Python](https://img.shields.io/badge/Python-3.11+-green.svg)](https://www.python.org/) @@ -1151,8 +1151,8 @@ This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) ## 📝 Changelog -See [CHANGELOG.md](./CHANGELOG.md) for the complete version history (v1.0.0 → v2.39.5). +See [CHANGELOG.md](./CHANGELOG.md) for the complete version history (v1.0.0 → v2.39.6). --- -*Project: ObsiGate | Version: 2.39.5 | Last updated: September 2026* +*Project: ObsiGate | Version: 2.39.6 | Last updated: September 2026* diff --git a/VERSION b/VERSION index 21b5230..3f06707 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.39.5 +2.39.6 diff --git a/desktop/Cargo.lock b/desktop/Cargo.lock index 27b2ec0..77f4612 100644 --- a/desktop/Cargo.lock +++ b/desktop/Cargo.lock @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "obsigate-desktop" -version = "2.39.5" +version = "2.39.6" dependencies = [ "chrono", "env_logger", diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index 38ff344..86a68fb 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "obsigate-desktop" -version = "2.39.5" +version = "2.39.6" description = "ObsiGate Desktop — Porte d'entrée native pour vos vaults Obsidian" authors = ["Bruno Charest"] edition = "2021" diff --git a/desktop/tauri.conf.json b/desktop/tauri.conf.json index 745d971..954e570 100644 --- a/desktop/tauri.conf.json +++ b/desktop/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/nicedoc/obsigate/main/desktop/tauri.conf.schema.json", "productName": "ObsiGate", - "version": "2.39.5", + "version": "2.39.6", "identifier": "com.obsigate.desktop", "build": { "frontendDist": "../frontend", diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 16c009f..7de0685 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,6 +1,6 @@ # ObsiGate — Roadmap -> **Version :** 2.39.5 | **Dernière mise à jour :** 2026-09-29 +> **Version :** 2.39.6 | **Dernière mise à jour :** 2026-09-29 > **Ce fichier ne contient que le travail à venir** (🔵 En cours + ⚪ Backlog) et un index compact > vers les fonctionnalités livrées. > - **Méthode de livraison à appliquer pour toute tâche : [DELIVERY_WORKFLOW.md](./DELIVERY_WORKFLOW.md)** diff --git a/package.json b/package.json index bbcfda5..2d809f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsigate", - "version": "2.39.5", + "version": "2.39.6", "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", "directories": {