Fondations de la refonte « vrai IDE IA worktree » (chantier P7→P12).
- git.ts : listChanges (status --porcelain=v2 -z + --numstat fusionnés),
fileDiff (diff unifié borné, refus binaire, untracked via --no-index),
stage/unstage/restore/clean, commitStaged, amendCommit (refus si poussé),
fetchRemote, pull (ff-only|rebase), lastCommit, resolveGitDir,
isSafeRelativePath ; worktreeStatus enrichi (compteurs staged/unstaged/
conflict + dernier commit), champs additifs WorktreeGitStatus.
- core/fs-watcher.ts : FsWatcherService (chokidar, refcount + pool LRU borné,
ignore .git sauf HEAD/index, débounce) → invalide factsCache, rediffuse
worktree_update et émet worktree_changes.
- WorktreeManager : getWorktreeChanges/getFileDiff/stage/unstage/discard/
fetch/pull/watch/unwatch/assertPathInWorktree ; commitWorktree { mode, amend }.
- routes/git.ts (changes/diff/stage/unstage/discard/fetch/pull) et
routes/files.ts (GET/PUT contenu fichier, bornage strict au worktree) ;
fs/list?includeFiles=1 (flag isFile).
- protocole ADDITIF (PROTOCOL_VERSION inchangé) : messages WS watch/unwatch
(validés dans parseClientMessage) + worktree_changes poussé ciblé par la
gateway ; front wsClient.watchWorktree + lib/git-api.ts + api.put.
- tests git/fs-watcher/protocole + acceptance-p7.mjs (ALL GREEN).
- dépendance : chokidar (serveur).
70 lines
1.7 KiB
JSON
70 lines
1.7 KiB
JSON
{
|
|
"name": "@johanleroy/git-arboretum",
|
|
"version": "1.11.0",
|
|
"description": "Self-hosted web dashboard for git worktrees and the Claude Code sessions running on them",
|
|
"license": "MIT",
|
|
"type": "module",
|
|
"author": "Johan LEROY <contact@johanleroy.fr>",
|
|
"homepage": "https://git.lidge.fr/johanleroy/arboretum#readme",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://git.lidge.fr/johanleroy/arboretum.git",
|
|
"directory": "packages/server"
|
|
},
|
|
"bugs": {
|
|
"url": "https://git.lidge.fr/johanleroy/arboretum/issues"
|
|
},
|
|
"funding": {
|
|
"type": "buymeacoffee",
|
|
"url": "https://buymeacoffee.com/johanleroy"
|
|
},
|
|
"keywords": [
|
|
"git",
|
|
"worktree",
|
|
"claude",
|
|
"claude-code",
|
|
"dashboard",
|
|
"self-hosted",
|
|
"pty",
|
|
"terminal",
|
|
"cli",
|
|
"daemon",
|
|
"pwa"
|
|
],
|
|
"bin": {
|
|
"arboretum": "./dist/index.js"
|
|
},
|
|
"main": "./dist/app.js",
|
|
"files": [
|
|
"dist/**/*.js",
|
|
"public"
|
|
],
|
|
"engines": {
|
|
"node": ">=22.16"
|
|
},
|
|
"publishConfig": {
|
|
"registry": "https://git.lidge.fr/api/packages/johanleroy/npm/"
|
|
},
|
|
"scripts": {
|
|
"build": "tsc -b",
|
|
"dev": "tsc -b --watch & node --watch dist/index.js",
|
|
"prepack": "node scripts/copy-web.mjs && node scripts/inline-shared.mjs && node scripts/copy-meta.mjs",
|
|
"test": "vitest run"
|
|
},
|
|
"dependencies": {
|
|
"@fastify/cookie": "^11.0.0",
|
|
"@fastify/static": "^9.0.0",
|
|
"@fastify/websocket": "^11.0.0",
|
|
"@homebridge/node-pty-prebuilt-multiarch": "^0.13.0",
|
|
"@xterm/headless": "^6.0.0",
|
|
"chokidar": "^4.0.3",
|
|
"fastify": "^5.0.0",
|
|
"web-push": "^3.6.7"
|
|
},
|
|
"devDependencies": {
|
|
"@arboretum/shared": "0.1.0",
|
|
"@types/web-push": "^3.6.4",
|
|
"@types/ws": "^8.5.0"
|
|
}
|
|
}
|