Skip to content
Merged
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
be6daa4
refactor(module-federation): remove dead executors and verdaccio
cursoragent Feb 28, 2026
0da460c
fix(module-federation): restore core lint compatibility
cursoragent Feb 28, 2026
31a7ccb
chore(module-federation): upgrade eslint and align ajv overrides
cursoragent Feb 28, 2026
fe52f91
refactor(module-federation): migrate remaining builds to tsdown
cursoragent Feb 28, 2026
219a4f4
fix(module-federation): stabilize enhanced tsdown wrapper modules
cursoragent Feb 28, 2026
29285f6
refactor: migrate monorepo orchestration to turborepo
cursoragent Feb 28, 2026
ee790e2
refactor: remove remaining nx configuration surface
cursoragent Mar 1, 2026
e952699
chore: scope lint-fix to changed files and packages
cursoragent Mar 1, 2026
86d316a
chore: remove codex setup workaround script
cursoragent Mar 1, 2026
c07f3e5
refactor: simplify test and e2e task runners
cursoragent Mar 1, 2026
f8177b4
chore: remove generated turbo lint artifact
cursoragent Mar 1, 2026
877d1d0
chore: clean up e2e runner dead code
cursoragent Mar 1, 2026
61a1932
fix: finalize task-runner audit cleanup
cursoragent Mar 1, 2026
7db7f1c
fix: resolve failing PR ci checks
cursoragent Mar 1, 2026
2c6e8f3
fix: simplify ci cache flow and stabilize targeted checks
cursoragent Mar 1, 2026
8031f56
refactor: align test orchestration with turbo affected graph
cursoragent Mar 1, 2026
2bf4893
ci: run turbo workflows directly and tighten test graph
cursoragent Mar 1, 2026
de69d72
fix: publish valid typescript package dist exports
cursoragent Mar 1, 2026
d58ec56
chore(ci): make next e2e orchestration turbo-native
cursoragent Mar 1, 2026
f6fc58d
ci(modern): make modern e2e orchestration turbo-native
cursoragent Mar 1, 2026
1f206da
chore(e2e): use turbo-native runtime orchestration
cursoragent Mar 1, 2026
db1bc10
chore(ci): isolate turbo-filtered next e2e task runs
cursoragent Mar 1, 2026
d93afa0
chore(ci): route local e2e flows through turbo entrypoints
cursoragent Mar 1, 2026
0cb957c
fix(e2e): keep minimal turbo-native modern runtime config
cursoragent Mar 1, 2026
fee0a0d
ci: cache turborepo artifacts across workflows
cursoragent Mar 1, 2026
9388e06
chore: raise turbo concurrency floors
cursoragent Mar 1, 2026
1d87235
chore: simplify package scope turbo filters
cursoragent Mar 1, 2026
caf1d32
fix(ci): stabilize turbo workflows and modern checks
cursoragent Mar 1, 2026
2579937
Turborepo build system alignment (#4486)
ScriptedAlchemy Mar 2, 2026
168369f
Merge branch 'main' into cursor/nx-executor-migration-9e4b
ScriptedAlchemy Mar 2, 2026
fa36bd9
Merge branch 'cursor/nx-executor-migration-9e4b' into cursor/build-sy…
ScriptedAlchemy Mar 2, 2026
27558ec
Merge origin/main into cursor/nx-executor-migration-9e4b
ScriptedAlchemy Mar 3, 2026
f36770b
Merge origin/cursor/nx-executor-migration-9e4b into cursor/build-syst…
ScriptedAlchemy Mar 3, 2026
1676011
Merge branch 'main' into cursor/nx-executor-migration-9e4b
ScriptedAlchemy Mar 5, 2026
561d33f
Merge branch 'cursor/nx-executor-migration-9e4b' into cursor/build-sy…
ScriptedAlchemy Mar 5, 2026
12153a2
Merge branch 'main' into cursor/nx-executor-migration-9e4b
ScriptedAlchemy Mar 5, 2026
9cc1eb1
Merge branch 'cursor/nx-executor-migration-9e4b' into cursor/build-sy…
ScriptedAlchemy Mar 5, 2026
5fad98d
fix(enhanced): lazily load core wrapper plugins
ScriptedAlchemy Mar 5, 2026
e2dd66a
style(enhanced): format federation runtime wrapper
ScriptedAlchemy Mar 5, 2026
de7e5a8
fix(core): make nx build asset copy commands cross-platform
ScriptedAlchemy Mar 5, 2026
141c81f
Merge remote-tracking branch 'origin/cursor/nx-executor-migration-9e4…
ScriptedAlchemy Mar 5, 2026
58e866b
fix(ci): address review feedback for affected tests and modern e2e co…
ScriptedAlchemy Mar 5, 2026
ffdb2b0
chore(git): stop tracking nx workspace artifacts
ScriptedAlchemy Mar 5, 2026
3e8ffc4
fix(enhanced): restore emitted wrapper lib entrypoints
ScriptedAlchemy Mar 5, 2026
fa538aa
docs(agents): update turbo workflow guidance
ScriptedAlchemy Mar 5, 2026
c7dd686
Merge remote-tracking branch 'origin/main' into cursor/build-system-t…
ScriptedAlchemy Mar 6, 2026
3e3b0d0
chore(skills): add local turborepo skill
ScriptedAlchemy Mar 6, 2026
6b0cdea
fix(ci): restore turbo router and modern e2e parity
ScriptedAlchemy Mar 6, 2026
cfa367e
chore: remove generated codex environment file
ScriptedAlchemy Mar 6, 2026
bba1fed
fix(ci): install playwright browsers for devtools
ScriptedAlchemy Mar 6, 2026
5764c79
fix(ci): harden turbo devtools playwright setup
ScriptedAlchemy Mar 6, 2026
ce6d238
fix(enhanced): preserve treeshake fixture build ids
ScriptedAlchemy Mar 6, 2026
aff320c
chore(build): update turbo and esbuild app scripts
ScriptedAlchemy Mar 6, 2026
d02180d
fix(ci): preserve affected package test coverage
ScriptedAlchemy Mar 6, 2026
441fb26
fix(ci): catch extensionless package test impacts
ScriptedAlchemy Mar 6, 2026
88e0f88
fix(ci): restore modernjs ssr parity
ScriptedAlchemy Mar 6, 2026
fe12bd1
chore(turbo): align monorepo scripts with turbo conventions
ScriptedAlchemy Mar 6, 2026
dc26e39
fix(ci): restore metro e2e coverage and turbo script targets
ScriptedAlchemy Mar 6, 2026
6c656c7
fix(ci): harden format and bundle-size base builds
ScriptedAlchemy Mar 6, 2026
a60734c
fix(ci): keep bundle-size base build turbo-only
ScriptedAlchemy Mar 6, 2026
9c36c86
fix(ci): restore node e2e order and next prod build guard
ScriptedAlchemy Mar 6, 2026
1c2afc8
fix(ci): remove leftover nx orchestration refs
ScriptedAlchemy Mar 6, 2026
d6b8f3f
chore(repo): use pnpm in husky hooks
ScriptedAlchemy Mar 6, 2026
b5fe362
fix(ci): restore storybook and e2e task parity
ScriptedAlchemy Mar 6, 2026
52f56e7
fix(ci): restore affected selection coverage
ScriptedAlchemy Mar 6, 2026
005b89a
fix(ci): align local parity and bundle base builds
ScriptedAlchemy Mar 7, 2026
3b8df9f
fix(ci): scope format checks to changed files
ScriptedAlchemy Mar 7, 2026
f107faf
chore(assemble-release-plan): commit index formatting
ScriptedAlchemy Mar 7, 2026
6a8c61d
chore(assemble-release-plan): noop lint script
ScriptedAlchemy Mar 7, 2026
8e3afb3
fix(ci): handle missing rg in verify turbo conventions
ScriptedAlchemy Mar 7, 2026
4a0d0d6
style(ci): format turbo convention verifier
ScriptedAlchemy Mar 7, 2026
6ae3086
fix(ci): use merge-base affected diffs and filter lint targets
ScriptedAlchemy Mar 7, 2026
811b5c7
fix(storybook-addon): lazy-load nx helper for test runtime
ScriptedAlchemy Mar 7, 2026
444edd6
fix(reviewloop): address review findings (iter 1)
ScriptedAlchemy Mar 7, 2026
ad37803
fix(reviewloop): address review findings (iter 2)
ScriptedAlchemy Mar 7, 2026
9a15ac6
fix(reviewloop): address review findings (iter 3)
ScriptedAlchemy Mar 7, 2026
018df2d
fix(ci-local): keep nx base build package-scoped
ScriptedAlchemy Mar 7, 2026
0db7eaf
chore(turbo): normalize concurrency flags to 20
ScriptedAlchemy Mar 8, 2026
8fa4602
fix(treeshake): avoid response wait race in frontend e2e
ScriptedAlchemy Mar 8, 2026
f129780
chore(ci): keep treeshake out of affected package tests
ScriptedAlchemy Mar 8, 2026
1221fee
chore(assemble-release-plan): refresh generated formatting
ScriptedAlchemy Mar 8, 2026
0b7e073
chore(assemble-release-plan): format generated output
ScriptedAlchemy Mar 8, 2026
be2b5d3
refactor(ci): share turbo script helpers
ScriptedAlchemy Mar 8, 2026
078d335
refactor(ci): share changed file detection
ScriptedAlchemy Mar 8, 2026
5b5eb2a
refactor(ci): reuse shared git ref helpers
ScriptedAlchemy Mar 8, 2026
e1207a4
Merge remote-tracking branch 'origin/main' into cursor/build-system-t…
ScriptedAlchemy Mar 9, 2026
c1d31fd
fix(ci): stabilize turbo verifier and website preview build
ScriptedAlchemy Mar 9, 2026
282dbd8
style(repo): apply prettier formatting
ScriptedAlchemy Mar 10, 2026
21f1778
style(assemble-release-plan): apply prettier formatting
ScriptedAlchemy Mar 10, 2026
dc1550f
feat(ci-local): add uncached turbo runner support
ScriptedAlchemy Mar 10, 2026
bf3a144
fix(turbo): make tests depend on local builds
ScriptedAlchemy Mar 10, 2026
fcc27ef
fix(ci): avoid turbo cache save timeout on PR builds
ScriptedAlchemy Mar 10, 2026
a5da0cd
chore(repo): remove ai lint fix script
ScriptedAlchemy Mar 10, 2026
9e391a6
fix(ci): trigger grouped e2e jobs for all served apps
ScriptedAlchemy Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
36 changes: 9 additions & 27 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,57 +1,39 @@
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nx"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {
"@nx/enforce-module-boundaries": [
"warn",
{
"enforceBuildableLibDependency": true,
"allow": [],
"depConstraints": [
{
"sourceTag": "*",
"onlyDependOnLibsWithTags": ["*"]
}
]
}
]
}
},
{
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nx/typescript"],
"extends": ["plugin:@typescript-eslint/recommended"],
"parser": "@typescript-eslint/parser",
"parserOptions": { "ecmaVersion": 2020, "sourceType": "module" },
"rules": {
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-expressions": "off",
"@typescript-eslint/no-unused-vars": "off",
"prefer-const": "off",
"no-extra-semi": "error"
}
},
{
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nx/javascript"],
"extends": ["eslint:recommended"],
"parserOptions": { "ecmaVersion": 2020, "sourceType": "module" },
"rules": {
"@typescript-eslint/no-useless-constructor": "off",
"no-extra-semi": "error"
}
},
{
"files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
"env": {
"jest": true
},
"env": { "jest": true },
"rules": {}
},
{
"files": ["*.json"],
"parser": "jsonc-eslint-parser",
"rules": {
"@nx/dependency-checks": "off"
}
"rules": {}
}
]
}
59 changes: 18 additions & 41 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,6 @@ jobs:
with:
fetch-depth: 0

- name: Cache Tool Downloads
uses: actions/cache@v5
with:
path: ~/.cache
key: ${{ runner.os }}-toolcache-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-toolcache-

- name: Setup pnpm
uses: pnpm/action-setup@v4

Expand All @@ -42,32 +34,26 @@ jobs:
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'

- name: Remove cached node_modules
run: rm -rf node_modules .nx

- name: Set Playwright cache status
run: |
if [ -d "$HOME/.cache/ms-playwright" ] || [ -d "$HOME/.cache/Cypress" ]; then
echo "PLAYWRIGHT_CACHE_HIT=true" >> "$GITHUB_ENV"
else
echo "PLAYWRIGHT_CACHE_HIT=false" >> "$GITHUB_ENV"
fi

- name: Set Nx SHA
uses: nrwl/nx-set-shas@v4

- name: Install Dependencies
- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Install Playwright Browsers
run: pnpm exec playwright install --force
- name: Restore Turborepo cache
uses: actions/cache@v5
with:
path: |
.turbo
**/.turbo
key: ${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-${{ github.ref_name }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-${{ github.ref_name }}-
${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-
${{ runner.os }}-turbo-

- name: Install Cypress
# if: steps.browsers-cache.outputs.cache-hit != 'true'
run: npx cypress install

- name: Check Code Format
run: npx nx format:check
- name: Check code format
run: pnpm exec prettier --check .

- name: Verify Rslib Template Publint Wiring
run: node packages/create-module-federation/scripts/verify-rslib-templates.mjs
Expand All @@ -78,13 +64,8 @@ jobs:
- name: Verify Publint Workflow Coverage
run: node tools/scripts/verify-publint-workflow-coverage.mjs

- name: Print Number of CPU Cores
run: nproc

- name: Run Build for All
run: |
npx nx run-many --targets=build --projects=tag:type:pkg --parallel=4 --skip-nx-cache
npx nx run-many --targets=build --projects=tag:type:pkg --parallel=4
- name: Build packages
run: pnpm run build:pkg

- name: Check Package Publishing Compatibility
run: |
Expand All @@ -100,12 +81,8 @@ jobs:
fi
done

- name: Warm Nx Cache
run: npx nx run-many --targets=build --projects=tag:type:pkg --parallel=4

- name: Run Affected Test
timeout-minutes: 10
run: npx nx affected -t test --parallel=3 --exclude='*,!tag:type:pkg'
- name: Run affected package tests
run: node tools/scripts/run-affected-package-tests.mjs

e2e-modern:
needs: checkout-install
Expand Down
67 changes: 48 additions & 19 deletions .github/workflows/bundle-size.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,47 +16,76 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout PR
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0

- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 20
cache: pnpm
cache-dependency-path: '**/pnpm-lock.yaml'

- name: Install dependencies (PR)
- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build packages (PR)
run: npx nx run-many --targets=build --projects=tag:type:pkg --parallel=4 --skip-nx-cache
- name: Restore Turborepo cache
uses: actions/cache@v5
with:
path: |
.turbo
**/.turbo
key: ${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-${{ github.ref_name }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-${{ github.ref_name }}-
${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-
${{ runner.os }}-turbo-

- name: Build packages (current)
run: pnpm run build:pkg

- name: Measure bundle sizes (PR)
- name: Measure bundle sizes (current)
run: node scripts/bundle-size-report.mjs --output current.json

- name: Checkout base branch
uses: actions/checkout@v4
- name: Prepare base worktree
run: |
BASE_REF=${CI_LOCAL_BASE_REF:-origin/main}
BASE_PATH=".ci-local-base-${RANDOM}-${RANDOM}"
echo "BASE_REF=$BASE_REF" >> "$GITHUB_ENV"
echo "BASE_PATH=$BASE_PATH" >> "$GITHUB_ENV"
git worktree add "$BASE_PATH" "$BASE_REF"

- name: Restore Turborepo cache (base worktree)
uses: actions/cache@v5
with:
ref: ${{ github.event.pull_request.base.sha }}
path: base
path: ${{ env.BASE_PATH }}/.turbo
key: ${{ runner.os }}-turbo-base-${{ github.workflow }}-${{ github.job }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-turbo-base-${{ github.workflow }}-${{ github.job }}-
${{ runner.os }}-turbo-base-${{ github.workflow }}-
${{ runner.os }}-turbo-base-

- name: Install dependencies (base)
run: cd base && pnpm install --frozen-lockfile
run: pnpm install --frozen-lockfile
working-directory: ${{ env.BASE_PATH }}

- name: Build packages (base)
run: cd base && npx nx run-many --targets=build --projects=tag:type:pkg --parallel=4 --skip-nx-cache
run: pnpm run build:pkg
working-directory: ${{ env.BASE_PATH }}

- name: Measure bundle sizes (base)
run: node scripts/bundle-size-report.mjs --output base.json --packages-dir base/packages
run: node scripts/bundle-size-report.mjs --output base.json --packages-dir "${{ env.BASE_PATH }}/packages"

- name: Compare bundle sizes
run: node scripts/bundle-size-report.mjs --compare base.json --current current.json --output stats.txt

- name: Upload bundle size stats
uses: actions/upload-artifact@v4
with:
name: bundle-size-stats
path: stats.txt
retention-days: 5
- name: Cleanup base worktree
if: always()
run: |
if [ -n "${BASE_PATH:-}" ] && [ -d "${BASE_PATH}" ]; then
git worktree remove --force "${BASE_PATH}"
fi
70 changes: 20 additions & 50 deletions .github/workflows/devtools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,6 @@ jobs:
with:
fetch-depth: 0

- name: Cache Tool Downloads
uses: actions/cache@v5
with:
path: ~/.cache
key: ${{ runner.os }}-toolcache-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-toolcache-

- name: Setup pnpm
uses: pnpm/action-setup@v4

Expand All @@ -42,57 +34,35 @@ jobs:
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'

- name: Set Playwright cache status
run: |
if [ -d "$HOME/.cache/ms-playwright" ] || [ -d "$HOME/.cache/Cypress" ]; then
echo "PLAYWRIGHT_CACHE_HIT=true" >> "$GITHUB_ENV"
else
echo "PLAYWRIGHT_CACHE_HIT=false" >> "$GITHUB_ENV"
fi

- name: Set Nx SHA
uses: nrwl/nx-set-shas@v4

- name: Install Dependencies
- name: Install dependencies
run: pnpm install --frozen-lockfile && find . -maxdepth 6 -type d \( -name ".cache" -o -name ".modern-js" \) -exec rm -rf {} +

- name: Restore Turborepo cache
uses: actions/cache@v5
with:
path: |
.turbo
**/.turbo
key: ${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-${{ github.ref_name }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-${{ github.ref_name }}-
${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-
${{ runner.os }}-turbo-

- name: Install Cypress
run: npx cypress install

- name: Run Affected Build
run: npx nx run-many --targets=build --projects=tag:type:pkg
- name: Build shared packages
run: pnpm run build:pkg

- name: Configuration xvfb
shell: bash
- name: Install xvfb
run: sudo apt-get update && sudo apt-get install xvfb

- name: E2E Chrome Devtools Dev
uses: nick-fields/retry@v3
with:
timeout_minutes: 15
max_attempts: 3
command: |
npx kill-port 3009 3010 3011 3012 3013 4001 &&
pnpm run app:manifest:dev & echo "done" && \
npx wait-on tcp:3009 tcp:3010 tcp:3011 tcp:3012 tcp:3013 && \
sleep 10 &&
npx nx e2e:devtools chrome-devtools
run: npx kill-port 3009 3010 3011 3012 3013 4001 && pnpm run app:manifest:dev & echo "done" && npx wait-on tcp:3009 tcp:3010 tcp:3011 tcp:3012 tcp:3013 && sleep 10 && pnpm exec turbo run test:e2e --filter=@module-federation/devtools --only

- name: E2E Chrome Devtools Prod
uses: nick-fields/retry@v3
with:
timeout_minutes: 15
max_attempts: 3
command: |
npx kill-port 3009 3010 3011 3012 3013 4001 &&
npx kill-port 3009 3010 3011 3012 3013 4001 &&
pnpm run app:manifest:prod & echo "done" && \
npx wait-on tcp:3009 tcp:3010 tcp:3011 tcp:3012 tcp:3013 && \
sleep 30 &&
npx nx e2e:devtools chrome-devtools

- name: kill port
run: npx kill-port 3013 3009 3010 3011 3012 4001; exit 0
run: npx kill-port 3009 3010 3011 3012 3013 4001 && npx kill-port 3009 3010 3011 3012 3013 4001 && pnpm run app:manifest:prod & echo "done" && npx wait-on tcp:3009 tcp:3010 tcp:3011 tcp:3012 tcp:3013 && sleep 30 && pnpm exec turbo run test:e2e --filter=@module-federation/devtools --only

- name: Kill All Node Processes
run: pkill -f node || true
- name: Kill devtools ports
run: npx kill-port 3013 3009 3010 3011 3012 4001 || true
Loading
Loading