- **A — Suivi du document** : l'en-tête du panneau chat affiche le document ciblé (titre + chemin) et `followFileChat()` appelé par `renderFile()` re-cible le panneau ouvert à chaque changement de document. - **B — Chat général** : onglet « Chat » (dernier) dans la sidebar, conversation centrale stockée dans le store #169 via les sentinelles `__global__/general` (`GET/POST /api/chat`) ; pastille de messages non lus sur l'onglet ; pièces jointes image/vidéo (`POST /api/chat/upload` : allow-list d'extensions, 25 MB, nom UUID ; `GET /api/chat/attachment/{name}` résolu contre l'allow-list) ; URL cliquables au rendu ; date/heure d'envoi. - **C — Ordre des onglets** : la barre de filtre passe sous les onglets et sert de recherche dans le chat (texte + auteur) quand l'onglet Chat est actif (`switchSidebarTab` + `routeFilter`). - Transport : broadcast SSE `chat_message` réutilisé (`vault __global__` route vers la sidebar, sinon le panneau fichier) — pas de 2ᵉ WebSocket. - i18n FR/EN (6 clés), CSS bloc #190, `initSidebarChat()` dans l'orchestrateur. - Tests : pytest 27 chat (12 nouveaux) ; JSDOM `filechat.test.mjs` 11 (5 nouveaux) ; suite 1655 passed, ruff/mypy 0, validate-imports 42 modules. - Docs : CHANGELOG [Unreleased], ROADMAP #190 → index, fiche `file-chat-169.md` §#190, guide « Chat général », journal des interventions.
95 lines
2.8 KiB
JSON
95 lines
2.8 KiB
JSON
{
|
|
"$schema": "https://raw.githubusercontent.com/nicedoc/obsigate/main/desktop/tauri.conf.schema.json",
|
|
"productName": "ObsiGate",
|
|
"version": "2.58.0",
|
|
"identifier": "com.obsigate.desktop",
|
|
"build": {
|
|
"frontendDist": "../frontend",
|
|
"devUrl": "http://localhost:17890",
|
|
"beforeDevCommand": "cd .. && python -m uvicorn backend.main:app --host 127.0.0.1 --port 17890 --log-level info",
|
|
"beforeBuildCommand": "echo 'Frontend already built — using static files'"
|
|
},
|
|
"app": {
|
|
"withGlobalTauri": true,
|
|
"windows": [
|
|
{
|
|
"create": false,
|
|
"title": "ObsiGate",
|
|
"width": 1200,
|
|
"height": 800,
|
|
"minWidth": 800,
|
|
"minHeight": 600,
|
|
"resizable": true,
|
|
"fullscreen": false,
|
|
"center": true,
|
|
"decorations": true,
|
|
"transparent": false,
|
|
"label": "main"
|
|
}
|
|
],
|
|
"security": {
|
|
"csp": "default-src 'self' http://127.0.0.1:*; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://127.0.0.1:* https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://unpkg.com https://esm.sh; style-src 'self' 'unsafe-inline' http://127.0.0.1:* https://cdnjs.cloudflare.com https://fonts.googleapis.com; font-src 'self' http://127.0.0.1:* https://fonts.gstatic.com; img-src 'self' data: blob: http://127.0.0.1:* https:; frame-src 'self' http://127.0.0.1:*; connect-src 'self' http://127.0.0.1:* ws://127.0.0.1:*;"
|
|
}
|
|
},
|
|
"bundle": {
|
|
"active": true,
|
|
"targets": "all",
|
|
"createUpdaterArtifacts": true,
|
|
"icon": [
|
|
"icons/32x32.png",
|
|
"icons/128x128.png",
|
|
"icons/[email protected]",
|
|
"icons/icon.icns",
|
|
"icons/icon.ico"
|
|
],
|
|
"resources": [
|
|
"python-embed/**/*",
|
|
"backend/**/*",
|
|
"frontend/**/*"
|
|
],
|
|
"fileAssociations": [
|
|
{
|
|
"ext": ["md", "markdown", "txt"],
|
|
"name": "ObsiGate Markdown",
|
|
"description": "Fichier Markdown ObsiGate",
|
|
"role": "Editor"
|
|
}
|
|
],
|
|
"windows": {
|
|
"nsis": {
|
|
"installMode": "currentUser",
|
|
"installerIcon": "icons/icon.ico",
|
|
"startMenuFolder": "ObsiGate"
|
|
}
|
|
},
|
|
"linux": {
|
|
"deb": {
|
|
"depends": ["libwebkit2gtk-4.1-0", "libgtk-3-0", "libayatana-appindicator3-1"]
|
|
},
|
|
"appimage": {
|
|
"bundleMediaFramework": true
|
|
}
|
|
},
|
|
"macOS": {
|
|
"frameworks": [],
|
|
"minimumSystemVersion": ""
|
|
}
|
|
},
|
|
"plugins": {
|
|
"shell": {
|
|
"open": true
|
|
},
|
|
"single-instance": null,
|
|
"store": null,
|
|
"updater": {
|
|
"endpoints": [
|
|
"https://git.dracodev.net/Projets/ObsiGate/raw/branch/main/desktop/latest.json"
|
|
],
|
|
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDcwQjU2MDM4QUVEREY3NApSV1IwMysyS0ExWUxCK1RQMUgrYnplQWlpYWU2SHVYajVIUHhzNEFKLzZ2Z2puZW9pSUQ2RE8rUAo=",
|
|
"windows": {
|
|
"installMode": "passive"
|
|
}
|
|
}
|
|
}
|
|
}
|