Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/workflows/release-vscode-extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,14 @@ jobs:
- name: Package VSIX
id: pack
working-directory: vscode-extension
# Through `package:vsix`, so the README base URLs are declared once. vsce
# ignores `repository.directory` (microsoft/vscode-vsce#980) and resolves
# a relative README link against the repository root, which for an
# extension in a subdirectory is one level too high — and it does so
# silently, shipping a 404 with no warning.
run: |
set -euo pipefail
vsce package --no-dependencies
pnpm run package:vsix
shopt -s nullglob
files=( *.vsix )
if [[ ${#files[@]} -ne 1 ]]; then
Expand Down
4 changes: 3 additions & 1 deletion docs/contributor/development/project-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,6 @@ The scope carries the organization and the name carries the role, so `@tumaet/ap

Its Marketplace identity is `publisher.name` — `aet-tum.apollon-extension`, where `aet-tum` is the organization's publisher, alongside `aet-tum.iris-thaumantias`. `publisher` and `name` in `vscode-extension/package.json` are the only source for that identity: the release workflow reads both to decide which listing to query, which tag to cut, and what to print in the release notes. Changing either points the release at a different listing, and installed clients follow the identity, not the repository — a new identity reaches nobody who already has the extension.

The name reads oddly for a package whose directory is `vscode-extension/`, and it cannot be improved. The Marketplace reserves an extension name across **all** publishers, and `apollon-vscode` is held by `tumaet.apollon-vscode` — an abandoned listing from `ls1intum/apollon-vscode`, the archived repository this workspace replaced. Publishing a new extension under that name fails with `The extension 'apollon-vscode' already exists in the Marketplace`. `aet-tum.apollon-extension` is the listing this project already owns, so releases update it in place and the installs it carries keep receiving them.
The name reads oddly for a package whose directory is `vscode-extension/`, and it cannot be improved. The Marketplace reserves both an extension's `name` and its `displayName` across **all** publishers, and the abandoned `tumaet.apollon-vscode` listing — from `ls1intum/apollon-vscode`, the archived repository this workspace replaced — holds `apollon-vscode` and `Apollon` respectively. Claiming either fails at publish time, server-side, with `already exists in the Marketplace` or `This extension display name is taken`. So the manifest keeps `apollon-extension` / `Apollon - TUM`: the listing this project already owns, whose display name also matches its sibling `aet-tum.iris-thaumantias` (`Artemis - TUM`). Releases update that listing in place, and the installs it carries keep receiving them.

`vsce` resolves relative README links against the repository root, ignoring `repository.directory` ([vscode-vsce#980](https://github.com/microsoft/vscode-vsce/issues/980)), so an extension in a subdirectory ships links one level too high — silently, with no warning. The `package:vsix` script therefore passes `--baseContentUrl` and `--baseImagesUrl` pointing at `vscode-extension/`, and the release workflow packages through that script rather than calling `vsce` itself. A README link may not escape the extension root either: `../LICENSE` survives verbatim into the URL, and GitHub does not normalize `..` in a blob path.
4 changes: 2 additions & 2 deletions vscode-extension/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Model UML diagrams directly in Visual Studio Code using the [Apollon](https://gi
2. Open any `.apollon` file to edit it on the canvas. It behaves like any other editor: <kbd>Cmd/Ctrl+S</kbd> saves, the tab shows unsaved changes, and <kbd>Cmd/Ctrl+Z</kbd> undoes.
3. To read or diff the raw JSON, use **Reopen Editor With… → Text Editor**.

Supported diagram types match the [`@tumaet/apollon`](https://www.npmjs.com/package/@tumaet/apollon) library: class, object, activity, use case, communication, component, deployment, Petri net, reachability graph, syntax tree, flowchart, BPMN, and SFC.
Supported diagram types match the [`@tumaet/apollon`](https://www.npmjs.com/package/@tumaet/apollon) library: class, object, activity, use case, communication, component, deployment, Petri net, reachability graph, syntax tree, flowchart, BPMN, and sequential function chart.

## Export

Expand All @@ -27,4 +27,4 @@ Run **Apollon: Export Diagram as Image** to write a sibling `.svg` or `.png` nex

## License

MIT — see the monorepo [LICENSE](../LICENSE).
MIT — see [LICENSE](./LICENSE.txt).
4 changes: 2 additions & 2 deletions vscode-extension/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "apollon-extension",
"displayName": "Apollon",
"displayName": "Apollon - TUM",
"description": "Embeddable UML modeling editor for VS Code. Create, edit, and export UML diagrams (class, component, activity, BPMN, and more) directly inside your editor.",
"publisher": "aet-tum",
"license": "MIT",
Expand Down Expand Up @@ -162,7 +162,7 @@
"lint:fix": "eslint --fix src webview/src",
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p webview/tsconfig.json --noEmit",
"test": "vitest run",
"package:vsix": "vsce package --no-dependencies",
"package:vsix": "vsce package --no-dependencies --baseContentUrl https://github.com/ls1intum/Apollon/blob/main/vscode-extension --baseImagesUrl https://raw.githubusercontent.com/ls1intum/Apollon/main/vscode-extension",
"start:webview": "pnpm --filter @tumaet/vscode-webview run start",
"build:webview": "pnpm --filter @tumaet/vscode-webview run build",
"build:all": "pnpm run build && pnpm run build:webview"
Expand Down
Loading