Compare commits

..
15 Commits
Author SHA1 Message Date
github-actions[bot] 0ccee0e6ba Merge pull request #19 from wearepixel/dependabot/composer/php-minor-patch-8f7d0b9b5b
chore(deps-dev): bump phpstan/phpstan from 2.3.4 to 2.3.5 in the php-minor-patch group
2026-11-10 21:44:39 +00:00
dependabot[bot] cab17cdc72 chore(deps-dev): bump phpstan/phpstan
Bumps the php-minor-patch group with 1 update: [phpstan/phpstan](https://github.com/phpstan/phpstan-phar-composer-source).


Updates `phpstan/phpstan` from 2.3.4 to 2.3.5
- [Commits](https://github.com/phpstan/phpstan-phar-composer-source/commits)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-version: 2.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: php-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-10 21:43:56 +00:00
github-actions[bot] 8f99b148d6 Merge pull request #17 from wearepixel/dependabot/composer/php-minor-patch-3dfb8bd77a
chore(deps-dev): bump laravel/pint from 1.29.1 to 1.32.1 in the php-minor-patch group
2026-11-03 21:45:14 +00:00
github-actions[bot] 6bd569cca7 Merge pull request #18 from wearepixel/dependabot/composer/phpstan/phpstan-2.3.4
chore(deps-dev): bump phpstan/phpstan from 2.2.x-dev to 2.3.4
2026-11-03 21:45:07 +00:00
dependabot[bot] 63d310bf7e chore(deps-dev): bump phpstan/phpstan from 2.2.x-dev to 2.3.4
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan-phar-composer-source) from 2.2.x-dev to 2.3.4.
- [Commits](https://github.com/phpstan/phpstan-phar-composer-source/commits)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-version: 2.3.4
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-03 21:44:19 +00:00
dependabot[bot] c9163a7d78 chore(deps-dev): bump laravel/pint
Bumps the php-minor-patch group with 1 update: [laravel/pint](https://github.com/laravel/pint).


Updates `laravel/pint` from 1.29.1 to 1.32.1
- [Release notes](https://github.com/laravel/pint/releases)
- [Changelog](https://github.com/laravel/pint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/laravel/pint/compare/v1.29.1...v1.32.1)

---
updated-dependencies:
- dependency-name: laravel/pint
  dependency-version: 1.32.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: php-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-03 21:43:59 +00:00
Joel Male 45ef72894b fix: correct custom driver registration hint in cart:make:driver
The command told users to register their driver in config/cart.php
under "drivers", but CartManager has no such registration point for
custom drivers. The actual mechanism is Cart::extend() called from a
service provider's boot() method.
2026-08-04 12:06:58 +10:00
Joel Male c6ec19121c docs: link README to hosted docs and correct supported Laravel versions
Adds a Spatie-style inline link to the extensive documentation and
points the Documentation section at the versioned v3 introduction
page. Also corrects the supported Laravel range (11-13, not 10-13)
to match the illuminate/* constraints in composer.json.
2026-08-04 12:06:57 +10:00
Joel Male c8baf7f0a8 docs: point to the new hosted documentation site 2026-08-02 15:42:55 +10:00
pixel-workflows[bot] 0ea24eb419 chore: sync files from wearepixel/pixel-workflows - synced local 'pint.json' with remote 'files/pint.json' 2026-07-27 08:21:51 +00:00
pixel-workflows[bot] 917d530006 chore: sync files from wearepixel/pixel-workflows - created local '.gitattributes' from remote 'files/.gitattributes' 2026-07-27 08:21:48 +00:00
pixel-workflows[bot] d56ce61dec chore: sync files from wearepixel/pixel-workflows - created local '.editorconfig' from remote 'files/.editorconfig' 2026-07-27 08:21:45 +00:00
pixel-workflows[bot] 11d734e848 chore: sync files from wearepixel/pixel-workflows - created local '.github/workflows/dependabot-slack-alert.yml' from remote 'files/.github/workflows/dependabot-slack-alert.yml' 2026-07-27 08:21:42 +00:00
pixel-workflows[bot] 07d155159d chore: sync files from wearepixel/pixel-workflows - synced local '.github/workflows/dependabot-auto-merge.yml' with remote 'files/.github/workflows/dependabot-auto-merge.yml' 2026-07-27 08:21:39 +00:00
pixel-workflows[bot] 45362d3c62 chore: update dependabot configuration 2026-07-27 08:20:56 +00:00
9 changed files with 221 additions and 1139 deletions
+18
View File
@@ -0,0 +1,18 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
[docker-compose.yml]
indent_size = 4
+11
View File
@@ -0,0 +1,11 @@
* text=auto eol=lf
*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php
/.github export-ignore
CHANGELOG.md export-ignore
.styleci.yml export-ignore
+5
View File
@@ -8,6 +8,7 @@ updates:
open-pull-requests-limit: 10 open-pull-requests-limit: 10
groups: groups:
actions: actions:
applies-to: version-updates
patterns: ["*"] patterns: ["*"]
commit-message: commit-message:
prefix: "chore" prefix: "chore"
@@ -23,9 +24,13 @@ updates:
open-pull-requests-limit: 10 open-pull-requests-limit: 10
groups: groups:
php-minor-patch: php-minor-patch:
applies-to: version-updates
update-types: update-types:
- "minor" - "minor"
- "patch" - "patch"
php-security:
applies-to: security-updates
patterns: ["*"]
commit-message: commit-message:
prefix: "chore" prefix: "chore"
include: "scope" include: "scope"
+49 -22
View File
@@ -1,32 +1,59 @@
name: dependabot-auto-merge name: Dependabot Auto-merge
on: pull_request_target
on:
workflow_run:
workflows: ["Tests"]
types: [completed]
permissions: permissions:
pull-requests: write
contents: write contents: write
pull-requests: write
jobs: jobs:
dependabot: auto-merge:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ github.actor == 'dependabot[bot]' }} if: |
github.event.workflow_run.conclusion == 'success' &&
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.actor.login == 'dependabot[bot]'
steps: steps:
- name: Find PR and check update type
- name: Dependabot metadata id: check
id: metadata
uses: dependabot/fetch-metadata@25dd0e34f4fe68f24cc83900b1fe3fe149efef98 # v3.1.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Auto-merge Dependabot PRs for semver-minor updates
if: ${{steps.metadata.outputs.update-type == 'version-update:semver-minor'}}
run: gh pr merge --auto --merge "$PR_URL"
env: env:
PR_URL: ${{github.event.pull_request.html_url}} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
run: |
PR_DATA=$(gh pr list --repo "${{ github.repository }}" --head "$HEAD_BRANCH" --json number,title,url,author --jq '.[0]')
- name: Auto-merge Dependabot PRs for semver-patch updates PR_URL=$(echo "$PR_DATA" | jq -r '.url')
if: ${{steps.metadata.outputs.update-type == 'version-update:semver-patch'}} PR_AUTHOR=$(echo "$PR_DATA" | jq -r '.author.login')
run: gh pr merge --auto --merge "$PR_URL" PR_TITLE=$(echo "$PR_DATA" | jq -r '.title')
echo "pr_url=$PR_URL" >> $GITHUB_OUTPUT
if [ "$PR_AUTHOR" != "app/dependabot" ]; then
echo "is_safe=false" >> $GITHUB_OUTPUT
echo "Not a Dependabot PR, skipping."
exit 0
fi
# Parse major version numbers from title: "bump X from A[.B.C] to D[.E.F]"
# Works for both "from 4.0.0 to 4.1.0" and "from 4 to 6" (GitHub Actions)
FROM_MAJOR=$(echo "$PR_TITLE" | grep -oP 'from \K[0-9]+')
TO_MAJOR=$(echo "$PR_TITLE" | grep -oP 'to \K[0-9]+')
echo "PR: $PR_TITLE (major: $FROM_MAJOR -> $TO_MAJOR)"
if [ "$FROM_MAJOR" = "$TO_MAJOR" ]; then
echo "is_safe=true" >> $GITHUB_OUTPUT
else
echo "is_safe=false" >> $GITHUB_OUTPUT
echo "Major version bump, skipping auto-merge."
fi
- name: Merge minor and patch updates
if: steps.check.outputs.is_safe == 'true'
run: gh pr merge --merge "${{ steps.check.outputs.pr_url }}"
env: env:
PR_URL: ${{github.event.pull_request.html_url}} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
@@ -0,0 +1,98 @@
name: Dependabot Slack Alert
on:
pull_request_target:
types: [opened]
jobs:
notify:
name: Notify Slack of major update
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- name: Check if major version bump
id: check
env:
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
from_major=$(echo "$PR_TITLE" | grep -oP 'from \K[0-9]+' | head -1)
to_major=$(echo "$PR_TITLE" | grep -oP 'to \K[0-9]+' | head -1)
if [ -n "$from_major" ] && [ -n "$to_major" ] && [ "$from_major" != "$to_major" ]; then
echo "is_major=true" >> $GITHUB_OUTPUT
echo "Major bump detected: $from_major -> $to_major"
else
echo "is_major=false" >> $GITHUB_OUTPUT
echo "Minor/patch bump, skipping"
fi
- name: Send Slack alert
if: steps.check.outputs.is_major == 'true'
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
PR_TITLE: ${{ github.event.pull_request.title }}
PR_URL: ${{ github.event.pull_request.html_url }}
PR_NUMBER: ${{ github.event.pull_request.number }}
REPO: ${{ github.repository }}
run: |
if [ -z "$SLACK_WEBHOOK_URL" ]; then
echo "SLACK_WEBHOOK_URL not configured for this repo, skipping"
exit 0
fi
payload=$(jq -n \
--arg repo "$REPO" \
--arg title "$PR_TITLE" \
--arg url "$PR_URL" \
--arg pr "#$PR_NUMBER" \
'{
blocks: [
{
type: "section",
text: {
type: "mrkdwn",
text: ":dependabot: *Major dependency update requires review*"
}
},
{
type: "section",
fields: [
{type: "mrkdwn", text: ("*Repository*\n`" + $repo + "`")},
{type: "mrkdwn", text: ("*Pull Request*\n<" + $url + "|" + $pr + ">") }
]
},
{
type: "section",
text: {
type: "mrkdwn",
text: $title
}
},
{
type: "context",
elements: [
{
type: "mrkdwn",
text: "Major version bumps are not auto-merged as they may contain breaking changes."
}
]
},
{
type: "actions",
elements: [
{
type: "button",
text: {type: "plain_text", text: "Review PR"},
url: $url,
style: "primary"
}
]
}
]
}')
curl -s -o /dev/null -w "%{http_code}" -X POST "$SLACK_WEBHOOK_URL" \
-H "Content-type: application/json" \
--data "$payload" | grep -q "^200$" \
&& echo "Slack notification sent" \
|| echo "Slack notification failed"
+8 -1086
View File
File diff suppressed because it is too large Load Diff
Generated
+21 -21
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "56b40d3f17cc40f1b62c3f71a3601af7", "content-hash": "adce585bac784ac7803d7be6f7172a3f",
"packages": [ "packages": [
{ {
"name": "brick/math", "name": "brick/math",
@@ -5415,16 +5415,16 @@
}, },
{ {
"name": "laravel/pint", "name": "laravel/pint",
"version": "v1.29.1", "version": "v1.32.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/pint.git", "url": "https://github.com/laravel/pint.git",
"reference": "0770e9b7fafd50d4586881d456d6eb41c9247a80" "reference": "006bd7825eb01daf92959d060b89cd9514fe4253"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/0770e9b7fafd50d4586881d456d6eb41c9247a80", "url": "https://api.github.com/repos/laravel/pint/zipball/006bd7825eb01daf92959d060b89cd9514fe4253",
"reference": "0770e9b7fafd50d4586881d456d6eb41c9247a80", "reference": "006bd7825eb01daf92959d060b89cd9514fe4253",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -5432,17 +5432,19 @@
"ext-mbstring": "*", "ext-mbstring": "*",
"ext-tokenizer": "*", "ext-tokenizer": "*",
"ext-xml": "*", "ext-xml": "*",
"php": "^8.2.0" "php": "^8.3.0"
}, },
"require-dev": { "require-dev": {
"friendsofphp/php-cs-fixer": "^3.95.1", "composer/semver": "^3.4.4",
"illuminate/view": "^12.56.0", "friendsofphp/php-cs-fixer": "^3.95.25",
"larastan/larastan": "^3.9.6", "illuminate/view": "^13.31.0",
"laravel-zero/framework": "^12.1.0", "larastan/larastan": "^3.11.0",
"mockery/mockery": "^1.6.12", "laravel-zero/framework": "^13.0.0",
"laravel/agent-detector": "^2.0.2",
"laravel/prompts": "^0.3.24",
"mockery/mockery": "^1.6.15",
"nunomaduro/termwind": "^2.4.0", "nunomaduro/termwind": "^2.4.0",
"pestphp/pest": "^3.8.6", "pestphp/pest": "^4.7.8"
"shipfastlabs/agent-detector": "^1.1.3"
}, },
"bin": [ "bin": [
"builds/pint" "builds/pint"
@@ -5479,7 +5481,7 @@
"issues": "https://github.com/laravel/pint/issues", "issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint" "source": "https://github.com/laravel/pint"
}, },
"time": "2026-04-20T15:26:14+00:00" "time": "2026-09-10T10:47:55+00:00"
}, },
{ {
"name": "mockery/mockery", "name": "mockery/mockery",
@@ -6520,11 +6522,11 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "2.2.x-dev", "version": "2.3.5",
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/5c0bbadd35255710f7d2402cd6213a0bc34cfa34", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/645a1bd6bead15fc1b8474137467961d0fa30a79",
"reference": "5c0bbadd35255710f7d2402cd6213a0bc34cfa34", "reference": "645a1bd6bead15fc1b8474137467961d0fa30a79",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -6533,7 +6535,6 @@
"conflict": { "conflict": {
"phpstan/phpstan-shim": "*" "phpstan/phpstan-shim": "*"
}, },
"default-branch": true,
"bin": [ "bin": [
"phpstan", "phpstan",
"phpstan.phar" "phpstan.phar"
@@ -6581,7 +6582,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2026-06-05T16:36:10+00:00" "time": "2026-11-03T12:14:22+00:00"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
@@ -8254,8 +8255,7 @@
"aliases": [], "aliases": [],
"minimum-stability": "dev", "minimum-stability": "dev",
"stability-flags": { "stability-flags": {
"larapack/dd": 20, "larapack/dd": 20
"phpstan/phpstan": 20
}, },
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
+10 -9
View File
@@ -1,12 +1,13 @@
{ {
"preset": "laravel", "preset": "laravel",
"rules": { "rules": {
"concat_space": { "concat_space": {
"spacing": "one" "spacing": "one"
}, },
"class_attributes_separation": false, "class_attributes_separation": false,
"ordered_imports": { "ordered_imports": {
"sort_algorithm": "length" "sort_algorithm": "length"
},
"not_operator_with_space": false
} }
}
} }
+1 -1
View File
@@ -42,7 +42,7 @@ public function handle(): int
} }
$this->info("Driver created: app/Cart/Drivers/{$name}.php"); $this->info("Driver created: app/Cart/Drivers/{$name}.php");
$this->line(" Register it in config/cart.php under <comment>drivers</comment>."); $this->line(" Register it with <comment>Cart::extend()</comment> in a service provider's boot() method, then set 'driver' to its name in config/cart.php.");
return self::SUCCESS; return self::SUCCESS;
} }