A14 : service mutate_xlsx_structure (batch ordonné d'actions
sheet_add/sheet_rename/sheet_delete/sheet_duplicate et
row/col_insert/delete, une seule réécriture verrouillée et atomique,
409 lossy sans force, backup, dernier sheet protégé) ; endpoint
PUT /api/file/{vault}/xlsx/structure (1-50 actions/requête) ;
menu « structure » dans la visionneuse : ajout/renommage/duplication/
suppression de feuilles et insertion/suppression de ligne/colonne à
partir de la cellule active, confirmations explicites pour les
destructions, re-rendu serveur après succès, reprise force après
confirmation 409.
Vérifié : test_xlsx_structure.py 11 (ops, gardes, atomicité du batch,
409 lossy + force) + contre-preuve (garde dernier sheet neutralisée ->
1 échec), xlsx-viewer.test.mjs 33/33 (3 nouveaux), ruff 0, mypy 0,
i18n parity, validate-imports.
🤖 Generated with Codebuff
Co-Authored-By: Codebuff <[email protected]>
27 lines
795 B
JSON
27 lines
795 B
JSON
{
|
|
"name": "obsigate",
|
|
"version": "2.36.0",
|
|
"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": {
|
|
"doc": "docs",
|
|
"test": "tests"
|
|
},
|
|
"scripts": {
|
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
"test:e2e": "bash scripts/run-e2e-local.sh",
|
|
"test:e2e:ps": "pwsh -NoProfile -File scripts/run-e2e-local.ps1"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://git.dracodev.net/Projets/ObsiGate.git"
|
|
},
|
|
"keywords": [],
|
|
"author": "",
|
|
"license": "ISC",
|
|
"type": "commonjs",
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.61.0"
|
|
}
|
|
}
|