Compare commits

..
Author SHA1 Message Date
root-at-skic c262bb06a7 0.10.3: Sync button in the editor title bar
Every Archify page and .archify text editor gets a Sync button top right that opens the Sync menu: sign in, share, join, server address. archify.sync.titleButton hides it. The status bar entry stays.
2026-11-07 00:52:07 +02:00
root-at-skic 63f0633daa Merge pull request '0.10.2: leaving Source hides the YAML editor' (#33) from fix/source-pane-hide into main 2026-11-06 14:17:34 -08:00
5 changed files with 20 additions and 5 deletions

No files matched your search

+4
View File
@@ -1,5 +1,9 @@
# Changelog # Changelog
## 0.10.3 — 2026-11-07
- **Sync button in the title bar.** Every Archify page (and `.archify` text editors) has a **Sync** button top right, next to *Open in Text Editor*: sign in, share a model, join one, set the server address. The status bar entry stays for those who show the status bar. `archify.sync.titleButton: false` hides the button.
## 0.10.2 — 2026-11-07 ## 0.10.2 — 2026-11-07
- Fixed: going back from **Source** to **Model**, **Diagram** or **View** left the YAML editor on the page under the picture when nothing had been edited. It now hides at once. - Fixed: going back from **Source** to **Model**, **Diagram** or **View** left the YAML editor on the page under the picture when nothing had been edited. It now hides at once.
+1 -1
View File
@@ -140,7 +140,7 @@ Optional. Without a sync server the extension works exactly as described above a
[Archify Sync](https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext-sync) is a small server you run yourself (one container and PostgreSQL; a Helm chart is included). With it, a model is edited by several people at once, like a shared document, and its files stay ordinary files on each person's disk, so Git, agents and every page of this extension keep working. [Archify Sync](https://gitea.lego-cloud.eu/vscode-extensions/archify-vscode-ext-sync) is a small server you run yourself (one container and PostgreSQL; a Helm chart is included). With it, a model is edited by several people at once, like a shared document, and its files stay ordinary files on each person's disk, so Git, agents and every page of this extension keep working.
- **Where.** **Archify Sync** in the status bar (in workspaces with Archify files) opens a menu: sign in, share a model, join one, the server address, settings. The same menu is *Archify | Sync…*. Hide the entry with `archify.sync.statusBar: false`. - **Where.** The **Sync** button in the title bar of every Archify page (top right, next to *Open in Text Editor*) opens a menu: sign in, share a model, join one, the server address, settings. The same menu is **Archify Sync** in the status bar (in workspaces with Archify files) and *Archify | Sync…* in the Command Palette. `archify.sync.titleButton: false` and `archify.sync.statusBar: false` hide them.
- **Server address.** Set `archify.sync.server` once (Settings › Archify › Sync, or *Archify | Set Sync Server Address…*), for example `https://archify.example.com`. Put it in the workspace settings and everyone in the project uses the same server. Left empty, the address is asked for once and remembered. - **Server address.** Set `archify.sync.server` once (Settings › Archify › Sync, or *Archify | Set Sync Server Address…*), for example `https://archify.example.com`. Put it in the workspace settings and everyone in the project uses the same server. Left empty, the address is asked for once and remembered.
- **Sign in.** *Archify | Sign in to Sync Server…* uses that address (or asks for it) and signs in through the browser; the session is kept in VS Code's secret storage and shows under **Accounts** as *Archify Sync*. A new server is set up first on its `/setup` page with the code from its log. - **Sign in.** *Archify | Sign in to Sync Server…* uses that address (or asks for it) and signs in through the browser; the session is kept in VS Code's secret storage and shows under **Accounts** as *Archify Sync*. A new server is set up first on its `/setup` page with the code from its log.
- **Share.** *Archify | Share Model…* (also on `main.archify` in the Explorer) puts the model on the server and writes a small `.archify-sync` file next to `main.archify`: the server and the model's id, no secrets. Commit it, and everyone who clones the repository and is a member opens the shared model. - **Share.** *Archify | Share Model…* (also on `main.archify` in the Explorer) puts the model on the server and writes a small `.archify-sync` file next to `main.archify`: the server and the model's id, no secrets. Commit it, and everyone who clones the repository and is a member opens the shared model.
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "archify-vscode-ext", "name": "archify-vscode-ext",
"version": "0.10.2", "version": "0.10.3",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "archify-vscode-ext", "name": "archify-vscode-ext",
"version": "0.10.2", "version": "0.10.3",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@codemirror/autocomplete": "^6.20.4", "@codemirror/autocomplete": "^6.20.4",
+12 -2
View File
@@ -2,7 +2,7 @@
"name": "archify-vscode-ext", "name": "archify-vscode-ext",
"displayName": "Archify Diagram Viewer", "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, …) and opens rendered Archify HTML.", "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.10.2", "version": "0.10.3",
"publisher": "root-at-skic", "publisher": "root-at-skic",
"license": "MIT", "license": "MIT",
"sponsor": { "sponsor": {
@@ -163,7 +163,7 @@
{ {
"command": "archify.sync.menu", "command": "archify.sync.menu",
"title": "Archify | Sync…", "title": "Archify | Sync…",
"icon": "$(broadcast)" "icon": "$(live-share)"
}, },
{ {
"command": "archify.sync.setServer", "command": "archify.sync.setServer",
@@ -270,6 +270,11 @@
"command": "archify.openModelGraph", "command": "archify.openModelGraph",
"when": "archify.inModel && (archify.isDiagramSource || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry' || activeCustomEditorId == 'archify.decision') && !notebookEditorFocused", "when": "archify.inModel && (archify.isDiagramSource || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry' || activeCustomEditorId == 'archify.decision') && !notebookEditorFocused",
"group": "navigation@61" "group": "navigation@61"
},
{
"command": "archify.sync.menu",
"when": "config.archify.sync.titleButton && (archify.isDiagramSource || activeCustomEditorId == 'archify.diagram' || activeCustomEditorId == 'archify.registry' || activeCustomEditorId == 'archify.decision') && !notebookEditorFocused",
"group": "navigation@62"
} }
], ],
"explorer/context": [ "explorer/context": [
@@ -527,6 +532,11 @@
"type": "boolean", "type": "boolean",
"default": true, "default": true,
"markdownDescription": "Show **Archify Sync** in the status bar in workspaces with Archify files. Clicking it offers sign in, share, join and the server address. Shared models always show their state there." "markdownDescription": "Show **Archify Sync** in the status bar in workspaces with Archify files. Clicking it offers sign in, share, join and the server address. Shared models always show their state there."
},
"archify.sync.titleButton": {
"type": "boolean",
"default": true,
"markdownDescription": "Show the **Archify Sync** button in the title bar of Archify pages and `.archify` editors: sign in, share, join, server address. Archify Sync is optional; without a server the button only offers to set one up."
} }
} }
}, },
+1
View File
@@ -494,6 +494,7 @@ export async function run(): Promise<void> {
const config = vscode.workspace.getConfiguration('archify.sync'); const config = vscode.workspace.getConfiguration('archify.sync');
assert.equal(config.get('server'), ''); assert.equal(config.get('server'), '');
assert.equal(config.get('statusBar'), true); assert.equal(config.get('statusBar'), true);
assert.equal(config.get('titleButton'), true);
// The extension host's module cache: dist/sync.js (Yjs, the WebSocket) is not loaded. // The extension host's module cache: dist/sync.js (Yjs, the WebSocket) is not loaded.
const loaded = Object.keys(require.cache).filter((file) => file.endsWith(`${path.sep}dist${path.sep}sync.js`)); const loaded = Object.keys(require.cache).filter((file) => file.endsWith(`${path.sep}dist${path.sep}sync.js`));
assert.deepEqual(loaded, [], 'the sync bundle is not loaded'); assert.deepEqual(loaded, [], 'the sync bundle is not loaded');