Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Make coding styles consistent with the Shopware platform #146

Merged
merged 1 commit into from
Nov 27, 2024

Conversation

ioanok
Copy link
Contributor

@ioanok ioanok commented Nov 27, 2024

Editor config should be consistent over shopware components and its recipes.
A similar MR was done on Shopware repository - shopware/shopware#5696

Copy link

Thanks for the PR 😍

How to test these changes in your application

  1. Add the Shopware flex endpoint in your composer.json to https://raw.githubusercontent.com/shopware/recipes/flex/pull-146/index.json.

    # When jq is installed
    jq '.extra.symfony.endpoint |= [ "https://raw.githubusercontent.com/shopware/recipes/flex/pull-146/index.json" ] + .' composer.json > composer.tmp && mv composer.tmp composer.json

    or manually

    "endpoint": [
        "https://raw.githubusercontent.com/shopware/recipes/flex/pull-146/index.json",
        "https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json",
        "flex://defaults"
    ]
  2. Install the package(s) related to this recipe:

    composer req 'doctrine/annotations:^1.0' 'enqueue/dbal:^0.10' 'enqueue/enqueue-bundle:^0.10' 'enqueue/redis:^0.10' 'frosh/code-quality-meta:^0.4' 'frosh/devenv-meta:^0.3' 'frosh/gitpod-meta:^6.4' 'nyholm/psr7:^1.0' 'pentatrion/vite-bundle:^6.5' 'shopware/administration:^6.7' 'shopware/core:^6.7' 'shopware/dev-tools:^1.0' 'shopware/docker:^0.2' 'shopware/elasticsearch:^6.7' 'shopware/fastly-meta:^6.6' 'shopware/k8s-meta:^1.0' 'shopware/opentelemetry:^0.1' 'shopware/paas-meta:^6.6' 'shopware/platform:^6.7' 'shopware/storefront:^6.7' 'sroze/messenger-enqueue-transport:^0.4' 'symfony/console:^5.4' 'symfony/debug-bundle:^5.3' 'symfony/framework-bundle:^6.4' 'symfony/mailer:^4.3' 'symfony/messenger:^6.0' 'symfony/monolog-bundle:^3.3' 'symfony/routing:^6.4' 'symfony/translation:^5.4' 'symfony/twig-bundle:^5.4' 'symfony/validator:^5.3'

Diff between recipe versions

In order to help with the review stage, I'm in charge of computing the diff between the various versions of patched recipes.
I'm going keep this comment up to date with any updates of the attached patch.

frosh/code-quality-meta

0.1 vs 0.2
diff --git a/frosh/code-quality-meta/0.1/root/rector.php b/frosh/code-quality-meta/0.2/root/rector.php
index 30bc217..28bd0a0 100644
--- a/frosh/code-quality-meta/0.1/root/rector.php
+++ b/frosh/code-quality-meta/0.2/root/rector.php
@@ -4,13 +4,12 @@ declare(strict_types=1);
 
 use Frosh\Rector\Set\ShopwareSetList;
 use Rector\CodeQuality\Rector\Class_\InlineConstructorDefaultToPropertyRector;
-use Rector\CodeQuality\Rector\Foreach_\SimplifyForeachToArrayFilterRector;
 use Rector\Config\RectorConfig;
 use Rector\Php74\Rector\LNumber\AddLiteralSeparatorToNumberRector;
 use Rector\PostRector\Rector\NameImportingPostRector;
 use Rector\Set\ValueObject\LevelSetList;
 use Rector\Set\ValueObject\SetList;
-use Rector\Symfony\Rector\Return_\SimpleFunctionAndFilterRector;
+use Rector\Symfony\Twig134\Rector\Return_\SimpleFunctionAndFilterRector;
 use Rector\Symfony\Set\SymfonySetList;
 
 return static function (RectorConfig $rectorConfig): void {
@@ -27,7 +26,6 @@ return static function (RectorConfig $rectorConfig): void {
 
     $rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class);
     $rectorConfig->rule(NameImportingPostRector::class);
-    $rectorConfig->rule(SimplifyForeachToArrayFilterRector::class);
     $rectorConfig->rule(SimpleFunctionAndFilterRector::class);
 
     $rectorConfig->sets([
@@ -37,10 +35,13 @@ return static function (RectorConfig $rectorConfig): void {
         SymfonySetList::SYMFONY_60,
         SymfonySetList::SYMFONY_61,
         SymfonySetList::SYMFONY_62,
+        SymfonySetList::SYMFONY_63,
         SymfonySetList::SYMFONY_CODE_QUALITY,
         SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
         LevelSetList::UP_TO_PHP_81,
+        LevelSetList::UP_TO_PHP_82,
         ShopwareSetList::SHOPWARE_6_5_0,
+        ShopwareSetList::SHOPWARE_6_6_0,
     ]);
 
     $rectorConfig->skip([
diff --git a/frosh/code-quality-meta/0.1/vendor-bin/rector/composer.json b/frosh/code-quality-meta/0.2/vendor-bin/rector/composer.json
index 801401b..7f86567 100644
--- a/frosh/code-quality-meta/0.1/vendor-bin/rector/composer.json
+++ b/frosh/code-quality-meta/0.2/vendor-bin/rector/composer.json
@@ -1,6 +1,6 @@
 {
     "require-dev": {
-        "rector/rector": "^0.15.24",
-        "frosh/shopware-rector": "^0.1.0"
+        "rector/rector": "^0.17.3",
+        "frosh/shopware-rector": "^0.2.2"
     }
 }
0.2 vs 0.3
diff --git a/frosh/code-quality-meta/0.2/post-install.txt b/frosh/code-quality-meta/0.3/post-install.txt
index d52763e..1eb5b98 100644
--- a/frosh/code-quality-meta/0.2/post-install.txt
+++ b/frosh/code-quality-meta/0.3/post-install.txt
@@ -9,7 +9,7 @@
             "ecs": "@php vendor-bin/cs-fixer/vendor/bin/ecs check custom/static-plugins custom/plugins",
             "ecs-fix": "@php vendor-bin/cs-fixer/vendor/bin/ecs check --fix custom/static-plugins custom/plugins",
             "phpstan": [
-              "@php vendor/frosh/code-quality-meta/phpstan-bootstrap.php",
+              "@php vendor/shopware/core/DevOps/StaticAnalyze/phpstan-bootstrap.php",
               "@php vendor-bin/phpstan/vendor/bin/phpstan analyze custom/static-plugins custom/plugins"
             ],
             "rector-dry": "@php vendor-bin/rector/vendor/bin/rector process --config=rector.php --dry-run",
diff --git a/frosh/code-quality-meta/0.2/root/ecs.php b/frosh/code-quality-meta/0.3/root/ecs.php
index 54debb1..ba940da 100644
--- a/frosh/code-quality-meta/0.2/root/ecs.php
+++ b/frosh/code-quality-meta/0.3/root/ecs.php
@@ -61,7 +61,7 @@ return static function (ECSConfig $ecsConfig): void {
     $ecsConfig->dynamicSets([
         '@Symfony',
         '@Symfony:risky',
-        '@PHP81Migration'
+        '@PHP82Migration'
     ]);
 
     $ecsConfig->sets([
diff --git a/frosh/code-quality-meta/0.2/root/phpstan.neon.dist b/frosh/code-quality-meta/0.3/root/phpstan.neon.dist
index 834e5ab..b9fef38 100644
--- a/frosh/code-quality-meta/0.2/root/phpstan.neon.dist
+++ b/frosh/code-quality-meta/0.3/root/phpstan.neon.dist
@@ -2,14 +2,16 @@ parameters:
     level: 8
     tmpDir: var/cache/phpstan_dev
     inferPrivatePropertyTypeFromConstructor: true
-    checkMissingIterableValueType: false
+    ignoreErrors:
+        -
+            identifier: missingType.iterableValue
 
     symfony:
         constantHassers: false
         containerXmlPath: 'var/cache/phpstan_dev/Shopware_Core_DevOps_StaticAnalyze_StaticAnalyzeKernelPhpstan_devDebugContainer.xml'
 
     bootstrapFiles:
-        - vendor/frosh/code-quality-meta/phpstan-bootstrap.php
+        - vendor/shopware/core/DevOps/StaticAnalyze/phpstan-bootstrap.php
 
     excludePaths:
         - **/vendor/*
diff --git a/frosh/code-quality-meta/0.2/root/rector.php b/frosh/code-quality-meta/0.3/root/rector.php
index 28bd0a0..4212cf4 100644
--- a/frosh/code-quality-meta/0.2/root/rector.php
+++ b/frosh/code-quality-meta/0.3/root/rector.php
@@ -6,29 +6,31 @@ use Frosh\Rector\Set\ShopwareSetList;
 use Rector\CodeQuality\Rector\Class_\InlineConstructorDefaultToPropertyRector;
 use Rector\Config\RectorConfig;
 use Rector\Php74\Rector\LNumber\AddLiteralSeparatorToNumberRector;
-use Rector\PostRector\Rector\NameImportingPostRector;
 use Rector\Set\ValueObject\LevelSetList;
 use Rector\Set\ValueObject\SetList;
-use Rector\Symfony\Twig134\Rector\Return_\SimpleFunctionAndFilterRector;
 use Rector\Symfony\Set\SymfonySetList;
+use Rector\Symfony\Twig134\Rector\Return_\SimpleFunctionAndFilterRector;
 
-return static function (RectorConfig $rectorConfig): void {
-    $rectorConfig->symfonyContainerXml(__DIR__ . '/var/cache/phpstan_dev/Shopware_Core_DevOps_StaticAnalyze_StaticAnalyzeKernelPhpstan_devDebugContainer.xml');
-
-    $rectorConfig->paths([
+return RectorConfig::configure()
+    ->withSymfonyContainerXml(__DIR__ . '/var/cache/phpstan_dev/Shopware_Core_DevOps_StaticAnalyze_StaticAnalyzeKernelPhpstan_devDebugContainer.xml')
+    ->withBootstrapFiles([
+        __DIR__ . '/vendor/autoload.php',
+    ])
+    ->withPaths([
         __DIR__ . '/custom/static-plugins/*/src',
         __DIR__ . '/custom/plugins/*/src',
-    ]);
-
-    $rectorConfig->bootstrapFiles([
-        __DIR__ . '/vendor/autoload.php',
-    ]);
-
-    $rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class);
-    $rectorConfig->rule(NameImportingPostRector::class);
-    $rectorConfig->rule(SimpleFunctionAndFilterRector::class);
-
-    $rectorConfig->sets([
+    ])
+    ->withSkip([
+        AddLiteralSeparatorToNumberRector::class => [
+            __DIR__ . '/custom/plugins/*/src/Migration',
+            __DIR__ . '/custom/static-plugins/*/src/Migration'
+        ]
+    ])
+    ->withRules([
+        InlineConstructorDefaultToPropertyRector::class,
+        SimpleFunctionAndFilterRector::class,
+    ])
+    ->withSets([
         SetList::CODE_QUALITY,
         SetList::DEAD_CODE,
         SymfonySetList::SYMFONY_54,
@@ -36,18 +38,12 @@ return static function (RectorConfig $rectorConfig): void {
         SymfonySetList::SYMFONY_61,
         SymfonySetList::SYMFONY_62,
         SymfonySetList::SYMFONY_63,
+        SymfonySetList::SYMFONY_64,
         SymfonySetList::SYMFONY_CODE_QUALITY,
         SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
         LevelSetList::UP_TO_PHP_81,
         LevelSetList::UP_TO_PHP_82,
+        LevelSetList::UP_TO_PHP_83,
         ShopwareSetList::SHOPWARE_6_5_0,
         ShopwareSetList::SHOPWARE_6_6_0,
     ]);
-
-    $rectorConfig->skip([
-        AddLiteralSeparatorToNumberRector::class => [
-            __DIR__ . '/custom/plugins/*/src/Migration',
-            __DIR__ . '/custom/static-plugins/*/src/Migration'
-        ]
-    ]);
-};
diff --git a/frosh/code-quality-meta/0.2/vendor-bin/cs-fixer/composer.json b/frosh/code-quality-meta/0.3/vendor-bin/cs-fixer/composer.json
index 40ba47f..05adf36 100644
--- a/frosh/code-quality-meta/0.2/vendor-bin/cs-fixer/composer.json
+++ b/frosh/code-quality-meta/0.3/vendor-bin/cs-fixer/composer.json
@@ -1,6 +1,6 @@
 {
     "require-dev": {
-        "symplify/easy-coding-standard": "^11.3",
-        "kubawerlos/php-cs-fixer-custom-fixers": "^3.14"
+        "symplify/easy-coding-standard": "^12.0",
+        "kubawerlos/php-cs-fixer-custom-fixers": "^3.16"
     }
 }
diff --git a/frosh/code-quality-meta/0.2/vendor-bin/rector/composer.json b/frosh/code-quality-meta/0.3/vendor-bin/rector/composer.json
index 7f86567..9b51615 100644
--- a/frosh/code-quality-meta/0.2/vendor-bin/rector/composer.json
+++ b/frosh/code-quality-meta/0.3/vendor-bin/rector/composer.json
@@ -1,6 +1,6 @@
 {
     "require-dev": {
-        "rector/rector": "^0.17.3",
-        "frosh/shopware-rector": "^0.2.2"
+        "rector/rector": "^1.0",
+        "frosh/shopware-rector": "^0.4.0"
     }
 }
0.3 vs 0.4
diff --git a/frosh/code-quality-meta/0.3/post-install.txt b/frosh/code-quality-meta/0.4/post-install.txt
index 1eb5b98..c8a5f83 100644
--- a/frosh/code-quality-meta/0.3/post-install.txt
+++ b/frosh/code-quality-meta/0.4/post-install.txt
@@ -6,8 +6,8 @@
     You can customize the plugin paths based on your project's needs.
     {
         "scripts": {
-            "ecs": "@php vendor-bin/cs-fixer/vendor/bin/ecs check custom/static-plugins custom/plugins",
-            "ecs-fix": "@php vendor-bin/cs-fixer/vendor/bin/ecs check --fix custom/static-plugins custom/plugins",
+            "csfixer": "@php vendor-bin/cs-fixer/vendor/bin/php-cs-fixer --allow-risky=yes fix --dry-run --diff",
+            "csfixer-fix": "@php vendor-bin/cs-fixer/vendor/bin/php-cs-fixer --allow-risky=yes fix --diff",
             "phpstan": [
               "@php vendor/shopware/core/DevOps/StaticAnalyze/phpstan-bootstrap.php",
               "@php vendor-bin/phpstan/vendor/bin/phpstan analyze custom/static-plugins custom/plugins"
@@ -15,9 +15,9 @@
             "rector-dry": "@php vendor-bin/rector/vendor/bin/rector process --config=rector.php --dry-run",
             "rector": "@php vendor-bin/rector/vendor/bin/rector process --config=rector.php",
             "commit": [
+                "@csfixer-fix",
                 "@phpstan",
                 "@rector",
-                "@ecs-fix",
                 "@php bin/console dal:validate"
             ]
         }
diff --git a/frosh/code-quality-meta/0.4/root/.php-cs-fixer.dist.php b/frosh/code-quality-meta/0.4/root/.php-cs-fixer.dist.php
new file mode 100644
index 0000000..ccf69f9
--- /dev/null
+++ b/frosh/code-quality-meta/0.4/root/.php-cs-fixer.dist.php
@@ -0,0 +1,63 @@
+<?php
+
+declare(strict_types=1);
+
+use PhpCsFixer\Config;
+use PhpCsFixer\Finder;
+use PhpCsFixer\Runner\Parallel\ParallelConfigFactory;
+
+return (new Config())
+    ->setParallelConfig(ParallelConfigFactory::detect())
+    ->setRiskyAllowed(true)
+    ->setRules([
+        '@Symfony' => true,
+        '@Symfony:risky' => true,
+
+        'blank_line_after_opening_tag' => false,
+        'class_attributes_separation' => ['elements' => ['property' => 'one', 'method' => 'one']],
+        'concat_space' => ['spacing' => 'one'],
+        'declare_strict_types' => true,
+        'fopen_flags' => false,
+        'general_phpdoc_annotation_remove' => ['annotations' => ['copyright', 'category']],
+        'linebreak_after_opening_tag' => false,
+        'method_argument_space' => ['on_multiline' => 'ensure_fully_multiline'],
+        'native_function_invocation' => [
+            'scope' => 'namespaced',
+            'strict' => false,
+            'exclude' => ['ini_get'],
+        ],
+        'no_superfluous_phpdoc_tags' => ['allow_unused_params' => true, 'allow_mixed' => true],
+        'no_useless_else' => true,
+        'no_useless_return' => true,
+        'ordered_class_elements' => true,
+        'phpdoc_align' => ['align' => 'left'],
+        'phpdoc_annotation_without_dot' => false,
+        'phpdoc_line_span' => true,
+        'phpdoc_order' => ['order' => ['param', 'throws', 'return']],
+        'phpdoc_summary' => false,
+        'phpdoc_to_comment' => false,
+        'php_unit_dedicate_assert' => ['target' => 'newest'],
+        'php_unit_dedicate_assert_internal_type' => true,
+        'php_unit_mock' => true,
+        'php_unit_test_case_static_method_calls' => ['call_type' => 'static'],
+        'self_accessor' => false,
+        'single_line_throw' => false,
+        'single_quote' => ['strings_containing_single_quote_chars' => true],
+        'strict_comparison' => true,
+        'strict_param' => true,
+        'trailing_comma_in_multiline' => ['after_heredoc' => true, 'elements' => ['array_destructuring', 'arrays', 'match']],
+        'void_return' => true,
+        'yoda_style' => [
+            'equal' => false,
+            'identical' => false,
+            'less_and_greater' => false,
+        ],
+    ])
+    ->setUsingCache(true)
+    ->setCacheFile('var/cache/cs_fixer')
+    ->setFinder(
+        (new Finder())
+            ->in([__DIR__.'/custom/static-plugins/*/src',])
+            ->in([__DIR__.'/custom/plugins/*/src',])
+            ->exclude(['node_modules', '*/vendor/*'])
+    );
diff --git a/frosh/code-quality-meta/0.3/root/ecs.php b/frosh/code-quality-meta/0.3/root/ecs.php
deleted file mode 100644
index ba940da..0000000
--- a/frosh/code-quality-meta/0.3/root/ecs.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-use PhpCsFixer\Fixer\CastNotation\ModernizeTypesCastingFixer;
-use PhpCsFixer\Fixer\ClassNotation\ClassAttributesSeparationFixer;
-use PhpCsFixer\Fixer\ClassNotation\SelfAccessorFixer;
-use PhpCsFixer\Fixer\ConstantNotation\NativeConstantInvocationFixer;
-use PhpCsFixer\Fixer\FunctionNotation\FopenFlagsFixer;
-use PhpCsFixer\Fixer\FunctionNotation\MethodArgumentSpaceFixer;
-use PhpCsFixer\Fixer\FunctionNotation\NativeFunctionInvocationFixer;
-use PhpCsFixer\Fixer\FunctionNotation\NullableTypeDeclarationForDefaultNullValueFixer;
-use PhpCsFixer\Fixer\FunctionNotation\SingleLineThrowFixer;
-use PhpCsFixer\Fixer\FunctionNotation\VoidReturnFixer;
-use PhpCsFixer\Fixer\LanguageConstruct\ExplicitIndirectVariableFixer;
-use PhpCsFixer\Fixer\Operator\BinaryOperatorSpacesFixer;
-use PhpCsFixer\Fixer\Operator\ConcatSpaceFixer;
-use PhpCsFixer\Fixer\Operator\OperatorLinebreakFixer;
-use PhpCsFixer\Fixer\Phpdoc\GeneralPhpdocAnnotationRemoveFixer;
-use PhpCsFixer\Fixer\Phpdoc\NoSuperfluousPhpdocTagsFixer;
-use PhpCsFixer\Fixer\Phpdoc\PhpdocAlignFixer;
-use PhpCsFixer\Fixer\Phpdoc\PhpdocAnnotationWithoutDotFixer;
-use PhpCsFixer\Fixer\Phpdoc\PhpdocIndentFixer;
-use PhpCsFixer\Fixer\Phpdoc\PhpdocLineSpanFixer;
-use PhpCsFixer\Fixer\Phpdoc\PhpdocNoPackageFixer;
-use PhpCsFixer\Fixer\Phpdoc\PhpdocOrderFixer;
-use PhpCsFixer\Fixer\Phpdoc\PhpdocSummaryFixer;
-use PhpCsFixer\Fixer\Phpdoc\PhpdocTrimConsecutiveBlankLineSeparationFixer;
-use PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitConstructFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitDedicateAssertFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitDedicateAssertInternalTypeFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitMockFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitMockShortWillReturnFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitTestCaseStaticMethodCallsFixer;
-use PhpCsFixer\Fixer\ReturnNotation\NoUselessReturnFixer;
-use PhpCsFixer\Fixer\Strict\DeclareStrictTypesFixer;
-use PhpCsFixer\Fixer\StringNotation\ExplicitStringVariableFixer;
-use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer;
-use PhpCsFixer\Fixer\Whitespace\BlankLineBeforeStatementFixer;
-use PhpCsFixer\Fixer\Whitespace\CompactNullableTypehintFixer;
-use PhpCsFixer\Fixer\Phpdoc\PhpdocToCommentFixer;
-use PhpCsFixerCustomFixers\Fixer\MultilinePromotedPropertiesFixer;
-use PhpCsFixerCustomFixers\Fixer\NoImportFromGlobalNamespaceFixer;
-use PhpCsFixerCustomFixers\Fixer\NoSuperfluousConcatenationFixer;
-use PhpCsFixerCustomFixers\Fixer\NoUselessCommentFixer;
-use PhpCsFixerCustomFixers\Fixer\NoUselessParenthesisFixer;
-use PhpCsFixerCustomFixers\Fixer\NoUselessStrlenFixer;
-use PhpCsFixerCustomFixers\Fixer\PhpdocTypesCommaSpacesFixer;
-use PhpCsFixerCustomFixers\Fixer\SingleSpaceAfterStatementFixer;
-use Symplify\CodingStandard\Fixer\ArrayNotation\ArrayListItemNewlineFixer;
-use Symplify\CodingStandard\Fixer\ArrayNotation\ArrayOpenerAndCloserNewlineFixer;
-use Symplify\CodingStandard\Fixer\ArrayNotation\StandaloneLineInMultilineArrayFixer;
-use Symplify\CodingStandard\Fixer\Spacing\StandaloneLineConstructorParamFixer;
-use Symplify\EasyCodingStandard\Config\ECSConfig;
-use Symplify\EasyCodingStandard\ValueObject\Option;
-use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
-use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff;
-
-return static function (ECSConfig $ecsConfig): void {
-    $ecsConfig->dynamicSets([
-        '@Symfony',
-        '@Symfony:risky',
-        '@PHP82Migration'
-    ]);
-
-    $ecsConfig->sets([
-        SetList::ARRAY,
-        SetList::CONTROL_STRUCTURES,
-        SetList::STRICT,
-        SetList::PSR_12,
-    ]);
-
-    $ecsConfig->rules([
-        ModernizeTypesCastingFixer::class,
-        FopenFlagsFixer::class,
-        NativeConstantInvocationFixer::class,
-        NullableTypeDeclarationForDefaultNullValueFixer::class,
-        VoidReturnFixer::class,
-        OperatorLinebreakFixer::class,
-        PhpdocLineSpanFixer::class,
-        PhpdocOrderFixer::class,
-        PhpUnitConstructFixer::class,
-        PhpUnitDedicateAssertInternalTypeFixer::class,
-        PhpUnitMockFixer::class,
-        PhpUnitMockShortWillReturnFixer::class,
-        PhpUnitTestCaseStaticMethodCallsFixer::class,
-        NoUselessReturnFixer::class,
-        DeclareStrictTypesFixer::class,
-        BlankLineBeforeStatementFixer::class,
-        CompactNullableTypehintFixer::class,
-        NoImportFromGlobalNamespaceFixer::class,
-        NoSuperfluousConcatenationFixer::class,
-        NoUselessCommentFixer::class,
-        SingleSpaceAfterStatementFixer::class,
-        NoUselessParenthesisFixer::class,
-        NoUselessStrlenFixer::class,
-        PhpdocTypesCommaSpacesFixer::class,
-    ]);
-
-    $ecsConfig->ruleWithConfiguration(ClassAttributesSeparationFixer::class, ['elements' => ['property' => 'one', 'method' => 'one']]);
-    $ecsConfig->ruleWithConfiguration(MethodArgumentSpaceFixer::class, ['on_multiline' => 'ensure_fully_multiline']);
-    $ecsConfig->ruleWithConfiguration(NativeFunctionInvocationFixer::class, [
-        'include' => [NativeFunctionInvocationFixer::SET_COMPILER_OPTIMIZED],
-        'scope' => 'namespaced',
-        'strict' => false,
-    ]);
-    $ecsConfig->ruleWithConfiguration(ConcatSpaceFixer::class, ['spacing' => 'one']);
-    $ecsConfig->ruleWithConfiguration(GeneralPhpdocAnnotationRemoveFixer::class, ['annotations' => ['copyright', 'category']]);
-    $ecsConfig->ruleWithConfiguration(NoSuperfluousPhpdocTagsFixer::class, ['allow_unused_params' => true, 'allow_mixed' => true]);
-    $ecsConfig->ruleWithConfiguration(PhpUnitDedicateAssertFixer::class, ['target' => 'newest']);
-    $ecsConfig->ruleWithConfiguration(SingleQuoteFixer::class, ['strings_containing_single_quote_chars' => true]);
-    $ecsConfig->ruleWithConfiguration(MultilinePromotedPropertiesFixer::class, ['minimum_number_of_parameters' => 2]);
-    // workaround for https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/5495
-    $ecsConfig->ruleWithConfiguration(BinaryOperatorSpacesFixer::class, [
-        'operators' => [
-            '|' => null,
-            '&' => null,
-        ],
-    ]);
-
-    $ecsConfig->cacheDirectory($_SERVER['SHOPWARE_TOOL_CACHE_ECS'] ?? 'var/cache/cs_fixer');
-    $ecsConfig->cacheNamespace('platform');
-
-    $ecsConfig->parallel();
-
-    $ecsConfig->skip([
-        ArrayOpenerAndCloserNewlineFixer::class => null,
-        ArrayListItemNewlineFixer::class => null,
-        SingleLineThrowFixer::class => null,
-        SelfAccessorFixer::class => null,
-        ExplicitIndirectVariableFixer::class => null,
-        BlankLineAfterOpeningTagFixer::class => null,
-        PhpdocSummaryFixer::class => null,
-        ExplicitStringVariableFixer::class => null,
-        StandaloneLineInMultilineArrayFixer::class => null,
-        AssignmentInConditionSniff::class => null,
-        PhpdocToCommentFixer::class => null,
-        PhpdocAlignFixer::class => null,
-        PhpdocAnnotationWithoutDotFixer::class => null,
-        '**/node_modules',
-        // would otherwise destroy markdown in the description of a route annotation, since markdown interpreted spaces/indents
-        PhpdocIndentFixer::class => [
-            'src/**/*Controller.php',
-            'src/**/*Route.php',
-        ],
-        // would otherwise remove lines in the description of route annotations
-        PhpdocTrimConsecutiveBlankLineSeparationFixer::class => [
-            'src/**/*Controller.php',
-            'src/**/*Route.php',
-        ],
-        PhpdocNoPackageFixer::class => null,
-    ]);
-};
diff --git a/frosh/code-quality-meta/0.3/root/rector.php b/frosh/code-quality-meta/0.4/root/rector.php
index 4212cf4..3c20c78 100644
--- a/frosh/code-quality-meta/0.3/root/rector.php
+++ b/frosh/code-quality-meta/0.4/root/rector.php
@@ -39,11 +39,11 @@ return RectorConfig::configure()
         SymfonySetList::SYMFONY_62,
         SymfonySetList::SYMFONY_63,
         SymfonySetList::SYMFONY_64,
+        SymfonySetList::SYMFONY_71,
         SymfonySetList::SYMFONY_CODE_QUALITY,
         SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
         LevelSetList::UP_TO_PHP_81,
         LevelSetList::UP_TO_PHP_82,
-        LevelSetList::UP_TO_PHP_83,
         ShopwareSetList::SHOPWARE_6_5_0,
         ShopwareSetList::SHOPWARE_6_6_0,
     ]);
diff --git a/frosh/code-quality-meta/0.3/vendor-bin/cs-fixer/composer.json b/frosh/code-quality-meta/0.4/vendor-bin/cs-fixer/composer.json
index 05adf36..79e902d 100644
--- a/frosh/code-quality-meta/0.3/vendor-bin/cs-fixer/composer.json
+++ b/frosh/code-quality-meta/0.4/vendor-bin/cs-fixer/composer.json
@@ -1,6 +1,5 @@
 {
     "require-dev": {
-        "symplify/easy-coding-standard": "^12.0",
-        "kubawerlos/php-cs-fixer-custom-fixers": "^3.16"
+        "friendsofphp/php-cs-fixer": "3.64.0"
     }
 }
diff --git a/frosh/code-quality-meta/0.3/vendor-bin/phpstan/composer.json b/frosh/code-quality-meta/0.4/vendor-bin/phpstan/composer.json
index d604d67..1a84f9d 100644
--- a/frosh/code-quality-meta/0.3/vendor-bin/phpstan/composer.json
+++ b/frosh/code-quality-meta/0.4/vendor-bin/phpstan/composer.json
@@ -1,10 +1,10 @@
 {
     "require-dev": {
-        "phpstan/phpstan": "^1.10",
-        "phpstan/extension-installer": "^1.3",
-        "phpstan/phpstan-phpunit": "^1.3",
-        "phpstan/phpstan-symfony": "^1.3",
-        "symplify/phpstan-rules": "11.2.5.72"
+        "phpstan/phpstan": "^1.12",
+        "phpstan/extension-installer": "^1.4",
+        "phpstan/phpstan-phpunit": "^1.4",
+        "phpstan/phpstan-symfony": "^1.4",
+        "symplify/phpstan-rules": "^13.0"
     },
     "config": {
         "allow-plugins": {
diff --git a/frosh/code-quality-meta/0.3/vendor-bin/rector/composer.json b/frosh/code-quality-meta/0.4/vendor-bin/rector/composer.json
index 9b51615..1605b62 100644
--- a/frosh/code-quality-meta/0.3/vendor-bin/rector/composer.json
+++ b/frosh/code-quality-meta/0.4/vendor-bin/rector/composer.json
@@ -1,6 +1,6 @@
 {
     "require-dev": {
-        "rector/rector": "^1.0",
-        "frosh/shopware-rector": "^0.4.0"
+        "rector/rector": "^1.2",
+        "frosh/shopware-rector": "^0.4."
     }
 }

frosh/devenv-meta

0.1 vs 0.2
diff --git a/frosh/devenv-meta/0.1/root/devenv.nix b/frosh/devenv-meta/0.2/root/devenv.nix
index f11a929..5e32410 100644
--- a/frosh/devenv-meta/0.1/root/devenv.nix
+++ b/frosh/devenv-meta/0.2/root/devenv.nix
@@ -8,12 +8,12 @@
 
   languages.javascript = {
     enable = lib.mkDefault true;
-    package = lib.mkDefault pkgs.nodejs-16_x;
+    package = lib.mkDefault pkgs.nodejs-18_x;
   };
 
   languages.php = {
     enable = lib.mkDefault true;
-    version = lib.mkDefault "8.1";
+    version = lib.mkDefault "8.2";
 
     ini = ''
       memory_limit = 2G
@@ -97,9 +97,6 @@
   env.MAILER_DSN = lib.mkDefault "smtp://127.0.0.1:1025";
   env.DATABASE_URL = lib.mkDefault "mysql://shopware:[email protected]:3306/shopware";
 
-  # Webpack compatibility
-  env.NODE_OPTIONS = lib.mkDefault "--openssl-legacy-provider";
-
   # Shopware 6 related scripts
   scripts.build-js.exec = lib.mkDefault "bin/build-js.sh";
   scripts.build-storefront.exec = lib.mkDefault "bin/build-storefront.sh";
0.2 vs 0.3
diff --git a/frosh/devenv-meta/0.2/root/devenv.lock b/frosh/devenv-meta/0.3/root/devenv.lock
index 569e03e..5c7b59d 100644
--- a/frosh/devenv-meta/0.2/root/devenv.lock
+++ b/frosh/devenv-meta/0.3/root/devenv.lock
@@ -3,11 +3,11 @@
     "devenv": {
       "locked": {
         "dir": "src/modules",
-        "lastModified": 1683566927,
-        "narHash": "sha256-pCJ9IPQeEbxKOuE6m++M9NRoweHid8r/9A1Uhbk1HQM=",
+        "lastModified": 1705853027,
+        "narHash": "sha256-Oz6K7aGvUWYv4U7rouc5vtZ9WTv7L5vkgRrtziNyquY=",
         "owner": "cachix",
         "repo": "devenv",
-        "rev": "c90896345449b92d8f503cf8c2a339088bec0ddc",
+        "rev": "aa237a7b5605b4f58714762d1f56627dfb1b3dfa",
         "type": "github"
       },
       "original": {
@@ -20,11 +20,11 @@
     "flake-compat": {
       "flake": false,
       "locked": {
-        "lastModified": 1673956053,
-        "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
+        "lastModified": 1696426674,
+        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
         "owner": "edolstra",
         "repo": "flake-compat",
-        "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
+        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
         "type": "github"
       },
       "original": {
@@ -34,12 +34,15 @@
       }
     },
     "flake-utils": {
+      "inputs": {
+        "systems": "systems"
+      },
       "locked": {
-        "lastModified": 1667395993,
-        "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+        "lastModified": 1701680307,
+        "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
         "owner": "numtide",
         "repo": "flake-utils",
-        "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+        "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
         "type": "github"
       },
       "original": {
@@ -56,11 +59,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1660459072,
-        "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
+        "lastModified": 1703887061,
+        "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
         "owner": "hercules-ci",
         "repo": "gitignore.nix",
-        "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
+        "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
         "type": "github"
       },
       "original": {
@@ -71,11 +74,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1683777345,
-        "narHash": "sha256-V2p/A4RpEGqEZussOnHYMU6XglxBJGCODdzoyvcwig8=",
+        "lastModified": 1705883077,
+        "narHash": "sha256-ByzHHX3KxpU1+V0erFy8jpujTufimh6KaS/Iv3AciHk=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "635a306fc8ede2e34cb3dd0d6d0a5d49362150ed",
+        "rev": "5f5210aa20e343b7e35f40c033000db0ef80d7b9",
         "type": "github"
       },
       "original": {
@@ -87,16 +90,16 @@
     },
     "nixpkgs-stable": {
       "locked": {
-        "lastModified": 1678872516,
-        "narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=",
+        "lastModified": 1704874635,
+        "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8",
+        "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356",
         "type": "github"
       },
       "original": {
         "owner": "NixOS",
-        "ref": "nixos-22.11",
+        "ref": "nixos-23.11",
         "repo": "nixpkgs",
         "type": "github"
       }
@@ -112,11 +115,11 @@
         "nixpkgs-stable": "nixpkgs-stable"
       },
       "locked": {
-        "lastModified": 1682596858,
-        "narHash": "sha256-Hf9XVpqaGqe/4oDGr30W8HlsWvJXtMsEPHDqHZA6dDg=",
+        "lastModified": 1705757126,
+        "narHash": "sha256-Eksr+n4Q8EYZKAN0Scef5JK4H6FcHc+TKNHb95CWm+c=",
         "owner": "cachix",
         "repo": "pre-commit-hooks.nix",
-        "rev": "fb58866e20af98779017134319b5663b8215d912",
+        "rev": "f56597d53fd174f796b5a7d3ee0b494f9e2285cc",
         "type": "github"
       },
       "original": {
@@ -131,6 +134,21 @@
         "nixpkgs": "nixpkgs",
         "pre-commit-hooks": "pre-commit-hooks"
       }
+    },
+    "systems": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
     }
   },
   "root": "root",
diff --git a/frosh/devenv-meta/0.2/root/devenv.nix b/frosh/devenv-meta/0.3/root/devenv.nix
index 5e32410..1dce5aa 100644
--- a/frosh/devenv-meta/0.2/root/devenv.nix
+++ b/frosh/devenv-meta/0.3/root/devenv.nix
@@ -8,7 +8,7 @@
 
   languages.javascript = {
     enable = lib.mkDefault true;
-    package = lib.mkDefault pkgs.nodejs-18_x;
+    package = lib.mkDefault pkgs.nodejs_20;
   };
 
   languages.php = {

shopware/administration

6.4 vs 6.6
diff --git a/shopware/administration/6.4/bin/build-administration.sh b/shopware/administration/6.6/bin/build-administration.sh
index 063bcaa..42f6c90 100755
--- a/shopware/administration/6.4/bin/build-administration.sh
+++ b/shopware/administration/6.6/bin/build-administration.sh
@@ -5,6 +5,9 @@ CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
 
 export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
 export ENV_FILE=${ENV_FILE:-"${PROJECT_ROOT}/.env"}
+export NPM_CONFIG_FUND=false
+export NPM_CONFIG_AUDIT=false
+export NPM_CONFIG_UPDATE_NOTIFIER=false
 
 # shellcheck source=functions.sh
 source "${PROJECT_ROOT}/bin/functions.sh"
@@ -72,7 +75,7 @@ else
     echo "Cannot check extensions for required npm installations as jq is not installed"
 fi
 
-(cd "${ADMIN_ROOT}"/Resources/app/administration && npm install --no-audit --prefer-offline)
+(cd "${ADMIN_ROOT}"/Resources/app/administration && npm install --prefer-offline --production)
 
 # Dump entity schema
 if [[ -z "${SHOPWARE_SKIP_ENTITY_SCHEMA_DUMP:-""}" ]] && [[ -f "${ADMIN_ROOT}"/Resources/app/administration/scripts/entitySchemaConverter/entity-schema-converter.ts ]]; then
diff --git a/shopware/administration/6.4/bin/watch-administration.sh b/shopware/administration/6.6/bin/watch-administration.sh
index 93d9b9e..fc53b02 100755
--- a/shopware/administration/6.4/bin/watch-administration.sh
+++ b/shopware/administration/6.6/bin/watch-administration.sh
@@ -56,7 +56,7 @@ else
     echo "Cannot check extensions for required npm installations as jq is not installed"
 fi
 
-if [ ! -d vendor/shopware/administration/Resources/app/administration/node_modules ]; then
+if [ ! -d vendor/shopware/administration/Resources/app/administration/node_modules/webpack-dev-server ]; then
     npm install --prefix vendor/shopware/administration/Resources/app/administration/
 fi
 
6.6 vs 6.7

shopware/core

6.4 vs 6.6
diff --git a/shopware/core/6.4/bin/ci b/shopware/core/6.6/bin/ci
index e9f453b..661c0fa 100755
--- a/shopware/core/6.4/bin/ci
+++ b/shopware/core/6.6/bin/ci
@@ -3,7 +3,6 @@
 
 use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
 use Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader;
-use Shopware\Core\HttpKernel;
 use Symfony\Bundle\FrameworkBundle\Console\Application;
 use Symfony\Component\Console\Input\ArgvInput;
 
@@ -39,18 +38,12 @@ return static function (array &$context) {
         $_SERVER['DATABASE_URL'] = 'mysql://_placeholder.test';
     }
 
-    if (method_exists(KernelFactory::class, "create")) {
-        $kernel = KernelFactory::create(
-            environment: $env,
-            debug: $debug,
-            classLoader: $classLoader,
-            pluginLoader: new ComposerPluginLoader($classLoader, null)
-        );
-    } else {
-        $kernel = new HttpKernel($env, $debug, $classLoader);
-        $kernel->setPluginLoader(new ComposerPluginLoader($classLoader, null));
-        $kernel = $kernel->getKernel();
-    }
+    $kernel = KernelFactory::create(
+        environment: $env,
+        debug: $debug,
+        classLoader: $classLoader,
+        pluginLoader: new ComposerPluginLoader($classLoader, null),
+    );
 
     $application = new Application($kernel);
     $kernel->boot();
diff --git a/shopware/core/6.4/bin/console b/shopware/core/6.6/bin/console
index 6ec51be..5d89fb3 100755
--- a/shopware/core/6.4/bin/console
+++ b/shopware/core/6.6/bin/console
@@ -4,7 +4,6 @@
 use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
 use Shopware\Core\Framework\Plugin\KernelPluginLoader\DbalKernelPluginLoader;
 use Shopware\Core\Framework\Plugin\KernelPluginLoader\StaticKernelPluginLoader;
-use Shopware\Core\HttpKernel;
 use Shopware\Core\Kernel;
 use Symfony\Bundle\FrameworkBundle\Console\Application;
 use Symfony\Component\Console\Input\ArgvInput;
@@ -40,25 +39,16 @@ return static function (array &$context) {
         $context['INSTALL'] = true;
     }
 
-    if (trim($context['DATABASE_URL'] ?? '') === '') {
-        // fake DATABASE_URL
-        $_SERVER['DATABASE_URL'] = 'mysql://_placeholder.test';
-    } else if (!isset($context['INSTALL'])) {
-        $pluginLoader = new DbalKernelPluginLoader($classLoader, null, \Shopware\Core\Kernel::getConnection());
+    if (trim($context['DATABASE_URL'] ?? '') !== '' && !isset($context['INSTALL'])) {
+        $pluginLoader = new DbalKernelPluginLoader($classLoader, null, Kernel::getConnection());
     }
 
-    if (method_exists(KernelFactory::class, "create")) {
-        $kernel = KernelFactory::create(
-            environment: $env,
-            debug: $debug,
-            classLoader: $classLoader,
-            pluginLoader: $pluginLoader
-        );
-    } else {
-        $kernel = new HttpKernel($env, $debug, $classLoader);
-        $kernel->setPluginLoader($pluginLoader);
-        $kernel = $kernel->getKernel();
-    }
+    $kernel = KernelFactory::create(
+        environment: $env,
+        debug: $debug,
+        classLoader: $classLoader,
+        pluginLoader: $pluginLoader
+    );
 
     $application = new Application($kernel);
     $kernel->boot();
diff --git a/shopware/core/6.4/config/packages/shopware.yaml b/shopware/core/6.4/config/packages/shopware.yaml
deleted file mode 100644
index 0ecf72d..0000000
--- a/shopware/core/6.4/config/packages/shopware.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-# Using the webupdater will overwrite this file. Create a second file z-shopware.yaml to override the config
-
-shopware:
-    auto_update:
-        # Disables the auto updater in the UI
-#        enabled: false
-    admin_worker:
-# The Admin worker should be disabled on production server.
-#       enable_admin_worker: false
diff --git a/shopware/core/6.4/manifest.json b/shopware/core/6.6/manifest.json
index c3ef08c..6902307 100644
--- a/shopware/core/6.4/manifest.json
+++ b/shopware/core/6.6/manifest.json
@@ -62,8 +62,7 @@
         "!/var/.htaccess",
         "/auth.json",
         "/install.lock",
-        "public/asset-manifest.json",
-        "files/asset-manifest.json"
+        "public/asset-manifest.json"
     ],
     "composer-scripts": {
         "assets:install": "symfony-cmd"
diff --git a/shopware/core/6.4/post-install.txt b/shopware/core/6.6/post-install.txt
index 36869a6..18d1b8f 100644
--- a/shopware/core/6.4/post-install.txt
+++ b/shopware/core/6.6/post-install.txt
@@ -19,8 +19,3 @@
     5. Optional: Open the Mail catcher with symfony open:local:webmail
 
   * Read the documentation at https://developer.shopware.com/
-
-  * Warning if updating from older versions of the production template:
-
-    There might be old `require-dev` dependencies in your `composer.json` file. Please remove them before updating shopware/core to versions >= v6.4.
-    You can do it using this command: composer config --unset require-dev
diff --git a/shopware/core/6.4/public/index.php b/shopware/core/6.6/public/index.php
index eb330c6..fe36139 100644
--- a/shopware/core/6.4/public/index.php
+++ b/shopware/core/6.6/public/index.php
@@ -2,13 +2,8 @@
 
 use Shopware\Core\DevOps\Environment\EnvironmentHelper;
 use Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader;
-use Shopware\Core\HttpKernel;
 use Shopware\Core\Installer\InstallerKernel;
-use Symfony\Component\HttpFoundation\Request;
 use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\TerminableInterface;
 
 $_SERVER['SCRIPT_FILENAME'] = __FILE__;
 
@@ -34,62 +29,20 @@ return function (array $context) {
     $appEnv = $context['APP_ENV'] ?? 'dev';
     $debug = (bool) ($context['APP_DEBUG'] ?? ($appEnv !== 'prod'));
 
-    $trustedProxies = $context['TRUSTED_PROXIES'] ?? false;
-    if ($trustedProxies) {
-        Request::setTrustedProxies(
-            explode(',', $trustedProxies),
-            Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
-        );
-    }
-
-    $trustedHosts = $context['TRUSTED_HOSTS'] ?? false;
-    if ($trustedHosts) {
-        Request::setTrustedHosts(explode(',', $trustedHosts));
-    }
-
     if (!EnvironmentHelper::getVariable('SHOPWARE_SKIP_WEBINSTALLER', false) && !file_exists(dirname(__DIR__) . '/install.lock')) {
         return new InstallerKernel($appEnv, $debug);
     }
 
-    if (method_exists(KernelFactory::class, "create")) {
-        $pluginLoader = null;
-        if (EnvironmentHelper::getVariable('COMPOSER_PLUGIN_LOADER', false)) {
-            $pluginLoader = new ComposerPluginLoader($classLoader, null);
-        }
-
-        return KernelFactory::create(
-            environment: $appEnv,
-            debug: $debug,
-            classLoader: $classLoader,
-            pluginLoader: $pluginLoader
-        );
-    }
-
-    $shopwareHttpKernel = new HttpKernel($appEnv, $debug, $classLoader);
+    $pluginLoader = null;
 
     if (EnvironmentHelper::getVariable('COMPOSER_PLUGIN_LOADER', false)) {
-        $shopwareHttpKernel->setPluginLoader(
-            new ComposerPluginLoader($classLoader, null)
-        );
+        $pluginLoader = new ComposerPluginLoader($classLoader, null);
     }
 
-    return new class($shopwareHttpKernel) implements HttpKernelInterface, TerminableInterface {
-        private HttpKernel $httpKernel;
-
-        public function __construct(HttpKernel $httpKernel)
-        {
-            $this->httpKernel = $httpKernel;
-        }
-
-        public function handle(Request $request, int $type = self::MAIN_REQUEST, bool $catch = true): Response
-        {
-            return $this->httpKernel->handle($request, $type, $catch)->getResponse();
-        }
-
-        public function terminate(Request $request, Response $response): void
-        {
-            $this->httpKernel->terminate($request, $response);
-        }
-    };
+    return KernelFactory::create(
+        environment: $appEnv,
+        debug: $debug,
+        classLoader: $classLoader,
+        pluginLoader: $pluginLoader,
+    );
 };
-
6.6 vs 6.7
diff --git a/shopware/core/6.6/bin/build-js.sh b/shopware/core/6.7/bin/build-js.sh
old mode 100755
new mode 100644
diff --git a/shopware/core/6.6/bin/ci b/shopware/core/6.7/bin/ci
old mode 100755
new mode 100644
diff --git a/shopware/core/6.6/bin/console b/shopware/core/6.7/bin/console
old mode 100755
new mode 100644
diff --git a/shopware/core/6.6/public/.htaccess.dist b/shopware/core/6.7/public/.htaccess.dist
index 62601e5..dab5148 100644
--- a/shopware/core/6.6/public/.htaccess.dist
+++ b/shopware/core/6.7/public/.htaccess.dist
@@ -26,6 +26,7 @@ DirectoryIndex index.php
     RewriteRule ^ - [L]
 
     # Rewrite all other queries to the front controller.
+    RewriteCond %{REQUEST_URI} !^/(theme|media|thumbnail|bundles|css|fonts|js|recovery|sitemap) [NC]    
     RewriteRule ^ %{ENV:BASE}/index.php [L]
 </IfModule>
 

shopware/docker

0.1 vs 0.2
diff --git a/shopware/docker/0.1/config/packages/docker.yaml b/shopware/docker/0.2/config/packages/docker.yaml
index 7fa7809..b64bd8f 100644
--- a/shopware/docker/0.1/config/packages/docker.yaml
+++ b/shopware/docker/0.2/config/packages/docker.yaml
@@ -1,12 +1,7 @@
-parameters:
-    env(JWT_PRIVATE_KEY): ""
-    env(JWT_PUBLIC_KEY): ""
-
 shopware:
     api:                                                                                                               
         jwt_key:                                                                                                       
-            private_key_path: '%env(base64:JWT_PRIVATE_KEY)%'                                                          
-            public_key_path: '%env(base64:JWT_PUBLIC_KEY)%'
+            use_app_secret: true
     auto_update:
         enabled: false
     store:
@@ -22,24 +17,3 @@ shopware:
             type: 'array'
         message_queue:
             type: 'array'
-
-when@prod:
-    monolog:
-        handlers:
-            main:
-                type: fingers_crossed
-                action_level: error
-                handler: nested
-                excluded_http_codes: [404, 405]
-                buffer_size: 50 # How many messages should be saved? Prevent memory leaks
-            nested:
-                type: stream
-                path: php://stderr
-                level: error
-                formatter: monolog.formatter.json
-            console:
-                type: console
-                process_psr_3_messages: false
-                channels: ["!event", "!doctrine"]
-            business_event_handler_buffer:
-                level: error
diff --git a/shopware/docker/0.2/config/packages/prod/monolog.yaml b/shopware/docker/0.2/config/packages/prod/monolog.yaml
new file mode 100644
index 0000000..50eb719
--- /dev/null
+++ b/shopware/docker/0.2/config/packages/prod/monolog.yaml
@@ -0,0 +1,19 @@
+monolog:
+    handlers:
+        main:
+            type: fingers_crossed
+            action_level: error
+            handler: nested
+            excluded_http_codes: [404, 405]
+            buffer_size: 50
+        nested:
+            type: stream
+            path: php://stderr
+            level: error
+            formatter: monolog.formatter.json
+        console:
+            type: console
+            process_psr_3_messages: false
+            channels: ["!event", "!doctrine"]
+        business_event_handler_buffer:
+            level: error
diff --git a/shopware/docker/0.1/docker/Dockerfile b/shopware/docker/0.2/docker/Dockerfile
index ed1a03f..5dff201 100644
--- a/shopware/docker/0.1/docker/Dockerfile
+++ b/shopware/docker/0.2/docker/Dockerfile
@@ -1,8 +1,8 @@
 #syntax=docker/dockerfile:1.4
 
 # pin versions
-FROM shopware/docker-base:8.2 as base-image
-FROM ghcr.io/friendsofshopware/shopware-cli:latest-php-8.2 as shopware-cli
+FROM shopware/docker-base:8.3 as base-image
+FROM ghcr.io/friendsofshopware/shopware-cli:latest-php-8.3 as shopware-cli
 
 # build
 
@@ -22,4 +22,4 @@ RUN --mount=type=secret,id=composer_auth,dst=/src/auth.json \
 
 FROM base-image
 
-COPY --from=build --chown=www-data --link /src /var/www/html
+COPY --from=build --chown=82 --link /src /var/www/html
diff --git a/shopware/docker/0.1/post-install.txt b/shopware/docker/0.2/post-install.txt
index a81e722..172a0a9 100644
--- a/shopware/docker/0.1/post-install.txt
+++ b/shopware/docker/0.2/post-install.txt
@@ -1,5 +1,5 @@
   * Setup
     This recipe has created a docker/Dockerfile with an example file to build a Shopware Docker image.
     You can build it with docker build -t <name> -f docker/Dockerfile ..
-    Make sure you run `./bin/console system:generate-jwt-secret --use-env` and added the private and public key to the environment file, otherwise the Administration won't work anymore.
+    Make sure you to set a correct `APP_SECRET`, you can generate one with `openssl rand -hex 128`
     See https://github.com/shopware/docker for the complete documentation to configure things.

shopware/elasticsearch

6.4 vs 6.6
diff --git a/shopware/elasticsearch/6.4/config/packages/elasticsearch.yaml b/shopware/elasticsearch/6.4/config/packages/elasticsearch.yaml
deleted file mode 100644
index 65f29c9..0000000
--- a/shopware/elasticsearch/6.4/config/packages/elasticsearch.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-elasticsearch:
-    hosts: "%env(string:OPENSEARCH_URL)%"
-
6.6 vs 6.7

shopware/fastly-meta

6.4 vs 6.6
diff --git a/shopware/fastly-meta/6.4/bin/setup-fastly.sh b/shopware/fastly-meta/6.6/bin/setup-fastly.sh
index 2c2f627..95f3e68 100755
--- a/shopware/fastly-meta/6.4/bin/setup-fastly.sh
+++ b/shopware/fastly-meta/6.6/bin/setup-fastly.sh
@@ -1,136 +1,7 @@
 #!/usr/bin/env bash
 
-# fail on error
-set -e
+echo "This script is deprecated and will be removed in the next major release. Please use vendor/bin/shopware-deployment-helper fastly:snippet:deploy directly."
 
-if [[ -z "$FASTLY_API_TOKEN" ]]; then
-  echo "Environment variable FASTLY_API_TOKEN is not set. Skipping"
-  exit 0
-fi
+sleep 5
 
-if [[ -z "$FASTLY_SERVICE_ID" ]]; then
-  echo "Environment variable FASTLY_SERVICE_ID is not set. Skipping"
-  exit 0
-fi
-
-CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
-PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
-
-cd "$PROJECT_ROOT"
-
-created_version=0
-
-create_version_if_not_done() {
-    if [[ "$created_version" == "1" ]]; then
-        return
-    fi
-
-    echo "Creating version from active version"
-    fastly service-version clone --version=active
-    created_version=1
-}
-
-get_md5()
-{
-  if builtin command -v md5 > /dev/null; then
-    echo "$1" | md5
-  elif builtin command -v md5sum > /dev/null ; then
-    echo "$1" | md5sum | awk '{print $1}'
-  else
-    echo "Neither md5 nor md5sum were found in the PATH"
-    return 1
-  fi
-
-  return 0
-}
-
-install_fastly_cli() {
-    if [[ -f "/tmp/fastly/fastly" ]]; then
-      export PATH="/tmp/fastly:$PATH"
-      return
-    fi
-
-    mkdir -p /tmp/fastly
-
-    arch=$(uname -m)
-    os="linux"
-    version="v10.6.4"
-
-    if [[ "$arch" == "x86_64" ]]; then
-        arch="amd64"
-    fi
-
-    if [[ "$OSTYPE" == "darwin"* ]]; then
-        os="darwin"
-    fi
-
-    echo "Detected OS: ${os} and architecture: ${arch}"
-
-    file="https://github.com/fastly/cli/releases/download/${version}/fastly_${version}_${os}-${arch}.tar.gz"
-
-    echo "Downloading ${file}"
-
-    curl -L "${file}" | tar xz -C /tmp/fastly/
-    export PATH="/tmp/fastly:$PATH"
-}
-
-install_fastly_cli
-
-# Fastly tries to write into /app on platformsh and this throws an error
-export HOME=/tmp
-
-for sub in ./config/fastly/*; do
-  if ! find "$sub" -name '*.vcl' | grep . >/dev/null; then
-    # No VCL files in "$sub"; moving on to the next dir
-    continue
-  fi
-  for vcl in "$sub"/*.vcl; do
-    trigger=$(basename "$vcl" .vcl)
-    priority=$(echo "$trigger" | awk -F '.' '$2 ~ /^[0-9]+$/ { print $2 }')
-    if test -z "$priority"; then
-      priority="100"
-    else
-      trigger=$(basename "$trigger" ".$priority")
-    fi
-    vcl_type=$(basename "$sub")
-
-    # For backward compatibility, default VCLs doesn't include trigger in their name
-    if [[ "$trigger" == "default" ]]; then
-      name="shopware_${vcl_type}"
-    else
-      name="shopware_${vcl_type}_${trigger}"
-    fi
-
-    echo "Found VCL snippet $trigger of type $vcl_type with priority $priority"
-
-    if fastly vcl snippet describe --version=active "--name=$name" > /dev/null; then
-        # The snippet exists on remote
-        localContent=$(cat "$vcl")
-        localContentMd5=$(get_md5 "$localContent")
-
-        remoteContent=$(fastly vcl snippet describe --version=active "--name=$name" --json | jq -r '.Content')
-        remoteContentMd5=$(get_md5 "$remoteContent")
-
-        if [[ "$localContentMd5" != "$remoteContentMd5" ]]; then
-            echo "Snippet ${name} has changed. Updating"
-
-            create_version_if_not_done
-
-            fastly vcl snippet update "--name=$name" "--content=${vcl}" "--type=${vcl_type}" "--priority=${priority}" --version=latest
-        else
-            echo "Snippet ${name} is up to date"
-        fi
-    else
-        create_version_if_not_done
-
-        fastly vcl snippet create "--name=$name" "--content=${vcl}" "--type=${vcl_type}" "--priority=${priority}" --version=latest
-    fi
-  done
-done
-
-
-if [[ "$created_version" == "1" ]]; then
-    echo "Activating latest version"
-
-    fastly service-version activate --version latest
-fi
+php vendor/bin/shopware-deployment-helper fastly:snippet:deploy
diff --git a/shopware/fastly-meta/6.4/config/packages/fastly.yaml b/shopware/fastly-meta/6.6/config/packages/prod/fastly.yaml
similarity index 50%
rename from shopware/fastly-meta/6.4/config/packages/fastly.yaml
rename to shopware/fastly-meta/6.6/config/packages/prod/fastly.yaml
index 704768a..3ff54bb 100644
--- a/shopware/fastly-meta/6.4/config/packages/fastly.yaml
+++ b/shopware/fastly-meta/6.6/config/packages/prod/fastly.yaml
@@ -1,8 +1,11 @@
-when@prod:
-    storefront:
+# yaml-language-server: $schema=https://raw.githubusercontent.com/shopware/shopware/trunk/config-schema.json
+
+shopware:
+    http_cache:
         # Uncomment all to enable soft purge
-        # http_cache:
+        # Allow to serve the out-dated cache for 300 seconds
         # stale_while_revalidate: 300
+        # Allow to serve the out-dated cache for an hour if the origin server is offline
         # stale_if_error: 3600
         reverse_proxy:
             enabled: true
@@ -10,5 +13,4 @@ when@prod:
                 enabled: true
                 api_key: '%env(FASTLY_API_TOKEN)%'
                 service_id: '%env(FASTLY_SERVICE_ID)%'
-                # Uncomment to enable soft purge
-                # soft_purge: '1'
+                soft_purge: '1'
diff --git a/shopware/fastly-meta/6.4/post-install.txt b/shopware/fastly-meta/6.6/post-install.txt
index 60560a5..396697a 100644
--- a/shopware/fastly-meta/6.4/post-install.txt
+++ b/shopware/fastly-meta/6.6/post-install.txt
@@ -1,2 +1,4 @@
   * Add your FASTLY_API_TOKEN and FASTLY_SERVICE_ID into .env
-  * Run setup-fastly.sh to deploy the Fastly vcl files
+  * Run vendor/bin/shopware-deployment-helper fastly:snippet:deploy to deploy the Fastly snippets
+  * The Fastly snippets are now deployed and you can start using the Fastly CDN
+  * The snippets are also updated on regular vendor/bin/shopware-deployment-helper run runs

shopware/paas-meta

6.4 vs 6.6
diff --git a/shopware/paas-meta/6.4/.platform/applications.yaml b/shopware/paas-meta/6.6/.platform/applications.yaml
index e12f53f..cb0ff04 100644
--- a/shopware/paas-meta/6.4/.platform/applications.yaml
+++ b/shopware/paas-meta/6.6/.platform/applications.yaml
@@ -1,34 +1,25 @@
 -   name: app
-    type: php:8.2
+    type: php:8.3
     build:
-        flavor: composer
+        flavor: none
     dependencies:
         php:
-            composer/composer: "2.5.*"
+            composer/composer: "2.8"
     variables:
         env:
-            # Tell Shopware to always install in production-mode.
             APP_ENV: prod
-            # Instance ID is empty by default, change to something unique in your project
-            INSTANCE_ID: ""
             # Enable HTTP Cache to get cache-control headers
             SHOPWARE_HTTP_CACHE_ENABLED: 1
-            # NVM and Node.js versions to install
-            NVM_VERSION: v0.39.0
-            NODE_VERSION: v18
-            # Use different redis dbs for cache and sessions
-            REDIS_CACHE_DATABASE: 0
-            REDIS_SESSION_DATABASE: 2
-            # Improve admin build speed
-            DISABLE_ADMIN_COMPILATION_TYPECHECK: 1
-            # Only build extension. Shopware assets are pre built in the tags
-            SHOPWARE_ADMIN_BUILD_ONLY_EXTENSIONS: 1
+            NODE_VERSION: v20.18.0
+            SHOPWARE_CLI_VERSION: 0.4.57
             # Elasticsearch, see https://developer.shopware.com/docs/guides/hosting/infrastructure/elasticsearch#activating-and-first-time-indexing
             SHOPWARE_ES_ENABLED: 0
             SHOPWARE_ES_INDEXING_ENABLED: 0
             SHOPWARE_ES_INDEX_PREFIX: "sw6"
             # Disables the Shopware web installer
             SHOPWARE_SKIP_WEBINSTALLER: 1
+            # Performance optimization
+            COMPOSER_ROOT_VERSION: 1.0.0
         php:
             upload_max_filesize: 32M
             post_max_size: 32M
@@ -57,151 +48,60 @@
     hooks:
         build: |
             set -e
-            echo "==================================================="
-            echo "START BUILD SCRIPT"
-            echo "Beginning with the NVM and NodeJS setup"
-            echo "==================================================="
-            # install nvm
-            unset NPM_CONFIG_PREFIX
-            export NVM_DIR="$PLATFORM_APP_DIR/.nvm"
+            echo "Installing Node ${NODE_VERSION} and shopware-cli ${SHOPWARE_CLI_VERSION}"
 
-            # install.sh will automatically install NodeJS based on the presence of $NODE_VERSION
-            curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/$NVM_VERSION/install.sh | bash
-            [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
+            mkdir -p /tmp/tools
 
-            # have nvm available and load the correct node version in your ssh session
-            echo 'unset NPM_CONFIG_PREFIX' >> .bash_profile
-            echo 'export NO_UPDATE_NOTIFIER=1' >> .bash_profile
-            echo 'export NVM_DIR="$PLATFORM_APP_DIR/.nvm"' >> .bash_profile
-            echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> .bash_profile
+            curl -qL -s -o node.tar.xz "https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.xz"
+            tar xf node.tar.xz -C /tmp/tools --strip-components=1
+            curl -qL -s -o shopware-cli.tar.gz https://github.com/FriendsOfShopware/shopware-cli/releases/download/${SHOPWARE_CLI_VERSION}/shopware-cli_Linux_x86_64.tar.gz
+            tar xf shopware-cli.tar.gz -C /tmp/tools shopware-cli
+            mv /tmp/tools/shopware-cli /tmp/tools/bin
 
-            # Disable UI installer
-            touch install.lock
+            rm node.tar.xz shopware-cli.tar.gz
 
-            echo "==================================================="
-            echo "REMOVE FASTLY WHEN NOT A PRODUCTION OR STAGE ENV"
-            echo "==================================================="
-            echo "The Environment has the following type: $PROJECT_ENVIRONMENT_TYPE"
-            if [ "$PROJECT_ENVIRONMENT_TYPE" = development ]; then
-                echo "remove fastly.yaml on environment type development"
-                rm -f config/packages/fastly.yaml
-            fi
-            echo "Fastly setup step done"
+            export PATH="/tmp/tools/bin:$PATH"
 
-            echo "==================================================="
-            echo "COPY THEME AND RUN JS BUILD"
-            echo "==================================================="
-            # compile theme and save config for later (will be moved to mount).
-            # warnings can be ignored (the process is trying to access Redis which is not yet available)
-            export CI=true
-            ./bin/build-js.sh
-            mkdir build-tmp
-            cp -R files/theme-config build-tmp
+            export APP_CACHE_DIR=$PLATFORM_APP_DIR/localCache
 
-            # save plugin config for later (will be moved to mount)
-            cp var/plugins.json build-plugins.json
-        deploy: |
-            set -e
-            echo "==================================================="
-            echo "START DEPLOY SCRIPT"
-            echo "Beginning restoring theme-config files and plugin config"
-            echo "==================================================="
-            if [ -z "${JWT_PUBLIC_KEY}" ]; then
-                echo "~"
-                echo "~"
-                echo "~"
-                echo "Please initialize the JWT Tokens to proceed. https://developer.shopware.com/docs/products/paas/build-deploy"
-                echo "~"
-                echo "~"
-                echo "~"
-                exit 1;
-            fi
+            shopware-cli project ci .
 
-            # restore theme config from build to mount in case theme needs rebuilding during runtime
-            cp -R build-tmp/theme-config files/
+            # Moving files of the mounts to avoid warnings
+            mv $APP_CACHE_DIR ./RO-localCache
+            mv ./var ./RO-var
 
-            # restore plugin config to mount
-            cp build-plugins.json var/plugins.json
+        deploy: |
+            set -e
 
-            echo "==================================================="
-            echo "INITIALIZE SHOPWARE'S SITE DATA IF NOT ALREADY INSTALLED"
-            echo "==================================================="
-            # Initialize the Shopware site's data set if it's not already installed.
-            # (This is only for demo/first install and can be removed once Shopware is initialized)
-            if [ ! -f $PLATFORM_APP_DIR/installer/installed ]; then
-                # setup the environment
-                # create database with a basic setup (admin user and storefront sales channel).
-                # this will try to run theme:compile which cannot be disabled, so it will throw a bunch of warnings
-                # that can be ignored (we use stateless build anyway, so this is done already at this point)
-                echo "Running system:install (Warnings for theme:compile can be ignored)"
-                bin/console system:install --create-database --basic-setup --force
-                bin/console theme:change --all Storefront --no-compile
-                bin/console theme:dump
+            echo "Syncing files created during the build in the mounts"
+            rsync -av "${PLATFORM_APP_DIR}/RO-localCache/" "${APP_CACHE_DIR}/"
+            rsync -av "${PLATFORM_APP_DIR}/RO-var/" "${PLATFORM_APP_DIR}/var/"
 
-                # Disable FRW
-                bin/console system:config:set core.frw.completedAt '2019-10-07T10:46:23+00:00'
+            echo "Create Dompdf working directories and sync fonts from the vendor folder"
+            if [ ! -d "${PLATFORM_APP_DIR}/var/dompdf/tempDir" ]; then
+                mkdir -p "${PLATFORM_APP_DIR}/var/dompdf/tempDir"
+            fi
+            if [ ! -d "${PLATFORM_APP_DIR}/var/dompdf/fontCache" ]; then
+                mkdir -p "${PLATFORM_APP_DIR}/var/dompdf/fontCache"
+            fi
+            rsync -av "${PLATFORM_APP_DIR}/vendor/dompdf/dompdf/lib/fonts" "${PLATFORM_APP_DIR}/var/dompdf/fontDir"
 
-                # mark system as installed
-                touch $PLATFORM_APP_DIR/installer/installed
-            fi;
+            php vendor/bin/shopware-deployment-helper run --skip-asset-install --skip-theme-compile
 
-            echo "==================================================="
-            echo "UPDATE SALES CHANNEL DOMAIN IF ENVIRONMENT TYPE IS NOT PRODUCTION"
-            echo "==================================================="
-            # Configure the sales channel domains automatically for non-production environments
             if [ "$PLATFORM_ENVIRONMENT_TYPE" != production ]; then
+                echo "==================================================="
+                echo "UPDATE SALES CHANNEL DOMAIN IF ENVIRONMENT TYPE IS NOT PRODUCTION"
+                echo "==================================================="
+
                 export FRONTEND_URL=`echo $PLATFORM_ROUTES | base64 --decode | jq -r 'to_entries[] | select(.value.id=="shopware") | .key'`
                 export FRONTEND_DOMAIN=`php -r 'echo parse_url($_SERVER["FRONTEND_URL"], PHP_URL_HOST);'`
                 bin/console sales-channel:update:domain "$FRONTEND_DOMAIN"
             fi
+        post_deploy: |
+            set -e
 
-            echo "==================================================="
-            echo "RUN MIGRATIONS"
-            echo "==================================================="
-            # optional: run migration automatically with deploy
-            bin/console database:migrate --all # Run Shopware core migrations
-            php bin/console plugin:refresh
-
-            list_plugins_not_installed=$(php bin/console plugin:list --json | jq 'map(select(.installedAt == null)) | .[].name' -r)
-
-            for plugin in $list_plugins_not_installed; do
-                echo "Installing Plugin $plugin ..."
-                php bin/console plugin:install --activate --skip-asset-build $plugin
-            done
-
-            list_with_updates=$(php bin/console plugin:list --json | jq 'map(select(.upgradeVersion != null)) | .[].name' -r)
-
-            for plugin in $list_with_updates; do
-                echo "Updating Plugin $plugin ..."
-                php bin/console plugin:update --skip-asset-build $plugin
-            done
-
-            echo "==================================================="
-            echo "CLEAR CACHES"
-            echo "==================================================="
-            # run cache clear commands, on grid environments this should run in the deploy hook,
-            # on dedicated generation 2, it will run as part of the pre_start hook (to be set up by Platform.sh support)
-            if [ -z "$PLATFORM_REGISTRY_NUMBER" ]; then
-                sh bin/prestart_cacheclear.sh
-            else
-                # on dedicated gen 2, we need to explictly clear the redis cache since redis is not available during pre_start
-                bin/console cache:pool:clear cache.object
-            fi
-
-            echo "==================================================="
-            echo "SETUP FASTLY AND CLEAR OPCACHE"
-            echo "==================================================="
-            if [ "$PLATFORM_ENVIRONMENT_TYPE" = "production" ] || [ "$PLATFORM_ENVIRONMENT_TYPE" = "stage" ]; then
-                if [ -e bin/setup-fastly.sh ]; then
-                    echo "Running setup-fastly.sh script"
-                    ./bin/setup-fastly.sh
-                else
-                    echo "setup-fastly.sh script not found"
-                fi
-            fi
+            php bin/console theme:compile --sync
 
-            # Send USR2 signal to php-fpm to clear the opcache
-            pkill -f -USR2 -u web php-fpm
     # The relationships of the application with services or other applications.
     # The left-hand side is the name of the relationship as it will be exposed
     # to the application in the PLATFORM_RELATIONSHIPS variable. The right-hand
@@ -229,26 +129,22 @@
             source: service
             service: fileshare
             source_path: "public/thumbnail"
-        "/config/secrets":
+        "/public/theme":
             source: service
             service: fileshare
-            source_path: "config/secrets"
+            source_path: "public/theme"
+        "/public/sitemap":
+            source: service
+            service: fileshare
+            source_path: "public/sitemap"
         "/var":
             source: service
             service: fileshare
             source_path: "var"
-        "/var/cache":
-            source: local
-            source_path: "var/cache"
-        "/installer":
+        "/localCache":
             source: local
-            source_path: "installer"
-        "/.global":
-            source: local
-            source_path: "global"
-        "/.cache":
-            source: local
-            source_path: ".cache"
+            source_path: "localCache"
+
     # The configuration of app when it is exposed to the web.
     web:
         locations:
@@ -265,9 +161,9 @@
         queue:
             disk: 128
             commands:
-                start: bin/console messenger:consume async failed --memory-limit=$(cat /run/config.json | jq .info.limits.memory)M --time-limit=295
+                start: APP_CACHE_DIR=/app/localCache bin/console messenger:consume async failed --memory-limit=$(cat /run/config.json | jq .info.limits.memory)M --time-limit=295
 
     crons:
         scheduler:
             spec: '*/5 * * * *'
-            cmd: 'php bin/console scheduled-task:run --no-wait'
+            cmd: 'APP_CACHE_DIR=/app/localCache php bin/console scheduled-task:run --no-wait'
diff --git a/shopware/paas-meta/6.4/.platform/services.yaml b/shopware/paas-meta/6.6/.platform/services.yaml
index 0fe0fe8..b672dbc 100644
--- a/shopware/paas-meta/6.4/.platform/services.yaml
+++ b/shopware/paas-meta/6.6/.platform/services.yaml
@@ -1,5 +1,5 @@
 db:
-    type: mariadb:10.6
+    type: mariadb:11.2
     disk: 2048
 cacheredis:
     type: redis:7.0
diff --git a/shopware/paas-meta/6.4/bin/prestart_cacheclear.sh b/shopware/paas-meta/6.4/bin/prestart_cacheclear.sh
deleted file mode 100755
index 8b3bc5a..0000000
--- a/shopware/paas-meta/6.4/bin/prestart_cacheclear.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env sh
-# This script is run as part of the .platform.app.yaml deployment step
-# On dedicated generation 2 clusters, this should be setup by Platform.sh team as part of pre_start hook
-
-set -e
-
-echo "removing var/cache/${APP_ENV}_*/*.*"
-rm -Rf var/cache/${APP_ENV}_*/*.*
-
-echo "clearing application cache"
-php bin/console cache:clear
-
-echo "done executing pre_start cache clear"
\ No newline at end of file
diff --git a/shopware/paas-meta/6.4/config/packages/paas.yaml b/shopware/paas-meta/6.6/config/packages/paas.yaml
index bb46e57..6ae4acb 100644
--- a/shopware/paas-meta/6.4/config/packages/paas.yaml
+++ b/shopware/paas-meta/6.6/config/packages/paas.yaml
@@ -1,47 +1,46 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/shopware/shopware/refs/heads/trunk/config-schema.json
 # This file contains all default configuration or PaaS
 
 framework:
     session:
-        handler_id: "%env(CACHE_URL)%/%env(int:default:default_redis_database:REDIS_SESSION_DATABASE)%"
+        handler_id: "%env(CACHE_URL)%/2"
     cache:
         app: cache.adapter.redis
         system: cache.adapter.redis
-        default_redis_provider: "%env(CACHE_URL)%/%env(int:default:default_redis_database:REDIS_CACHE_DATABASE)%"
+        default_redis_provider: "%env(CACHE_URL)%/0"
 
 shopware:
     api:
         jwt_key:
-            private_key_path: '%env(base64:JWT_PRIVATE_KEY)%'
-            public_key_path: '%env(base64:JWT_PUBLIC_KEY)%'
+            use_app_secret: true
     admin_worker:
         enable_admin_worker: false
+        enable_queue_stats_worker: false
     deployment:
         cluster_setup: true
+    dompdf:
+        options:
+            tempDir: '%kernel.project_dir%/var/dompdf/tempDir'
+            fontDir: '%kernel.project_dir%/var/dompdf/fontDir'
+            fontCache: '%kernel.project_dir%/var/dompdf/fontCache'
 
-when@prod:
-    monolog:
-        handlers:
-            main:
-                type: fingers_crossed
-                action_level: error
-                handler: nested
-                excluded_http_codes: [404, 405]
-                buffer_size: 50 # How many messages should be saved? Prevent memory leaks
-            nested:
-                type: stream
-                path: php://stderr
-                level: debug
-                formatter: monolog.formatter.json
-            console:
-                type: console
-                process_psr_3_messages: false
-                channels: ["!event", "!doctrine"]
-
-storefront:
-    theme:
-        config_loader_id: Shopware\Storefront\Theme\ConfigLoader\StaticFileConfigLoader
-        available_theme_provider: Shopware\Storefront\Theme\ConfigLoader\StaticFileAvailableThemeProvider
-        theme_path_builder_id: Shopware\Storefront\Theme\MD5ThemePathBuilder
+monolog:
+    handlers:
+        main:
+            type: fingers_crossed
+            action_level: error
+            handler: nested
+            excluded_http_codes: [404, 405]
+            buffer_size: 50
+        nested:
+            type: stream
+            path: php://stderr
+            level: debug
+            formatter: monolog.formatter.json
+        console:
+            type: console
+            process_psr_3_messages: false
+            channels: ["!event", "!doctrine"]
 
 elasticsearch:
     index_settings:
diff --git a/shopware/paas-meta/6.4/files/theme-config/6753315de5ae4e9081228ff9d6e7b802.json b/shopware/paas-meta/6.4/files/theme-config/6753315de5ae4e9081228ff9d6e7b802.json
deleted file mode 100644
index f96ebb6..0000000
--- a/shopware/paas-meta/6.4/files/theme-config/6753315de5ae4e9081228ff9d6e7b802.json
+++ /dev/null
@@ -1 +0,0 @@
-{"themeConfig":{"blocks":{"themeColors":{"label":{"en-GB":"Theme colours","de-DE":"Theme-Farben"}},"typography":{"label":{"en-GB":"Typography","de-DE":"Typografie"}},"eCommerce":{"label":{"en-GB":"E-Commerce","de-DE":"E-Commerce"}},"statusColors":{"label":{"en-GB":"Status messages","de-DE":"Status-Ausgaben"}},"media":{"label":{"en-GB":"Media","de-DE":"Medien"}},"unordered":{"label":{"en-GB":"Misc","de-DE":"Sonstige"}}},"fields":{"sw-color-brand-primary":{"label":{"en-GB":"Primary colour","de-DE":"Prim\u00e4rfarbe"},"type":"color","value":"#008490","editable":true,"block":"themeColors","order":100},"sw-color-brand-secondary":{"label":{"en-GB":"Secondary colour","de-DE":"Sekund\u00e4rfarbe"},"type":"color","value":"#526e7f","editable":true,"block":"themeColors","order":200},"sw-border-color":{"label":{"en-GB":"Border","de-DE":"Rahmen"},"type":"color","value":"#bcc1c7","editable":true,"block":"themeColors","order":300},"sw-background-color":{"label":{"en-GB":"Background","de-DE":"Hintergrund"},"type":"color","value":"#fff","editable":true,"block":"themeColors","order":400},"sw-color-success":{"label":{"en-GB":"Success","de-DE":"Erfolg"},"type":"color","value":"#3cc261","editable":true,"block":"statusColors","order":100},"sw-color-info":{"label":{"en-GB":"Information","de-DE":"Information"},"type":"color","value":"#26b6cf","editable":true,"block":"statusColors","order":200},"sw-color-warning":{"label":{"en-GB":"Notice","de-DE":"Hinweis"},"type":"color","value":"#ffbd5d","editable":true,"block":"statusColors","order":300},"sw-color-danger":{"label":{"en-GB":"Error","de-DE":"Fehler"},"type":"color","value":"#e52427","editable":true,"block":"statusColors","order":400},"sw-font-family-base":{"label":{"en-GB":"Fonttype text","de-DE":"Schriftart Text"},"type":"fontFamily","value":"'Inter', sans-serif","editable":true,"block":"typography","order":100},"sw-text-color":{"label":{"en-GB":"Text colour","de-DE":"Textfarbe"},"type":"color","value":"#4a545b","editable":true,"block":"typography","order":200},"sw-font-family-headline":{"label":{"en-GB":"Fonttype headline","de-DE":"Schriftart \u00dcberschrift"},"type":"fontFamily","value":"'Inter', sans-serif","editable":true,"block":"typography","order":300},"sw-headline-color":{"label":{"en-GB":"Headline colour","de-DE":"\u00dcberschriftfarbe"},"type":"color","value":"#4a545b","editable":true,"block":"typography","order":400},"sw-color-price":{"label":{"en-GB":"Price","de-DE":"Preis"},"type":"color","value":"#4a545b","editable":true,"block":"eCommerce","order":100},"sw-color-buy-button":{"label":{"en-GB":"Buy button","de-DE":"Kaufen-Button"},"type":"color","value":"#008490","editable":true,"block":"eCommerce","order":200},"sw-color-buy-button-text":{"label":{"en-GB":"Buy button text","de-DE":"Kaufen-Button Text"},"type":"color","value":"#fff","editable":true,"block":"eCommerce","order":300},"sw-logo-desktop":{"label":{"en-GB":"Desktop","de-DE":"Desktop"},"helpText":{"en-GB":"Displayed for viewports of above 991px","de-DE":"Wird \u00fcber einem Viewport von 991px angezeigt"},"type":"media","value":"790fc674240a45cbb4dc5dba98920fe8","editable":true,"block":"media","order":100,"fullWidth":true},"sw-logo-tablet":{"label":{"en-GB":"Tablet","de-DE":"Tablet"},"helpText":{"en-GB":"Displayed between a viewport of 767px to 991px","de-DE":"Wird zwischen einem viewport von 767px bis 991px angezeigt"},"type":"media","value":"790fc674240a45cbb4dc5dba98920fe8","editable":true,"block":"media","order":200,"fullWidth":true},"sw-logo-mobile":{"label":{"en-GB":"Mobile","de-DE":"Mobil"},"helpText":{"en-GB":"Displayed up to a viewport of 767px","de-DE":"Wird bis zu einem Viewport von 767px angezeigt"},"type":"media","value":"790fc674240a45cbb4dc5dba98920fe8","editable":true,"block":"media","order":300,"fullWidth":true},"sw-logo-share":{"label":{"en-GB":"App & share icon","de-DE":"App- & Share-Icon"},"type":"media","value":"","editable":true,"block":"media","order":400},"sw-logo-favicon":{"label":{"en-GB":"Favicon","de-DE":"Favicon"},"type":"media","value":"d095060a4539402a9c686948ff307a0b","editable":true,"block":"media","order":500}},"sw-color-brand-primary":{"name":"sw-color-brand-primary","label":{"en-GB":"Primary colour","de-DE":"Prim\u00e4rfarbe"},"helpText":null,"type":"color","value":"#008490","editable":true,"block":"themeColors","section":null,"tab":null,"order":100,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-color-brand-secondary":{"name":"sw-color-brand-secondary","label":{"en-GB":"Secondary colour","de-DE":"Sekund\u00e4rfarbe"},"helpText":null,"type":"color","value":"#526e7f","editable":true,"block":"themeColors","section":null,"tab":null,"order":200,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-border-color":{"name":"sw-border-color","label":{"en-GB":"Border","de-DE":"Rahmen"},"helpText":null,"type":"color","value":"#bcc1c7","editable":true,"block":"themeColors","section":null,"tab":null,"order":300,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-background-color":{"name":"sw-background-color","label":{"en-GB":"Background","de-DE":"Hintergrund"},"helpText":null,"type":"color","value":"#fff","editable":true,"block":"themeColors","section":null,"tab":null,"order":400,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-color-success":{"name":"sw-color-success","label":{"en-GB":"Success","de-DE":"Erfolg"},"helpText":null,"type":"color","value":"#3cc261","editable":true,"block":"statusColors","section":null,"tab":null,"order":100,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-color-info":{"name":"sw-color-info","label":{"en-GB":"Information","de-DE":"Information"},"helpText":null,"type":"color","value":"#26b6cf","editable":true,"block":"statusColors","section":null,"tab":null,"order":200,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-color-warning":{"name":"sw-color-warning","label":{"en-GB":"Notice","de-DE":"Hinweis"},"helpText":null,"type":"color","value":"#ffbd5d","editable":true,"block":"statusColors","section":null,"tab":null,"order":300,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-color-danger":{"name":"sw-color-danger","label":{"en-GB":"Error","de-DE":"Fehler"},"helpText":null,"type":"color","value":"#e52427","editable":true,"block":"statusColors","section":null,"tab":null,"order":400,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-font-family-base":{"name":"sw-font-family-base","label":{"en-GB":"Fonttype text","de-DE":"Schriftart Text"},"helpText":null,"type":"fontFamily","value":"'Inter', sans-serif","editable":true,"block":"typography","section":null,"tab":null,"order":100,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-text-color":{"name":"sw-text-color","label":{"en-GB":"Text colour","de-DE":"Textfarbe"},"helpText":null,"type":"color","value":"#4a545b","editable":true,"block":"typography","section":null,"tab":null,"order":200,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-font-family-headline":{"name":"sw-font-family-headline","label":{"en-GB":"Fonttype headline","de-DE":"Schriftart \u00dcberschrift"},"helpText":null,"type":"fontFamily","value":"'Inter', sans-serif","editable":true,"block":"typography","section":null,"tab":null,"order":300,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-headline-color":{"name":"sw-headline-color","label":{"en-GB":"Headline colour","de-DE":"\u00dcberschriftfarbe"},"helpText":null,"type":"color","value":"#4a545b","editable":true,"block":"typography","section":null,"tab":null,"order":400,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-color-price":{"name":"sw-color-price","label":{"en-GB":"Price","de-DE":"Preis"},"helpText":null,"type":"color","value":"#4a545b","editable":true,"block":"eCommerce","section":null,"tab":null,"order":100,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-color-buy-button":{"name":"sw-color-buy-button","label":{"en-GB":"Buy button","de-DE":"Kaufen-Button"},"helpText":null,"type":"color","value":"#008490","editable":true,"block":"eCommerce","section":null,"tab":null,"order":200,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-color-buy-button-text":{"name":"sw-color-buy-button-text","label":{"en-GB":"Buy button text","de-DE":"Kaufen-Button Text"},"helpText":null,"type":"color","value":"#fff","editable":true,"block":"eCommerce","section":null,"tab":null,"order":300,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-logo-desktop":{"name":"sw-logo-desktop","label":{"en-GB":"Desktop","de-DE":"Desktop"},"helpText":{"en-GB":"Displayed for viewports of above 991px","de-DE":"Wird \u00fcber einem Viewport von 991px angezeigt"},"type":"media","value":"https:\/\/pr-18-yjncdpi-p272hx6fwtpmm.eu-5.platformsh.site\/\/media\/4b\/7c\/5f\/1622109741\/demostore-logo.png","editable":true,"block":"media","section":null,"tab":null,"order":100,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":true,"extensions":[]},"sw-logo-tablet":{"name":"sw-logo-tablet","label":{"en-GB":"Tablet","de-DE":"Tablet"},"helpText":{"en-GB":"Displayed between a viewport of 767px to 991px","de-DE":"Wird zwischen einem viewport von 767px bis 991px angezeigt"},"type":"media","value":"https:\/\/pr-18-yjncdpi-p272hx6fwtpmm.eu-5.platformsh.site\/\/media\/4b\/7c\/5f\/1622109741\/demostore-logo.png","editable":true,"block":"media","section":null,"tab":null,"order":200,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":true,"extensions":[]},"sw-logo-mobile":{"name":"sw-logo-mobile","label":{"en-GB":"Mobile","de-DE":"Mobil"},"helpText":{"en-GB":"Displayed up to a viewport of 767px","de-DE":"Wird bis zu einem Viewport von 767px angezeigt"},"type":"media","value":"https:\/\/pr-18-yjncdpi-p272hx6fwtpmm.eu-5.platformsh.site\/\/media\/4b\/7c\/5f\/1622109741\/demostore-logo.png","editable":true,"block":"media","section":null,"tab":null,"order":300,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":true,"extensions":[]},"sw-logo-share":{"name":"sw-logo-share","label":{"en-GB":"App & share icon","de-DE":"App- & Share-Icon"},"helpText":null,"type":"media","value":"","editable":true,"block":"media","section":null,"tab":null,"order":400,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]},"sw-logo-favicon":{"name":"sw-logo-favicon","label":{"en-GB":"Favicon","de-DE":"Favicon"},"helpText":null,"type":"media","value":"https:\/\/pr-18-yjncdpi-p272hx6fwtpmm.eu-5.platformsh.site\/\/media\/ee\/67\/8a\/1622109741\/favicon.png","editable":true,"block":"media","section":null,"tab":null,"order":500,"sectionOrder":null,"blockOrder":null,"tabOrder":null,"custom":null,"scss":null,"fullWidth":null,"extensions":[]}},"technicalName":"Storefront","name":"Shopware default theme","previewMedia":"vendor\/shopware\/storefront\/Resources\/app\/storefront\/dist\/assets\/defaultThemePreview.jpg","author":"shopware AG","isTheme":true,"styleFiles":[{"filepath":"\/app\/vendor\/shopware\/storefront\/Resources\/app\/storefront\/src\/scss\/base.scss","resolveMapping":{"vendor":"\/app\/vendor\/shopware\/storefront\/Resources\/app\/storefront\/vendor"},"extensions":[]},{"filepath":"\/app\/vendor\/shopware\/storefront\/Resources\/app\/storefront\/src\/scss\/skin\/shopware\/_base.scss","resolveMapping":{"vendor":"\/app\/vendor\/shopware\/storefront\/Resources\/app\/storefront\/vendor"},"extensions":[]},{"filepath":"@Plugins","resolveMapping":[],"extensions":[]}],"scriptFiles":[{"filepath":"vendor\/shopware\/storefront\/Resources\/app\/storefront\/dist\/js\/vendor-node.js","resolveMapping":[],"extensions":[]},{"filepath":"vendor\/shopware\/storefront\/Resources\/app\/storefront\/dist\/js\/vendor-shared.js","resolveMapping":[],"extensions":[]},{"filepath":"vendor\/shopware\/storefront\/Resources\/app\/storefront\/dist\/js\/runtime.js","resolveMapping":[],"extensions":[]},{"filepath":"vendor\/shopware\/storefront\/Resources\/app\/storefront\/dist\/storefront\/js\/storefront.js","resolveMapping":[],"extensions":[]},{"filepath":"@Plugins","resolveMapping":[],"extensions":[]}],"storefrontEntryFilepath":"vendor\/shopware\/storefront\/Resources\/app\/storefront\/src\/main.js","basePath":"vendor\/shopware\/storefront\/Resources","assetPaths":["vendor\/shopware\/storefront\/Resources\/app\/storefront\/dist\/assets"],"viewInheritance":[],"iconSets":[],"extensions":[]}
diff --git a/shopware/paas-meta/6.4/files/theme-config/index.json b/shopware/paas-meta/6.4/files/theme-config/index.json
deleted file mode 100644
index d24533b..0000000
--- a/shopware/paas-meta/6.4/files/theme-config/index.json
+++ /dev/null
@@ -1 +0,0 @@
-{"a3b6618b39d549fc87c97fb2422d085f":"6753315de5ae4e9081228ff9d6e7b802"}
diff --git a/shopware/paas-meta/6.4/manifest.json b/shopware/paas-meta/6.6/manifest.json
index 2ba26a6..5fc5880 100644
--- a/shopware/paas-meta/6.4/manifest.json
+++ b/shopware/paas-meta/6.6/manifest.json
@@ -4,15 +4,13 @@
         ".platform/": ".platform/",
         "bin/": "%BIN_DIR%/",
         "config/": "%CONFIG_DIR%/",
-        "files/": "files/"
+        "files/": "files/",
+        "root/": ""
     },
     "container": {
         "default_redis_database": "0",
         "default_redis_host": "rediscache.internal",
         "default_redis_port": "6379",
         "env(CACHE_URL)": "redis://localhost"
-    },
-    "gitignore": [
-        "!/files/theme-config"
-    ]
+    }
 }
diff --git a/shopware/paas-meta/6.6/root/.environment b/shopware/paas-meta/6.6/root/.environment
new file mode 100644
index 0000000..4c668b5
--- /dev/null
+++ b/shopware/paas-meta/6.6/root/.environment
@@ -0,0 +1 @@
+export APP_CACHE_DIR=$PLATFORM_APP_DIR/localCache
diff --git a/shopware/paas-meta/6.6/root/.shopware-project.yaml b/shopware/paas-meta/6.6/root/.shopware-project.yaml
new file mode 100644
index 0000000..22acd5d
--- /dev/null
+++ b/shopware/paas-meta/6.6/root/.shopware-project.yaml
@@ -0,0 +1,3 @@
+deployment:
+    cache:
+        always_clear: true

shopware/platform

6.4 vs 6.6
diff --git a/shopware/platform/6.4/bin/build-administration.sh b/shopware/platform/6.6/bin/build-administration.sh
index 063bcaa..42f6c90 100755
--- a/shopware/platform/6.4/bin/build-administration.sh
+++ b/shopware/platform/6.6/bin/build-administration.sh
@@ -5,6 +5,9 @@ CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
 
 export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
 export ENV_FILE=${ENV_FILE:-"${PROJECT_ROOT}/.env"}
+export NPM_CONFIG_FUND=false
+export NPM_CONFIG_AUDIT=false
+export NPM_CONFIG_UPDATE_NOTIFIER=false
 
 # shellcheck source=functions.sh
 source "${PROJECT_ROOT}/bin/functions.sh"
@@ -72,7 +75,7 @@ else
     echo "Cannot check extensions for required npm installations as jq is not installed"
 fi
 
-(cd "${ADMIN_ROOT}"/Resources/app/administration && npm install --no-audit --prefer-offline)
+(cd "${ADMIN_ROOT}"/Resources/app/administration && npm install --prefer-offline --production)
 
 # Dump entity schema
 if [[ -z "${SHOPWARE_SKIP_ENTITY_SCHEMA_DUMP:-""}" ]] && [[ -f "${ADMIN_ROOT}"/Resources/app/administration/scripts/entitySchemaConverter/entity-schema-converter.ts ]]; then
diff --git a/shopware/platform/6.4/bin/build-storefront.sh b/shopware/platform/6.6/bin/build-storefront.sh
index 5bf0af2..90b374f 100755
--- a/shopware/platform/6.4/bin/build-storefront.sh
+++ b/shopware/platform/6.6/bin/build-storefront.sh
@@ -7,6 +7,9 @@ set -euo pipefail
 
 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
 export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
+export NPM_CONFIG_FUND=false
+export NPM_CONFIG_AUDIT=false
+export NPM_CONFIG_UPDATE_NOTIFIER=false
 
 if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
     STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Storefront"}"
@@ -48,7 +51,7 @@ if [[ $(command -v jq) ]]; then
         if [[ -f "$path/package.json" && ! -d "$path/node_modules" && $name != "storefront" ]]; then
             echo "=> Installing npm dependencies for ${name}"
 
-            npm install --prefix "$path" --no-audit --prefer-offline
+            npm install --prefix "$path" --prefer-offline
         fi
     done
     cd "$OLDPWD" || exit
@@ -56,8 +59,12 @@ else
     echo "Cannot check extensions for required npm installations as jq is not installed"
 fi
 
-npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront install --no-audit --prefer-offline
+npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront install --prefer-offline --production
 node "${STOREFRONT_ROOT}"/Resources/app/storefront/copy-to-vendor.js
 npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront run production
 [[ ${SHOPWARE_SKIP_ASSET_COPY:-""} ]] ||"${BIN_TOOL}" assets:install
-[[ ${SHOPWARE_SKIP_THEME_COMPILE:-""} ]] || "${BIN_TOOL}" theme:compile
+[[ ${SHOPWARE_SKIP_THEME_COMPILE:-""} ]] || "${BIN_TOOL}" theme:compile --active-only
+
+if ! [ "${1:-default}" = "--keep-cache" ]; then
+    "${BIN_TOOL}" cache:clear
+fi
diff --git a/shopware/platform/6.4/bin/ci b/shopware/platform/6.6/bin/ci
index e9f453b..661c0fa 100755
--- a/shopware/platform/6.4/bin/ci
+++ b/shopware/platform/6.6/bin/ci
@@ -3,7 +3,6 @@
 
 use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
 use Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader;
-use Shopware\Core\HttpKernel;
 use Symfony\Bundle\FrameworkBundle\Console\Application;
 use Symfony\Component\Console\Input\ArgvInput;
 
@@ -39,18 +38,12 @@ return static function (array &$context) {
         $_SERVER['DATABASE_URL'] = 'mysql://_placeholder.test';
     }
 
-    if (method_exists(KernelFactory::class, "create")) {
-        $kernel = KernelFactory::create(
-            environment: $env,
-            debug: $debug,
-            classLoader: $classLoader,
-            pluginLoader: new ComposerPluginLoader($classLoader, null)
-        );
-    } else {
-        $kernel = new HttpKernel($env, $debug, $classLoader);
-        $kernel->setPluginLoader(new ComposerPluginLoader($classLoader, null));
-        $kernel = $kernel->getKernel();
-    }
+    $kernel = KernelFactory::create(
+        environment: $env,
+        debug: $debug,
+        classLoader: $classLoader,
+        pluginLoader: new ComposerPluginLoader($classLoader, null),
+    );
 
     $application = new Application($kernel);
     $kernel->boot();
diff --git a/shopware/platform/6.4/bin/console b/shopware/platform/6.6/bin/console
index 6ec51be..5d89fb3 100755
--- a/shopware/platform/6.4/bin/console
+++ b/shopware/platform/6.6/bin/console
@@ -4,7 +4,6 @@
 use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
 use Shopware\Core\Framework\Plugin\KernelPluginLoader\DbalKernelPluginLoader;
 use Shopware\Core\Framework\Plugin\KernelPluginLoader\StaticKernelPluginLoader;
-use Shopware\Core\HttpKernel;
 use Shopware\Core\Kernel;
 use Symfony\Bundle\FrameworkBundle\Console\Application;
 use Symfony\Component\Console\Input\ArgvInput;
@@ -40,25 +39,16 @@ return static function (array &$context) {
         $context['INSTALL'] = true;
     }
 
-    if (trim($context['DATABASE_URL'] ?? '') === '') {
-        // fake DATABASE_URL
-        $_SERVER['DATABASE_URL'] = 'mysql://_placeholder.test';
-    } else if (!isset($context['INSTALL'])) {
-        $pluginLoader = new DbalKernelPluginLoader($classLoader, null, \Shopware\Core\Kernel::getConnection());
+    if (trim($context['DATABASE_URL'] ?? '') !== '' && !isset($context['INSTALL'])) {
+        $pluginLoader = new DbalKernelPluginLoader($classLoader, null, Kernel::getConnection());
     }
 
-    if (method_exists(KernelFactory::class, "create")) {
-        $kernel = KernelFactory::create(
-            environment: $env,
-            debug: $debug,
-            classLoader: $classLoader,
-            pluginLoader: $pluginLoader
-        );
-    } else {
-        $kernel = new HttpKernel($env, $debug, $classLoader);
-        $kernel->setPluginLoader($pluginLoader);
-        $kernel = $kernel->getKernel();
-    }
+    $kernel = KernelFactory::create(
+        environment: $env,
+        debug: $debug,
+        classLoader: $classLoader,
+        pluginLoader: $pluginLoader
+    );
 
     $application = new Application($kernel);
     $kernel->boot();
diff --git a/shopware/platform/6.4/bin/watch-administration.sh b/shopware/platform/6.6/bin/watch-administration.sh
index 93d9b9e..fc53b02 100755
--- a/shopware/platform/6.4/bin/watch-administration.sh
+++ b/shopware/platform/6.6/bin/watch-administration.sh
@@ -56,7 +56,7 @@ else
     echo "Cannot check extensions for required npm installations as jq is not installed"
 fi
 
-if [ ! -d vendor/shopware/administration/Resources/app/administration/node_modules ]; then
+if [ ! -d vendor/shopware/administration/Resources/app/administration/node_modules/webpack-dev-server ]; then
     npm install --prefix vendor/shopware/administration/Resources/app/administration/
 fi
 
diff --git a/shopware/platform/6.4/bin/watch-storefront.sh b/shopware/platform/6.6/bin/watch-storefront.sh
index f6c9015..3e6a4fa 100755
--- a/shopware/platform/6.4/bin/watch-storefront.sh
+++ b/shopware/platform/6.6/bin/watch-storefront.sh
@@ -4,6 +4,9 @@ CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
 
 export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
 export ENV_FILE=${ENV_FILE:-"${PROJECT_ROOT}/.env"}
+export NPM_CONFIG_FUND=false
+export NPM_CONFIG_AUDIT=false
+export NPM_CONFIG_UPDATE_NOTIFIER=false
 
 # shellcheck source=functions.sh
 source "${PROJECT_ROOT}/bin/functions.sh"
@@ -23,8 +26,19 @@ export PROXY_URL
 export STOREFRONT_ASSETS_PORT
 export STOREFRONT_PROXY_PORT
 
-DATABASE_URL="" "${CWD}"/console feature:dump
-"${CWD}"/console theme:compile
+if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
+    STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Storefront"}"
+else
+    STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/storefront"}"
+fi
+
+if [[ ! -d "${STOREFRONT_ROOT}"/Resources/app/storefront/node_modules/webpack-dev-server ]]; then
+    npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront install --prefer-offline
+fi
+
+"${CWD}"/console bundle:dump
+"${CWD}"/console feature:dump
+"${CWD}"/console theme:compile --active-only
 "${CWD}"/console theme:dump
 
 if [[ $(command -v jq) ]]; then
@@ -55,4 +69,4 @@ else
     echo "Cannot check extensions for required npm installations as jq is not installed"
 fi
 
-npm --prefix vendor/shopware/storefront/Resources/app/storefront/ run-script hot-proxy
+npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront run-script hot-proxy
diff --git a/shopware/platform/6.4/config/packages/elasticsearch.yaml b/shopware/platform/6.4/config/packages/elasticsearch.yaml
deleted file mode 100644
index 65f29c9..0000000
--- a/shopware/platform/6.4/config/packages/elasticsearch.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-elasticsearch:
-    hosts: "%env(string:OPENSEARCH_URL)%"
-
diff --git a/shopware/platform/6.4/config/packages/shopware.yaml b/shopware/platform/6.4/config/packages/shopware.yaml
deleted file mode 100644
index 0ecf72d..0000000
--- a/shopware/platform/6.4/config/packages/shopware.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-# Using the webupdater will overwrite this file. Create a second file z-shopware.yaml to override the config
-
-shopware:
-    auto_update:
-        # Disables the auto updater in the UI
-#        enabled: false
-    admin_worker:
-# The Admin worker should be disabled on production server.
-#       enable_admin_worker: false
diff --git a/shopware/platform/6.4/manifest.json b/shopware/platform/6.6/manifest.json
index 24d2f4e..9c8883f 100644
--- a/shopware/platform/6.4/manifest.json
+++ b/shopware/platform/6.6/manifest.json
@@ -56,7 +56,7 @@
         "DATABASE_URL": "mysql:\/\/root:root@localhost\/shopware",
         "#1": "With Shopware 6.4.17.0 the MAILER_DSN variable will be used in this template instead of MAILER_URL",
         "MAILER_URL": "null:\/\/null",
-        "STOREFRONT_PROXY_URL": "http:\/\/localhost",
+        "PROXY_URL": "http:\/\/localhost",
         "SHOPWARE_HTTP_CACHE_ENABLED": "1",
         "SHOPWARE_HTTP_DEFAULT_TTL": "7200",
         "OPENSEARCH_URL": "http:\/\/localhost:9200",
@@ -80,8 +80,7 @@
         "!\/var\/.htaccess",
         "\/auth.json",
         "\/install.lock",
-        "public\/asset-manifest.json",
-        "files\/asset-manifest.json"
+        "public\/asset-manifest.json"
     ],
     "composer-scripts": {
         "assets:install": "symfony-cmd"
diff --git a/shopware/platform/6.4/post-install.txt b/shopware/platform/6.6/post-install.txt
index 36869a6..18d1b8f 100644
--- a/shopware/platform/6.4/post-install.txt
+++ b/shopware/platform/6.6/post-install.txt
@@ -19,8 +19,3 @@
     5. Optional: Open the Mail catcher with symfony open:local:webmail
 
   * Read the documentation at https://developer.shopware.com/
-
-  * Warning if updating from older versions of the production template:
-
-    There might be old `require-dev` dependencies in your `composer.json` file. Please remove them before updating shopware/core to versions >= v6.4.
-    You can do it using this command: composer config --unset require-dev
diff --git a/shopware/platform/6.4/public/index.php b/shopware/platform/6.6/public/index.php
index eb330c6..fe36139 100644
--- a/shopware/platform/6.4/public/index.php
+++ b/shopware/platform/6.6/public/index.php
@@ -2,13 +2,8 @@
 
 use Shopware\Core\DevOps\Environment\EnvironmentHelper;
 use Shopware\Core\Framework\Plugin\KernelPluginLoader\ComposerPluginLoader;
-use Shopware\Core\HttpKernel;
 use Shopware\Core\Installer\InstallerKernel;
-use Symfony\Component\HttpFoundation\Request;
 use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\TerminableInterface;
 
 $_SERVER['SCRIPT_FILENAME'] = __FILE__;
 
@@ -34,62 +29,20 @@ return function (array $context) {
     $appEnv = $context['APP_ENV'] ?? 'dev';
     $debug = (bool) ($context['APP_DEBUG'] ?? ($appEnv !== 'prod'));
 
-    $trustedProxies = $context['TRUSTED_PROXIES'] ?? false;
-    if ($trustedProxies) {
-        Request::setTrustedProxies(
-            explode(',', $trustedProxies),
-            Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
-        );
-    }
-
-    $trustedHosts = $context['TRUSTED_HOSTS'] ?? false;
-    if ($trustedHosts) {
-        Request::setTrustedHosts(explode(',', $trustedHosts));
-    }
-
     if (!EnvironmentHelper::getVariable('SHOPWARE_SKIP_WEBINSTALLER', false) && !file_exists(dirname(__DIR__) . '/install.lock')) {
         return new InstallerKernel($appEnv, $debug);
     }
 
-    if (method_exists(KernelFactory::class, "create")) {
-        $pluginLoader = null;
-        if (EnvironmentHelper::getVariable('COMPOSER_PLUGIN_LOADER', false)) {
-            $pluginLoader = new ComposerPluginLoader($classLoader, null);
-        }
-
-        return KernelFactory::create(
-            environment: $appEnv,
-            debug: $debug,
-            classLoader: $classLoader,
-            pluginLoader: $pluginLoader
-        );
-    }
-
-    $shopwareHttpKernel = new HttpKernel($appEnv, $debug, $classLoader);
+    $pluginLoader = null;
 
     if (EnvironmentHelper::getVariable('COMPOSER_PLUGIN_LOADER', false)) {
-        $shopwareHttpKernel->setPluginLoader(
-            new ComposerPluginLoader($classLoader, null)
-        );
+        $pluginLoader = new ComposerPluginLoader($classLoader, null);
     }
 
-    return new class($shopwareHttpKernel) implements HttpKernelInterface, TerminableInterface {
-        private HttpKernel $httpKernel;
-
-        public function __construct(HttpKernel $httpKernel)
-        {
-            $this->httpKernel = $httpKernel;
-        }
-
-        public function handle(Request $request, int $type = self::MAIN_REQUEST, bool $catch = true): Response
-        {
-            return $this->httpKernel->handle($request, $type, $catch)->getResponse();
-        }
-
-        public function terminate(Request $request, Response $response): void
-        {
-            $this->httpKernel->terminate($request, $response);
-        }
-    };
+    return KernelFactory::create(
+        environment: $appEnv,
+        debug: $debug,
+        classLoader: $classLoader,
+        pluginLoader: $pluginLoader,
+    );
 };
-
6.6 vs 6.7
diff --git a/shopware/platform/6.6/bin/build-js.sh b/shopware/platform/6.7/bin/build-js.sh
old mode 100755
new mode 100644
diff --git a/shopware/platform/6.6/bin/ci b/shopware/platform/6.7/bin/ci
old mode 100755
new mode 100644
diff --git a/shopware/platform/6.6/bin/console b/shopware/platform/6.7/bin/console
old mode 100755
new mode 100644
diff --git a/shopware/platform/6.6/bin/watch-storefront.sh b/shopware/platform/6.7/bin/watch-storefront.sh
index 3e6a4fa..7a9021a 100755
--- a/shopware/platform/6.6/bin/watch-storefront.sh
+++ b/shopware/platform/6.7/bin/watch-storefront.sh
@@ -21,10 +21,12 @@ eval "$curenv"
 set +o allexport
 
 export APP_URL
-export ESLINT_DISABLE
 export PROXY_URL
 export STOREFRONT_ASSETS_PORT
 export STOREFRONT_PROXY_PORT
+export STOREFRONT_HTTPS_KEY_FILE
+export STOREFRONT_HTTPS_CERTIFICATE_FILE
+export STOREFRONT_SKIP_SSL_CERT
 
 if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
     STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Storefront"}"
diff --git a/shopware/platform/6.6/public/.htaccess.dist b/shopware/platform/6.7/public/.htaccess.dist
index 62601e5..dab5148 100644
--- a/shopware/platform/6.6/public/.htaccess.dist
+++ b/shopware/platform/6.7/public/.htaccess.dist
@@ -26,6 +26,7 @@ DirectoryIndex index.php
     RewriteRule ^ - [L]
 
     # Rewrite all other queries to the front controller.
+    RewriteCond %{REQUEST_URI} !^/(theme|media|thumbnail|bundles|css|fonts|js|recovery|sitemap) [NC]    
     RewriteRule ^ %{ENV:BASE}/index.php [L]
 </IfModule>
 

shopware/storefront

6.4 vs 6.6
diff --git a/shopware/storefront/6.4/bin/build-storefront.sh b/shopware/storefront/6.6/bin/build-storefront.sh
index 5bf0af2..90b374f 100755
--- a/shopware/storefront/6.4/bin/build-storefront.sh
+++ b/shopware/storefront/6.6/bin/build-storefront.sh
@@ -7,6 +7,9 @@ set -euo pipefail
 
 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
 export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
+export NPM_CONFIG_FUND=false
+export NPM_CONFIG_AUDIT=false
+export NPM_CONFIG_UPDATE_NOTIFIER=false
 
 if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
     STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Storefront"}"
@@ -48,7 +51,7 @@ if [[ $(command -v jq) ]]; then
         if [[ -f "$path/package.json" && ! -d "$path/node_modules" && $name != "storefront" ]]; then
             echo "=> Installing npm dependencies for ${name}"
 
-            npm install --prefix "$path" --no-audit --prefer-offline
+            npm install --prefix "$path" --prefer-offline
         fi
     done
     cd "$OLDPWD" || exit
@@ -56,8 +59,12 @@ else
     echo "Cannot check extensions for required npm installations as jq is not installed"
 fi
 
-npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront install --no-audit --prefer-offline
+npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront install --prefer-offline --production
 node "${STOREFRONT_ROOT}"/Resources/app/storefront/copy-to-vendor.js
 npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront run production
 [[ ${SHOPWARE_SKIP_ASSET_COPY:-""} ]] ||"${BIN_TOOL}" assets:install
-[[ ${SHOPWARE_SKIP_THEME_COMPILE:-""} ]] || "${BIN_TOOL}" theme:compile
+[[ ${SHOPWARE_SKIP_THEME_COMPILE:-""} ]] || "${BIN_TOOL}" theme:compile --active-only
+
+if ! [ "${1:-default}" = "--keep-cache" ]; then
+    "${BIN_TOOL}" cache:clear
+fi
diff --git a/shopware/storefront/6.4/bin/watch-storefront.sh b/shopware/storefront/6.6/bin/watch-storefront.sh
index f6c9015..3e6a4fa 100755
--- a/shopware/storefront/6.4/bin/watch-storefront.sh
+++ b/shopware/storefront/6.6/bin/watch-storefront.sh
@@ -4,6 +4,9 @@ CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
 
 export PROJECT_ROOT="${PROJECT_ROOT:-"$(dirname "$CWD")"}"
 export ENV_FILE=${ENV_FILE:-"${PROJECT_ROOT}/.env"}
+export NPM_CONFIG_FUND=false
+export NPM_CONFIG_AUDIT=false
+export NPM_CONFIG_UPDATE_NOTIFIER=false
 
 # shellcheck source=functions.sh
 source "${PROJECT_ROOT}/bin/functions.sh"
@@ -23,8 +26,19 @@ export PROXY_URL
 export STOREFRONT_ASSETS_PORT
 export STOREFRONT_PROXY_PORT
 
-DATABASE_URL="" "${CWD}"/console feature:dump
-"${CWD}"/console theme:compile
+if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
+    STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Storefront"}"
+else
+    STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/storefront"}"
+fi
+
+if [[ ! -d "${STOREFRONT_ROOT}"/Resources/app/storefront/node_modules/webpack-dev-server ]]; then
+    npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront install --prefer-offline
+fi
+
+"${CWD}"/console bundle:dump
+"${CWD}"/console feature:dump
+"${CWD}"/console theme:compile --active-only
 "${CWD}"/console theme:dump
 
 if [[ $(command -v jq) ]]; then
@@ -55,4 +69,4 @@ else
     echo "Cannot check extensions for required npm installations as jq is not installed"
 fi
 
-npm --prefix vendor/shopware/storefront/Resources/app/storefront/ run-script hot-proxy
+npm --prefix "${STOREFRONT_ROOT}"/Resources/app/storefront run-script hot-proxy
diff --git a/shopware/storefront/6.4/manifest.json b/shopware/storefront/6.6/manifest.json
index 3536fe4..cb880b5 100644
--- a/shopware/storefront/6.4/manifest.json
+++ b/shopware/storefront/6.6/manifest.json
@@ -8,7 +8,7 @@
         "bin/": "%BIN_DIR%/"
     },
     "env": {
-        "STOREFRONT_PROXY_URL": "http://localhost",
+        "PROXY_URL": "http://localhost",
         "SHOPWARE_HTTP_CACHE_ENABLED": "1",
         "SHOPWARE_HTTP_DEFAULT_TTL": "7200"
     }
6.6 vs 6.7
diff --git a/shopware/storefront/6.6/bin/watch-storefront.sh b/shopware/storefront/6.7/bin/watch-storefront.sh
index 3e6a4fa..7a9021a 100755
--- a/shopware/storefront/6.6/bin/watch-storefront.sh
+++ b/shopware/storefront/6.7/bin/watch-storefront.sh
@@ -21,10 +21,12 @@ eval "$curenv"
 set +o allexport
 
 export APP_URL
-export ESLINT_DISABLE
 export PROXY_URL
 export STOREFRONT_ASSETS_PORT
 export STOREFRONT_PROXY_PORT
+export STOREFRONT_HTTPS_KEY_FILE
+export STOREFRONT_HTTPS_CERTIFICATE_FILE
+export STOREFRONT_SKIP_SSL_CERT
 
 if [[ -e "${PROJECT_ROOT}/vendor/shopware/platform" ]]; then
     STOREFRONT_ROOT="${STOREFRONT_ROOT:-"${PROJECT_ROOT}/vendor/shopware/platform/src/Storefront"}"

symfony/framework-bundle

5.4 vs 6.4
diff --git a/symfony/framework-bundle/5.4/config/services.yaml b/symfony/framework-bundle/6.4/config/services.yaml
index 7de630e..8a44167 100644
--- a/symfony/framework-bundle/5.4/config/services.yaml
+++ b/symfony/framework-bundle/6.4/config/services.yaml
@@ -14,3 +14,10 @@ services:
         # https://symfony.com/doc/current/service_container.html#binding-arguments-by-name-or-type
         #bind:
         #    'bool $isDebug': '%kernel.debug%'
+
+    App\:
+        resource: '../src/'
+        exclude:
+            - '../src/DependencyInjection/'
+            - '../src/Entity/'
+            - '../src/Kernel.php'
diff --git a/symfony/framework-bundle/5.4/manifest.json b/symfony/framework-bundle/6.4/manifest.json
index 6bd1973..4c566fb 100644
--- a/symfony/framework-bundle/5.4/manifest.json
+++ b/symfony/framework-bundle/6.4/manifest.json
@@ -3,6 +3,7 @@
         "Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle": ["all"]
     },
     "copy-from-recipe": {
-        "config/": "%CONFIG_DIR%/"
+        "config/": "%CONFIG_DIR%/",
+        "src/": "%SRC_DIR%/"
     }
 }
diff --git a/symfony/framework-bundle/6.4/src/Controller/.gitignore b/symfony/framework-bundle/6.4/src/Controller/.gitignore
new file mode 100644
index 0000000..e69de29

symfony/messenger

5.4 vs 6.0
diff --git a/symfony/messenger/5.4/config/packages/messenger.yaml b/symfony/messenger/5.4/config/packages/messenger.yaml
deleted file mode 100644
index ce25a11..0000000
--- a/symfony/messenger/5.4/config/packages/messenger.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-framework:
-    messenger:
-        # reset services after consuming messages
-        reset_on_message: true
-
-        # Uncomment this (and the failed transport below) to send failed messages to this transport for later handling.
-        # failure_transport: failed
-
-        transports:
-            # https://symfony.com/doc/current/messenger.html#transport-configuration
-            # async: '%env(MESSENGER_TRANSPORT_DSN)%'
-            # failed: 'doctrine://default?queue_name=failed'
-            # sync: 'sync://'
-
-        routing:
-            # Route your messages to the transports
-            # 'App\Message\YourMessage': async
diff --git a/symfony/messenger/5.4/post-install.txt b/symfony/messenger/5.4/post-install.txt
deleted file mode 100644
index 8844fe7..0000000
--- a/symfony/messenger/5.4/post-install.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-  * You're ready to use the Messenger component. You can define your own message buses
-    or start using the default one right now by injecting the message_bus service
-    or type-hinting Symfony\Component\Messenger\MessageBusInterface in your code.
-
-  * To send messages to a transport and handle them asynchronously:
-
-    1. Uncomment the MESSENGER_TRANSPORT_DSN env var in .env
-       and framework.messenger.transports.async in config/packages/messenger.yaml;
-    2. Route your message classes to the async transport in config/packages/messenger.yaml.
-
-  * Read the documentation at https://symfony.com/doc/current/messenger.html

symfony/routing

5.4 vs 6.4
diff --git a/symfony/routing/6.4/config/routes.yaml b/symfony/routing/6.4/config/routes.yaml
new file mode 100644
index 0000000..41ef814
--- /dev/null
+++ b/symfony/routing/6.4/config/routes.yaml
@@ -0,0 +1,5 @@
+controllers:
+    resource:
+        path: ../src/Controller/
+        namespace: App\Controller
+    type: attribute
diff --git a/symfony/routing/5.4/manifest.json b/symfony/routing/6.4/manifest.json
index 4eb44fd..9b758be 100644
--- a/symfony/routing/5.4/manifest.json
+++ b/symfony/routing/6.4/manifest.json
@@ -1,3 +1,6 @@
 {
-    "composer-scripts": {}
+    "composer-scripts": {},
+    "copy-from-recipe": {
+        "config/": "%CONFIG_DIR%/"
+    }
 }

@shyim shyim merged commit 56a388c into shopware:main Nov 27, 2024
1 of 2 checks passed
@shyim
Copy link
Member

shyim commented Nov 27, 2024

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants