Skip to content

GLSP-1682: Group packages and set up the consolidated pnpm workspace - #5

Open
tortmayr wants to merge 1 commit into
mainfrom
1682-glsp-core-monorepo
Open

GLSP-1682: Group packages and set up the consolidated pnpm workspace#5
tortmayr wants to merge 1 commit into
mainfrom
1682-glsp-core-monorepo

Conversation

@tortmayr

@tortmayr tortmayr commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Turn the merged client/server/dev sources into a single, self-bootstrapping monorepo that builds, lints, and tests from the root.

  • Group the merged packages by framework layer, using git renames so per-file history is preserved across the move: packages/common/protocol (shared between client and server), packages/client/{client,glsp-sprotty} and packages/server/{graph,layout-elk,server,server-mcp}
  • Add the root workspace configuration: pnpm-workspace.yaml (globbing dev-packages/, packages//, examples/, with the unioned hoist, override, build-allow and release-age settings), the root package.json with merged scripts (including test:e2e for the CLI end-to-end suite) and in-workspace dev tooling, and the TypeScript project graph
  • Add the shared lint/format/test configs: one path-scoped ESLint flat config carrying the common, client and server import rules, Prettier config, and a Vitest config that globs every package's specs
  • Align internals for the grouped layout: fix the example -> package TS reference depths and switch the remaining next protocol deps to workspace:*
  • Compile each package's specs as part of its own tsconfig instead of a separate tsconfig.test.json project, and exclude the emitted .spec./test output from the published tarball via files. This keeps decorator transpilation working for specs without a dedicated test tsconfig and independent of the test runner's tsconfig resolution
  • Consolidate the example run/dev scripts: fold the standalone launcher into a single start.mts, default the workflow server to WebSocket with matching start/start:socket scripts, and drop the --external-server bundle-path option
  • Adapt the glsp CLI to the consolidated structure: the repo commands address the client/server examples inside the glsp-core checkout, releng prepare maintains the component-grouped changelog layout, and package metadata is fixed up for the workspace. Make the workspace-resolution spec hermetic (it depended on /tmp contents)
  • Add the consolidated CHANGELOG: releases group entries by component (Client / Server / Dev Packages); everything up to and including v2.8.0 is the merged history of the source repositories, v2.9.0 will be the first monorepo release
  • Add the GitHub Actions setup: CI (build, test, lint, coverage) and CodeQL workflows plus issue/PR templates, with a lint:ci script that emits the JSON report the CI lint summary renders
  • Add the canonical EPL-2.0 project docs (LICENSE, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), a consolidated README, the shared .vscode setup, and the AI agent metadata (AGENTS.md, CLAUDE.md, skills)

Part of: eclipse-glsp/glsp#1682

Turn the merged client/server/dev sources into a single, self-bootstrapping
monorepo that builds, lints, and tests from the root.

- Group the merged packages by framework layer, using git renames so
  per-file history is preserved across the move:
  packages/common/protocol (shared between client and server),
  packages/client/{client,glsp-sprotty} and
  packages/server/{graph,layout-elk,server,server-mcp}
- Add the root workspace configuration: pnpm-workspace.yaml (globbing
  dev-packages/*, packages/*/*, examples/*, with the unioned hoist,
  override, build-allow and release-age settings), the root package.json
  with merged scripts (including test:e2e for the CLI end-to-end suite)
  and in-workspace dev tooling, and the TypeScript project graph
- Add the shared lint/format/test configs: one path-scoped ESLint flat
  config carrying the common, client and server import rules, Prettier
  config, and a Vitest config that globs every package's specs
- Align internals for the grouped layout: fix the example -> package TS
  reference depths and switch the remaining next protocol deps to
  workspace:*
- Compile each package's specs as part of its own tsconfig instead of a
  separate tsconfig.test.json project, and exclude the emitted
  *.spec.*/test output from the published tarball via files. This keeps
  decorator transpilation working for specs without a dedicated test
  tsconfig and independent of the test runner's tsconfig resolution
- Consolidate the example run/dev scripts: fold the standalone launcher
  into a single start.mts, default the workflow server to WebSocket with
  matching start/start:socket scripts, and drop the --external-server
  bundle-path option
- Adapt the glsp CLI to the consolidated structure: the repo commands
  address the client/server examples inside the glsp-core checkout,
  releng prepare maintains the component-grouped changelog layout, and
  package metadata is fixed up for the workspace. Make the
  workspace-resolution spec hermetic (it depended on /tmp contents)
- Add the consolidated CHANGELOG: releases group entries by component
  (Client / Server / Dev Packages); everything up to and including
  v2.8.0 is the merged history of the source repositories, v2.9.0 will
  be the first monorepo release
- Add the GitHub Actions setup: CI (build, test, lint, coverage) and
  CodeQL workflows plus issue/PR templates, with a lint:ci script that
  emits the JSON report the CI lint summary renders
- Add the canonical EPL-2.0 project docs (LICENSE, CONTRIBUTING,
  SECURITY, CODE_OF_CONDUCT), a consolidated README, the shared .vscode
  setup, and the AI agent metadata (AGENTS.md, CLAUDE.md, skills)

Part of: eclipse-glsp/glsp#1682
@tortmayr

tortmayr commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Still missing (will be handled in follow-up):

  • CI for release flow
  • CI for e2e tests
  • Live deployment
  • Planned integration of glsp-playwright directly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant