Archify Diagram Viewer 0.1.0
VS Code extension that previews Archify diagrams from their JSON sources (live, as you type) and opens rendered Archify HTML in a viewer tab. Bundles the Archify 3.0.1 renderer and runs it on VS Code's Node runtime. Adds validation diagnostics, JSON schema help, source-link navigation, export saving, render-to-file and open-in-browser commands. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+315
@@ -0,0 +1,315 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
Reference in New Issue
Block a user