Skip to content

Commit 49d6286

Browse files
refactor: name every private workspace @tumaet/<role>
The scope carries the organization, the name carries the role. Two workspaces broke that rule for no reason: the extension's webview was unscoped, and the docs site repeated the product name. apollon-vscode-webview -> @tumaet/vscode-webview @tumaet/apollon-docs -> @tumaet/docs Neither is published and nothing depends on either via workspace:*, so both are reached only through `pnpm --filter` — the rename is inert to resolution and leaves the lockfile untouched. `apollon-vscode` keeps its unscoped name. The Marketplace requires an extension name to match [a-z0-9][a-z0-9-]* and vsce rejects a scope, so `tumaet.apollon-vscode` already is the scoped name, spelled the way the Marketplace spells scopes. Renaming it would orphan every install. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 6c8f782 commit 49d6286

10 files changed

Lines changed: 19 additions & 17 deletions

File tree

.changeset/config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
],
99
"updateInternalDependencies": "patch",
1010
"privatePackages": { "version": true, "tag": false },
11-
"ignore": ["@tumaet/apollon-docs", "apollon-vscode-webview"]
11+
"ignore": ["@tumaet/docs", "@tumaet/vscode-webview"]
1212
}

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ jobs:
7777
docusaurus-${{ steps.flag.outputs.is-production }}-${{ hashFiles('pnpm-lock.yaml') }}-
7878
docusaurus-${{ steps.flag.outputs.is-production }}-
7979
80-
- run: pnpm --filter @tumaet/apollon-docs run build
80+
- run: pnpm --filter @tumaet/docs run build
8181
env:
8282
DOCUSAURUS_BASE_URL: ${{ steps.flag.outputs.is-production == 'true' && '/Apollon/' || '/' }}
8383

.github/workflows/pr-health-checks.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ jobs:
148148
# `docs/` imports `@tumaet/apollon` for the live embed, so its
149149
# `tsc --noEmit` resolves through the library's exports map and
150150
# needs `library/dist/` to exist — keep this step after build.
151-
run: pnpm --filter @tumaet/apollon-docs run typecheck
151+
run: pnpm --filter @tumaet/docs run typecheck
152152

153153
- name: Typecheck doc code examples
154154
# Compiles the ```ts / ```tsx examples in library/README.md,

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ A pnpm + Vite monorepo (the server compiles with `tsc`, not Vite).
1616
- **`library/`**`@tumaet/apollon`, the embeddable React editor, published to npm. Native HTML + Base UI primitives (`@base-ui/react`) styled via `--apollon-*` CSS variables; `lucide-react` icons; Yjs collaboration — the live-cursor/presence layer lives here ([`collaboration.md`](docs/library/api/collaboration.md)).
1717
- **`standalone/webapp/`**`@tumaet/webapp` (private). React + Vite + Tailwind; Capacitor for iOS/Android.
1818
- **`standalone/server/`**`@tumaet/server` (private). Express + Redis Stack (RedisJSON diagram storage + version history).
19-
- **`vscode-extension/`**`apollon-vscode`, with nested `menu/` and `editor/` webview sub-packages.
20-
- **`docs/`**`@tumaet/apollon-docs` (private), the Docusaurus site (`user/` · `library/` · `contributor/`).
19+
- **`vscode-extension/`**`apollon-vscode`, the extension host, with a nested `webview/` sub-package (`@tumaet/vscode-webview`). Unscoped because the VS Code Marketplace forbids a scope in an extension name.
20+
- **`docs/`**`@tumaet/docs` (private), the Docusaurus site (`user/` · `library/` · `contributor/`).
2121
- **`ops/`** — runbooks and legal/DSMS material; not part of any release.
2222

2323
`@tumaet/apollon` is consumed via `workspace:*` by every other workspace, so a library change can ripple everywhere. `standalone/webapp` + `standalone/server` are paired in `.changeset/config.json#fixed` and release together. The `library/` workspace targets an older Node floor than the repo (it ships to external consumers) — check `library/package.json` before using newer Node APIs.

docs/contributor/development/project-structure.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Apollon/
3030
│ └── package.json
3131
├── vscode-extension/ # apollon-vscode — VS Code extension
3232
│ ├── src/ # extension host (custom text editor, tree view, commands)
33-
│ └── webview/ # apollon-vscode-webview — diagram canvas (Vite)
33+
│ └── webview/ # @tumaet/vscode-webview — diagram canvas (Vite)
3434
├── docker/ # Compose files for local + production
3535
├── docs/ # Documentation sources (this directory)
3636
├── scripts/ # dev.mjs and other monorepo helpers
@@ -52,5 +52,7 @@ Apollon/
5252
| `standalone/webapp/` | `@tumaet/webapp` | `ghcr.io/ls1intum/apollon/webapp` |
5353
| `standalone/server/` | `@tumaet/server` | `ghcr.io/ls1intum/apollon/server` |
5454
| `vscode-extension/` | `apollon-vscode` | [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=tumaet.apollon-vscode) |
55-
| `vscode-extension/webview/` | `apollon-vscode-webview` | bundled into the extension VSIX |
56-
| `docs/` | `@tumaet/apollon-docs` | published as the Docusaurus site at <https://ls1intum.github.io/Apollon/> |
55+
| `vscode-extension/webview/` | `@tumaet/vscode-webview` | bundled into the extension VSIX |
56+
| `docs/` | `@tumaet/docs` | published as the Docusaurus site at <https://ls1intum.github.io/Apollon/> |
57+
58+
The scope carries the organization and the name carries the role, so `@tumaet/apollon` is the product and every other workspace is named for the job it does. `apollon-vscode` is the sole exception: the VS Code Marketplace requires an extension name to match `[a-z0-9][a-z0-9-]*`, so `vsce` rejects a scope outright. Its Marketplace identity, `tumaet.apollon-vscode`, is the same name spelled the way the Marketplace spells scopes — and it is fixed for good, because the identity is what installed clients follow for updates.

docs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "@tumaet/apollon-docs",
2+
"name": "@tumaet/docs",
33
"version": "0.0.0",
44
"private": true,
55
"scripts": {

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"build:server": "pnpm --filter @tumaet/server run build",
1111
"build:webapp": "pnpm --filter @tumaet/webapp run build",
1212
"build:vscode": "pnpm --filter apollon-vscode run build:all",
13-
"build:docs": "pnpm run build:lib && pnpm --filter @tumaet/apollon-docs run build",
13+
"build:docs": "pnpm run build:lib && pnpm --filter @tumaet/docs run build",
1414
"check:doc-snippets": "pnpm run build:lib && node scripts/check-doc-snippets.mjs",
1515
"storybook": "pnpm --filter @tumaet/webapp run storybook",
1616
"build-storybook": "pnpm --filter @tumaet/webapp run build-storybook",
@@ -20,7 +20,7 @@
2020
"dev:server": "pnpm run ensure:localdb && pnpm --filter @tumaet/server run dev",
2121
"dev:webapp": "pnpm --filter @tumaet/webapp run start",
2222
"dev:vscode": "pnpm --filter apollon-vscode run watch",
23-
"dev:docs": "pnpm run build:lib && pnpm --filter @tumaet/apollon-docs run start",
23+
"dev:docs": "pnpm run build:lib && pnpm --filter @tumaet/docs run start",
2424
"start": "concurrently \"pnpm run start:server\" \"pnpm run start:webapp\"",
2525
"start:server": "pnpm --filter @tumaet/server run start",
2626
"start:webapp": "pnpm --filter @tumaet/webapp run start",
@@ -34,7 +34,7 @@
3434
"lint:server": "pnpm --filter @tumaet/server run lint",
3535
"lint:webapp": "pnpm --filter @tumaet/webapp run lint",
3636
"lint:vscode": "pnpm --filter apollon-vscode run lint",
37-
"lint:docs": "pnpm --filter @tumaet/apollon-docs run lint",
37+
"lint:docs": "pnpm --filter @tumaet/docs run lint",
3838
"lint:fix": "concurrently \"pnpm run lint:fix:ui\" \"pnpm run lint:fix:lib\" \"pnpm run lint:fix:server\" \"pnpm run lint:fix:webapp\" \"pnpm run lint:fix:vscode\"",
3939
"lint:fix:ui": "pnpm --filter @tumaet/ui run lint:fix",
4040
"lint:fix:lib": "pnpm --filter @tumaet/apollon run lint:fix",

vscode-extension/README.dev.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Build, run, and release notes for the [Apollon VS Code extension](./README.md).
77
Two pnpm workspaces:
88

99
- [`src/`](./src)`apollon-vscode`, the extension host (Vite library mode, CJS output). Registers a `CustomTextEditorProvider` for `*.apollon`, a native tree view of the workspace's diagrams, and the `Apollon: …` commands. It reaches the filesystem only through `vscode.workspace.fs`, so it works in virtual and remote workspaces. It is not a [web extension](https://code.visualstudio.com/api/extension-guides/web-extensions): there is no `browser` entry point.
10-
- [`webview/`](./webview)`apollon-vscode-webview`, the canvas that hosts the `@tumaet/apollon` editor (Vite).
10+
- [`webview/`](./webview)`@tumaet/vscode-webview`, the canvas that hosts the `@tumaet/apollon` editor (Vite).
1111

1212
[`src/shared/protocol.ts`](./src/shared/protocol.ts) is the single typed contract between the two, and the class doc on [`ApollonEditorProvider`](./src/apollonEditorProvider.ts) explains how document and canvas stay in sync.
1313

@@ -22,7 +22,7 @@ pnpm install
2222
## Run locally
2323

2424
```sh
25-
pnpm --filter apollon-vscode-webview start # webview
25+
pnpm --filter @tumaet/vscode-webview start # webview
2626
pnpm --filter apollon-vscode watch # extension host
2727
```
2828

vscode-extension/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@
163163
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p webview/tsconfig.json --noEmit",
164164
"test": "vitest run",
165165
"package:vsix": "vsce package --no-dependencies",
166-
"start:webview": "pnpm --filter apollon-vscode-webview run start",
167-
"build:webview": "pnpm --filter apollon-vscode-webview run build",
166+
"start:webview": "pnpm --filter @tumaet/vscode-webview run start",
167+
"build:webview": "pnpm --filter @tumaet/vscode-webview run build",
168168
"build:all": "pnpm run build && pnpm run build:webview"
169169
},
170170
"devDependencies": {

vscode-extension/webview/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "apollon-vscode-webview",
2+
"name": "@tumaet/vscode-webview",
33
"version": "1.0.0",
44
"private": true,
55
"type": "module",

0 commit comments

Comments
 (0)