- Convert file: references to workspace:* protocol for monorepo deps
- Add eslint-rules/* to workspaces for workspace:* resolution
- Mark eslint plugins as private to prevent accidental publishing
- Add eslint plugins to changeset ignore list
- Changeset dry-run now works correctly
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add missing @types packages to root for Bun hoisting (@types/react-table,
@types/jquery, @types/urijs)
- Add d3 dependency for legacy-plugin-chart-calendar
- Configure ForkTsCheckerWebpackPlugin to exclude test files from production
type checking (test files have history@5/react-router@5 type mismatch)
- Add geostyler-cql-parser to ESM fullySpecified:false webpack rule
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
thread-loader was added in Dec 2024 when we used Babel for transpilation.
After migrating to SWC (Nov 2025), it became unnecessary overhead:
- SWC is Rust-native and 20-70x faster than Babel
- thread-loader spawns CPU_COUNT-1 Node.js worker processes
- Each worker has significant memory overhead
- The parallelization benefit no longer outweighs the cost
This should reduce memory usage during production builds.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update all CI workflows (pre-commit, tech-debt) to use Bun
- Update build scripts (js_build.sh, cypress_build.sh, eslint.sh) for Bun
- Add sync-package-versions.js script for release version alignment
- Simplify package.json scripts (build:packages, publish:packages)
- Add gitTag: false to changesets config to avoid repo tag clutter
- Remove obsolete Lerna scripts (build.js, lernaVersion.sh)
- Update RELEASING/README.md with comprehensive npm publishing guide
- Update all developer documentation for Bun usage
- Update LLM instruction files (AGENTS.md, dev-standard.mdc)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Docker changes:
- Use oven/bun:1-debian as base image instead of node:20-trixie-slim
- Replace npm ci with bun install --frozen-lockfile
- Replace npm run commands with bun run
- Mount bun.lock instead of package-lock.json
- Update cache paths for Bun's cache directory
- Rename NPM_RUN_PRUNE env var to BUN_RUN_PRUNE
CI workflow changes:
- Update bashlib.sh npm-install function to use bun
- Update superset-frontend.yml to use bun run commands
- Update release.yml to use setup-bun action and changesets
- Update superset-e2e.yml to use setup-bun action
- Update superset-playwright.yml to use setup-bun action
- Update superset-translations.yml to use setup-bun action
Note: superset-embedded-sdk and superset-websocket remain on npm
as they are separate packages with their own lockfiles.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Turborepo's `^build` dependency resolution only uses dependencies and
devDependencies, not peerDependencies. This caused plugins to build
before their dependencies (@superset-ui/core, @apache-superset/core,
@superset-ui/chart-controls) were ready.
Added explicit task dependencies to ensure correct build order:
1. @superset-ui/core and @apache-superset/core build first (no deps)
2. @superset-ui/chart-controls builds after core packages
3. All other packages build after chart-controls
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace lerna with changesets for version management and npm publishing
- Migrate from npm to bun as the package manager
- Add bun.lock and remove package-lock.json
- Add changeset scripts: changeset:add, changeset:version, changeset:publish
- Delete lerna.json
- Update .gitignore to exclude package-lock.json
Benefits of this migration:
- Bun: ~10x faster package installs, native TypeScript support
- Turborepo: Intelligent caching for builds (already added)
- Changesets: Cleaner workflow for version management and publishing
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This PR adds Turborepo as a build orchestration tool for the frontend
monorepo, providing intelligent caching for package builds.
Changes:
- Add turbo.json with task pipeline configuration
- Add turbo devDependency to root package.json
- Add packageManager field for Turborepo compatibility
- Add build/clean/type-check scripts to all packages and plugins
- Add .turbo to .gitignore
New scripts:
- npm run turbo:build - Build all packages with caching
- npm run turbo:build:force - Build without cache
- npm run turbo:type-check - Type check all packages
- npm run turbo:clean - Clean all build artifacts
Benefits:
- Cached builds: 5s → 314ms (16x faster) on unchanged packages
- Parallel builds across packages
- Only rebuilds what changed
- Local-only caching (no cloud dependencies)
Note: Lerna is preserved for versioning and publishing. Turborepo
handles build orchestration, not package publishing.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>