{ "name": "archify-vscode-ext", "displayName": "Archify Diagram Viewer", "description": "Preview Archify diagrams (architecture, workflow, sequence, dataflow, lifecycle) from their JSON sources and open rendered Archify HTML inside VS Code.", "version": "0.1.0", "publisher": "vscode-extensions", "license": "MIT", "repository": { "type": "git", "url": "https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext.git" }, "engines": { "vscode": "^1.100.0" }, "categories": [ "Visualization", "Programming Languages" ], "keywords": [ "archify", "diagram", "architecture", "sequence", "workflow" ], "main": "./dist/extension.js", "activationEvents": [ "onLanguage:json", "onLanguage:jsonc", "onLanguage:html", "workspaceContains:**/*.{architecture,workflow,sequence,dataflow,lifecycle}.json", "onWebviewPanel:archify.preview" ], "contributes": { "commands": [ { "command": "archify.showPreview", "title": "Open Preview", "category": "Archify", "icon": "$(open-preview)" }, { "command": "archify.showPreviewToSide", "title": "Open Preview to the Side", "category": "Archify", "icon": "$(open-preview)" }, { "command": "archify.openHtmlViewer", "title": "Open in Archify Viewer", "category": "Archify", "icon": "$(open-preview)" }, { "command": "archify.renderToHtml", "title": "Render to HTML File\u2026", "category": "Archify", "icon": "$(file-code)" }, { "command": "archify.openInBrowser", "title": "Open in Browser", "category": "Archify", "icon": "$(globe)" }, { "command": "archify.refreshPreview", "title": "Refresh Preview", "category": "Archify", "icon": "$(refresh)" }, { "command": "archify.showSource", "title": "Show Source", "category": "Archify", "icon": "$(go-to-file)" } ], "menus": { "commandPalette": [ { "command": "archify.showPreview", "when": "archify.isDiagramSource || archify.isArchifyHtml" }, { "command": "archify.showPreviewToSide", "when": "archify.isDiagramSource" }, { "command": "archify.openHtmlViewer", "when": "resourceExtname == .html" }, { "command": "archify.renderToHtml", "when": "archify.isDiagramSource || archifyPreviewFocus" }, { "command": "archify.openInBrowser", "when": "archify.isDiagramSource || archify.isArchifyHtml || archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer'" }, { "command": "archify.refreshPreview", "when": "archifyPreviewFocus" }, { "command": "archify.showSource", "when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer'" } ], "editor/title": [ { "command": "archify.showPreviewToSide", "when": "archify.isDiagramSource && !notebookEditorFocused", "group": "navigation" }, { "command": "archify.openHtmlViewer", "when": "archify.isArchifyHtml && activeCustomEditorId != 'archify.htmlViewer'", "group": "navigation" }, { "command": "archify.refreshPreview", "when": "archifyPreviewFocus", "group": "navigation" }, { "command": "archify.showSource", "when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer'", "group": "navigation" }, { "command": "archify.openInBrowser", "when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer'", "group": "1_archify" }, { "command": "archify.renderToHtml", "when": "archify.isDiagramSource || archifyPreviewFocus", "group": "1_archify" } ], "explorer/context": [ { "command": "archify.showPreview", "when": "resourceFilename =~ /\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json$/", "group": "navigation@20" }, { "command": "archify.renderToHtml", "when": "resourceFilename =~ /\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json$/", "group": "navigation@21" }, { "command": "archify.openHtmlViewer", "when": "resourceExtname == .html", "group": "navigation@20" } ], "editor/title/context": [ { "command": "archify.showPreview", "when": "resourceFilename =~ /\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json$/", "group": "1_open" } ] }, "keybindings": [ { "command": "archify.showPreviewToSide", "key": "ctrl+k v", "mac": "cmd+k v", "when": "editorTextFocus && archify.isDiagramSource" }, { "command": "archify.showPreview", "key": "ctrl+shift+v", "mac": "cmd+shift+v", "when": "editorTextFocus && archify.isDiagramSource" } ], "customEditors": [ { "viewType": "archify.htmlViewer", "displayName": "Archify Diagram Viewer", "selector": [ { "filenamePattern": "*.html" } ], "priority": "option" } ], "jsonValidation": [ { "fileMatch": "*.architecture.json", "url": "./schemas/architecture.schema.json" }, { "fileMatch": "*.workflow.json", "url": "./schemas/workflow.schema.json" }, { "fileMatch": "*.sequence.json", "url": "./schemas/sequence.schema.json" }, { "fileMatch": "*.dataflow.json", "url": "./schemas/dataflow.schema.json" }, { "fileMatch": "*.lifecycle.json", "url": "./schemas/lifecycle.schema.json" } ], "configuration": { "title": "Archify", "properties": { "archify.theme": { "type": "string", "enum": [ "vscode", "dark", "light", "diagram" ], "enumDescriptions": [ "Follow the VS Code color theme.", "Always use the dark diagram theme.", "Always use the light diagram theme.", "Keep whatever the diagram or its toolbar chooses." ], "default": "vscode", "description": "Theme used when showing Archify diagrams." }, "archify.preview.liveUpdate": { "type": "boolean", "default": true, "description": "Re-render the preview while you type. When off, the preview updates on save." }, "archify.preview.debounceMs": { "type": "number", "default": 400, "minimum": 50, "description": "Delay in milliseconds before re-rendering after an edit." }, "archify.validation.enabled": { "type": "boolean", "default": true, "description": "Report Archify validation results (schema, layout and source evidence) in the Problems panel." }, "archify.quality": { "type": "string", "enum": [ "", "standard", "showcase" ], "enumDescriptions": [ "Use the quality profile declared in the diagram.", "Force the standard quality gate.", "Force the showcase quality gate." ], "default": "", "description": "Quality profile passed to the Archify renderer." }, "archify.sourceEvidence": { "type": "string", "enum": [ "fallback", "strict" ], "enumDescriptions": [ "If source evidence cannot be verified, still show the diagram without source links and explain why.", "Treat unverifiable source evidence as a render error, exactly like the Archify CLI." ], "default": "fallback", "description": "How to handle diagrams whose repository source evidence cannot be verified locally." }, "archify.repoRoot": { "type": "string", "default": "", "description": "Git checkout used to verify source evidence. Empty means the Git top-level directory of the diagram file." }, "archify.nodePath": { "type": "string", "default": "", "description": "Node.js executable (18 or newer) used to run the renderer. Empty means the runtime bundled with VS Code." } } } }, "scripts": { "sync:archify": "node scripts/sync-archify.mjs", "build": "node esbuild.mjs", "watch": "node esbuild.mjs --watch", "typecheck": "tsc --noEmit", "test": "node esbuild.mjs --tests && node --test \"out/test/*.test.js\"", "vscode:prepublish": "node esbuild.mjs --production", "package": "vsce package --no-dependencies --baseContentUrl https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext/src/branch/main --baseImagesUrl https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext/raw/branch/main", "test:integration": "node esbuild.mjs && node esbuild.mjs --tests && node test/integration/run.mjs" }, "devDependencies": { "@types/node": "^22.0.0", "@types/vscode": "~1.100.0", "@vscode/test-electron": "^3.1.0", "@vscode/vsce": "^3.0.0", "esbuild": "^0.25.0", "jsonc-parser": "^3.3.1", "typescript": "^5.8.0" }, "bugs": { "url": "https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext/issues" }, "homepage": "https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext#readme" }