diff --git a/.github/workflows/pint-fix.yml b/.github/workflows/pint-fix.yml new file mode 100644 index 0000000000..ae003a16cb --- /dev/null +++ b/.github/workflows/pint-fix.yml @@ -0,0 +1,29 @@ +name: Fix PHP code style issues + +on: + push: + paths: + - '**.php' + +permissions: + contents: write + +jobs: + fix-php-code-styling: + runs-on: ubuntu-latest + if: github.repository_owner == 'statamic' + + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} + token: ${{ secrets.PINT }} + + - name: Fix PHP code style issues + uses: aglipanci/laravel-pint-action@1.0.0 + + - name: Commit changes + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Fix styling diff --git a/.github/workflows/pint-lint.yml b/.github/workflows/pint-lint.yml new file mode 100644 index 0000000000..87a91b0e6d --- /dev/null +++ b/.github/workflows/pint-lint.yml @@ -0,0 +1,20 @@ +name: Lint PHP code style issues + +on: + pull_request: + paths: + - '**.php' + +jobs: + lint-php-code-styling: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Check PHP code style issues + uses: aglipanci/laravel-pint-action@1.0.0 + with: + testMode: true + verboseMode: true diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f5e408e7ff..67d8b7ae83 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: - php: [8.0, 8.1, 8.2] + php: [8.0, 8.1, 8.2, 8.3] laravel: [9.*, 10.*] stability: [prefer-lowest, prefer-stable] os: [ubuntu-latest] @@ -29,6 +29,8 @@ jobs: exclude: - php: 8.0 laravel: 10.* + - php: 8.3 + laravel: 9.* name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }} @@ -50,6 +52,7 @@ jobs: tests composer.json phpunit.xml.dist + .github/workflows/tests.yml **.php - name: Determine whether tests should run @@ -60,8 +63,7 @@ jobs: - name: Update apt sources if: steps.should-run-tests.outputs.result == 'true' && matrix.os == 'ubuntu-latest' run: | - sudo gem install apt-spy2 - sudo apt-spy2 fix --commit --launchpad --country=US + sudo apt-get check || sudo apt --fix-broken install -y sudo apt-get update - name: Install French Locale diff --git a/.styleci.yml b/.styleci.yml deleted file mode 100644 index 02396b6b61..0000000000 --- a/.styleci.yml +++ /dev/null @@ -1,2 +0,0 @@ -preset: laravel -risky: false diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a272cfe74..282f9d1a5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,700 @@ # Release Notes +## 4.38.0 (2023-11-30) + +### What's new +- Support Laravel Precognition on front end forms. [#8886](https://github.com/statamic/cms/issues/8886) by @ryanmitchell + +### What's fixed +- Fix 404 redirect after creating entry. [#9095](https://github.com/statamic/cms/issues/9095) by @jasonvarga +- Fix date field not populating with current date, revert prevention of ensuring fields if they already exist. [#9094](https://github.com/statamic/cms/issues/9094) by @jasonvarga +- Fix date replicator preview in more configurations. [#9093](https://github.com/statamic/cms/issues/9093) by @jasonvarga +- Fix autofocus on textareas [#9089](https://github.com/statamic/cms/issues/9089) by @robdekort + + + +## 4.37.0 (2023-11-29) + +### What's new +- Add `group` field type. [#8836](https://github.com/statamic/cms/issues/8836) by @godismyjudge95 +- User creation wizard now shows all fields from the blueprint with validation. [#9003](https://github.com/statamic/cms/issues/9003) by @ryanmitchell +- Tag conditions can query on sub-fields using dot notation. [#9069](https://github.com/statamic/cms/issues/9069) by @ryanmitchell +- Search indexes are updated with better memory efficiency using lazy collections. [#9072](https://github.com/statamic/cms/issues/9072) by @ryanmitchell +- The `ray` modifier can specify color. [#9073](https://github.com/statamic/cms/issues/9073) by @joschuba +- Add `UrlInvalidated` event for when a URL is invalidated from the static cache. [#8902](https://github.com/statamic/cms/issues/8902) by @ryanmitchell +- Add `Creating` events. [#7377](https://github.com/statamic/cms/issues/7377) by @ryanmitchell +- Add option to append original filename to Glide URLs. [#8661](https://github.com/statamic/cms/issues/8661) by @ryanmitchell + +### What's improved +- Improve replicator preview for Date Fieldtype. [#9057](https://github.com/statamic/cms/issues/9057) by @duncanmcclean +- Make whole branches clickable in Entries fieldtype in tree view. [#9074](https://github.com/statamic/cms/issues/9074) by @duncanmcclean +- Add validation to limit characters in slugs. [#9046](https://github.com/statamic/cms/issues/9046) by @duncanmcclean +- Improve sanitization of Replicator set preview text. [#9047](https://github.com/statamic/cms/issues/9047) by @jasonvarga + +### What's fixed +- Scope filters can return null. [#9058](https://github.com/statamic/cms/issues/9058) by @jonassiewertsen +- Fix passing null to strtolower. [#9042](https://github.com/statamic/cms/issues/9042) by @miloslavkostir +- Fix `redirect: @child` redirecting to `@child` when not a link fieldtype. [#9062](https://github.com/statamic/cms/issues/9062) by @ryanmitchell +- Prevent existing term data being overwritten in terms fieldtype. [#9076](https://github.com/statamic/cms/issues/9076) by @ryanmitchell +- Translate widget header and collection widget title. [#9077](https://github.com/statamic/cms/issues/9077) by @ryanmitchell +- Fix redirect actions showing a toast error. [#9054](https://github.com/statamic/cms/issues/9054) by @ryanmitchell +- Fix appropriate site not being used in the listing when redirecting from an entry. [#9075](https://github.com/statamic/cms/issues/9075) by @duncanmcclean +- Use `RedirectIfAuthorized` middleware on password reset & activate pages. [#9053](https://github.com/statamic/cms/issues/9053) by @ryanmitchell +- Allow focus on textarea fieldtypes. [#9055](https://github.com/statamic/cms/issues/9055) by @robdekort +- Fix pagination in relationship fieldtype causing page to scroll to the top. [#9060](https://github.com/statamic/cms/issues/9060) by @duncanmcclean +- Fix error when copying assets across filesystems. [#9065](https://github.com/statamic/cms/issues/9065) by @mbale +- Fix utility permissions not showing when using route caching. [#9059](https://github.com/statamic/cms/issues/9059) by @duncanmcclean +- Revert auto-population of array fieldtype options. [#9066](https://github.com/statamic/cms/issues/9066) by @duncanmcclean +- Fix checkbox selection in listing tables jumping on Safari. [#9052](https://github.com/statamic/cms/issues/9052) by @ryanmitchell +- Assets get downloaded when no URL is available. [#9018](https://github.com/statamic/cms/issues/9018) by @duncanmcclean +- Fix section header padding in the sidebar. [#9051](https://github.com/statamic/cms/issues/9051) by @jackmcdade +- Pass autocomplete config param to CP text inputs. [#9013](https://github.com/statamic/cms/issues/9013) by @ryanmitchell +- Fix Glide tag stripping domain when using unsupported extension. [#9031](https://github.com/statamic/cms/issues/9031) by @duncanmcclean +- Allow revision actions to be translated. [#9023](https://github.com/statamic/cms/issues/9023) by @ryanmitchell +- Fix URI validation error when collection route uses entry IDs. [#9035](https://github.com/statamic/cms/issues/9035) by @duncanmcclean +- Fix Outpost locking code for cache drivers without locking support. [#9029](https://github.com/statamic/cms/issues/9029) by @duncanmcclean +- Fix missing `nestedListing` method on `Html` class. [#9034](https://github.com/statamic/cms/issues/9034) by @duncanmcclean +- Fix entries tag not filtering by taxonomy when terms field is `max_items: 1`. [#9045](https://github.com/statamic/cms/issues/9045) by @ryanmitchell +- Fix select field value not being shown in listings when option label is missing. [#9038](https://github.com/statamic/cms/issues/9038) by @duncanmcclean + + + +## 4.36.0 (2023-11-20) + +### What's new +- Add `href` attribute to relationship item links. [#9030](https://github.com/statamic/cms/issues/9030) by @jacksleight +- Only allow uploading certain file extensions, with an option to add more. [#9037](https://github.com/statamic/cms/issues/9037) by @jasonvarga + +### What's fixed +- Fix nocache tag when URL ends with a question mark. [#9016](https://github.com/statamic/cms/issues/9016) by @duncanmcclean +- Fix missing globals and asset container translations. [#9024](https://github.com/statamic/cms/issues/9024) by @ryanmitchell +- Validate that field handles are in snake case. [#9039](https://github.com/statamic/cms/issues/9039) by @duncanmcclean +- Appropriate file extension are applied when uploading. [#9033](https://github.com/statamic/cms/issues/9033) by @jasonvarga +- Don't prompt user to select search index when there's only 1 configured. [#9036](https://github.com/statamic/cms/issues/9036) by @duncanmcclean +- Fix `range` tag with `times="0"` parameter outputting incorrectly. [#9022](https://github.com/statamic/cms/issues/9022) by @ryanmitchell +- Fix error in collection entry listing that occurs on certain server setups (i.e Vapor and AWS function URLs). [#9028](https://github.com/statamic/cms/issues/9028) by @duncanmcclean + + + +## 4.35.0 (2023-11-16) + +### What's new +- Ability to set settings on Algolia indexes. [#8830](https://github.com/statamic/cms/issues/8830) by @godismyjudge95 +- Ability to customize Bard/Replicator set icons directory. [#8931](https://github.com/statamic/cms/issues/8931) by @jesseleite + +### What's improved +- Improve Bard invalid content error reporting. [#8580](https://github.com/statamic/cms/issues/8580) by @jacksleight +- Dutch translations. [#8993](https://github.com/statamic/cms/issues/8993) by @jeroenpeters1986 + +### What's fixed +- Fix nocache tag error when using the regex antlers parser. [#9009](https://github.com/statamic/cms/issues/9009) by @jasonvarga +- Fix error when using Eloquent users but you still have user files. [#9006](https://github.com/statamic/cms/issues/9006) by @duncanmcclean +- Fix missing cursor when editing inline code in Bard. [#9002](https://github.com/statamic/cms/issues/9002) by @o1y +- Fix modified revision values not being shown on save. [#8961](https://github.com/statamic/cms/issues/8961) by @ryanmitchell +- Check if user roles and groups exist before creating. [#8998](https://github.com/statamic/cms/issues/8998) by @ryanmitchell +- Check if navigation exists before creating. [#8995](https://github.com/statamic/cms/issues/8995) by @ryanmitchell +- Check if global exists before creating. [#8996](https://github.com/statamic/cms/issues/8996) by @ryanmitchell +- Check if fieldset exists before creating. [#8994](https://github.com/statamic/cms/issues/8994) by @ryanmitchell +- Show error when there is a duplicate taxonomy blueprint name. [#8997](https://github.com/statamic/cms/issues/8997) by @ryanmitchell +- Prevent concurrent requests to the Outpost. [#9000](https://github.com/statamic/cms/issues/9000) by @duncanmcclean +- Resolve dynamically declared properties. [#8999](https://github.com/statamic/cms/issues/8999) by @martinoak + + + +## 4.34.0 (2023-11-14) + +### What's new +- Auto-populate `array` fieldtype options. [#8980](https://github.com/statamic/cms/issues/8980) by @duncanmcclean +- Add Bard support to `read_time` modifier. [#8976](https://github.com/statamic/cms/issues/8976) by @duncanmcclean +- Antlers identifier finder. [#8965](https://github.com/statamic/cms/issues/8965) by @jasonvarga + +### What's improved +- Nocache performance improvements. [#8956](https://github.com/statamic/cms/issues/8956) by @jasonvarga +- French translations. [#8977](https://github.com/statamic/cms/issues/8977) by @ebeauchamps + +### What's fixed +- More php file validation. [#8991](https://github.com/statamic/cms/issues/8991) by @jasonvarga +- Fix super not saving on eloquent users. [#8979](https://github.com/statamic/cms/issues/8979) by @ryanmitchell +- Hide export submissions button when there are no valid exporters. [#8985](https://github.com/statamic/cms/issues/8985) by @ryanmitchell +- Only namespace asset validation attributes when on a CP route. [#8987](https://github.com/statamic/cms/issues/8987) by @ryanmitchell +- Fix for edit form page saying edit collection. [#8967](https://github.com/statamic/cms/issues/8967) by @ryanmitchell +- Fix new child entries not propagating to appropriate position in other sites trees. [#7302](https://github.com/statamic/cms/issues/7302) by @arthurperton +- Fix impersonation redirect. [#8973](https://github.com/statamic/cms/issues/8973) by @jasonvarga +- Fix error when getting alt on bard image when asset is missing. [#8959](https://github.com/statamic/cms/issues/8959) by @morphsteve +- Prevent requiring current password when changing another user's password. [#8966](https://github.com/statamic/cms/issues/8966) by @duncanmcclean +- Fix global attribute support on bard's small mark. [#8969](https://github.com/statamic/cms/issues/8969) by @jacksleight + + + +## 4.33.0 (2023-11-10) + +### What's new +- Bard supports cmd+k for links. [#8950](https://github.com/statamic/cms/issues/8950) by @o1y +- The Entries fieldtype use columns from preferences in the stack selector. [#8900](https://github.com/statamic/cms/issues/8900) by @duncanmcclean +- Bind `AssetContainerContents` to the service provider. [#8954](https://github.com/statamic/cms/issues/8954) by @ryanmitchell +- Support arrays in wrap modifier [#8942](https://github.com/statamic/cms/issues/8942) by @jacksleight +- Add `mount` to augmented collection. [#8928](https://github.com/statamic/cms/issues/8928) by @duncanmcclean +- Require `pint` in dev. [#8955](https://github.com/statamic/cms/issues/8955) by @ryanmitchell + +### What's improved +- French translations. [#8945](https://github.com/statamic/cms/issues/8945) [#8934](https://github.com/statamic/cms/issues/8934) by @ebeauchamps +- German translations. [#8939](https://github.com/statamic/cms/issues/8939) by @doriengr + +### What's fixed +- Front-end form asset field php file validation. [#8968](https://github.com/statamic/cms/issues/8968) by @jasonvarga +- Fix entries fieldtype not respecting collection sort column & direction. [#8894](https://github.com/statamic/cms/issues/8894) by @duncanmcclean +- Fix duplicate entry action translation. [#8946](https://github.com/statamic/cms/issues/8946) by @jasonvarga +- Fix SortableList not reacting to disabled prop changes. [#8949](https://github.com/statamic/cms/issues/8949) by @duncanmcclean +- Remove debounce when renaming assets & folders. [#8953](https://github.com/statamic/cms/issues/8953) by @duncanmcclean +- Use translations from fallback locale when primary locale is missing translations. [#8940](https://github.com/statamic/cms/issues/8940) by @duncanmcclean +- Fix missing title on relationship fields in multi-site. [#8936](https://github.com/statamic/cms/issues/8936) by @duncanmcclean +- Prevent ensuring fields on entries if they already exist. [#8926](https://github.com/statamic/cms/issues/8926) by @duncanmcclean +- Fix `statamic.web` middleware not being merged. [#8935](https://github.com/statamic/cms/issues/8935) by @duncanmcclean +- Fix infinite loop on listing table of mounted collection. [#8937](https://github.com/statamic/cms/issues/8937) by @duncanmcclean +- Fix "Always Save" toggle not being saved when used on linked field. [#8927](https://github.com/statamic/cms/issues/8927) by @duncanmcclean +- Fix slug field not targeting sibling fields inside a replicator. [#8929](https://github.com/statamic/cms/issues/8929) by @duncanmcclean + + + +## 4.32.0 (2023-11-03) + +### What's new +- Entries fieldtype gets a tree view in the stack selector. [#8899](https://github.com/statamic/cms/issues/8899) by @duncanmcclean +- Link fieldtype supports array syntax for getting underlying entry, asset, etc. [#8911](https://github.com/statamic/cms/issues/8911) by @edalzell +- Ability to duplicate fields in blueprint/fieldset builders. [#8916](https://github.com/statamic/cms/issues/8916) by @duncanmcclean +- Support paste events in Taggable Fieldtype. [#8903](https://github.com/statamic/cms/issues/8903) by @duncanmcclean +- Add helper to more easily remove child item in CP navigation. [#8883](https://github.com/statamic/cms/issues/8883) by @jesseleite + +### What's fixed +- Fix entries on the same date being ignored by collection previous/next tags. [#8921](https://github.com/statamic/cms/issues/8921) by @duncanmcclean +- Remove schema check on import users command. [#8909](https://github.com/statamic/cms/issues/8909) by @ryanmitchell +- Fix slugify when using hyphens surrounded by spaces. [#8923](https://github.com/statamic/cms/issues/8923) by @duncanmcclean +- Fix collection listing's sort direction on reorder. [#8910](https://github.com/statamic/cms/issues/8910) by @o1y +- Prevent root entries being deleted in listing view. [#8912](https://github.com/statamic/cms/issues/8912) by @ryanmitchell +- Handle unauthorized response in Inline Publish Form. [#8918](https://github.com/statamic/cms/issues/8918) by @duncanmcclean +- Hide publish action fields when saving. [#8917](https://github.com/statamic/cms/issues/8917) by @ryanmitchell +- Handle empty values in collection tag filters. [#8915](https://github.com/statamic/cms/issues/8915) by @duncanmcclean +- Fix missing translation of some user defined strings. [#8914](https://github.com/statamic/cms/issues/8914) by @ryanmitchell +- Fix CP nav item active status regressions. [#8880](https://github.com/statamic/cms/issues/8880) by @jesseleite +- Validate that Select & Button Group options have keys. [#8905](https://github.com/statamic/cms/issues/8905) by @duncanmcclean +- Fix permissions for asset upload and folder creation buttons in CP [#8925](https://github.com/statamic/cms/issues/8925) by @joshuablum + + + +## 4.31.0 (2023-10-30) + +### What's new +- PHP 8.3 support [#8845](https://github.com/statamic/cms/issues/8845) by @jasonvarga +- Custom form submission exporters. [#8837](https://github.com/statamic/cms/issues/8837) by @ryanmitchell +- Add `RevisionSaving` event. [#8551](https://github.com/statamic/cms/issues/8551) by @ryanmitchell +- Allow using globals in form email configs. [#8892](https://github.com/statamic/cms/issues/8892) by @duncanmcclean +- Improve Entries fieldtype search index logic, and add option to define an explicit one. [#8885](https://github.com/statamic/cms/issues/8885) by @edalzell + +### What's improved +- Improve UI of link fieldtype in smaller spaces. [#8882](https://github.com/statamic/cms/issues/8882) by @godismyjudge95 +- French translations. [#8889](https://github.com/statamic/cms/issues/8889) by @ebeauchamps + +### What's fixed +- Fix status column moving when resetting columns on entry listing. [#8896](https://github.com/statamic/cms/issues/8896) by @duncanmcclean +- Ignore single smart quotes when slugifying entries. [#8895](https://github.com/statamic/cms/issues/8895) by @duncanmcclean +- Fix Live Preview not updating when relationship items are updated. [#8893](https://github.com/statamic/cms/issues/8893) by @duncanmcclean +- Fix global site selector not closing when clicking outside. [#8888](https://github.com/statamic/cms/issues/8888) by @o1y +- Fix Bard text align when no headings are enabled. [#8878](https://github.com/statamic/cms/issues/8878) by @jacksleight + + + +## 4.30.0 (2023-10-20) + +### What's new +- Multi-site Duplicator Support. [#8665](https://github.com/statamic/cms/issues/8665) by @duncanmcclean +- Add `EntryDeleting` to allow you to prevent items being deleted [#8833](https://github.com/statamic/cms/issues/8833) by @ryanmitchell + +### What's improved +- Cache Blueprint columns. [#8840](https://github.com/statamic/cms/issues/8840) by @jonassiewertsen + +### What's fixed +- Default to using the CP broker when multiple are available. [#8872](https://github.com/statamic/cms/issues/8872) by @ryanmitchell + + + +## 4.29.0 (2023-10-19) + +### What's new +- Add form reference to field during render. [#8862](https://github.com/statamic/cms/issues/8862) by @martyf +- Add config to enable frontend route binding and support binding by field. [#8853](https://github.com/statamic/cms/issues/8853) by @ryanmitchell +- Allow overwriting the column for `unique_user_value` validation. [#8852](https://github.com/statamic/cms/issues/8852) by @marcorieser + +### What's improved +- German translations [#8857](https://github.com/statamic/cms/issues/8857) by @helloDanuk +- French translations [#8848](https://github.com/statamic/cms/issues/8848) by @ebeauchamps + +### What's fixed +- Remove double-render of fields in Form tag. [#8861](https://github.com/statamic/cms/issues/8861) by @martyf +- Fix navigation 'Save Changes' button state. [#8864](https://github.com/statamic/cms/issues/8864) by @duncanmcclean +- Fix missing replicator set previews. [#8855](https://github.com/statamic/cms/issues/8855) by @jacksleight +- Bump @babel/traverse from 7.21.3 to 7.23.2 [#8870](https://github.com/statamic/cms/issues/8870) by @dependabot + + + +## 4.28.0 (2023-10-13) + +### What's new +- Allow user defined fields in the CP to be translatable. [#8664](https://github.com/statamic/cms/issues/8664) by @ryanmitchell + +### What's improved +- French translations. [#8835](https://github.com/statamic/cms/issues/8835) [#8831](https://github.com/statamic/cms/issues/8831) by @ebeauchamps + +### What's fixed +- Fix lowercasing of asset filenames to include file extension. [#8842](https://github.com/statamic/cms/issues/8842) by @joshuablum +- Only show status indicator in stack view if item has a status. [#8832](https://github.com/statamic/cms/issues/8832) by @ryanmitchell +- Fix console warning generated by invalid tabulator config. [#8834](https://github.com/statamic/cms/issues/8834) by @joseph-d + + + +## 4.27.0 (2023-10-11) + +### What's new +- Multi-site Permissions [#5946](https://github.com/statamic/cms/issues/5946) by @jackmcdade + + + +## 4.26.1 (2023-10-11) + +### What's fixed +- Fix assets being deleted when renaming snake_case folder to kebab-case. [#8826](https://github.com/statamic/cms/issues/8826) by @jasonvarga + + + +## 4.26.0 (2023-10-10) + +### What's new +- Support for Antlers template-defined variables to be available in the layout. [#8775](https://github.com/statamic/cms/issues/8775) by @JohnathonKoster +- Add Bard link email, phone and relationship options. [#8777](https://github.com/statamic/cms/issues/8777) by @jacksleight + +### What's improved +- Dutch translations. [#8823](https://github.com/statamic/cms/issues/8823) by @jeroenpeters1986 +- Improve post-save performance with many Bard and Revealer fields. [#8712](https://github.com/statamic/cms/issues/8712) by @jacksleight +- Improve initial render speed of Replicators with many sets. [#8716](https://github.com/statamic/cms/issues/8716) by @jacksleight +- Simplify usage of the icon fieldtype with the SVG tag. [#8815](https://github.com/statamic/cms/issues/8815) by @JohnathonKoster + +### What's fixed +- Fix section fieldtype first-child's top margin. [#8822](https://github.com/statamic/cms/issues/8822) by @caseydwyer + + + +## 4.25.0 (2023-10-09) + +### What's new +- Support for Submission-specific form redirects. [#8729](https://github.com/statamic/cms/issues/8729) by @martyf +- Support for additional CP thumbnail presets. [#8811](https://github.com/statamic/cms/issues/8811) by @jacksleight +- The toggle fieldtype gets an inline label when truthy setting. [#8814](https://github.com/statamic/cms/issues/8814) by @caseydwyer +- Fieldtypes can define additional renderable data to be available when using front-end forms. [#8730](https://github.com/statamic/cms/issues/8730) by @martyf + +### What's improved +- Validation translations. [#8819](https://github.com/statamic/cms/issues/8819) by @caseydwyer +- Dutch translations. [#8799](https://github.com/statamic/cms/issues/8799) by @robdekort +- French translations. [#8792](https://github.com/statamic/cms/issues/8792) by @ebeauchamps +- Clarify default field instructions. [#8808](https://github.com/statamic/cms/issues/8808) by @caseydwyer + +### What's fixed +- Fix error when saving entry where content is empty array. [#8813](https://github.com/statamic/cms/issues/8813) by @mauricewijnia +- Antlers: Fix custom variable assignment inside tags. [#8818](https://github.com/statamic/cms/issues/8818) by @JohnathonKoster +- GraphQL: Fix assets not resolving query builders. [#8809](https://github.com/statamic/cms/issues/8809) by @arcs- +- Fix the "Set to now" button being visible when read only. [#8816](https://github.com/statamic/cms/issues/8816) by @ryanmitchell +- Remove requirement of orderable collection from next/prev tags. [#8810](https://github.com/statamic/cms/issues/8810) by @jasonvarga +- Clean up Section fieldtype styles. [#8807](https://github.com/statamic/cms/issues/8807) by @caseydwyer +- Fix missing response from `afterRequestCompleted`. [#8801](https://github.com/statamic/cms/issues/8801) by @jacksleight +- Bump postcss from 8.4.21 to 8.4.31 [#8817](https://github.com/statamic/cms/issues/8817) by @dependabot + + + +## 4.24.0 (2023-10-02) + +### What's new +- Date range filter. [#8779](https://github.com/statamic/cms/issues/8779) by @ryanmitchell +- Add `site` to preview target variables. [#8780](https://github.com/statamic/cms/issues/8780) by @arcs- + +### What's fixed +- Fix toggle fieldtype shrinkage. [#8790](https://github.com/statamic/cms/issues/8790) by @caseydwyer +- Ensure we only check that visible fields are filled in filters. [#8778](https://github.com/statamic/cms/issues/8778) by @ryanmitchell +- Default to first collection's sort config in entries fieldtype. [#8782](https://github.com/statamic/cms/issues/8782) by @ryanmitchell +- Use autocomplete attribute in the default text template. [#8774](https://github.com/statamic/cms/issues/8774) by @jeroenimpres +- Propagate save withEvents to the direct descendants on entry save. [#8786](https://github.com/statamic/cms/issues/8786) by @ryanmitchell +- Fix commands registered by class causing an error in `please`. [#8784](https://github.com/statamic/cms/issues/8784) by @SylvesterDamgaard +- Bump composer requirement. [#8789](https://github.com/statamic/cms/issues/8789) by @jasonvarga + + + +## 4.23.2 (2023-09-25) + +### What's fixed +- Fix impersonation of own account when using Eloquent users. [#8763](https://github.com/statamic/cms/issues/8763) by @ryanmitchell +- Fix static caching with Livewire 3. [#8762](https://github.com/statamic/cms/issues/8762) by @aerni + + + +## 4.23.1 (2023-09-22) + +### What's improved +- German translations. [#8757](https://github.com/statamic/cms/issues/8757) by @helloDanuk +- French translations. [#8754](https://github.com/statamic/cms/issues/8754) [#8750](https://github.com/statamic/cms/issues/8750) by @ebeauchamps +- Dutch translations. [#8747](https://github.com/statamic/cms/issues/8747) by @robdekort + +### What's fixed +- Fix eloquent like query error. [#8753](https://github.com/statamic/cms/issues/8753) by @ryanmitchell + + + +## 4.23.0 (2023-09-20) + +### What's new +- Add ability to impersonate a user. [#8622](https://github.com/statamic/cms/issues/8622) by @ryanmitchell +- New modifier for AP and MLA style headlines. [#8731](https://github.com/statamic/cms/issues/8731) by @jackmcdade +- Add `orderByDesc` method to the query builder. [#8735](https://github.com/statamic/cms/issues/8735) by @duncanmcclean +- Add replicator_preview toggle to Blueprint editor. [#8297](https://github.com/statamic/cms/issues/8297) by @jacksleight + +### What's fixed +- Fix incorrect entries_count in multisite when using localized term slugs. [#8743](https://github.com/statamic/cms/issues/8743) by @ryanmitchell +- Fix CSRF field related test failures. [#8746](https://github.com/statamic/cms/issues/8746) by @jasonvarga +- Make title in revision preview computed. [#8745](https://github.com/statamic/cms/issues/8745) by @jonassiewertsen +- Adjust data passed to live preview targets. [#8742](https://github.com/statamic/cms/issues/8742) by @jasonvarga +- Fix sidebar missing background on term publish form. [#8741](https://github.com/statamic/cms/issues/8741) by @jasonvarga +- Apply overflow styling to user listing. [#8739](https://github.com/statamic/cms/issues/8739) by @jasonvarga +- Empty form widget styling is now consistent with other widgets. [#8736](https://github.com/statamic/cms/issues/8736) by @jackmcdade +- Fall back to default site when selected one is invalid. [#8721](https://github.com/statamic/cms/issues/8721) by @jackmcdade +- Fix single digit month not working on whereMonth. [#8697](https://github.com/statamic/cms/issues/8697) by @arifhp86 +- Make eloquent 'like' queries case insensitive. [#8243](https://github.com/statamic/cms/issues/8243) by @ryanmitchell +- Fix custom Antlers variables not being updated within recursive loops. [#8725](https://github.com/statamic/cms/issues/8725) by @JohnathonKoster +- Fix Antlers view variable leak. [#8728](https://github.com/statamic/cms/issues/8728) by @JohnathonKoster + + + +## 4.22.0 (2023-09-18) + +### What's new +- Ability to give access to only form blueprints and not all blueprints. [#7923](https://github.com/statamic/cms/issues/7923) by @ryanmitchell +- Add an `@antlers` Blade directive pair. [#8692](https://github.com/statamic/cms/issues/8692) by @JohnathonKoster +- Allow for a honeypot field on `user:register` tag. [#8704](https://github.com/statamic/cms/issues/8704) by @ryanmitchell +- Add 'on' and 'off' autocomplete values to text field. [#8679](https://github.com/statamic/cms/issues/8679) by @stoffelio + +### What's improved +- Autofocus on new array field row's first input. [#8710](https://github.com/statamic/cms/issues/8710) by @jackmcdade +- Add placeholder text to make Taggable usage more clear. [#8703](https://github.com/statamic/cms/issues/8703) by @jackmcdade +- Improve visibility of overflowing set picker items. [#8701](https://github.com/statamic/cms/issues/8701) by @jackmcdade + +### What's fixed +- Fix nav item active status on user modified navs. [#8685](https://github.com/statamic/cms/issues/8685) by @jesseleite +- Make condition operators translatable. [#8724](https://github.com/statamic/cms/issues/8724) by @jackmcdade +- Fix cache tag sometimes outputting placeholder Antlers strings. [#8401](https://github.com/statamic/cms/issues/8401) by @JohnathonKoster +- Fix search snippets for bard/replicator content. [#7545](https://github.com/statamic/cms/issues/7545) by @stephensamra +- Fix sidebar's empty card when no actions are present. [#8720](https://github.com/statamic/cms/issues/8720) by @jackmcdade +- Fix fluent tag camelCase params. [#8715](https://github.com/statamic/cms/issues/8715) by @jackmcdade +- Prevent deletion of selection when filtering in stack selector. [#8693](https://github.com/statamic/cms/issues/8693) by @wiebkevogel +- More thoroughly escape and truncate Code replicator previews. [#8718](https://github.com/statamic/cms/issues/8718) by @jackmcdade +- Stop forcing max_items: 1 on form fields. [#8713](https://github.com/statamic/cms/issues/8713) by @jackmcdade +- Fix hamburger icon wompyness. [#8700](https://github.com/statamic/cms/issues/8700) by @jackmcdade + + + +## 4.21.0 (2023-09-07) + +### What's new +- Add fullscreen and rulers to the code fieldtype. [#8509](https://github.com/statamic/cms/issues/8509) by @petemolinero +- Add CollectionTree and NavTree contracts and bindings. [#8658](https://github.com/statamic/cms/issues/8658) by @ryanmitchell +- Add config setting so CSV submission export headers can use field `display` instead of `handle`. [#8660](https://github.com/statamic/cms/issues/8660) by @ryanmitchell +- Register/export set and field related components. [#8577](https://github.com/statamic/cms/issues/8577) by @jacksleight +- Add autocomplete attribute to text fieldtype. [#8623](https://github.com/statamic/cms/issues/8623) by @jeroenimpres +- Add error redirect on user password reset form. [#7935](https://github.com/statamic/cms/issues/7935) by @ryanmitchell + +### What's improved +- French translations. [#8653](https://github.com/statamic/cms/issues/8653) by @ebeauchamps + +### What's fixed +- Fix list fieldtype focus infinite loop. [#8674](https://github.com/statamic/cms/issues/8674) by @ryanmitchell +- Fix nested Bard addEventListener error. [#8676](https://github.com/statamic/cms/issues/8676) by @jacksleight +- Set end range date to end of day in the date fieldtype. [#8648](https://github.com/statamic/cms/issues/8648) by @jonassiewertsen +- Ensure Live Preview is always excluded from static caching. [#7183](https://github.com/statamic/cms/issues/7183) by @FrittenKeeZ +- Use Laravel url helper instead to get the site url. [#8659](https://github.com/statamic/cms/issues/8659) by @jonassiewertsen +- Prevent form section instructions cascading into field instructions. [#8651](https://github.com/statamic/cms/issues/8651) by @jesseleite +- Reticulate fewer splines. [#8655](https://github.com/statamic/cms/issues/8655) by @robdekort + + + +## 4.20.0 (2023-08-30) + +### What's new +- Add duration field to GraphQL AssetInterface. [#8638](https://github.com/statamic/cms/issues/8638) by @notnek + +### What's improved +- German translations. [#8649](https://github.com/statamic/cms/issues/8649) by @helloDanuk +- Dutch translations. [#8629](https://github.com/statamic/cms/issues/8629) by @jeroenpeters1986 +- Navs fieltype icon. [#8621](https://github.com/statamic/cms/issues/8621) by @jackmcdade + +### What's fixed +- Fix changing image format on upload when using source preset. [#8645](https://github.com/statamic/cms/issues/8645) by @jesseleite +- Fix asset & term reference updaters when using new set groups blueprint config. [#8630](https://github.com/statamic/cms/issues/8630) by @jesseleite +- Fix data loss when reordering sets with revealer fields. [#8620](https://github.com/statamic/cms/issues/8620) by @jacksleight +- Pint updates. [#8650](https://github.com/statamic/cms/issues/8650) by @jasonvarga + + + +## 4.19.0 (2023-08-23) + +### What's new +- Navs fieldtype. [#8619](https://github.com/statamic/cms/issues/8619) by @jasonvarga +- Support line breaks in Bard inline mode. [#8598](https://github.com/statamic/cms/issues/8598) by @jacksleight +- Add a way to determine which entry saved event was the initiator. [#8605](https://github.com/statamic/cms/issues/8605) by @jasonvarga + +### What's improved +- You now redirect to the CP login screen when logging out. [#8602](https://github.com/statamic/cms/issues/8602) by @jasonvarga +- French translations. [#8612](https://github.com/statamic/cms/issues/8612) by @ebeauchamps +- Swedish translations. [#8600](https://github.com/statamic/cms/issues/8600) by @andreasbohman + +### What's fixed +- Fix v4 addons not appearing in listing. [#8611](https://github.com/statamic/cms/issues/8611) by @jasonvarga +- Fix Bard set picker positioning. [#8574](https://github.com/statamic/cms/issues/8574) by @o1y +- Fix dropdowns list positioning. [#8607](https://github.com/statamic/cms/issues/8607) by @flolanger +- Fix a hardcoded string. [#8601](https://github.com/statamic/cms/issues/8601) by @andreasbohman + + + +## 4.18.0 (2023-08-17) + +### What's new +- Expose `uniqid` JS function for generating unique IDs. [#8571](https://github.com/statamic/cms/issues/8571) by @jacksleight +- Allow renaming of row id handle in Grid, Bard, and Replicator. [#8407](https://github.com/statamic/cms/issues/8407) by @jonassiewertsen +- Support arbitrary attributes on the vite tag. [#8305](https://github.com/statamic/cms/issues/8305) by @jackmcdade + +### What's fixed +- Make uploader synchronous. [#8592](https://github.com/statamic/cms/issues/8592) by @jasonvarga +- Fix alignment of menu icon. [#8589](https://github.com/statamic/cms/issues/8589) by @caseydwyer +- Pint updates. [#8586](https://github.com/statamic/cms/issues/8586) by @jasonvarga +- Fix slugify error. [#8583](https://github.com/statamic/cms/issues/8583) by @jasonvarga +- Only save generated title if it's different. [#8101](https://github.com/statamic/cms/issues/8101) by @aerni +- Make the views field handle reserved. [#8576](https://github.com/statamic/cms/issues/8576) by @jasonvarga +- Fix special character handling in created CP nav sections. [#8568](https://github.com/statamic/cms/issues/8568) by @jesseleite + + + +## 4.17.0 (2023-08-10) + +### What's improved +- Improve performance of getting asset metadata when using the local filesystem. [#7887](https://github.com/statamic/cms/issues/7887) by @FrittenKeeZ + +### What's fixed +- Fix globals save event. [#8564](https://github.com/statamic/cms/issues/8564) by @jasonvarga +- REST API Globals return resolved relations via opt-in method. [#8555](https://github.com/statamic/cms/issues/8555) by @martink635 + + + +## 4.16.0 (2023-08-08) + +### What's new +- Split global set variables into its own repository and Stache store. [#8343](https://github.com/statamic/cms/issues/8343) by @ryanmitchell +- Add `is_svg` to augmented assets. [#8549](https://github.com/statamic/cms/issues/8549) by @ryanmitchell + +### What's fixed +- Fix a number of multisite issues regarding data fallbacks, search, queries, and more. [#8505](https://github.com/statamic/cms/issues/8505) by @jasonvarga +- Fix nested field ids and focus behavior of some fieldtypes. [#8531](https://github.com/statamic/cms/issues/8531) by @jackmcdade +- Fix Bard legacy content handling. [#8544](https://github.com/statamic/cms/issues/8544) by @jasonvarga +- Consolidate behavior of searching in users listing and users field type. [#8543](https://github.com/statamic/cms/issues/8543) by @ryanmitchell +- Make UpdatesBadge component only update the count when the response is a number. [#8540](https://github.com/statamic/cms/issues/8540) by @martyf +- Fix missing Control Panel favicons. [#8532](https://github.com/statamic/cms/issues/8532) by @martyf + + + +## 4.15.0 (2023-08-02) + +### What's new +- Allow entries fieldtypes to be filtered by `title`. [#8464](https://github.com/statamic/cms/issues/8464) by @ryanmitchell +- Add hooks for Globals Publish Form. [#7618](https://github.com/statamic/cms/issues/7618) by @duncanmcclean +- Add `query_scopes` and searching to the form fieldtype. [#8533](https://github.com/statamic/cms/issues/8533) by @ryanmitchell + +### What's fixed +- Fix variable name collisions when using the `as` tag param. [#8386](https://github.com/statamic/cms/issues/8386) by @JohnathonKoster +- Fix missing support for Collections and QueryBuilders in the `random` modifier. [#8398](https://github.com/statamic/cms/issues/8398) by @edalzell +- Fix entry listing hit target. [#8538](https://github.com/statamic/cms/issues/8538) by @jackmcdade +- Fix Bard image alt logic. [#8537](https://github.com/statamic/cms/issues/8537) by @jackmcdade +- Fix case sensitivity of operators in the query builder. [#8522](https://github.com/statamic/cms/issues/8522) by @ryanmitchell + + + +## 4.14.0 (2023-08-01) + +### What's improved +- Improved the Bard Inline Image Extension. [#8131](https://github.com/statamic/cms/issues/8131) by @o1y +- French translations. [#8496](https://github.com/statamic/cms/issues/8496) by @ebeauchamps + +### What's fixed +- Apostrophes no longer get slugified in JS. [#8524](https://github.com/statamic/cms/issues/8524) by @jackmcdade +- Allow relative URLs as preview targets. [#8490](https://github.com/statamic/cms/issues/8490) by @helloiamlukas +- Lower the Trial Banner Z-Index. [#8530](https://github.com/statamic/cms/issues/8530) by @jackmcdade +- Handle separate first & last name fields in User fieldtype. [#8507](https://github.com/statamic/cms/issues/8507) by @duncanmcclean +- Fix Relationship Index Field Item height. [#8529](https://github.com/statamic/cms/issues/8529) by @jackmcdade +- Conform Bard Set Headers to match Replicator. [#8528](https://github.com/statamic/cms/issues/8528) by @jackmcdade +- Fix form listing table corner clip. [#8527](https://github.com/statamic/cms/issues/8527) by @jackmcdade +- Fix Relationship Item long titles. [#8526](https://github.com/statamic/cms/issues/8526) by @jackmcdade +- Implement `ContainsQueryableValues` on users. [#8455](https://github.com/statamic/cms/issues/8455) by @ryanmitchell +- Ignore processing GIFs on file upload. [#8512](https://github.com/statamic/cms/issues/8512) by @duncanmcclean +- Fix link insert cancel in Markdown field. [#8525](https://github.com/statamic/cms/issues/8525) by @jackmcdade +- Fix the History Icon path. [#8517](https://github.com/statamic/cms/issues/8517) by @jackmcdade +- Reset page in asset browser when searching. [#8506](https://github.com/statamic/cms/issues/8506) by @duncanmcclean +- Fix incorrect doctype in `Submission` contract. [#8504](https://github.com/statamic/cms/issues/8504) by @duncanmcclean + + + +## 4.13.2 (2023-07-26) + +### What's fixed +- Fix create entry button. [#8493](https://github.com/statamic/cms/issues/8493) by @jasonvarga + + + +## 4.13.1 (2023-07-25) + +### What's fixed +- Fix ranged date validation. [#8447](https://github.com/statamic/cms/issues/8447) by @AndreasSchantl +- Use site in create entry button on collection tree view. [#8487](https://github.com/statamic/cms/issues/8487) by @jasonvarga + + + +## 4.13.0 (2023-07-24) + +### What's new +- Add word count option to Bard. [#8445](https://github.com/statamic/cms/issues/8445) by @markguleno +- Support querying entries in a specific site in GraphQL. [#8446](https://github.com/statamic/cms/issues/8446) by @fabiangigler +- Support for using recursion on arbitrary array data in Antlers. [#8421](https://github.com/statamic/cms/issues/8421) by @JohnathonKoster + +### What's fixed +- Fix a hardcoded live preview URL when editing taxonomy terms. [#8461](https://github.com/statamic/cms/issues/8461) by @ryanmitchell +- Hide heading when there are no unlisted addons. [#8479](https://github.com/statamic/cms/issues/8479) by @duncanmcclean +- Handle `nocache` tag error. [#8449](https://github.com/statamic/cms/issues/8449) by @jasonvarga +- Avoid showing Stache size label in the Cache utility when there is no size. [#8480](https://github.com/statamic/cms/issues/8480) by @duncanmcclean + + + +## 4.12.0 (2023-07-20) + +### What's new +- Add `query_scopes` option to the relationship fieldtypes. [#8456](http://github.com/statamic/cms/pull/8456) by @jacksleight + +### What's improved +- French translations. [#8451](http://github.com/statamic/cms/pull/8451) by @ebeauchamps + +### What's fixed +- Fix error handling for recent curl bug. [#8475](http://github.com/statamic/cms/pull/8475) by @jesseleite +- Bump word-wrap from 1.2.3 to 1.2.4. [#8466](http://github.com/statamic/cms/pull/8466) by @dependabot +- Only show code block copy button on https. [#8457](http://github.com/statamic/cms/pull/8457) by @jasonvarga + + + +## 4.11.0 (2023-07-13) + +### What's new +- Markdown upgrades. [#8417](https://github.com/statamic/cms/issues/8417) by @jackmcdade + +### What's fixed +- Swap SVG sanitizer packages for one with an appropriate license. [#8428](https://github.com/statamic/cms/issues/8428) by @jasonvarga +- Fix taxonomy term filtering inconsistencies between Tag and API. [#8389](https://github.com/statamic/cms/issues/8389) by @jesseleite +- Bump `semver` from 5.7.1 to 5.7.2 [#8434](https://github.com/statamic/cms/issues/8434) by @dependabot +- Pint formatting [#8444](https://github.com/statamic/cms/issues/8444) by @jasonvarga + + + +## 4.10.2 (2023-07-10) + +### What's improved +- Chinese translations. [#8418](https://github.com/statamic/cms/issues/8418) by @xuchunyang + +### What's fixed +- Fix pagination in entries stack selector. [#8426](https://github.com/statamic/cms/issues/8426) by @jasonvarga +- Bump tough-cookie from 4.1.2 to 4.1.3 [#8423](https://github.com/statamic/cms/issues/8423) by @dependabot + + + +## 4.10.1 (2023-07-06) + +### What's improved +- French translations. [#8409](https://github.com/statamic/cms/issues/8409) by @ebeauchamps + +### What's fixed +- Fix blueprint events being dispatched repeatedly, especially when using Laravel Telescope. [#8048](https://github.com/statamic/cms/issues/8048) by @morhi +- Fix mapping of search results in entries fieldtype. [#8414](https://github.com/statamic/cms/issues/8414) by @jasonvarga +- Fix Live Preview viewport not being reset when switching back to "Responsive". [#8402](https://github.com/statamic/cms/issues/8402) by @wiebkevogel + + + +## 4.10.0 (2023-07-05) + +### What's new +- Added `sanitize` param to the `svg` tag. [#8408](https://github.com/statamic/cms/issues/8408) by @jasonvarga + +### What's improved +- French translations. [#8388](https://github.com/statamic/cms/issues/8388) by @ebeauchamps + +### What's fixed +- Bring back the password reset link for non-OAuth sites. [#8396](https://github.com/statamic/cms/issues/8396) by @jackmcdade +- Add some missing translation calls. [#8387](https://github.com/statamic/cms/issues/8387) by @ebeauchamps + + + +## 4.9.2 (2023-06-30) + +### What's fixed +- Fix search index not being used in the entries fieldtype. [#8253](https://github.com/statamic/cms/issues/8253) by @ryanmitchell +- Fix Antlers Profiler memory issue. [#8384](https://github.com/statamic/cms/issues/8384) by @JohnathonKoster +- Fix `search:results` duplicated code, and pagination parameter types. [#8314](https://github.com/statamic/cms/issues/8314) by @ryanmitchell +- Fix missing `lowercase` validation message. [#8383](https://github.com/statamic/cms/issues/8383) by @marcorieser +- Fix `user:profile_form` not catching certain validation rules. [#8264](https://github.com/statamic/cms/issues/8264) by @ryanmitchell +- Fix Antlers Profilder depth and disabled layout logic. [#8368](https://github.com/statamic/cms/issues/8368) by @JohnathonKoster +- Fix bottom margin on a section fieldtype when no instructions are present. [#8371](https://github.com/statamic/cms/issues/8371) by @martyf +- Fix `toggle` fields collapsing too far and not wrapping instructions in sidebars. [#8366](https://github.com/statamic/cms/issues/8366) by @jackmcdade +- Fix Grid field instructions tooltip not rendering as HTML properly. [#8367](https://github.com/statamic/cms/issues/8367) by @jackmcdade +- Switch StyleCI with Pint. Apply Pint code style fixes. [#8310](https://github.com/statamic/cms/issues/8310) by @jasonvarga +- Remove some Laravel 8 specific code. [#8385](https://github.com/statamic/cms/issues/8385) by @jesseleite + + + +## 4.9.1 (2023-06-27) + +### What's fixed +- Fix visibility of Cache FileStore path method. [#8365](https://github.com/statamic/cms/issues/8365) by @jasonvarga +- Adjust how Antlers Profiler handles larger amounts of data to prevent JS errors. [#8358](https://github.com/statamic/cms/issues/8358) by @JohnathonKoster + + + +## 4.9.0 (2023-06-26) + +### What's new +- Add setting to disable Antlers profiler. [#8356](https://github.com/statamic/cms/issues/8356) by @jasonvarga +- Add Spacer fieldtype. [#8326](https://github.com/statamic/cms/issues/8326) by @aerni +- Add `is_external_url` modifer. [#8351](https://github.com/statamic/cms/issues/8351) by @martyf +- Entry data values can be queried directly for efficiency. [#7371](https://github.com/statamic/cms/issues/7371) by @ryanmitchell + +### What's improved +- Use Blink Cache for flattened pages in Collection Structure. [#7476](https://github.com/statamic/cms/issues/7476) by @o1y +- French translations. [#8348](https://github.com/statamic/cms/issues/8348) by @ebeauchamps + +### What's fixed +- Fix links within Bard fields not being localized. [#8319](https://github.com/statamic/cms/issues/8319) by @modrictin +- Fix checkboard background on asset tiles. [#8355](https://github.com/statamic/cms/issues/8355) by @jackmcdade +- Fix relationship fieldtype encoding issue. [#8349](https://github.com/statamic/cms/issues/8349) by @zsoltjanes + + + +## 4.8.0 (2023-06-23) + +### What's new +- Antlers performance profiler tab for Debugbar. [#8323](https://github.com/statamic/cms/issues/8323) by @JohnathonKoster +- User Groups may have a blueprint to allow for custom fields. [#6506](https://github.com/statamic/cms/issues/6506) by @ryanmitchell +- Arrays can be passed to the `user_groups` tag. [#8336](https://github.com/statamic/cms/issues/8336) by @ryanmitchell +- Added `cpDownloadUrl` method to the `Asset` class. [#8334](https://github.com/statamic/cms/issues/8334) by @jonassiewertsen + +### What's fixed +- Fix missing GraphQL types for more complex fields (e.g. Grid) in user blueprints. [#8335](https://github.com/statamic/cms/issues/8335) by @jesseleite + + + ## 4.7.0 (2023-06-20) ### What's new diff --git a/composer.json b/composer.json index 17ca9f01be..1bbf69cc6b 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ "require": { "ext-json": "*", "ajthinking/archetype": "^1.0.3", - "composer/composer": "^1.10.22 || ^2.2.12", + "composer/composer": "^1.10.22 || ^2.2.22", "facade/ignition-contracts": "^1.0", "guzzlehttp/guzzle": "^6.3 || ^7.0", "james-heinrich/getid3": "^1.9.21", @@ -25,7 +25,8 @@ "nesbot/carbon": "^2.62.1", "pixelfear/composer-dist-plugin": "^0.1.4", "rebing/graphql-laravel": "^6.5 || ^8.0", - "spatie/blink": "^1.1.2", + "rhukster/dom-sanitizer": "^1.0.6", + "spatie/blink": "^1.3", "statamic/stringy": "^3.1.2", "symfony/http-foundation": "^4.3.3 || ^5.1.4 || ^6.0", "symfony/lock": "^5.4", @@ -38,6 +39,7 @@ "require-dev": { "fakerphp/faker": "~1.10", "google/cloud-translate": "^1.6", + "laravel/pint": "^1.0", "mockery/mockery": "^1.3.3", "orchestra/testbench": "^7.0 || ^8.0", "phpunit/phpunit": "^9.0" diff --git a/config/assets.php b/config/assets.php index aaf28a4707..b4df361ce0 100644 --- a/config/assets.php +++ b/config/assets.php @@ -198,4 +198,16 @@ 'lowercase' => true, + /* + |-------------------------------------------------------------------------- + | Additional Uploadable Extensions + |-------------------------------------------------------------------------- + | + | Statamic will only allow uploads of certain approved file extensions. + | If you need to allow more file extensions, you may add them here. + | + */ + + 'additional_uploadable_extensions' => [], + ]; diff --git a/config/cp.php b/config/cp.php index 188b7d9f5d..e42305063a 100644 --- a/config/cp.php +++ b/config/cp.php @@ -126,4 +126,16 @@ 'custom_css_url' => env('STATAMIC_CUSTOM_CSS_URL', null), + /* + |-------------------------------------------------------------------------- + | Thumbnails + |-------------------------------------------------------------------------- + | + | Here you may define additional CP asset thumbnail presets. + | + */ + + 'thumbnail_presets' => [ + // 'medium' => 800, + ], ]; diff --git a/config/forms.php b/config/forms.php index fcc55039a3..f2e1f23f6f 100644 --- a/config/forms.php +++ b/config/forms.php @@ -48,13 +48,21 @@ /* |-------------------------------------------------------------------------- - | CSV Export Delimiter + | Exporters |-------------------------------------------------------------------------- | - | Statamic will use this character as delimiter for csv exports. + | Here you may define all the available form submission exporters. + | You may customize the options within each exporter's array. | */ - 'csv_delimiter' => ',', + 'exporters' => [ + 'csv' => [ + 'class' => Statamic\Forms\Exporters\CsvExporter::class, + ], + 'json' => [ + 'class' => Statamic\Forms\Exporters\JsonExporter::class, + ], + ], ]; diff --git a/config/markdown.php b/config/markdown.php new file mode 100644 index 0000000000..8a4112948d --- /dev/null +++ b/config/markdown.php @@ -0,0 +1,28 @@ + [ + + 'default' => [ + // 'heading_permalink' => [ + // 'symbol' => '#', + // ], + ], + + ], + +]; diff --git a/config/routes.php b/config/routes.php index aa40a8b16b..95a6427684 100644 --- a/config/routes.php +++ b/config/routes.php @@ -16,6 +16,19 @@ 'enabled' => true, + /* + |-------------------------------------------------------------------------- + | Enable Route Bindings + |-------------------------------------------------------------------------- + | + | Whether route bindings for Statamic repositories (entry, taxonomy, + | collections, etc) are enabled for front end routes. This may be + | useful if you want to make your own custom routes with them. + | + */ + + 'bindings' => false, + /* |-------------------------------------------------------------------------- | Action Route Prefix diff --git a/config/stache.php b/config/stache.php index d590cdacef..71044d5ab3 100644 --- a/config/stache.php +++ b/config/stache.php @@ -70,6 +70,11 @@ 'directory' => base_path('content/globals'), ], + 'global-variables' => [ + 'class' => Stores\GlobalVariablesStore::class, + 'directory' => base_path('content/globals'), + ], + 'asset-containers' => [ 'class' => Stores\AssetContainersStore::class, 'directory' => base_path('content/assets'), diff --git a/config/system.php b/config/system.php index f9c2c43e59..293191c200 100644 --- a/config/system.php +++ b/config/system.php @@ -152,4 +152,17 @@ 'update_references' => true, + /* + |-------------------------------------------------------------------------- + | Row ID handle + |-------------------------------------------------------------------------- + | + | Rows in Grid, Replicator, and Bard fields will be given a unique ID using + | the "id" field. You may need your own field named "id", in which case + | you may customize the handle of the field that Statamic will use. + | + */ + + 'row_id_handle' => 'id', + ]; diff --git a/config/users.php b/config/users.php index f1b3c5b4f7..f51cf04a5d 100644 --- a/config/users.php +++ b/config/users.php @@ -75,6 +75,18 @@ // ], + /* + |-------------------------------------------------------------------------- + | Registration form honeypot field + |-------------------------------------------------------------------------- + | + | When registering new users through the user:register_form tag, + | specify the field to act as a honeypot for bots + | + */ + + 'registration_form_honeypot_field' => null, + /* |-------------------------------------------------------------------------- | User Wizard Invitation Email @@ -138,4 +150,17 @@ 'web' => 'web', ], + /* + |-------------------------------------------------------------------------- + | Impersonation + |-------------------------------------------------------------------------- + | + | Here you can configure if impersonation is available, and what URL to + | redirect to after impersonation begins + | + */ + 'impersonate' => [ + 'enabled' => env('STATAMIC_IMPERSONATE_ENABLED', true), + 'redirect' => env('STATAMIC_IMPERSONATE_REDIRECT', null), + ], ]; diff --git a/package-lock.json b/package-lock.json index 57aec2a7cc..2123d8a913 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,7 +92,7 @@ "jest": "^29.4.2", "jest-environment-jsdom": "^29.4.2", "laravel-vite-plugin": "^0.7.2", - "postcss": "^8.4.4", + "postcss": "^8.4.31", "tailwindcss": "^3.3.0", "vite": "^4.2.3" } @@ -111,12 +111,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" @@ -162,12 +163,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.21.3", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -290,9 +291,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -311,25 +312,25 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -459,30 +460,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -527,13 +528,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -541,9 +542,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1708,33 +1709,33 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1743,13 +1744,13 @@ } }, "node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -4500,9 +4501,9 @@ } }, "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -4841,9 +4842,9 @@ } }, "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } @@ -7112,9 +7113,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -8368,9 +8369,9 @@ "integrity": "sha512-7T0K+qyY8bnjnEpQTiLbGsUaGlFcemK9gLurVSr6x1/qzr2HkHDNCOz5i+xhuTD1CrXckf/AGeCnLzvmAHMOHw==" }, "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "funding": [ { "type": "opencollective", @@ -8379,10 +8380,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -9107,9 +9112,9 @@ } }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -9561,9 +9566,9 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "dependencies": { "psl": "^1.1.33", @@ -10049,9 +10054,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" diff --git a/package.json b/package.json index a8e6c19c32..d61904c982 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "jest": "^29.4.2", "jest-environment-jsdom": "^29.4.2", "laravel-vite-plugin": "^0.7.2", - "postcss": "^8.4.4", + "postcss": "^8.4.31", "tailwindcss": "^3.3.0", "vite": "^4.2.3" } diff --git a/pint.json b/pint.json index 7f10dcb568..ab7c113389 100644 --- a/pint.json +++ b/pint.json @@ -1,20 +1,13 @@ { "preset": "laravel", "rules": { - "binary_operator_spaces": { - "default": "single_space", - "operators": { - "=>": null - } - }, "class_attributes_separation": { "elements": { "method": "one" } }, - "class_definition": { - "multi_line_extends_each_single_line": true, - "single_item_single_line": true + "nullable_type_declaration_for_default_null_value": { + "use_nullable_type_declaration": false }, "psr_autoloading": true } diff --git a/resources/css/components/assets.css b/resources/css/components/assets.css index cde23bf892..ff60b973a0 100644 --- a/resources/css/components/assets.css +++ b/resources/css/components/assets.css @@ -96,7 +96,7 @@ @apply bg-white relative min-w-0 flex items-center flex-col justify-between cursor-pointer border rounded; .asset-thumb { - @apply flex justify-center items-center; + @apply flex justify-center items-center w-full h-full rounded; > img, > svg, > .svg-img { @apply max-h-full max-w-full absolute; } diff --git a/resources/css/components/configure.css b/resources/css/components/configure.css index 9cdbb920d3..420decaf6b 100644 --- a/resources/css/components/configure.css +++ b/resources/css/components/configure.css @@ -9,7 +9,7 @@ /* Push toggle off to the right */ > .publish-fields > .toggle-fieldtype { - @apply flex justify-between items-center; + @apply flex justify-between items-center flex-wrap; .help-block, .help-block p { @apply mb-0; } .field-inner { @apply pr-8; } } diff --git a/resources/css/components/fieldtypes/bard.css b/resources/css/components/fieldtypes/bard.css index ea7f4ce87b..b3886b5d60 100644 --- a/resources/css/components/fieldtypes/bard.css +++ b/resources/css/components/fieldtypes/bard.css @@ -17,7 +17,7 @@ } } -.bard-editor .bard-invalid { +.bard-editor .bard-error { @apply p-2 @lg:px-4 bg-red-100 text-red-500 text-xs whitespace-nowrap; } @@ -159,7 +159,7 @@ } .bard-add-set-button { - @apply flex items-center justify-center absolute -left-6 top-[-6px] @xl/bard:-left-8 z-1; + @apply flex items-center justify-center absolute -left-4 top-[-6px] z-1; } .bard-footer-toolbar { @@ -465,7 +465,7 @@ } p > code { - @apply font-mono bg-gray-400 rounded-sm text-xs relative; + @apply font-mono bg-gray-400 rounded-sm text-xs; padding: 2px 4px; top: -1px; } diff --git a/resources/css/components/fieldtypes/code.css b/resources/css/components/fieldtypes/code.css index d6ee9acd8d..b1c71f7816 100644 --- a/resources/css/components/fieldtypes/code.css +++ b/resources/css/components/fieldtypes/code.css @@ -1,26 +1,17 @@ -.code-fieldtype-container { - @apply relative; +.code-fieldtype-toolbar { + @apply bg-white shadow-none rounded-t border border-b-0 text-sm flex flex-wrap items-center justify-end gap-2; + padding: 4px 8px; +} + +.code-fieldtype-toolbar select { + @apply h-8 text-sm leading-none; +} + - .code-mode-picker { - @apply z-10 right-0 uppercase absolute outline-none shadow-none; - right: 0; +.code-fieldtype-container.code-fullscreen { + @apply fixed bg-gray-200 inset-0 min-h-screen overflow-scroll rounded-none pt-12; - select { - @apply text-white w-auto text-2xs p-2 text-right; - opacity: .5; - background: none; - border: none; - &:focus { - @apply outline-none shadow-none text-blue-300; - } - } - select:hover:not(:disabled) { - @apply text-white opacity-100; - background: none; - border: none; - } - .select-input-toggle { - display: none; - } + .code-fieldtype-toolbar { + @apply fixed z-2 top-0 w-full px-6 py-2 h-12 shadow text-base rounded-none bg-gradient-to-b from-white to-gray-100; } } diff --git a/resources/css/components/fieldtypes/markdown.css b/resources/css/components/fieldtypes/markdown.css index d128eb14bd..3b8d019db1 100644 --- a/resources/css/components/fieldtypes/markdown.css +++ b/resources/css/components/fieldtypes/markdown.css @@ -93,6 +93,13 @@ background: linear-gradient(180deg, theme('colors.gray.900'), hsl(210, 20%, 13%)); } + .editor { + @apply bg-gray-800 text-gray-200; + .cm-header { + @apply text-white; + } + } + .helpers { @apply bg-gray-900 text-white border-t border-gray-950; } @@ -192,6 +199,14 @@ ul { @apply list-disc; } + + pre { + @apply rounded px-4 py-2; + color: #c7254e; + background-color: #f9f2f4; + + code { @apply p-0 } + } } .markdown-fieldtype-wrapper.markdown-fullscreen { diff --git a/resources/css/components/fieldtypes/section.css b/resources/css/components/fieldtypes/section.css index 66a0761563..5600d19185 100644 --- a/resources/css/components/fieldtypes/section.css +++ b/resources/css/components/fieldtypes/section.css @@ -4,16 +4,20 @@ .section-fieldtype { @apply border-t border-b bg-gray-200; - top: -1px; /* Avoid adjacent borders just in case they're stacked */ + @apply -mt-px; /* Avoid adjacent borders just in case they're stacked */ &.form-group { position: relative; &:first-child { - @apply rounded-t border-t-0; + @apply mt-0 rounded-t-md border-t-0; + } + + &:last-child { + @apply rounded-b-md; } .field-inner > label { - @apply uppercase text-sm font-bold mt-2; + @apply uppercase text-sm font-bold; } } @@ -26,8 +30,20 @@ .read-only-overlay { display: none; } + + label:last-child { + @apply mb-0 !important; /* Removes spacing under label when there are no instructions to display */ + } } .bard-fieldtype .section-fieldtype { - top: 0; + @apply mt-0; } + +.publish-section-header + .publish-fields .section-fieldtype { + &.form-group { + &:first-child { + @apply rounded-t-none; + } + } +} \ No newline at end of file diff --git a/resources/css/components/fieldtypes/spacer.css b/resources/css/components/fieldtypes/spacer.css new file mode 100644 index 0000000000..fb1cf0f03a --- /dev/null +++ b/resources/css/components/fieldtypes/spacer.css @@ -0,0 +1,7 @@ +/* ========================================================================== + SPACER FIELDTYPE + ========================================================================== */ + +.spacer-fieldtype { + @apply hidden @sm:block @sm:invisible; +} diff --git a/resources/css/components/global-header.css b/resources/css/components/global-header.css index af874e040c..604bc82678 100644 --- a/resources/css/components/global-header.css +++ b/resources/css/components/global-header.css @@ -108,10 +108,13 @@ .v-select { @apply h-full } .vs__dropdown-toggle { @apply border-none bg-none } .vs__actions { @apply hidden } - .vs__search { @apply hidden } + .vs__search { @apply p-0 } .vs__selected-options { @apply border-none shadow-none p-0 bg-none } .vs__selected { @apply flex } - .vs__dropdown-toggle { @apply h-full rounded-none bg-transparent } + .vs__dropdown-toggle { + @apply h-full rounded-none bg-transparent; + box-shadow: none; + } .vs--single.vs--unsearchable .vs__selected-options { @apply bg-none } } @@ -139,3 +142,27 @@ max-height: 32px; max-width: 280px; } + +@keyframes rotate { + 100% { + transform: rotate(1turn); + } +} + +.animate-radar { + @apply relative z-0; + + &::after { + @apply absolute bg-transparent bg-no-repeat; + content: ''; + z-index: 2; + left: -50%; + top: -50%; + width: 200%; + height: 200%; + background-size: 50% 50%, 50% 50%; + background-position: 0 0, 100% 0, 100% 100%, 0 100%; + background-image: linear-gradient(transparent, rgba(255,255,255,.7), transparent); + animation: rotate 4s linear infinite; + } +} diff --git a/resources/css/components/items.css b/resources/css/components/items.css index 48eddf7c02..2bbc020678 100644 --- a/resources/css/components/items.css +++ b/resources/css/components/items.css @@ -1,5 +1,5 @@ .item { - @apply text-sm outline-none flex rounded border bg-white shadow-sm items-center; + @apply text-sm outline-none flex w-full justify-between rounded border bg-white shadow-sm items-center; .item-move { @apply w-4 border-r rounded-l p-2; diff --git a/resources/css/components/nav-main.css b/resources/css/components/nav-main.css index bd14227f0c..b9a30d3ed0 100644 --- a/resources/css/components/nav-main.css +++ b/resources/css/components/nav-main.css @@ -76,7 +76,7 @@ } .nav-toggle { - @apply block h-6 p-1 w-6 mr-3 rounded; + @apply flex items-center justify-center h-6 p-1 w-6 mr-3 rounded; outline: none !important; &:hover { diff --git a/resources/css/components/publish.css b/resources/css/components/publish.css index 8239a0fb2e..06a1a83f4e 100644 --- a/resources/css/components/publish.css +++ b/resources/css/components/publish.css @@ -89,7 +89,8 @@ code.parent-url { } .publish-section-header-inner { - @apply px-3 @sm:px-4 @lg:px-6 pt-4 pb-3; + @apply px-4 @lg:px-6 pt-4 pb-3; + } .publish-sidebar { @@ -97,10 +98,6 @@ code.parent-url { margin-left: 20px; width: 300px; - .publish-tab-actions { - @apply border-b; - } - .publish-fields .form-group { @apply p-4; } diff --git a/resources/css/components/toggle.css b/resources/css/components/toggle.css index b227cf6f6c..cfa101240a 100644 --- a/resources/css/components/toggle.css +++ b/resources/css/components/toggle.css @@ -27,7 +27,7 @@ } .toggle-container { - @apply bg-white cursor-pointer relative border; + @apply bg-white cursor-pointer relative border shrink-0; height: 22px; width: 46px; border-radius: 20px; @@ -115,7 +115,7 @@ /* Inside the Sidebar ========================================================================== */ .publish-sidebar .toggle-fieldtype { - @apply flex items-center justify-between; + @apply flex items-center justify-between flex-wrap; .field-inner > label { margin: 0; } .toggle-fieldtype-wrapper { margin-left: 8px; } .help-block { margin-top: 4px !important; } @@ -125,6 +125,5 @@ ========================================================================== */ .grid-table td.toggle-fieldtype { - width: 1%; padding-top: 14px; } diff --git a/resources/css/cp.css b/resources/css/cp.css index aec78cae63..3f04ebb898 100644 --- a/resources/css/cp.css +++ b/resources/css/cp.css @@ -66,6 +66,7 @@ @import "components/fieldtypes/relationship"; @import "components/fieldtypes/replicator"; @import "components/fieldtypes/section"; +@import "components/fieldtypes/spacer"; @import "components/fieldtypes/table"; @import "components/fieldtypes/tags"; @import "components/fieldtypes/textarea"; diff --git a/resources/css/vendors/codemirror.css b/resources/css/vendors/codemirror.css index b5390d1ecf..e5fd8737da 100644 --- a/resources/css/vendors/codemirror.css +++ b/resources/css/vendors/codemirror.css @@ -8,10 +8,6 @@ min-height: 80px; } - .code-mode { - @apply select-none z-10 opacity-25 absolute right-0 p-2 text-white text-2xs uppercase; - } - /* PADDING */ .CodeMirror-lines { @@ -21,7 +17,7 @@ padding: 0 16px; /* Horizontal padding of content */ } .CodeMirror-wrap { - @apply py-2 rounded; + @apply rounded-b; } .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { @@ -345,14 +341,25 @@ span.CodeMirror-selectedtext { background: none; } + .CodeMirror-fullscreen { + @apply fixed h-auto inset-0 top-12 rounded-none; + } + + .CodeMirror-rulers { + @apply absolute left-0 right-0 overflow-hidden; + top: -50px; + bottom: -20px; + } + + .CodeMirror-ruler { + @apply top-0 bottom-0; + } + + /* Light Theme ========================================================================== */ .code-fieldtype .theme-light { - .code-mode { - @apply text-gray-900; - } - .CodeMirror { @apply border p-0 } diff --git a/resources/js/app.js b/resources/js/app.js index 688b97ebde..cb0b340799 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -6,6 +6,8 @@ import * as Globals from './bootstrap/globals' import { default as underscore } from 'underscore' import Cookies from 'cookies-js'; +import.meta.glob(['../img/**']); + let global_functions = Object.keys(Globals) global_functions.forEach(fnName => { window[fnName] = Globals[fnName] }) diff --git a/resources/js/bootstrap/fieldtypes.js b/resources/js/bootstrap/fieldtypes.js index d72e9eb25a..d65917d3ef 100644 --- a/resources/js/bootstrap/fieldtypes.js +++ b/resources/js/bootstrap/fieldtypes.js @@ -30,13 +30,15 @@ import FloatFieldtype from '../components/fieldtypes/FloatFieldtype.vue'; import Sites from '../components/globals/Sites.vue'; import Grid from '../components/fieldtypes/grid/Grid.vue'; import GridIndex from '../components/fieldtypes/grid/GridIndex.vue'; +import GroupFieldtype from '../components/fieldtypes/GroupFieldtype.vue'; import HiddenFieldtype from '../components/fieldtypes/HiddenFieldtype.vue'; import HtmlFieldtype from '../components/fieldtypes/HtmlFieldtype.vue'; import IconFieldtype from '../components/fieldtypes/IconFieldtype.vue'; import IntegerFieldtype from '../components/fieldtypes/IntegerFieldtype.vue'; import LinkFieldtype from '../components/fieldtypes/LinkFieldtype.vue'; import ListFieldtype from '../components/fieldtypes/ListFieldtype.vue'; -import MarkdownFieldtype from '../components/fieldtypes/MarkdownFieldtype.vue'; +import MarkdownFieldtype from '../components/fieldtypes/markdown/MarkdownFieldtype.vue'; +import MarkdownButtonsSettingFieldtype from '../components/fieldtypes/markdown/MarkdownButtonsSettingFieldtype.vue'; import RadioFieldtype from '../components/fieldtypes/RadioFieldtype.vue'; import RangeFieldtype from '../components/fieldtypes/RangeFieldtype.vue'; import RelationshipFieldtype from '../components/fieldtypes/relationship/RelationshipFieldtype.vue'; @@ -56,6 +58,8 @@ import ToggleIndexFieldtype from '../components/fieldtypes/ToggleIndexFieldtype. import WidthFieldtype from '../components/fieldtypes/WidthFieldtype.vue'; import VideoFieldtype from '../components/fieldtypes/VideoFieldtype.vue'; import YamlFieldtype from '../components/fieldtypes/YamlFieldtype.vue'; +import SetPicker from '../components/fieldtypes/replicator/SetPicker.vue'; +import SetField from '../components/fieldtypes/replicator/Field.vue'; Vue.component('select-input', Select); Vue.component('text-input', Text); @@ -85,6 +89,7 @@ Vue.component('float-fieldtype', FloatFieldtype); Vue.component('global_set_sites-fieldtype', Sites); Vue.component('grid-fieldtype', Grid); Vue.component('grid-fieldtype-index', GridIndex); +Vue.component('group-fieldtype', GroupFieldtype); Vue.component('hidden-fieldtype', HiddenFieldtype); Vue.component('html-fieldtype', HtmlFieldtype); Vue.component('icon-fieldtype', IconFieldtype); @@ -92,6 +97,7 @@ Vue.component('integer-fieldtype', IntegerFieldtype); Vue.component('link-fieldtype', LinkFieldtype); Vue.component('list-fieldtype', ListFieldtype); Vue.component('markdown-fieldtype', MarkdownFieldtype); +Vue.component('markdown_buttons_setting-fieldtype', MarkdownButtonsSettingFieldtype); Vue.component('radio-fieldtype', RadioFieldtype); Vue.component('range-fieldtype', RangeFieldtype); Vue.component('relationship-fieldtype', RelationshipFieldtype); @@ -111,6 +117,8 @@ Vue.component('toggle-fieldtype-index', ToggleIndexFieldtype); Vue.component('width-fieldtype', WidthFieldtype); Vue.component('video-fieldtype', VideoFieldtype); Vue.component('yaml-fieldtype', YamlFieldtype); +Vue.component('set-picker', SetPicker); +Vue.component('set-field', SetField); Vue.component('revealer-fieldtype', RevealerFieldtype); diff --git a/resources/js/bootstrap/globals.js b/resources/js/bootstrap/globals.js index 18327a4d16..3285c41f21 100644 --- a/resources/js/bootstrap/globals.js +++ b/resources/js/bootstrap/globals.js @@ -1,5 +1,7 @@ import { marked } from 'marked'; import { translate, translateChoice } from '../translations/translator'; +import uid from 'uniqid'; +import PreviewHtml from '../components/fieldtypes/replicator/PreviewHtml'; export function cp_url(url) { url = Statamic.$config.get('cpUrl') + '/' + url; @@ -84,3 +86,25 @@ export function utf8btoa(stringToEncode) { // return base64 encoded string return btoa(utf8String); } + +export function uniqid() { + return uid(); +} + +export function truncate(string, length, ending='...') { + if (string.length <= length) return string; + + return string.substring(0, length - ending.length) + ending; +} + +export function escapeHtml(string) { + return string.replaceAll('&', '&') + .replaceAll('<', '<') + .replaceAll('>', '>') + .replaceAll('"', '"') + .replaceAll("'", '''); +} + +export function replicatorPreviewHtml(html) { + return new PreviewHtml(html); +} diff --git a/resources/js/bootstrap/mixins.js b/resources/js/bootstrap/mixins.js index ea0606a5f7..e44cb4bbf0 100644 --- a/resources/js/bootstrap/mixins.js +++ b/resources/js/bootstrap/mixins.js @@ -4,11 +4,13 @@ import Fieldtype from '../components/fieldtypes/Fieldtype.vue' import IndexFieldtype from '../components/fieldtypes/IndexFieldtype.vue' import BardToolbarButton from '../components/fieldtypes/bard/ToolbarButton.vue' import Listing from '../components/Listing.vue' +import * as FieldConditions from '../components/field-conditions/FieldConditions.js'; window.Fieldtype = Fieldtype; window.IndexFieldtype = IndexFieldtype; window.BardToolbarButton = BardToolbarButton; window.Listing = Listing; +window.FieldConditions = FieldConditions; Vue.mixin({ methods: { diff --git a/resources/js/components/CodeBlock.vue b/resources/js/components/CodeBlock.vue index 5ab1f869b5..15485eefed 100644 --- a/resources/js/components/CodeBlock.vue +++ b/resources/js/components/CodeBlock.vue @@ -2,7 +2,7 @@
-