diff --git a/CHANGELOG.md b/CHANGELOG.md index 231c615..97f35e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.5.2 — 2026-10-10 + +- **Right-click menus:** the Archify commands (Archify | New Diagram…, Archify | Open Preview, Archify | Render to HTML File…, Archify | Open in HTML Viewer) now sit in their own section at the very bottom of the Explorer and editor-tab menus, instead of between New File, New Folder and the other built-in entries. +- **All commands are named "Archify | …"**, the same in right-click menus, the editor title bar and the Command Palette: Archify | New Diagram… (was *New Diagram Archify…*), Archify | Open Preview, Archify | Open Preview to the Side, Archify | Render to HTML File…, Archify | Open in HTML Viewer, Archify | Open in Browser, Archify | Refresh Preview, Archify | Show Source. + ## 0.5.1 — 2026-10-07 - **Clearer descriptions:** the Marketplace description, README and messages now say plainly that diagrams are `.archify` files in YAML. Archify's own JSON files (`*.architecture.json`, …) and rendered HTML are described as also supported, in their own section. diff --git a/README.md b/README.md index 6939caa..6269714 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ New diagrams should be `.archify` files; everything below describes them unless ## Quick start -The fastest start: right-click a folder in the Explorer and choose **New Diagram Archify…** (also in *File → New File…* and the Command Palette). Pick a kind of diagram (Architecture, Workflow, Sequence, Data Flow, Lifecycle or Everyday Plan), give it a name, and a small working `.archify` file is created and opened. Change its YAML to fit your case. +The fastest start: right-click a folder in the Explorer and choose **Archify | New Diagram…** (also in *File → New File…* and the Command Palette). Pick a kind of diagram (Architecture, Workflow, Sequence, Data Flow, Lifecycle or Everyday Plan), give it a name, and a small working `.archify` file is created and opened. Change its YAML to fit your case. To write one by hand: @@ -59,22 +59,22 @@ The Archify CLI and the AI agents that use it write diagrams as JSON, named `nam ## Features -- **New diagram from a template**: *New Diagram Archify…* creates a starter `.archify` file for any of the five diagram kinds, or an everyday plan, in the chosen folder. +- **New diagram from a template**: *Archify | New Diagram…* creates a starter `.archify` file for any of the five diagram kinds, or an everyday plan, in the chosen folder. - **Diagram editor**: `.archify` files open as the rendered diagram. **Show Source** opens the YAML beside it, and edits re-render live. - **Live updates**: the diagram re-renders as you edit, and keeps the focus and route you selected (`#focus=…`, `#route=…`). -- **HTML viewer**: right-click a rendered `.html` file and choose **Open in Archify HTML Viewer**, or use *Reopen Editor With… → Archify HTML Viewer*. For Archify HTML already open as text, a button appears in the editor title. The viewer reloads when the file changes on disk. +- **HTML viewer**: right-click a rendered `.html` file and choose **Archify | Open in HTML Viewer**, or use *Reopen Editor With… → Archify HTML Viewer*. For Archify HTML already open as text, a button appears in the editor title. The viewer reloads when the file changes on disk. - **Problems**: YAML syntax errors, plus `archify validate`'s schema, layout and evidence problems, appear at the matching line of the `.archify` file. - **Brand logos**: after `brand:` the editor suggests Archify's built-in brand IDs (PostgreSQL, Redis, Kafka, Docker, …). Typing an alias or product name finds them too, so `kafka` offers `apache-kafka`. An unknown brand is reported on its own line. - **Schema help**: completion and hover from Archify's own schemas, through the YAML extension for `.archify` files. - **Source links**: in source-backed diagrams, clicking a source reference opens that file and line range in the editor. If the file is not in the workspace, the web link opens instead. - **Export**: the diagram's own Export menu (PNG, SVG, share card, …) saves through a VS Code save dialog. -- **Commands**: *New Diagram Archify…*, *Archify: Render to HTML File…*, *Archify: Open in Browser*, *Archify: Refresh Preview*, *Archify: Show Source*. +- **Commands**: *Archify | New Diagram…*, *Archify | Render to HTML File…*, *Archify | Open in Browser*, *Archify | Refresh Preview*, *Archify | Show Source*. ## Source evidence A diagram that declares `meta.repository` and `sources` is verified against a local Git checkout whose `origin` and pinned commit match. The extension uses the Git top-level directory of the diagram file, or `archify.repoRoot` when set. -When verification fails, the default (`archify.sourceEvidence: "fallback"`) still shows the diagram without source links, explains why in a notice, and reports the reason as a warning. Set it to `"strict"` to treat this as an error, as the Archify CLI does. *Render to HTML File…* always verifies strictly and asks before rendering without source links. +When verification fails, the default (`archify.sourceEvidence: "fallback"`) still shows the diagram without source links, explains why in a notice, and reports the reason as a warning. Set it to `"strict"` to treat this as an error, as the Archify CLI does. *Archify | Render to HTML File…* always verifies strictly and asks before rendering without source links. ## Settings diff --git a/package-lock.json b/package-lock.json index 0a2f1d4..347c168 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "archify-vscode-ext", - "version": "0.5.1", + "version": "0.5.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "archify-vscode-ext", - "version": "0.5.1", + "version": "0.5.2", "license": "MIT", "dependencies": { "yaml": "^2.9.1" diff --git a/package.json b/package.json index fe1bc4d..244fd96 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "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.5.1", + "version": "0.5.2", "publisher": "root-at-skic", "license": "MIT", "icon": "media/icon.png", @@ -41,49 +41,42 @@ "commands": [ { "command": "archify.newDiagram", - "title": "New Diagram Archify\u2026", + "title": "Archify | New Diagram\u2026", "icon": "$(new-file)" }, { "command": "archify.showPreview", - "title": "Open Preview", - "category": "Archify", + "title": "Archify | Open Preview", "icon": "$(open-preview)" }, { "command": "archify.showPreviewToSide", - "title": "Open Preview to the Side", - "category": "Archify", + "title": "Archify | Open Preview to the Side", "icon": "$(open-preview)" }, { "command": "archify.openHtmlViewer", - "title": "Open in Archify HTML Viewer", - "category": "Archify", + "title": "Archify | Open in HTML Viewer", "icon": "$(open-preview)" }, { "command": "archify.renderToHtml", - "title": "Render to HTML File\u2026", - "category": "Archify", + "title": "Archify | Render to HTML File\u2026", "icon": "$(file-code)" }, { "command": "archify.openInBrowser", - "title": "Open in Browser", - "category": "Archify", + "title": "Archify | Open in Browser", "icon": "$(globe)" }, { "command": "archify.refreshPreview", - "title": "Refresh Preview", - "category": "Archify", + "title": "Archify | Refresh Preview", "icon": "$(refresh)" }, { "command": "archify.showSource", - "title": "Show Source", - "category": "Archify", + "title": "Archify | Show Source", "icon": "$(go-to-file)" } ], @@ -154,29 +147,29 @@ { "command": "archify.newDiagram", "when": "explorerResourceIsFolder", - "group": "navigation@10" + "group": "zzz_archify@1" }, { "command": "archify.showPreview", "when": "resourceFilename =~ /(\\.archify|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/", - "group": "navigation@20" + "group": "zzz_archify@2" }, { "command": "archify.renderToHtml", "when": "resourceFilename =~ /(\\.archify|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/", - "group": "navigation@21" + "group": "zzz_archify@3" }, { "command": "archify.openHtmlViewer", "when": "resourceExtname == .html", - "group": "navigation@20" + "group": "zzz_archify@2" } ], "editor/title/context": [ { "command": "archify.showPreview", "when": "resourceFilename =~ /(\\.archify|\\.(architecture|workflow|sequence|dataflow|lifecycle)\\.json)$/", - "group": "1_open" + "group": "zzz_archify@1" } ], "file/newFile": [ diff --git a/src/extension.ts b/src/extension.ts index 175ebea..55d8a0c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -119,7 +119,7 @@ export function activate(context: vscode.ExtensionContext): void { vscode.commands.registerCommand('archify.newDiagram', async (arg?: unknown) => { const template = await vscode.window.showQuickPick( TEMPLATES.map((item) => ({ label: item.label, description: item.description, template: item })), - { title: 'New Diagram Archify', placeHolder: 'Kind of diagram' }, + { title: 'Archify | New Diagram', placeHolder: 'Kind of diagram' }, ); if (!template) return; const { file, defaultName } = template.template; @@ -128,7 +128,7 @@ export function activate(context: vscode.ExtensionContext): void { let target: vscode.Uri | undefined; if (folder) { const name = await vscode.window.showInputBox({ - title: 'New Diagram Archify', + title: 'Archify | New Diagram', prompt: `File name in ${vscode.workspace.asRelativePath(folder, true)}`, value: defaultName, validateInput: async (value) => @@ -140,7 +140,7 @@ export function activate(context: vscode.ExtensionContext): void { } else { // No workspace: let the user choose where to save. target = await vscode.window.showSaveDialog({ - title: 'New Diagram Archify', + title: 'Archify | New Diagram', filters: { 'Archify Diagram': ['archify'] }, saveLabel: 'Create', }); diff --git a/test/integration/suite.ts b/test/integration/suite.ts index 6358fb5..58edae6 100644 --- a/test/integration/suite.ts +++ b/test/integration/suite.ts @@ -97,11 +97,11 @@ export async function run(): Promise { assert.ok(diagnostics[0].range.start.line >= 2, `reported on line ${diagnostics[0].range.start.line + 1}`); }); - await check('New Diagram Archify creates a .archify file from a template and opens the diagram', async () => { + await check('Archify | New Diagram creates a .archify file from a template and opens the diagram', async () => { // Menus show the bare title, so it must name Archify by itself. const commands = vscode.extensions.getExtension(EXTENSION_ID)?.packageJSON.contributes.commands as { command: string; title: string; category?: string }[]; const newDiagram = commands.find((item) => item.command === 'archify.newDiagram'); - assert.equal(newDiagram?.title, 'New Diagram Archify…'); + assert.equal(newDiagram?.title, 'Archify | New Diagram…'); assert.equal(newDiagram?.category, undefined); const folder = workspaceFile('.'); // Stub the template pick and the name prompt; check the name validation on the way.