chore: migrate toolchain from Vite+ (vp) to Turborepo + standalone tools#235
Merged
Conversation
Unbundle the Vite+ (vp) toolchain into standalone tools orchestrated by Turborepo, preserving every capability and rule: - Orchestration: Vite Task -> Turborepo (turbo.json; `^build` orders @makeplane/propel's dist before propel-docs / storybook). - Library builds: `vp pack` -> tsdown (per-package tsdown.config.ts); attw + publint preserved. - Tests: `vp test` -> standalone Vitest (vitest.config.ts, @vitest/browser-playwright). - Lint/format: `vp check` -> standalone Oxlint (.oxlintrc.json — custom JS plugin + type-aware via oxlint-tsgolint) and Oxfmt (.oxfmtrc.json, pinned). - Package manager/runtime: `vp install` / `vp config` -> pnpm + corepack. - Pre-commit: vp `staged` -> simple-git-hooks + lint-staged (oxfmt). - Vite: the @voidzero-dev/vite-plus-core fork -> upstream vite@^8 (astro 7 needs it). - CI: setup-vp -> pnpm/action-setup + actions/setup-node; vp commands -> turbo/pnpm. Verified green: build (propel 2482 files, docs, plugin), typecheck, test (793 + 12), build-storybook (no vite-plus needed), lint (custom rule + type-aware fire), format; Turbo caching (FULL TURBO) confirmed. Claude-Session: https://claude.ai/code/session_01LjeZkZxitGSSzespQabk6E
|
📚 Storybook preview: https://pr-235-propel-storybook.vamsi-906.workers.dev |
There was a problem hiding this comment.
Pull request overview
Migrates the monorepo off the Vite+ (vp) unified toolchain and onto pnpm + Turborepo orchestration with standalone tool configs (tsdown, Vitest, Oxlint, Oxfmt), updating CI and docs accordingly.
Changes:
- Replace Vite+ config/task runner setup with
turbo.jsonand per-packagetsdown.config.ts/vitest.config.ts. - Switch repo/package scripts and GitHub Actions workflows from
vptopnpm+turbo, including.turbocaching and telemetry disable. - Move lint/format configuration into
.oxlintrc.json/.oxfmtrc.jsonand update documentation/references across the repo.
Reviewed changes
Copilot reviewed 27 out of 30 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| vite.config.ts | Removed repo-root Vite+ configuration (staged/check/test/fmt/lint/run tasks). |
| turbo.json | Added Turborepo task graph for build/test/typecheck/dev and outputs. |
| tools/oxlint-plugin-propel/vite.config.ts | Removed tool package’s Vite+ configuration. |
| tools/oxlint-plugin-propel/tsdown.config.ts | Added tsdown build config for the Oxlint plugin package. |
| tools/oxlint-plugin-propel/tests/index.test.ts | Switched tests from vite-plus/test to vitest. |
| tools/oxlint-plugin-propel/README.md | Updated docs to reference .oxlintrc.json and pnpm commands. |
| tools/oxlint-plugin-propel/package.json | Replaced vp scripts/deps with tsdown + vitest. |
| README.md | Updated repo-level setup and command documentation to pnpm/turbo/tools. |
| pnpm-workspace.yaml | Updated catalog/overrides/peer rules for Vite 8 + standalone tools and removed Vite+. |
| packages/propel/vitest.shims.d.ts | Updated Vitest browser-playwright type reference. |
| packages/propel/vitest.config.ts | Added standalone Vitest config (storybook addon + playwright provider, ignore patterns). |
| packages/propel/vite.config.ts | Removed package-level Vite+ config (pack/run/test settings). |
| packages/propel/tsdown.config.ts | Added standalone tsdown config for library build (entry generation + publint/attw/etc). |
| packages/propel/tsconfig.json | Updated includes to cover new config files (vitest/tsdown). |
| packages/propel/README.md | Updated package development docs to tsdown/pnpm/turbo terminology. |
| packages/propel/package.json | Added build/test/typecheck scripts and swapped deps from Vite+ to tsdown/vitest/publint/attw core. |
| packages/propel/AGENTS.md | Updated contributor checklist commands to pnpm-based workflow. |
| package.json | Replaced vp prepare with simple-git-hooks; added pnpm/turbo/lint/format/check scripts and lint-staged config. |
| apps/propel-docs/README.md | Updated docs build/typecheck guidance to use Turbo dependency ordering. |
| apps/propel-docs/package.json | Simplified scripts to astro build/check (dependency ordering handled by Turbo). |
| apps/propel-docs/astro.config.mjs | Updated comment to reflect tsdown watch build vs Vite+. |
| AGENTS.md | Replaced toolchain section from Vite+ to pnpm + Turborepo + standalone tools. |
| .vite-hooks/pre-commit | Removed old Vite+ hook entrypoint. |
| .oxlintrc.json | Added standalone Oxlint configuration (plugins/rules/ignores/type-aware). |
| .oxfmtrc.json | Added standalone Oxfmt configuration (ignores + Tailwind/import/package.json/jsdoc sorting). |
| .gitignore | Added .turbo to ignores. |
| .github/workflows/storybook.yml | Switched workflow setup/install/build to pnpm + turbo and cache .turbo. |
| .github/workflows/release.yml | Switched release workflow from Vite+ to pnpm + turbo build + changesets via pnpm exec. |
| .github/workflows/ci.yml | Switched CI from Vite+ to pnpm + turbo; separated build/typecheck from browser tests; cache .turbo. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
vihar
approved these changes
Jul 16, 2026
Build on the Turborepo migration by aligning workspace tooling with plane-ee's
conventions and finishing the vite-plus removal.
- Scripts: add plane-ee's `check:*` / `fix:*` convention across every package
(check:lint, check:format, check:types, fix:lint, fix:format) plus umbrella
`check` and `fix`; each root script is a `turbo run <task>`.
- turbo.json: add check + check:{format,lint,types} and fix + fix:{format,lint}
tasks (mirroring plane-ee's graph); `build` now dependsOn `check:types`.
- Per package: `oxlint --type-aware -c ../../.oxlintrc.json .`, `oxfmt . --check`
/ `--write`, `tsc --noEmit` for types; propel gains a `pretest` Playwright hook.
- Rename apps/propel-docs → apps/docs (package name `docs`); update all refs.
- Purge vite-plus from the dependency tree: it lingered as an optional peer of
oxlint/oxfmt, and its bundled `oxfmt`/`oxlint` bins shadowed the standalone
ones (breaking `oxfmt .`). Clean re-resolve drops it. Also unset the stale
`core.hooksPath` so simple-git-hooks installs into `.git/hooks`, and add
`fixedExtension` to the oxlint-plugin tsdown build so emitted `.mjs` matches
its committed exports.
- CI: run `pnpm check` + `pnpm test` + `pnpm build` (the pretest hook installs
Chromium).
Validated: pnpm check (10/10), pnpm test (805), pnpm build (attw+publint clean).
Drop the simple-git-hooks + lint-staged pre-commit setup entirely: remove the `prepare` script, both devDependencies, and their config blocks, and uninstall the installed hook. Formatting/linting is run explicitly via `pnpm check` / `pnpm fix` and in CI, not on commit.
Add `**/dist/**` to `.oxlintrc.json` ignorePatterns for parity with `.oxfmtrc.json`, so root-level `oxlint .` never traverses build output (addresses Copilot review on #235).
sriramveeraghanta
added a commit
that referenced
this pull request
Jul 16, 2026
Integrate the Vite+ -> Turborepo toolchain migration (#235), which also renamed apps/propel-docs -> apps/docs. Conflicts resolved: - apps/docs/wrangler.jsonc: kept the Cloudflare Workers static-assets deploy config from this branch (workers_dev + preview_urls, not_found_handling '404-page', no account_id — driven by Cloudflare Git integration). Worker name kept as 'propel-docs' to mirror the 'propel-storybook' sibling (CF worker names are account-global), dropping main's stale account_id TODO. - apps/docs/src/pages/404.astro: relocated from the old apps/propel-docs path into the renamed apps/docs tree. Validated on the merged Turborepo toolchain: pnpm install (up to date), turbo build --filter=docs (astro check 0 errors; dist/404.html generated), check:format + check:lint clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Replaces the Vite+ (
vp) unified toolchain with pnpm + Turborepo + standalone tools.vpbundled ~8 tools behind one CLI; this unbundles it into the underlying tools, with Turborepo driving the task graph. Scripts follow plane-ee'scheck:*/fix:*convention. No component/source changes — toolchain, config, scripts, and the docs-app rename only.Tool mapping
vp run(Vite Task)turbo.json(^buildorders propel'sdistbefore docs/storybook)vp pack(library build)tsdown.config.ts(attw + publint preserved)vp testvitest.config.ts(vitest/config+@vitest/browser-playwright)vp check→ lint.oxlintrc.json(custom JS plugin +--type-awareviaoxlint-tsgolint)vp check→ format.oxfmtrc.json(Tailwind/import/package.json/JSDoc sorting), pinned to0.57.0vp check→ typechecktsc --noEmit(libs) /astro check(docs)vp install/vp configstaged+.vite-hooks/pnpm check/pnpm fixexplicitly and in CIsetup-vp(CI)pnpm/action-setup+actions/setup-nodevite=@voidzero-dev/vite-plus-coreforkvite@^8(required by astro 7; supported by vitest 4 / storybook 10 / tailwind)Scripts — plane-ee
check:*/fix:*conventionEvery root script is a
turbo run <task>that fans out to per-package scripts:check=check:format+check:lint+check:types;fix=fix:format+fix:lintcheck:lint(oxlint --type-aware -c ../../.oxlintrc.json .),check:format(oxfmt . --check),check:types(tsc --noEmit/astro check),fix:lint,fix:formatbuilddependsOncheck:types; propel has apretesthook that installs Playwright ChromiumDocs app rename
apps/propel-docs→apps/docs; package name@makeplane/propel-docs→docs(all references updated).Verification (all green locally)
pnpm check(check:format + check:lint + check:types) — 10/10 tasks, 0 lint / format / type errors. The custompropel/prefer-tailwind-v4-shorthandrule andconsistent-type-definitionsfire on violations.pnpm test— 805 tests (793 story tests across 116 files on headless chromium + 12 plugin unit tests).pnpm build— propel (2482 files, attw ✓ publint ✓), oxlint plugin, docs (8 pages); Turbo caching confirmed (FULL TURBO).vite-plusfully purged from the dependency tree — it had lingered as an optional peer of oxlint/oxfmt whose bundledoxfmt/oxlintbins shadowed the standalone ones (breakingoxfmt .); a clean re-resolve drops it, andbuild-storybookruns on plain vite 8 with novite-plus.Notes
pnpm check→pnpm test→pnpm build; the propelpretesthook installs Chromium, and Turbo's cache is persisted viaactions/cacheon.turbo.pnpm check/pnpm fixand CI.oxfmtis pre-1.0 → pinned exactly (0.57.0) so a floating upgrade can't reformat everything.oxlint-tsgolint(added as a direct devDep).turbois a plain root devDep (not via the pnpm catalog — a known catalog build-order bug).Out of scope
Component/source code and the Changesets release flow (kept as-is, driven via
pnpm exec changeset/turbo run build).