0.3.0: .archify files are YAML and open straight into the diagram

- .archify content is YAML (JSON still accepted); converted to JSON for the renderer
- Archify Diagram custom editor is the default for *.archify; Show Source opens the YAML beside it
- YAML syntax errors and validation problems mapped to YAML lines
- yamlValidation for schema completion with redhat.vscode-yaml
- scripts/to-yaml.mjs converts existing .archify files
This commit is contained in:
2026-09-30 15:21:55 +03:00
parent a00859858c
commit d1eab34f7f
18 changed files with 744 additions and 250 deletions
+4 -4
View File
@@ -144,7 +144,7 @@ async function renderOnce(
*/
export async function renderDiagram(
options: RuntimeOptions,
source: DiagramSource & { text: string },
source: DiagramSource,
evidence: 'fallback' | 'strict',
): Promise<RenderResult> {
const withEvidence = hasSourceEvidence(source.type, source.diagram);
@@ -156,7 +156,7 @@ export async function renderDiagram(
evidenceNotice: 'Source links are hidden: the diagram is not inside a Git checkout, so its source evidence cannot be verified. Set "archify.repoRoot" to the matching checkout.',
};
}
const first = await renderOnce(options, source.type, source.text, withEvidence);
const first = await renderOnce(options, source.type, source.json, withEvidence);
if (first.ok || !withEvidence || evidence !== 'fallback' || !isEvidenceError(first.error)) {
return first;
}
@@ -173,13 +173,13 @@ export async function renderDiagram(
*/
export async function renderToFile(
options: RuntimeOptions,
source: DiagramSource & { text: string },
source: DiagramSource,
outputPath: string,
stripEvidence = false,
): Promise<RenderResult> {
const text = stripEvidence
? JSON.stringify(stripSourceEvidence(source.type, source.diagram), null, 2)
: source.text;
: source.json;
const withEvidence = !stripEvidence && hasSourceEvidence(source.type, source.diagram);
return withScratch(options, async (dir) => {
const input = path.join(dir, `diagram.${source.type}.json`);