Architecture decisions: files, diagram references, views and panels

- *.archify-decision files: id (unique, words), title, status, date,
  elements, diagrams, supersedes, and prose; parsed, merged and link-checked
  in the model index; diagnostics on the file
- diagrams point at decisions with decisions: [...] on the diagram, nodes
  and edges; stripped before Archify, unknown ids reported, completion,
  hover and go-to-definition for the ids and for elements/diagrams/
  supersedes in decision files
- Decisions panel on the main.archify page; Decisions rail panel under a
  diagram (hover lights up the node or connection); decisions on element
  cards and in the element dialog; decision view for the file, with a
  lost-model note outside a model
- Archify | New Decision… command and template; editor schemas; the three
  New Model examples carry decisions; docs, changelog, 0.8.0
This commit is contained in:
2026-10-19 23:13:05 +03:00
parent 33ebdd6328
commit ebf320a023
49 changed files with 1637 additions and 55 deletions
+46 -14
View File
@@ -1,8 +1,8 @@
{
"name": "archify-vscode-ext",
"displayName": "Archify Diagram Viewer",
"description": "Archify diagrams in VS Code. Write diagrams as .archify files in YAML: they open as the interactive diagram, with live updates, validation, templates and completion. Also previews Archify's own JSON files (*.architecture.json, \u2026) and opens rendered Archify HTML.",
"version": "0.7.2",
"description": "Archify diagrams in VS Code. Write diagrams as .archify files in YAML: they open as the interactive diagram, with live updates, validation, templates and completion. Also previews Archify's own JSON files (*.architecture.json, …) and opens rendered Archify HTML.",
"version": "0.8.0",
"publisher": "root-at-skic",
"license": "MIT",
"sponsor": {
@@ -33,7 +33,9 @@
"registry",
"sequence",
"workflow",
"yaml"
"yaml",
"adr",
"decisions"
],
"main": "./dist/extension.js",
"activationEvents": [
@@ -42,20 +44,26 @@
"onLanguage:html",
"workspaceContains:**/*.{archify,architecture.json,workflow.json,sequence.json,dataflow.json,lifecycle.json}",
"onWebviewPanel:archify.preview",
"workspaceContains:**/*.archify-registry"
"workspaceContains:**/*.archify-registry",
"workspaceContains:**/*.archify-decision"
],
"contributes": {
"commands": [
{
"command": "archify.newDiagram",
"title": "Archify | New Diagram\u2026",
"title": "Archify | New Diagram…",
"icon": "$(new-file)"
},
{
"command": "archify.newModel",
"title": "Archify | New Model\u2026",
"title": "Archify | New Model…",
"icon": "$(new-folder)"
},
{
"command": "archify.newDecision",
"title": "Archify | New Decision…",
"icon": "$(law)"
},
{
"command": "archify.showPreview",
"title": "Archify | Open Preview",
@@ -73,7 +81,7 @@
},
{
"command": "archify.renderToHtml",
"title": "Archify | Render to HTML File\u2026",
"title": "Archify | Render to HTML File…",
"icon": "$(file-code)"
},
{
@@ -125,11 +133,11 @@
},
{
"command": "archify.showSource",
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer' || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry'"
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer' || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry' || activeCustomEditorId == 'archify.decision'"
},
{
"command": "archify.openModel",
"when": "archify.isDiagramSource || archifyPreviewFocus || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry'"
"when": "archify.isDiagramSource || archifyPreviewFocus || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry' || activeCustomEditorId == 'archify.decision'"
}
],
"editor/title": [
@@ -150,7 +158,7 @@
},
{
"command": "archify.showSource",
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer' || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry'",
"when": "archifyPreviewFocus || activeCustomEditorId == 'archify.htmlViewer' || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry' || activeCustomEditorId == 'archify.decision'",
"group": "navigation"
},
{
@@ -165,7 +173,7 @@
},
{
"command": "archify.openModel",
"when": "archify.inModel && (archify.isDiagramSource || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry') && !notebookEditorFocused",
"when": "archify.inModel && (archify.isDiagramSource || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry' || activeCustomEditorId == 'archify.decision') && !notebookEditorFocused",
"group": "navigation@60"
}
],
@@ -180,9 +188,14 @@
"when": "explorerResourceIsFolder",
"group": "zzz_archify@2"
},
{
"command": "archify.newDecision",
"when": "explorerResourceIsFolder",
"group": "zzz_archify@2"
},
{
"command": "archify.showPreview",
"when": "resourceFilename =~ /(\\.archify|\\.archify-registry|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/",
"when": "resourceFilename =~ /(\\.archify|\\.archify-registry|\\.archify-decision|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/",
"group": "zzz_archify@3"
},
{
@@ -197,7 +210,7 @@
},
{
"command": "archify.openModel",
"when": "resourceFilename =~ /\\.archify(-registry)?$/",
"when": "resourceFilename =~ /\\.archify(-registry|-decision)?$/",
"group": "zzz_archify@5"
}
],
@@ -216,6 +229,10 @@
{
"command": "archify.newModel",
"group": "file"
},
{
"command": "archify.newDecision",
"group": "file"
}
]
},
@@ -254,6 +271,16 @@
],
"priority": "default"
},
{
"viewType": "archify.decision",
"displayName": "Archify Decision",
"selector": [
{
"filenamePattern": "*.archify-decision"
}
],
"priority": "default"
},
{
"viewType": "archify.htmlViewer",
"displayName": "Archify HTML Viewer",
@@ -381,7 +408,8 @@
"id": "yaml",
"extensions": [
".archify",
".archify-registry"
".archify-registry",
".archify-decision"
]
}
],
@@ -393,6 +421,10 @@
{
"fileMatch": "*.archify-registry",
"url": "./schemas/archify-registry.schema.json"
},
{
"fileMatch": "*.archify-decision",
"url": "./schemas/archify-decision.schema.json"
}
]
},