Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
38e5675
Port routes management to Inertia
riasvdv May 20, 2026
948d89b
Remove twig page
riasvdv May 20, 2026
4c8b6aa
Merge branch 'feature/inertia-ui' into feature/inertia-route-settings
riasvdv May 20, 2026
3207a2d
Merge branch 'feature/inertia-ui' into feature/inertia-route-settings
riasvdv May 21, 2026
235e0da
Move page
riasvdv May 21, 2026
d0d05aa
Put modal in a separate component
riasvdv May 21, 2026
602e717
Refactor create/edit to separate pages
riasvdv May 21, 2026
df44ac3
Fix phpstan
riasvdv May 21, 2026
a91be2d
Cleanup
riasvdv May 21, 2026
3bd9f5e
Fix tests
riasvdv May 21, 2026
62cea90
More cleanup
riasvdv May 21, 2026
31a4053
Merge branch '6.x' of github.com:craftcms/cms into feature/inertia-ro…
brianjhanson May 27, 2026
d2e2387
Merge branch '6.x' of github.com:craftcms/cms into feature/inertia-ro…
brianjhanson May 27, 2026
a51de07
A bit of cleanup
brianjhanson May 27, 2026
5dbbaf3
Typescript updates
brianjhanson May 27, 2026
ee27cb2
A little bit of home
brianjhanson May 27, 2026
660dc5b
Fix tests
brianjhanson May 27, 2026
ab0980a
Add Route data class to typescript transformer
riasvdv May 27, 2026
e2459dd
Fix typecheck
riasvdv May 27, 2026
bd415bb
A bit more cleanup
brianjhanson May 27, 2026
1ff16cb
Merge branch 'feature/inertia-route-settings' of github.com:craftcms/…
brianjhanson May 27, 2026
5cca7ee
Refactor CI a bit
brianjhanson May 27, 2026
a134db8
Merge branch '6.x' into feature/inertia-route-settings
brianjhanson May 27, 2026
af3f6a7
Build
brianjhanson May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 103 additions & 26 deletions .github/workflows/js-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,62 +11,139 @@ concurrency:
group: js-ci-${{ github.ref }}
cancel-in-progress: true

env:
NODE_VERSION: '22'
PHP_VERSION: '8.5'

jobs:
eslint:
name: 'Code Quality / ESLint'
setup:
name: 'Setup / Install + Build + Generate'
runs-on: ubuntu-latest
timeout-minutes: 5

timeout-minutes: 15
outputs:
cache-key: ${{ steps.cache-key.outputs.value }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ env.PHP_VERSION }}

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '22'
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Install dependencies
- name: Compute cache key
id: cache-key
# Hash everything that can affect installed deps, the cp build, or the
# generated TS/wayfinder files. PHP source is included because both
# `testbench typescript:transform` and `testbench wayfinder:generate`
# derive their output from controllers, DTOs, and routes in src/.
run: |
echo "value=js-ci-v2-${{ runner.os }}-${{ hashFiles('package-lock.json', 'composer.lock', 'package.json', 'packages/*/package.json', 'packages/craftcms-cp/src/**', 'packages/craftcms-cp/tsconfig*.json', 'packages/craftcms-cp/vite.config.*', 'packages/craftcms-cp/tsdown.config.*', 'src/**/*.php') }}" >> "$GITHUB_OUTPUT"

- name: Restore install + build + generated cache
id: cache
uses: actions/cache@v4
with:
path: |
node_modules
packages/*/node_modules
packages/craftcms-cp/dist
vendor
resources/js/actions
resources/js/routes
resources/js/wayfinder
resources/js/generated
key: ${{ steps.cache-key.outputs.value }}

- name: Install Composer dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: composer install --no-interaction --no-progress

- name: Install npm dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci

- name: Build @craftcms/cp
if: steps.cache.outputs.cache-hit != 'true'
run: npm run build:cp

- name: Generate TypeScript types
if: steps.cache.outputs.cache-hit != 'true'
run: npm run generate:types

- name: Generate Wayfinder routes
if: steps.cache.outputs.cache-hit != 'true'
run: npm run generate:wayfinder

eslint:
name: 'Code Quality / ESLint'
runs-on: ubuntu-latest
timeout-minutes: 5
needs: setup
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Restore install + build + generated cache
uses: actions/cache@v4
with:
path: |
node_modules
packages/*/node_modules
packages/craftcms-cp/dist
vendor
resources/js/actions
resources/js/routes
resources/js/wayfinder
resources/js/generated
key: ${{ needs.setup.outputs.cache-key }}

- name: Run ESLint
run: npm run lint:js

typecheck:
name: 'Code Quality / TypeScript'
runs-on: ubuntu-latest
timeout-minutes: 10

timeout-minutes: 5
needs: setup
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.5'

- name: Install Composer dependencies
run: composer install --no-interaction --no-progress

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '22'
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build @craftcms/cp
run: npm run build:cp

- name: Generate Wayfinder types
run: ./vendor/bin/testbench wayfinder:generate --path=resources/js

- name: Restore install + build + generated cache
uses: actions/cache@v4
with:
path: |
node_modules
packages/*/node_modules
packages/craftcms-cp/dist
vendor
resources/js/actions
resources/js/routes
resources/js/wayfinder
resources/js/generated
key: ${{ needs.setup.outputs.cache-key }}

# Skip the `pretypecheck` hook (it would re-run generate:types +
# generate:wayfinder, which need PHP/Composer that this job doesn't set
# up — the setup job already produced and cached the output).
- name: Run TypeScript type check
run: npm run typecheck
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
"dev": "vite",
"lint:js": "eslint resources/js/",
"lint:styles": "stylelint \"resources/**/*.css\"",
"generate:types": "./vendor/bin/testbench typescript:transform",
"generate:wayfinder": "./vendor/bin/testbench wayfinder:generate --path resources/js",
"typecheck": "vue-tsc --noEmit",
"lint": "npm run lint:js && npm run lint:styles && npm run typecheck",
"build:bundles": "cd ./packages/craftcms-legacy && npm run build",
Expand Down
5 changes: 4 additions & 1 deletion packages/craftcms-cp/src/styles/form.styles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@ export const baseInputStyles = css`
`;

export const baseFieldStyles = css`
:host(:not([label-sr-only])) .form-field__group-one {
:host(:not([label-sr-only]))
.form-field__group-one
.form-field__label
slot:not(:empty) {
margin-block-end: var(--c-spacing-sm);
}

Expand Down
1 change: 0 additions & 1 deletion resources/build/assets/AdminTable-Bj_YAoYj.css

This file was deleted.

4 changes: 4 additions & 0 deletions resources/build/assets/AdminTable-CFLl5BIJ.js

Large diffs are not rendered by default.

8 changes: 0 additions & 8 deletions resources/build/assets/AdminTable-D9yV8gbs.js

This file was deleted.

1 change: 1 addition & 0 deletions resources/build/assets/AdminTable-y44jC6z0.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions resources/build/assets/AppLayout-C2_C9ZXk.js

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion resources/build/assets/AppLayout-DI0p2v-n.js

This file was deleted.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import{n as e}from"./rolldown-runtime-DXc-PV0M.js";import{h as t,p as n}from"./cp-CSaoIAcR.js";import{c as r,f as i,r as a,t as o}from"./lit-BpPOIUnZ.js";import{a as s,o as c}from"./decorators-BOwDFZC2.js";import{t as l}from"./decorate-BM_SnROF.js";var u={Pending:1,Reserved:2,Done:3,Failed:4,Delayed:5,Cancelled:6},d=e({default:()=>p}),f=class extends o{constructor(...e){super(...e),this.displayedJob=null,this.hasReservedJobs=!1,this.hasWaitingJobs=!1,this.#e=n.getInstance(),this.#t=t.getInstance(),this.#n=e=>{this.displayedJob=e.detail.displayedJob}}static{this.styles=i`
import{n as e}from"./rolldown-runtime-DXc-PV0M.js";import{h as t,p as n}from"./cp-DpSwX5ei.js";import{c as r,f as i,r as a,t as o}from"./lit-BpPOIUnZ.js";import{a as s,o as c}from"./decorators-BOwDFZC2.js";import{t as l}from"./decorate-DQXQhzse.js";var u={Pending:1,Reserved:2,Done:3,Failed:4,Delayed:5,Cancelled:6},d=e({default:()=>p}),f=class extends o{constructor(...e){super(...e),this.displayedJob=null,this.hasReservedJobs=!1,this.hasWaitingJobs=!1,this.#e=n.getInstance(),this.#t=t.getInstance(),this.#n=e=>{this.displayedJob=e.detail.displayedJob}}static{this.styles=i`
:host {
display: contents;
}
Expand Down
Loading
Loading