- Journal.DevTool: C# TUI dev tool (SDT) using Spectre.Console - Phosphor green (#00FF41) terminal aesthetic with amber/red accents - Grouped build target menu driven by devtool.json config - Topological dependency resolver for DependsOn chains - Live stdout/stderr streaming per target step - Interactive environment variable editor (dropdown + free-text) - Toolchain management screen: Python venv create/install/upgrade, Node npm install - Workspace switcher: reads sdt-workspace.json, hot-switches between projects - Outputs as 'sdt' executable (net10.0) - devtool.json: project config for SDT - All build targets: sidecar, web, webgateway, tauri, tauri-nsis, all (virtual) - Dev targets: run-gateway - Test targets: test (smoke), gate (migration) - Cache targets: nuget-export, nuget-import - Toolchains: Python 3.14 (cpu/gpu/nlp profiles) + Node/npm (Journal.App) - Env vars: AI provider, log level, NLP backend, path overrides - justfile: just command runner recipes wrapping existing scripts - Correct dependency ordering (sidecar before tauri, web before webgateway) - OS-aware runtime detection (win-x64 / linux-x64) - Recipes: sidecar, web, webgateway, tauri, tauri-nsis, all, run, dev-app, test, gate, build, nuget-export/import, sdt - Journal.slnx: added Journal.DevTool project
301 lines
8.8 KiB
JSON
301 lines
8.8 KiB
JSON
{
|
|
"name": "Project Journal",
|
|
"version": "0.1.0",
|
|
"toolchains": {
|
|
"python": {
|
|
"executable": "python3.14",
|
|
"windowsExecutable": "py",
|
|
"launcherVersion": "-3.14",
|
|
"venvDir": ".venv",
|
|
"pipScript": "scripts/pip-min.ps1",
|
|
"profiles": [
|
|
{
|
|
"id": "cpu",
|
|
"label": "CPU only (default)",
|
|
"requirementsFile": "requirements_cpu_only.txt",
|
|
"extraIndexUrl": "https://download.pytorch.org/whl/cpu"
|
|
},
|
|
{
|
|
"id": "gpu",
|
|
"label": "GPU / CUDA",
|
|
"requirementsFile": "requirements_gpu.txt"
|
|
},
|
|
{
|
|
"id": "nlp",
|
|
"label": "NLP / spaCy (optional)",
|
|
"requirementsFile": "requirements_nlp_optional.txt",
|
|
"postInstallCommands": [
|
|
"spacy download en_core_web_sm"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"node": {
|
|
"packageManager": "npm",
|
|
"workingDir": "Journal.App"
|
|
}
|
|
},
|
|
"targets": [
|
|
{
|
|
"id": "sidecar",
|
|
"label": "Publish Sidecar",
|
|
"description": "Build Journal.Sidecar as self-contained exe → output/",
|
|
"group": "Build",
|
|
"command": "pwsh",
|
|
"args": [
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
"scripts/publish-sidecar.ps1",
|
|
"-Configuration",
|
|
"Release",
|
|
"-Runtime",
|
|
"win-x64"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": []
|
|
},
|
|
{
|
|
"id": "web",
|
|
"label": "Build Web UI",
|
|
"description": "Build SvelteKit bundle → Journal.App/build/",
|
|
"group": "Build",
|
|
"command": "pwsh",
|
|
"args": [
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
"scripts/publish-app.ps1",
|
|
"-Target",
|
|
"web"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": []
|
|
},
|
|
{
|
|
"id": "webgateway",
|
|
"label": "Publish WebGateway",
|
|
"description": "Publish ASP.NET host with embedded web UI → output/webgateway/",
|
|
"group": "Build",
|
|
"command": "pwsh",
|
|
"args": [
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
"scripts/publish-webgateway.ps1",
|
|
"-Configuration",
|
|
"Release",
|
|
"-Runtime",
|
|
"win-x64"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": [
|
|
"web"
|
|
]
|
|
},
|
|
{
|
|
"id": "tauri",
|
|
"label": "Build Tauri Desktop App",
|
|
"description": "Build desktop exe (no installer) → Journal.App/src-tauri/target/release/",
|
|
"group": "Build",
|
|
"command": "pwsh",
|
|
"args": [
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
"scripts/publish-app.ps1",
|
|
"-Target",
|
|
"tauri",
|
|
"-TauriBundles",
|
|
"none"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": [
|
|
"sidecar"
|
|
]
|
|
},
|
|
{
|
|
"id": "tauri-nsis",
|
|
"label": "Build Tauri + NSIS Installer",
|
|
"description": "Build desktop exe with NSIS installer package",
|
|
"group": "Build",
|
|
"command": "pwsh",
|
|
"args": [
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
"scripts/publish-app.ps1",
|
|
"-Target",
|
|
"tauri",
|
|
"-TauriBundles",
|
|
"nsis"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": [
|
|
"sidecar"
|
|
]
|
|
},
|
|
{
|
|
"id": "build-dotnet",
|
|
"label": "Build .NET Projects",
|
|
"description": "dotnet build — all C# projects in solution",
|
|
"group": "Build",
|
|
"command": "dotnet",
|
|
"args": [
|
|
"build"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": []
|
|
},
|
|
{
|
|
"id": "all",
|
|
"label": "Full Release Build ✦",
|
|
"description": "Sidecar → Web → WebGateway → Tauri, in dependency order",
|
|
"group": "Build",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": ".",
|
|
"dependsOn": [
|
|
"sidecar",
|
|
"web",
|
|
"webgateway",
|
|
"tauri"
|
|
]
|
|
},
|
|
{
|
|
"id": "run-gateway",
|
|
"label": "Run WebGateway",
|
|
"description": "Start HTTP gateway dev server at http://localhost:5180",
|
|
"group": "Dev",
|
|
"command": "pwsh",
|
|
"args": [
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
"scripts/run-webgateway.ps1"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": []
|
|
},
|
|
{
|
|
"id": "test",
|
|
"label": "Run Smoke Tests",
|
|
"description": "Run all ~80 integration tests in Journal.SmokeTests",
|
|
"group": "Test",
|
|
"command": "dotnet",
|
|
"args": [
|
|
"run",
|
|
"--project",
|
|
"Journal.SmokeTests/Journal.SmokeTests.csproj"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": []
|
|
},
|
|
{
|
|
"id": "gate",
|
|
"label": "Run Migration Gate",
|
|
"description": "Full build + smoke tests + parity check",
|
|
"group": "Test",
|
|
"command": "pwsh",
|
|
"args": [
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
"scripts/migration-gate.ps1"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": []
|
|
},
|
|
{
|
|
"id": "nuget-export",
|
|
"label": "Export NuGet Cache",
|
|
"description": "Prime and export .nuget cache to zip for offline use",
|
|
"group": "Cache",
|
|
"command": "pwsh",
|
|
"args": [
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
"scripts/nuget-export-cache.ps1"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": []
|
|
},
|
|
{
|
|
"id": "nuget-import",
|
|
"label": "Import NuGet Cache",
|
|
"description": "Import cache zip and validate restore",
|
|
"group": "Cache",
|
|
"command": "pwsh",
|
|
"args": [
|
|
"-NoProfile",
|
|
"-ExecutionPolicy",
|
|
"Bypass",
|
|
"-File",
|
|
"scripts/nuget-import-cache.ps1"
|
|
],
|
|
"workingDir": ".",
|
|
"dependsOn": []
|
|
}
|
|
],
|
|
"env": [
|
|
{
|
|
"key": "JOURNAL_AI_PROVIDER",
|
|
"description": "AI provider bridge mode",
|
|
"default": "none",
|
|
"options": [
|
|
"none",
|
|
"python-sidecar"
|
|
]
|
|
},
|
|
{
|
|
"key": "JOURNAL_LOG_LEVEL",
|
|
"description": "Log verbosity for C# backend",
|
|
"default": "warning",
|
|
"options": [
|
|
"trace",
|
|
"debug",
|
|
"information",
|
|
"warning",
|
|
"error",
|
|
"critical"
|
|
]
|
|
},
|
|
{
|
|
"key": "JOURNAL_NLP_BACKEND",
|
|
"description": "Python NLP backend selection",
|
|
"default": "auto",
|
|
"options": [
|
|
"auto",
|
|
"spacy",
|
|
"fallback"
|
|
]
|
|
},
|
|
{
|
|
"key": "JOURNAL_PROJECT_ROOT",
|
|
"description": "Override project root path (blank = auto-detect)",
|
|
"default": "",
|
|
"options": []
|
|
},
|
|
{
|
|
"key": "JOURNAL_VAULT_DIR",
|
|
"description": "Override vault directory path",
|
|
"default": "",
|
|
"options": []
|
|
},
|
|
{
|
|
"key": "JOURNAL_DATA_DIR",
|
|
"description": "Override decrypted data directory path",
|
|
"default": "",
|
|
"options": []
|
|
}
|
|
]
|
|
} |