Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
796c54f
feat(currency): add configurable currency symbol position
teastudiopl Jan 7, 2026
0402f5f
fix(deps)!: bump minimum next version to 15.4.9 (#14898)
jacobsfletch Dec 11, 2025
410cfa4
chore(release): v3.68.3 [skip ci]
denolfe Dec 11, 2025
a12e48c
fix: previousValue from hooks should be populated within lexical bloc…
JessRynkar Dec 12, 2025
e44d8c0
docs: update collection access control reference link on collection c…
puzzlesremixed Dec 12, 2025
22c7bad
fix(ui): relationship add button unsafe permissions property access (…
AaronClaes Dec 12, 2025
2f9c22b
fix(ui): show localized locale name for publish specific locale butto…
jefferyto Dec 12, 2025
dac0f20
docs: remove unused variable from custom field label translation (#14…
rilrom Dec 13, 2025
e24e122
fix(next): properly construct local req url (#14907)
jacobsfletch Dec 14, 2025
c4fe177
fix(deps)!: enforce Next.js 15.4.10 (#14908)
jacobsfletch Dec 14, 2025
8846208
chore(release): v3.68.4 [skip ci]
denolfe Dec 14, 2025
043bfa5
fix(next): omit server url from route matching (#14919)
jacobsfletch Dec 15, 2025
9bb1e43
refactor: add relative flag to formatAdminURL util (#14925)
jacobsfletch Dec 15, 2025
723f9d4
chore(release): v3.68.5 [skip ci]
denolfe Dec 15, 2025
5298f0c
fix(ui): use portals for popup to prevent clipping, improve keyboard …
AlessioGr Dec 15, 2025
5e1949c
fix: missing range headers (#14887)
JarrodMFlesch Dec 16, 2025
1487f30
test: multi-tenant login tiles (#14940)
JarrodMFlesch Dec 16, 2025
25b327d
fix(plugin-multi-tenant): relationTo arrays inflating filterOptions w…
JarrodMFlesch Dec 16, 2025
0ea7c69
fix(next): status component incorrectly shows as published status on …
PatrikKozak Dec 16, 2025
d8ee7f8
feat: adds cursor rules and AGENTS.md to templates (#14889)
kendelljoseph Dec 16, 2025
0a6ba6f
fix(storage-s3): encode filename in generated URL (#14438)
jhb-dev Dec 17, 2025
0e81fdb
chore(storage-s3): add int tests for filename encoding (#14970)
paulpopus Dec 17, 2025
925b3c2
fix: improves upload security for PDFs and SVGs (#14929)
JessRynkar Dec 18, 2025
f44de41
docs: update screenshot for fields/rich-text (#14979)
AlessioGr Dec 18, 2025
cc09a33
refactor: replace deprecated url.parse api usage (#14980)
AlessioGr Dec 18, 2025
b157d46
fix: get field by path for blocks (#14984)
jacobsfletch Dec 19, 2025
d0c7b97
fix(plugin-mcp): adds collection and strategy to user (#14981)
kendelljoseph Dec 19, 2025
400c3bf
test: improve database test setup (#14982)
AlessioGr Dec 19, 2025
10302c7
feat: modular dashboards - widgets (#13683)
GermanJablo Dec 19, 2025
3c18be6
fix(richtext-lexical): blocksFeature with relationship exposes other …
GermanJablo Dec 19, 2025
5ab3497
fix: basePath not working properly with admin routes (#14967)
JarrodMFlesch Dec 19, 2025
cc4dafc
docs: fix duplicate anchor links (#14976)
zubricks Dec 19, 2025
7199ef7
test: move mongodb to different port to avoid port conflicts (#14993)
AlessioGr Dec 19, 2025
4e220d2
test: migrate to `vitest` (#14337)
r1tsuu Dec 19, 2025
f5c84e5
chore(release): v3.69.0 [skip ci]
denolfe Dec 19, 2025
4ccc523
test: migrate from jest to vitest eslint plugin, remove remaining jes…
AlessioGr Dec 20, 2025
e0119f3
chore: narrow down files affected by vitest lint rules (#15000)
AlessioGr Dec 20, 2025
562ec16
templates: bump for v3.69.0 (#14998)
denolfe Dec 20, 2025
cc8a9b0
fix(next): turbopack build version check not working for 16.1.1 canar…
AlessioGr Dec 23, 2025
c89800e
fix: warning during Next.js build "the request of a dependency is an …
AlessioGr Dec 23, 2025
c474572
test: ensure vitest vscode extension env variables match CI (#15009)
AlessioGr Dec 23, 2025
55a35bf
test: fix console logs not appearing on vitest (#15008)
AlessioGr Dec 23, 2025
b660323
fix: add beforeDocumentControls to globals generate importmap (#15036)
rilrom Dec 29, 2025
03aee81
chore(claude): fix typo in claude skills access control advanced file…
rilrom Dec 30, 2025
ef8237f
feat: support qs-esm sort arrays in REST API (#15065)
andershermansen Dec 30, 2025
0e13ac4
chore: bump nodemailer to 7.0.12 (security) (#15062)
Patrikbjoh Jan 2, 2026
d1e083e
fix(plugin-mcp): pin modelcontextprotocol/sdk dependency version to 1…
jonathanelmgren Jan 2, 2026
9c910a0
fix: s3 plugin uploads files before validation (#14988)
JessRynkar Jan 5, 2026
d2f24fb
fix(storage-*): allow prefix to always exist as a field via alwaysIns…
paulpopus Jan 5, 2026
6632e65
fix(ui): invalid sass imports to support windows - add Stylelint to p…
rubixvi Jan 5, 2026
8b3d895
feat(richtext-lexical): adds docs page for lexical blocks, adds new l…
AlessioGr Jan 5, 2026
c229889
chore: adds comment in image component (#14663)
zubricks Jan 5, 2026
777c72b
chore(deps): bump dnd-kit (#15083)
AlessioGr Jan 5, 2026
d29d968
chore(release): v3.70.0 [skip ci]
denolfe Jan 5, 2026
da39e3e
templates: bump for v3.70.0 (#15090)
denolfe Jan 5, 2026
a9909ac
feat: add typescript.strictDraftTypes flag for opt-in draft query typ…
thomas-coldwell Jan 6, 2026
603c813
feat(plugin-mcp): adds tools that can find and update globals (#15091)
kendelljoseph Jan 6, 2026
4593ae0
fix(richtext-lexical,ui): make uploadNode default to `alt` user-defin…
GermanJablo Jan 6, 2026
feb7111
feat(plugin-search): enables skipping of document syncing (#14928)
JarrodMFlesch Jan 6, 2026
2558b40
refactor: deprecate returning failed state from job queue handlers (#…
AlessioGr Jan 6, 2026
362aa50
perf(graphql): optimized join count when docs are not needed (#14872)
rjgtav Jan 7, 2026
1fdf98e
fix(ui): crop width and height inputs limited to -1 of max (#15101)
PatrikKozak Jan 7, 2026
809a10c
fix(templates): add recommended serverExternalPackages to cloudflare …
rjgtav Jan 7, 2026
dc420b1
fix(templates): improve cli detection in cloudflare template (#15098)
rjgtav Jan 7, 2026
4976319
docs: task failure docs (#15096)
zubricks Jan 7, 2026
54132ae
test: fixes lexical block test flakes (#15113)
JarrodMFlesch Jan 7, 2026
c1c10dc
Ecommerce Plugin - currency formatting and symbol positioning
teastudiopl Jan 8, 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
  •  
  •  
  •  
18 changes: 18 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Database adapters: mongodb, mongodb-atlas, cosmosdb, documentdb, firestore, postgres, postgres-custom-schema, postgres-uuid, postgres-read-replica, vercel-postgres-read-replica, sqlite, sqlite-uuid, supabase, d1
PAYLOAD_DATABASE=mongodb

# Optional - used for the `translateNewKeys` script
OPENAI_KEY=









# If you're NOT using our docker scripts and want to manually install your database, uncomment these and point them to your local database.
# Do not uncomment these if you're using our Docker scripts to run your database.
# MONGODB_URL=mongodb://127.0.0.1/payloadtests
# POSTGRES_URL=postgres://127.0.0.1:5432/payloadtests
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

## Build Files

**/jest.config.js @denolfe @AlessioGr
**/vitest.config.ts @denolfe @AlessioGr
**/tsconfig*.json @denolfe @AlessioGr

## Root
Expand Down
4 changes: 2 additions & 2 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ inputs:
description: Pnpm version override
pnpm-run-install:
description: Whether to run pnpm install
default: true
default: 'true'
pnpm-restore-cache:
description: Whether to restore cache
default: true
default: 'true'
pnpm-install-cache-key:
description: The cache key override for the pnpm install cache

Expand Down
65 changes: 65 additions & 0 deletions .github/actions/start-database/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Start Database
description: Starts the required database for tests

inputs:
database:
description: 'Database type: mongodb, mongodb-atlas, cosmosdb, documentdb, firestore, postgres, postgres-custom-schema, postgres-uuid, postgres-read-replica, vercel-postgres-read-replica, sqlite, sqlite-uuid, supabase, d1'
required: true

outputs:
POSTGRES_URL:
description: PostgreSQL connection URL
value: ${{ steps.postgres.outputs.url }}
MONGODB_URL:
description: MongoDB connection URL
value: ${{ steps.mongodb.outputs.url }}
MONGODB_ATLAS_URL:
description: MongoDB Atlas connection URL
value: ${{ steps.mongodb-atlas.outputs.url }}

runs:
using: composite
steps:
- name: Start MongoDB
id: mongodb
if: contains(fromJSON('["mongodb", "cosmosdb", "documentdb", "firestore"]'), inputs.database)
shell: bash
run: |
docker compose -f test/helpers/db/mongodb/docker-compose.yml up -d --wait
echo "url=mongodb://payload:payload@localhost:27018/payload?authSource=admin&directConnection=true&replicaSet=rs0" >> $GITHUB_OUTPUT

- name: Start MongoDB Atlas Local
id: mongodb-atlas
if: inputs.database == 'mongodb-atlas'
shell: bash
run: |
docker compose -f test/helpers/db/mongodb-atlas/docker-compose.yml up -d --wait
echo "url=mongodb://localhost:27019/payload?directConnection=true&replicaSet=mongodb-atlas-local" >> $GITHUB_OUTPUT

- name: Start PostgreSQL
id: postgres
if: startsWith(inputs.database, 'postgres')
shell: bash
run: |
docker compose -f test/helpers/db/postgres/docker-compose.yml up -d --wait
echo "url=postgresql://payload:payload@localhost:5433/payload" >> $GITHUB_OUTPUT

- name: Configure PostgreSQL custom schema
if: inputs.database == 'postgres-custom-schema'
shell: bash
run: |
docker exec postgres-payload-test psql -U payload -d payload -c "CREATE SCHEMA custom;"

- name: Start Supabase
id: supabase
if: inputs.database == 'supabase'
uses: supabase/setup-cli@v1
with:
version: latest

- name: Initialize Supabase
if: inputs.database == 'supabase'
shell: bash
run: |
supabase init
supabase start
6 changes: 3 additions & 3 deletions .github/reproduction-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
```

- `config.ts` - This is the _granular_ Payload config for testing. It should be as lightweight as possible. Reference existing configs for an example
- `int.spec.ts` [Optional] - This is the test file run by jest. Any test file must have a `*int.spec.ts` suffix.
- `int.spec.ts` [Optional] - This is the test file run by vitest. Any test file must have a `*int.spec.ts` suffix.
- `e2e.spec.ts` [Optional] - This is the end-to-end test file that will load up the admin UI using the above config and run Playwright tests.
- `payload-types.ts` - Generated types from `config.ts`. Generate this file by running `pnpm dev:generate-types _community`.

Expand All @@ -34,11 +34,11 @@ An issue does not need to have failing tests — reproduction steps with your fo

### Running integration tests (Payload API tests)

First install [Jest Runner for VSVode](https://marketplace.visualstudio.com/items?itemName=firsttris.vscode-jest-runner).
First install [Vitest Plugin for VSCode](https://marketplace.visualstudio.com/items?itemName=vitest.explorer).

There are a couple ways run integration tests:

- **Granularly** - you can run individual tests in vscode by installing the Jest Runner plugin and using that to run individual tests. Clicking the `debug` button will run the test in debug mode allowing you to set break points.
- **Granularly** - you can run individual tests in vscode by installing the [Vitest Plugin](https://marketplace.visualstudio.com/items?itemName=vitest.explorer) and using that to run individual tests. Clicking the `debug` button will run the test in debug mode allowing you to set break points.

<img src="https://raw.githubusercontent.com/payloadcms/payload/main/.github/assets/int-debug.png" />

Expand Down
Loading
Loading