Skip to content

GLSP-1682: Consolidate client, server, and dev packages into a single monorepo#1

Draft
tortmayr wants to merge 574 commits into
mainfrom
1682-glsp-core-monorepo
Draft

GLSP-1682: Consolidate client, server, and dev packages into a single monorepo#1
tortmayr wants to merge 574 commits into
mainfrom
1682-glsp-core-monorepo

Conversation

@tortmayr

@tortmayr tortmayr commented Jul 1, 2026

Copy link
Copy Markdown

IMPORTANT: This PR needs to be history preserving, so we need do a REAL MERGE (no rebase or squash)

What it does

Bootstraps glsp-core by merging glsp-client, glsp-server-node, and the
dev-packages from glsp into a single, self-bootstrapping pnpm monorepo that
builds, lints, and tests from the root.

  • Import each source repository via history-preserving subtree merges, so
    per-file git history survives the move (dev-packages/*, the client
    packages/examples, and the server packages/examples).
  • Group the packages by source repo under packages/client/* and
    packages/server/* (via git renames, history preserved); dev-packages/*
    and a flat examples/* round out the layout.
  • Wire up the root workspace: pnpm-workspace.yaml, a merged root
    package.json with in-workspace dev tooling, the TypeScript project graph,
    and shared ESLint/Prettier/Vitest configs unifying the client and server
    rule sets.
  • Align package internals for the grouped layout (TS reference depths,
    workspace:* protocol deps) and compile each package's specs within its own
    tsconfig, excluding emitted *.spec.*/test output from the published tarball.
  • Consolidate the example run/dev scripts (single standalone start.mts,
    WebSocket-default workflow server) and add the GitHub Actions setup: CI
    (build/test/lint/coverage) and CodeQL workflows plus issue/PR templates.
  • Add the canonical EPL-2.0 project docs (LICENSE, CONTRIBUTING, SECURITY,
    CODE_OF_CONDUCT) and a consolidated README.

Part of: eclipse-glsp/glsp#1682

How to test

pnpm install
pnpm build
pnpm test
pnpm lint
  • pnpm lint:ci runs green locally (0 errors)
  • Confirm git log --follow on a moved file (e.g. a packages/client/client/src/** source) still shows its pre-merge history.

Follow-ups

  • Add the remaining workflows deferred from this PR: e2e (e2e.yml) and the deployment/release/publish set (prepare-release.yml, publish-release.yml, publish.yml, and glsp-client's Pages/preview workflows).

Changelog

  • This PR should be mentioned in the changelog
  • This PR introduces a breaking change (if yes, provide more details below for the changelog and the migration guide)

tortmayr and others added 30 commits April 22, 2024 14:27
- Updates to latest version of @eclipse-glsp/dev
- Add generate:index utility script
- Regenerate index files
- Fix codeActionsOnSave in vscode settings
- Refactor upgrade:next script
- Reformat code base with prettier
- Fix copyright headers (by running a full check with glsp checkHeaders . -t full)
- Add resolutions for snabbdom to fix eclipse-sprotty/sprotty#429
  Can be removed once eclipse-glsp/glsp#1253 is resolved


Part of eclipse-glsp/glsp#1320
Fixes eclipse-glsp/glsp#1286
- Extend functions for Bounds, Dimensions, and Point
- Provide types and functions for Vector and Movement

Fixes eclipse-glsp/glsp#1322
* Convert CLI package back to commonjs


Convert the CLI package back to commonjs as the esm module caused issues in downstream projects.
Use async imports to still be able to use globby.

* Fix copyright header violations

* Fix linting warnings
- Provide dedicated feedback emitter object as stable emitter
- Allow cleanup functions to be calculated as a lazy function
- Log if a potentially unstable feedback emitter is used
- Split feedback in change bounds tool into dedicated files
- Properly use feedback emitter to cleanup feedback correctly

Fixes eclipse-glsp/glsp#1323
Fixes eclipse-glsp/glsp#1243

- Ensure correct snapping of ghost element position on grid

Fixes eclipse-glsp/glsp#1256
- Updates to latest version of @eclipse-glsp/dev
- Add generate:index utility script
- Regenerate index files
- Fix codeActionsOnSave in vscode settings
- Refactor upgrade:next script
- Reformat code base with prettier
- Fix copyright headers (by running a full check with glsp checkHeaders . -t full)

Part of eclipse-glsp/glsp#1320
- Move glsp-specific overrides of sprotty base classes into glsp-client directory.
- Add rule from ui-extension.css to base css file. This also fixes an issue with the missing css file we currently encounter in downstream builds

Sidenote: The sprotty-glsp package is intended as a small layer to enable a controlled reexport of sprotty provided modules. Apart from the overrides for our custom action definition (action-override), all other customization of sprotty classes should be handled in the glsp-client package.
- Ensure that the WinstonLogger does not throw an error if it encounters an unparseable object
 (e.g. circular structure)
- Add fallback hooks for uncaught exceptions/promise rejections to example server to avoid nodes default behavior (process exit)

Fixes eclipse-glsp/glsp#1195
* Introduce an optional grid module to deal with a grid layout

- Optional grid module defines a grid based on x/y coordinates
-- Adds the grid as a background that properly zooms/resizes
-- By default uses the GridSnapper for positioning elements
-- Use grid for helper lines and movement tools

- Optional debug module that shows the bounds of elements
-- Useful for debugging but not meant for production

- Render optional debug and grid toggles in tool palette if present

- Add both optional modules to the workflow example
- Use half-grid snapping for routing handles for nicer UX
- Bonus: Add OriginViewportAction to reset to 0,0 on zoom-level 1

Contributed on behalf of Axon Ivy AG

Fixes eclipse-glsp/glsp#1336
- Refactor `DiagramLoader` to catch and log errors that occur when invoking startup hooks
- This ensures both: failure of one hook does not affect execution of following hooks and if  a hook fails for any reason we provide the reason in the log output
- Refactor `RestoreViewportHandler` to use the actual dom id of the root element for querying/focusing the graph. This ensures that the focusing also works if the root model element is not of type `graph`.

Fixes eclipse-glsp/glsp#1309
* Improve handling of change bounds

- Introduce change bounds manager to centralize bounds-related services
-- Bounds changes through position snapping and movement restriction
-- Validation for size and position of an element
-- Customizable methods for when to use move and resize options

- Introduce change bounds tracker for moves and resizes
-- Tracker calculates move on diagram and calculates move and resizes
-- Tracker supports options on which parts of the process are applied

- Provide moveable wrappers for resize and routing handles

Fixes eclipse-glsp/glsp#1337

- Extend current resize capabilities
-- Introduce mode for symmetric resize
-- Introduce one-dimensional resize on top, right, bottom and left side

Fixes eclipse-glsp/glsp#1338
Fixes eclipse-glsp/glsp#1339

- Fix elements moving during resizing when hitting minimum bounds
-- Store calculated minimum size from layouter in element
-- Adapt resize so we do not produce invalid sized bounds

Fixes eclipse-glsp/glsp#1340

Minor:
- Ensure we get proper cursor feedback when hovering over resize handle
- Add additional convenience functions
- Add origin viewport command for convenience

Contributed on behalf of Axon Ivy AG
…#347)

Default event prevention should be handled by the `ICopyPasteHandler` implementation.
e.g. The default `ServerCopyPasteHandler` has guard clauses to check wether a copy or paste operation should be executed (diagram must be active and selection >0). It only default prevents if this condition is met.
Currently we bypass this special check and always default prevent which causes issues in scenarios where the diagram is nested into a surrounding application frame or is currently not focused (e.g.) hidden
- Allow resizable elements to specify resize handle location
- Use correct feedback (move) on ghost element move (not resize)
- Centralize most move/resize feedback in change bounds manager
- Do not draw grid on hidden SVG as we do not have transformation data
- Ensure we also apply move feedback if we do not have ghost element
- Ensure that the container feedback considers the insert position
- Extract container insert management into manager class
- Avoid unnecessary TYPES.* for classes
- Fix typos
- Remove circular dependencies by fixing index imports

Contributed on behalf of Axon Ivy AG
Switch to root level index generation.
- Remove all sub directory index.ts files
- Update `generate:Index` script to single file
- Update import paths
- (Check and fix copyright headers)
Fixes eclipse-glsp/glsp#1346

Co-authored-by: Martin Fleck <mfleck@eclipsesource.com>
- Ensure GridManager properly tracks state if action is used on startup
- Ensure DebugManager properly tracks state if action is used on startup
- Avoid cursor feedback interfering with edge edit feedback in disposal
- Avoid unnecessary disposal calls by calling mouseUp on mouseMove
- Fix issue with non-resizable elements not being movable
- Fix calculation of position on diagram for nested HTML elements
- More flexibility for hiddenBoundingRect
- Make EdgeCreationTool more customizable
* Minor Improvements

- Ensure we render/unhide tracked ghost element as soon as possible
- Add ghost element bounds data to arguments sent to server

* PR Feedback

- Remove snapper argument
- New: Add utility function to check if a bound object is valid
- New: Make SVG exporter a little bit more flexible
For some reason our created target elements are not actually instanceof
Element even though everything is in their prototype chain. So instead,
we now check whether it is an element with tag (HTML, SVG, Math) and
whether it has a style property.
* Configure fork and join nodes as not resizable

Update type hints configuration for workflow example to make fork and join nodes not resizable
=> we have test cases for both resizable and non-resizable elements in the diagram

Refactor createDefault hint functions to allow partial overriding of default properties

* Align edge-creation-checker condition with java server

i..e only allow decision nodes as sources for weighted edges
- Add `replace` property to `ModulConfiguration` interface. When resolving feature modules of the replace property, any potential already configured module with the same id will be replaced with the defined module. If there is nothing to replace, the module will be added to the end of the resolved configuration
- Add check for non-unique feature module ids to `resolveContainerConfiguration` function.
- Add option to enable additional debug logging when loading feature modules. This is usefull during development to get insights about why the container modules are not loaded as expected
- Add dedicated `featureIds` to all default modules. If no featureId is provided the number id of the module is reused for creating the featureId. While this works perfectly fine, it makes debugging harder because feature modules are hard to indentify based on their featureid.
With this change its now easier to derive the corresponding feature module from the featureid.

Fixes eclipse-glsp/glsp#1349
- Adjust name of `SResizeHandle` and `SResizeHandleview` to the gmodel namespace
and reexport under the old name as deprecated for backwards compatibility.

- Ensure that all diagram modules are constructed as `FeatureModules` instead of plain `ContainerModules`

- Rename modules that still have the glsp prefix and also reexport under old deprecated name
Mostly non-breaking changes. Some definitions have moved to the sprotty-protocol package.
However, we can mitigate all potential breaks with our @eclipse-glsp/sprotty reexport.

Fixes eclipse-glsp/glsp#1253
- Update next dependencies
- Update changelog
- Update copyright headers
- Add vscode-json rpc as explicit dependency to server package.
  This ensures that we are still using the same version as the client side in mono repo scenarios where multiple versions of vscode-jsonrpc are resolved
* Enhance Grid functionality and customizability

- Ensure grid is applied on normal graph view without projections
- Allow grid color to be specified through CSS
- Add more properties to the graph for re-use

* Properly escape grid color values

Color definitions with a # need to be escaped to be properly rendered
when used in a background image url
- Use our GLSPAbstractUIExtension instead of AbstractUIExtension
- Fix focus issue with GlspEditLabelUI
- Ensure that the change bounds tool does not dispatch `ChangeRoutingPointsAction` if there are not valid element moves.
- Ensure that duplicate detection in `resolveContainerConfiguration` properly stringifies symboles.
tortmayr and others added 30 commits June 2, 2026 10:11
Replace no-op elk factory with proper setup for isWebworker context.
A small workaround/hack is required to present a `document` during
construction of the factory which routes elkjs to the c orrect
in-process message worker
…1694)

- Diff against the default branch (merge-base) instead of only considering uncommitted changes, to match a PR's changed files
- Add getChangesComparedToDefaultBranch and an offline getDefaultBranchRef helper
- Update --type help and add unit and e2e coverage

Also:
- Add resolveRepoDir so server-node bundle commands accept a --dir pointing at the workspace or the repo itself
* GLSP-31: Update workflow example (standalone)

## Switch to esbuild for bundling
Part-of: eclipse-glsp/glsp#1693

## Redesign standalone example app
  - Central diagram widget
  - Proper title bar
  - Additional toggleable section for keyboard bindings
Add/introduce following features
- Context menu support
  - Server-side provided context menus
  - Navigation/Marker menu entries
  - Edit task menu entries
- Title bar with
  - Diagram menu similar to Theia integration
    - Including layout commands
  - Dirty state marker
  - Undo/Redo buttons
- Theming support
  - 5 seletable themes
  - light/dark mode variants
  - Theme switcher in title bar
- Extended urlParameter configuration
  - grid,readonly,mcp,theme,mode

Fixes eclipse-glsp/glsp#31

## Additional fixes

- Fixes an issue with the GLSP Projection view which did not calculate
scrollbars correctly for the diagrams that are off-center (don't start
at 0,0)

- Fixes an issue with the GLSPWebSocketConnectionHandler which did not
properly try to reconnect if it was launched before the server was
available

- Add comment section to claude.md

* Address review feedback
* GLSP-1693: Switch bundling to esbuild

Part of: eclipse-glsp/glsp#1693

* Update esbuild to ~0.28.0 in workflow example packages

Address review feedback on outdated esbuild versions.
Make the CLI work against both pnpm- and yarn/lerna-based GLSP
repositories so the same commands can be used during a phased migration.
This is the minimal, package-manager-agnostic CLI change to drive
forward a phased migration of repo per repo.

- Add pnpm/yarn detection and workspace discovery to package-util
  (detectPackageManager, getWorkspacePackages, command helpers)
- Route coverageReport, updateNext, releng version/prepare and the
  repo build/run/start/vscode commands through the new helpers so they
  work in both pnpm- and yarn-based repositories
- Add 'glsp releng publish <next|latest>' (replaces 'lerna publish'):
  detects the package manager and dispatches to 'pnpm publish -r' for
  pnpm repos or legacy 'lerna publish' (canary next / from-package
  latest) for not-yet-migrated yarn repos; '--dry-run' is pnpm-only
- releng version: package-manager aware via getWorkspacePackages;
  lerna.json is updated only when present (root package.json is the
  version source of truth) and workspace: ranges are preserved

Part-of: eclipse-glsp/glsp#1636
- Fix pnpm path of the updateNext cli command
- Add units tests
Also:
- Merge the /verify skill into /fix and update CLAUDE.md accordingly
- Update headers

Part of: eclipse-glsp/glsp#1636
- eslint 9->10 (+@Stylistic 2->5, globals 15->17), prettier 2->3, mocha 10->11,
  nyc 15->18, sinon 15->22, rimraf 5->6, esbuild 0.25->0.28, reflect-metadata 0.1->0.2
- Floor eslint-plugin-import-x to >=4.16.2 and the Node engine to ^22.13.0 || >=24
  for ESLint 10 compatibility
- Disable preserve-caught-error (new in ESLint 10's recommended set)
- Reformat with prettier 3 (single-space list markers) and lower markdownlint
  MD030 to 1 to match; regenerate yarn.lock

Also:
- Ignore coverage/ and .nyc_output/
- Bump shared ts-config target/lib to ES2023; set useDefineForClassFields false
  to preserve property injection
- Use nullish coalescing for exec option resolution in process-util
- Use Array.toReversed() in the repo unlink command
- Add shared uuid util to protocol package.
  Consuming packages should use the helper when needing uuids
  instead of depending on their own uuid version
- Update code-base to consistently use new helper
- Update eslint config to restrict direct 'uuid' imports
  and adjust import rules for examples

Fixes eclipse-glsp/glsp#1700
* GLSP-1636: Adopt pnpm as the monorepo package manager

- Drop the Yarn/Lerna setup (yarn.lock, lerna.json) in favor of pnpm
  workspaces declared in pnpm-workspace.yaml with a committed
  pnpm-lock.yaml
- Convert intra-repo dependencies to the workspace:* protocol
- Adapt root and package manifests (scripts, engines) and the GitHub
  Actions workflows to run on pnpm
- Ship the CLI entry point as bin/glsp.js in place of the shell wrapper
- Refresh contributor docs and workspace tasks (README, AGENTS/CLAUDE
  guides, glsp.theia.code-workspace) for the pnpm-based flow

Part of: eclipse-glsp/glsp#1636

* Update README.md

Co-authored-by: Haydar Metin <dev@haydar.metin.at>

---------

Co-authored-by: Haydar Metin <dev@haydar.metin.at>
* GLSP-1636: Replace yarn and lerna with pnpm workspaces

- Drop yarn and lerna; drive workspace management, script running, and
  publishing (via the glsp releng CLI) through pnpm 11.6.0
- Reference intra-repo packages through the workspace:* protocol
- Add pnpm-workspace.yaml carrying the dev-tooling hoist patterns, a
  minimumReleaseAge supply-chain gate, and overrides that lift
vulnerable
  transitives (serialize-javascript, js-yaml, diff) into patched ranges
- Upgrade runtime dependencies within their compatible majors
(commander,
  elkjs, and others) and drop the now-unused concurrently dev dependency
- Provision and cache pnpm in the CI and publish workflows

Also:
- Reformat files swept up by the refreshed prettier config
- Remove unused/outdated scripts and update readme

Part of: eclipse-glsp/glsp#1636

* Update package.json

---------

Co-authored-by: Haydar Metin <dev@haydar.metin.at>
- Replace yarn and lerna with pnpm workspaces as the package manager
- Use pnpm's built-in workspace management and the glsp CLI for
  publishing in place of lerna run/publish
- Adapt CI workflows, VS Code tasks, and project docs to pnpm

Also:
- Remove verify skill and improve fix skill
- Reformat code base for updated prettier formatting alignment
- Remove unused e2e-server-pr workflow
- Remove outdated/unused watch vscode task

Part-of: eclipse-glsp/glsp#1636
…703)

Rework `glsp repo link` onto pnpm and remove the remaining lerna/yarn-era
code paths from the CLI after the pnpm migration.

- Rework `repo link`/`unlink` to inject `link:` overrides into each
  consumer's pnpm-workspace.yaml (dependency-ordered), sharing the
  singleton peers (sprotty, sprotty-protocol, vscode-jsonrpc, inversify)
  from glsp-client so they resolve to a single instance across the link.
- Build each linked repo so the overrides resolve to compiled lib/
  output instead of empty source dirs (pnpm does not run yarn's
  prepare-on-install); --no-build skips it, --electron picks the Theia
  target.
- Do not link reflect-metadata: v0.2+ shares one registry on the global
  Reflect so multiple copies interoperate, and overriding it broke the
  linked build's `types: ['reflect-metadata']` resolution (TS2688).
- Support linking glsp-eclipse-integration, whose pnpm workspace lives
  in a client/ subdirectory; the link build only covers the npm side and
  leaves the Maven server to a separate build.
- Remove lerna/yarn-era leftovers: the lerna publish fallback, the
  lerna.json version update, the yarn updateNext path and the
  PackageManager auto-detection, and align the releng e2e specs and CLI
  README with the pnpm reality.

Part of: eclipse-glsp/glsp#1636
* GLSP-1635: Migrate test stack to Vitest

- Replace the Mocha/nyc/chai/sinon stack with Vitest and its v8
  coverage provider across the monorepo
- Add the @eclipse-glsp/vitest-config package providing a ready-to-use
  shared flat config; drop the now-obsolete mocha-config and
  nyc-config packages
- Rework the config-test meta package to bundle the Vitest config and
  test dependencies in place of Mocha and nyc
- Port all CLI specs to the Vitest API (chai expect, sinon sandboxes/
  stubs → vitest expect/vi) and add vite.config.ts/vite.config.e2e.ts
- Update CLI and root scripts/dependencies accordingly and drop the
  bespoke coverage-report command in favor of vitest --coverage

Also:
- Switch the CI test workflow to Vitest

Part of: eclipse-glsp/glsp#1635

* Address copilot feedback
- Convert all Chai-style BDD assertions (`.to.be.true`,
  `.to.deep.equal`, `.to.include.members`, ...) across the CLI specs
  to native Vitest matchers; they previously passed only via Vitest's
  bundled Chai-compatible API
- Drop the now-redundant eslint-plugin-chai-friendly and restore the
  plain no-unused-expressions rule, since the converted assertions are
  method calls rather than bare expression statements
- Remove the stale mocha global from the shared eslint base config

Also:
- Add a root test:coverage script
- Drop dead ctrf/ and .nyc_output/ entries from .gitignore

Part of: eclipse-glsp/glsp#1635
* GLSP-1635: Migrate test stack to Vitest

- Replace Mocha/Chai/Sinon with Vitest across all packages; specs
  import the test API explicitly from 'vitest' (no globals). Remove the
  obsolete Mocha/nyc config, the chai-based test helpers, and the
  placeholder graph spec
- Consume the shared @eclipse-glsp/vitest-config (via @eclipse-glsp/dev)
  through a single flat root vite.config.ts that globs every package's
  specs, so one `vitest run` covers the repo and produces a merged
  coverage report; drop the now-redundant per-package vite configs and
  test scripts
- Type-check specs through a composite tsconfig.test.json (root plus a
  per-package config) built by `compile:test`, which `pnpm test` runs
  before `vitest run`
- Extend the plain @eclipse-glsp/ts-config now that the separate
  '/vitest' variant and the vitest/globals types are gone
- Run `pnpm test` / `pnpm test:coverage` in CI and drop the obsolete
  CTRF "Publish Test Report" step (Vitest's github-actions reporter
  annotates failures inline) along with the redundant `:ci` scripts
- Update the VS Code launch configs to debug tests via Vitest

Also:
- Move the raw-http e2e helper out of '*.spec.ts' into a test/ folder so
  it is no longer treated as a spec or shipped in the published package
- Tidy .gitignore: ignore '*.tsbuildinfo' and drop the now-dead **/ctrf,
  .nyc_output/, and yarn-error.log entries
- Import GModelElement from the @eclipse-glsp/graph entry point instead
  of a deep lib/ path

Part of: eclipse-glsp/glsp#1635

* Address review comments

- Assert the auto-bound service (`bind(SubTarget)`) in the binding-target
  spec instead of `bind(Target)`, which is bound unconditionally and so
  never actually verified the auto-bind behavior
-Improve ignore file handling for the index generation command.
-Now has reverse lookup up the parent hierachy similar to .gitignore
* GLSP-1635: Migrate test framework from Mocha to Vitest

- Replace the Mocha/Chai/nyc/Sinon setup with Vitest: consume the
  @eclipse-glsp/dev next packages, drop .mocharc/.nycrc, and point all
  test scripts at `vitest run`
- Drive the whole monorepo from a single flat Vitest config at the repo
  root instead of per-package configs, yielding one merged coverage report
- Type-check specs separately via composite tsconfig.test.json projects,
  since Vitest only transpiles; wire them through a `compile:test` step so
  `pnpm test` type-checks specs before running them
- Import the test API explicitly in every spec (no ambient globals) and
  load reflect-metadata once via root setup files for the DI specs
- Replace the custom expectToThrowAsync helper with Vitest's native
  rejects.toThrow() / toThrow() matchers and drop the obsolete test-util
  module
- Keep test-only code out of the published packages by excluding specs and
  test/ helper directories from both the build and the packed files
- Switch CI and contributor docs to Vitest: run `pnpm test`, and remove the
  now-obsolete test-report step and the redundant per-package and :ci test
  scripts
- Clean up leftover tooling artifacts: ignore *.tsbuildinfo so the new
  per-config build-info is covered, and drop the obsolete nyc/CTRF ignores
  and clean targets
- Run the workflow-standalone example's TS scripts via Node's native type
  stripping instead of ts-node, which the Mocha toolchain used to provide
  transitively: convert the scripts to ESM (.mts), drop the ts-node
  dependency, and raise the Node engine floor to 22.18 where stripping is
  unflagged

Also:
- Fix indentation in the local /fix skill doc

Part of: eclipse-glsp/glsp#1635

* GLSP-1635: Restore container load spy in default-modules tests

- Add an afterEach to restore the spy created on container.load,
  since container.restore() only resets Inversify bindings and would
  otherwise leave the method permanently spied across tests

Part of: eclipse-glsp/glsp#1635
- Convert leftover chai-style assertions (e.g. `expect(x).true;`) to
  real Vitest matchers (`toBe(true)`); after the Vitest migration these
  were silent no-ops that asserted nothing
- Remove the `*.spec` eslint overrides: the updated eslint-config
  enables core `no-unused-expressions` (which now catches such no-op
  assertions even in tests) and namespace checks pass cleanly, so both
  overrides are redundant

Also:
- Refresh pnpm-lock.yaml for the bumped @eclipse-glsp/eslint-config
- Drop the chai-friendly no-unused-expressions and spec-only
  import-x/namespace eslint overrides, both workarounds for the
  Mocha/chai/sinon era that Vitest no longer needs
- Remove the now-unused eslint-plugin-chai-friendly dependency
- Refactor changeCSSClass/changeCodiconClass to use classList.toggle
  so they no longer rely on the disabled rule
Import the dev-packages subtree (cli, config, config-test, dev,
eslint-config, prettier-config, ts-config, vitest-config) from the
eclipse-glsp/glsp meta-repository, preserving the commit history scoped
to that subtree. Surrounding repo files (pnpm/workspace setup, CI,
metadata) are intentionally excluded and will be set up separately.

Part of eclipse-glsp/glsp#1682.
… subtree merge)

Import the packages (client, glsp-sprotty, protocol) and examples
(workflow-glsp, workflow-standalone) subtrees from eclipse-glsp/glsp-client,
preserving the commit history scoped to those subtrees. Surrounding repo
files (pnpm/workspace setup, CI, metadata) are intentionally excluded and
will be set up separately.

Part of eclipse-glsp/glsp#1682.
…rving subtree merge)

Import the packages (graph, layout-elk, server, server-mcp) and examples
(workflow-server and its bundled/mcp-demo variants) subtrees from
eclipse-glsp/glsp-server-node, preserving the commit history scoped to
those subtrees. Surrounding repo files (pnpm/workspace setup, CI,
metadata) are intentionally excluded and will be set up separately.

Part of eclipse-glsp/glsp#1682.
- Move the glsp-client packages under client/
  (packages/client/{client,glsp-sprotty,protocol})
- Move the glsp-server-node packages under server/
  (packages/server/{graph,layout-elk,server,server-mcp})
- Use git renames so per-file history is preserved across the move

Part of: eclipse-glsp/glsp#1682
Wire up the consolidated client/server/dev repositories as a single,
self-bootstrapping pnpm workspace that builds, lints, and tests from the
root.

- 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 and in-workspace dev tooling, and the TypeScript
  project graph (tsconfig, tsconfig.eslint).
- Add the shared lint/format/test configs: one path-scoped ESLint flat
  config carrying the 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.
  Point the one spec that imported the built `lib` at its source instead.
- Consolidate the example run/dev scripts: fold the standalone launcher
  into a single start.mts (dropping the separate download-server and
  start-node-server helpers), default the workflow server to WebSocket
  with matching start/start:socket scripts, and drop the
  --external-server bundle-path option.
- 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) and a consolidated README describing the
  client, server, and dev-packages structure (replacing the per-folder
  dev-packages README).

Part of: eclipse-glsp/glsp#1682
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.

8 participants