Skip to content

Migrating from the old multi-repo layout

In June 2026, Silex moved from a meta-repository of ~25 git submodules (under packages/*) to a single monorepo. The full git history and every contributor's authorship were preserved.

This guide is for contributors who had a local clone, a branch, or a pull request from before the switch. If you are starting fresh, you don't need any of this — just follow the Dev setup and you're already on the new layout.

What changed

  • The Silex app is now one package (one package.json, one build). The code is split by role: editor/, server/, common/, grapesjs-plugins/, server-rust/, desktop/. The old packages/<sub>/ submodules are gone.
  • The default branch main was repointed to the new monorepo history. The old meta-repo main is preserved as the branch legacy-main and the tag pre-monorepo — nothing is lost.
  • Because main now carries an unrelated history, a plain git pull on an old clone would try to merge two histories with no common ancestor. Don't do that — follow the steps below.

Update your local clone

Option A — Fresh clone (simplest)

git clone https://github.com/silexlabs/Silex.git
cd Silex
pnpm install
pnpm build && pnpm start   # editor at http://localhost:6805

You only need the dashboard submodules to run the full multi-site SaaS, not to develop the editor. If you want them: git submodule update --init.

Option B — Update your existing clone

git fetch origin --prune
git switch main
git reset --hard origin/main   # old main is preserved on origin as 'legacy-main' / tag 'pre-monorepo'
rm -rf node_modules
pnpm install                   # toolchain is now pnpm

If you had a branch or pull request in flight

Your branch is based on the old packages/<sub>/… layout, which does not map one-to-one onto the new paths. Don't rebase or cherry-pick across the restructure — re-apply your change as a patch on the new layout instead:

git diff legacy-main...my-feature > my-change.patch   # export your work as a diff
git switch main && git switch -c my-feature-monorepo
git apply --reject my-change.patch                    # fix the paths, resolve any .rej hunks

For small changes it is usually faster to just redo the edit by hand on the new layout. Open your PR against main — we're happy to help you port it, just ask on the chat.

Where the old repos went

  • Old meta-repo main → branch legacy-main + tag pre-monorepo (read-only reference).
  • Per-package sub-repos (silex-lib, grapesjs-*, …) → consolidated into the monorepo. The standalone repos stay online during the transition and will be archived read-only later; all new work happens in the monorepo.

Why a monorepo

Consolidating Silex into a single monorepo is one step in moving off proprietary platforms (GitHub, npm) toward free/libre infrastructure — part of Silex's NLnet-funded work (NGI0 Commons Fund, project 2025-10-133).

Edit this page on GitLab