chore(deps): 7.0.11 Composer 패키지 최신화 · 번들 확장 lock 재동기 · vendor 번들 재빌드
코어 composer update 69 패키지(Laravel 12.69.1 · Reverb 1.11.1 · Scout 11.6.1 · Monolog 3.11 · Symfony 7.4.18 등, 메이저 상향은 보류). 번들 확장 16개 lock content-hash 재동기(신규 2), 코어·이커머스 vendor-bundle.zip 재빌드(g7_version 7.0.11). vendor-bundle:build-all --check 가 미설치 확장을 「소스 경로 없음」으로 건너뛰어 _bundled 의 stale 번들이 점검을 통과하던 결함을 수정 — 판정 파일을 빌드·해시와 같은 규칙(_bundled 우선, 활성 폴백)으로 고르고 회귀 테스트 2건 추가. 회귀 점검: 변경 로그 대조 9축 + PHPUnit 4배치 + Chrome MCP 매트릭스 11축 통과.
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
- 코어 업데이트가 운영 `vendor/` 에 개발용 패키지가 있는지 확인해 로그에 남깁니다. 의존성 변경이 없어 재설치를 건너뛰는 경우에는 개발용 패키지가 그대로 남는다는 경고와 정리 명령을 함께 안내합니다.
|
||||
- 코어 업데이트가 끝나면 실행 중인 큐 워커에 재시작 신호를 보내, 워커를 손수 재시작하지 않아도 새 코드가 반영됩니다.
|
||||
- 「공개 자산 스토리지」를 지정하면 레이아웃 배경 이미지가 그 저장소에 저장됩니다. 이미 올라간 파일은 옮기지 않으며 각자 저장된 위치에서 그대로 서비스됩니다. 기존 첨부 저장소와 공개 자산 저장소를 같은 곳으로 지정한 경우에는 설정을 켜는 순간 이전에 올린 이미지도 저장소 주소로 바뀝니다. 자세한 사항은 관리자 > 환경설정 > 드라이버의 안내를 참고하세요.
|
||||
- PHP 의존성 패키지를 최신 안정 버전으로 갱신했습니다 (Laravel 12.69, Reverb 1.11, Scout 11.6, Monolog 3.11, Symfony 7.4.18 등). 각 패키지의 보안 수정과 오류 수정이 함께 반영되며, Composer 를 실행할 수 없는 환경을 위한 코어와 이커머스 모듈의 `vendor-bundle.zip` 도 같은 구성으로 다시 만들었습니다.
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -45,6 +46,7 @@
|
||||
- 화면 편집기에서 공통 레이아웃이나 확장이 넣은 요소를 고쳐도 저장되지 않던 문제를 수정했습니다. 편집은 되는데 저장 후 되돌아가 있었고 실행 취소로도 되살릴 수 없었습니다. 이제 그런 요소는 편집 대신 「공통 레이아웃 편집」·「확장 편집」 진입 안내가 표시되며, 옮기기·복제·삭제도 같은 기준으로 막힙니다.
|
||||
- 화면 편집기가 열리자마자 빈 화면이 되는 경우가 있던 문제를 수정했습니다. 편집기가 잠깐 보였다가 사라졌고, 새로고침에 따라 나타났다 사라졌다 했습니다.
|
||||
- 화면 편집기에서 환경설정과 연결된 항목(예: 헤더 로고)을 무심코 조작하면 그 연결이 소리 없이 끊기던 문제를 수정했습니다. 이제 그런 항목은 연결된 값이라는 안내와 원래 값이 표시되고, 「직접 지정으로 바꾸기」를 눌러야 편집할 수 있으며 「되돌리기」로 언제든 원래 연결로 복구할 수 있습니다.
|
||||
- `vendor-bundle:build-all --check` 가 설치되지 않은 번들 확장을 「소스 경로 없음」으로 건너뛰어, 그 확장의 vendor 번들이 갱신되지 않은 상태가 점검을 통과하던 문제를 수정했습니다. 이제 설치 여부와 무관하게 배포 원본 기준으로 판정합니다.
|
||||
|
||||
## [7.0.10] - 2026-09-06
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
namespace App\Console\Commands\Vendor\Concerns;
|
||||
|
||||
use App\Extension\Vendor\Exceptions\VendorInstallException;
|
||||
use App\Extension\Vendor\VendorBundleResult;
|
||||
use App\Extension\Vendor\VendorBundler;
|
||||
use App\Extension\Vendor\VendorBundleResult;
|
||||
use App\Extension\Vendor\VendorIntegrityChecker;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
@@ -210,14 +210,17 @@ trait RunsVendorBundleAction
|
||||
$sourcePath = $this->resolveSourcePath($target);
|
||||
$outputPath = $this->resolveOutputPath($target);
|
||||
|
||||
if (! is_dir($sourcePath)) {
|
||||
$this->warn("- $label: 소스 경로 없음 ($sourcePath)");
|
||||
// 판정 기준 파일은 빌드(VendorBundler::build / isStale)와 같은 규칙 — 출력(_bundled) 우선,
|
||||
// 없으면 활성 디렉토리 폴백. 활성 디렉토리만 보면 미설치 확장을 "소스 경로 없음" 으로
|
||||
// 보고해 _bundled 의 stale 번들이 --check 를 통과한다.
|
||||
$composerJsonPath = $this->resolveCheckFile($sourcePath, $outputPath, 'composer.json');
|
||||
if ($composerJsonPath === null) {
|
||||
if (! is_dir($sourcePath) && ! is_dir($outputPath)) {
|
||||
$this->warn("- $label: 경로 없음 ($outputPath)");
|
||||
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$composerJsonPath = $sourcePath.DIRECTORY_SEPARATOR.'composer.json';
|
||||
if (! is_file($composerJsonPath)) {
|
||||
$this->line("- $label: SKIPPED (composer.json 없음)");
|
||||
|
||||
return false;
|
||||
@@ -240,6 +243,24 @@ trait RunsVendorBundleAction
|
||||
return $stale;
|
||||
}
|
||||
|
||||
/**
|
||||
* --check 가 읽을 composer 파일 경로 — 출력(_bundled) 우선, 없으면 활성 디렉토리 폴백.
|
||||
*
|
||||
* VendorBundler::resolveHashTarget() 과 같은 규칙. 판정 파일이 빌드·해시 기준과
|
||||
* 다르면 --check 결과가 실제 stale 여부와 어긋난다.
|
||||
*/
|
||||
private function resolveCheckFile(string $sourcePath, string $outputPath, string $filename): ?string
|
||||
{
|
||||
$outputFile = $outputPath.DIRECTORY_SEPARATOR.$filename;
|
||||
if (is_file($outputFile)) {
|
||||
return $outputFile;
|
||||
}
|
||||
|
||||
$sourceFile = $sourcePath.DIRECTORY_SEPARATOR.$filename;
|
||||
|
||||
return is_file($sourceFile) ? $sourceFile : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* composer.json 에 외부 패키지 의존성이 있는지 확인합니다.
|
||||
*
|
||||
|
||||
Generated
+412
-415
File diff suppressed because it is too large
Load Diff
@@ -19,6 +19,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [0.1.1] - 2026-08-10
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "4eddbf75b302677f7e516f8a10d236dc",
|
||||
"content-hash": "71bfa007f76af57a7cc3d98cc663b171",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
|
||||
## [1.1.2] - 2026-09-08
|
||||
|
||||
### Changed
|
||||
|
||||
- Composer 잠금 파일을 최신 Composer 형식으로 갱신했습니다.
|
||||
|
||||
### Fixed
|
||||
|
||||
- 첨부파일을 올린 뒤 돌려주는 응답의 파일 주소 칸이 늘 비어 있던 문제를 수정했습니다. 이 칸을 읽어 연동하던 외부 도구는 주소를 얻지 못했습니다. 이제 게시판의 첨부 다운로드 주소가 채워지며, 이 주소는 비밀글·삭제글 확인을 그대로 거치므로 볼 수 없는 첨부가 열리지는 않습니다.
|
||||
|
||||
+1
-1
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
- 입금 기한 만료 주문 자동취소가 카드 등 결제창 결제까지 대상에 포함합니다. 종전에는 무통장입금·가상계좌만 정리되어, 결제창까지 갔으나 결제가 끝나지 않은 주문은 정리하는 주체가 없어 계속 남았습니다. 이제 주문 후 24시간이 지나면 함께 취소되며 미리 차감된 마일리지도 돌아옵니다. 결제가 이미 완료된 주문과 입금 대기 중인 가상계좌 주문은 대상이 아니며, 주문설정의 「만료 주문 자동취소」를 끄면 종전처럼 동작합니다.
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- 코어 최소 요구 버전을 7.0.10 으로 상향
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞추고, Composer 를 실행할 수 없는 환경을 위한 vendor 번들을 같은 구성으로 다시 만들었습니다. 포함된 패키지 버전은 바뀌지 않았습니다.
|
||||
|
||||
### Added
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "226f06cb690d9b15f95314738c32f711",
|
||||
"content-hash": "b0e08190b712afcc602a24f54098f5a8",
|
||||
"packages": [
|
||||
{
|
||||
"name": "ezyang/htmlpurifier",
|
||||
@@ -78,5 +78,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"generated_at": "2026-08-28T01:27:59+00:00",
|
||||
"generated_at": "2026-09-08T10:13:14+00:00",
|
||||
"generator": "g7 vendor-bundle:build",
|
||||
"target": "module:sirsoft-ecommerce",
|
||||
"composer_json_sha256": "4f224863e21777f5ef474a7fcfb7d5f66132551b4c58220a660bd3acb573dfdb",
|
||||
"composer_lock_sha256": "876ca9c2273a33baff878d25050a567018a946412db053930a7f548c4add595d",
|
||||
"zip_sha256": "5f954f1597fc2a39bb601af441e3af3768e303b835c9047f0ade71cb56aec66c",
|
||||
"zip_size": 435549,
|
||||
"composer_lock_sha256": "66ab3fbbe582562f86af06406f45164a2e3aa6790f5136dce9fd4f73944126a3",
|
||||
"zip_sha256": "713f98578a866fada6782d11f8c80ff13037f1faf0edaaa55f004ddc4e80d1b9",
|
||||
"zip_size": 435546,
|
||||
"package_count": 1,
|
||||
"php_requirement": "^8.2",
|
||||
"g7_version": "7.0.10",
|
||||
"g7_version": "7.0.11",
|
||||
"packages": [
|
||||
{
|
||||
"name": "ezyang/htmlpurifier",
|
||||
|
||||
Binary file not shown.
@@ -6,6 +6,10 @@
|
||||
|
||||
## [1.1.2] - 2026-09-08
|
||||
|
||||
### Changed
|
||||
|
||||
- Composer 잠금 파일을 최신 Composer 형식으로 갱신했습니다.
|
||||
|
||||
### Removed
|
||||
|
||||
- 사용되지 않던 첨부파일 주소 조회 기능을 제거했습니다. 화면·API 어디에서도 호출되지 않았고 항상 빈 값을 돌려주던 기능이라 실제 동작 변화는 없습니다.
|
||||
|
||||
+1
-1
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [0.1.1] - 2026-08-17
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "cb11c22109cd1b70301cfffe7f82b973",
|
||||
"content-hash": "dc78377c56e6cbc3a436d27fcfe9e258",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [1.0.2] - 2026-08-19
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "dd62f80e956b1dd28c3f4f4e94c48774",
|
||||
"content-hash": "0f4b4f5edf9a00794889ba89418f8b5d",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [1.0.2] - 2026-08-19
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "2cf3389f6c00f3e542e3f7f4e7d556bc",
|
||||
"content-hash": "1a8ad4ef4e86f6dca9d3c8f143ee89b2",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [1.0.3] - 2026-08-19
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "ed69cfb7d799ccb19ce6420c9d3bc5b9",
|
||||
"content-hash": "3327277d126e144e258ef68cf5e4352e",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -17,5 +17,5 @@
|
||||
"ext-json": "*"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [1.0.3] - 2026-08-22
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "b2b87b2f71ae1ead87a7304067243689",
|
||||
"content-hash": "c90b712b291a2f1b249b8525880f280f",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 새로 추가했습니다. 다른 번들 확장과 같은 방식으로 의존성 상태가 고정됩니다.
|
||||
|
||||
## [1.0.0] - 2026-08-24
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "103d4ddd41142225a88cfbadee4aca1f",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": {},
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": "^8.2",
|
||||
"ext-json": "*"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
@@ -21,6 +21,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
### Fixed
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "33f95805cb42a29997a78d260d49592d",
|
||||
"content-hash": "90bb21c817fbec07b681b62e4127c40d",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [1.0.3] - 2026-08-22
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "88988d859f2433db8b07b8700f481c2d",
|
||||
"content-hash": "40ed20fff4e899e55521bf44236ee61a",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [1.0.2] - 2026-08-19
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "1fce8e0d8388bbc1df8b2d62fdc98b7e",
|
||||
"content-hash": "da2660ccc648f031a25e299592f5fb55",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [1.0.2] - 2026-08-19
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "6754a7ed2d766f6ab8147eb4506789cb",
|
||||
"content-hash": "9260e25a1dfa51b52ab9da9cff55bce5",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 확장 정보와 다시 맞췄습니다. 설치·업데이트 과정에서 잠금 파일이 오래되었다는 경고가 나오지 않습니다.
|
||||
|
||||
## [1.0.4] - 2026-08-22
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "692c2c26341fb56857aaac63a2b59910",
|
||||
"content-hash": "40744923a1c241a42ea17e09d952a2c3",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
@@ -16,5 +16,5 @@
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
### Changed
|
||||
|
||||
- 확장 문서(README · AGENTS.md · docs/README.md)의 제목에 「그누보드7」과 확장 유형을 함께 표기했습니다. 제목만 보고도 그누보드7의 어떤 종류 확장인지 알 수 있습니다.
|
||||
- Composer 잠금 파일을 새로 추가했습니다. 다른 번들 확장과 같은 방식으로 의존성 상태가 고정됩니다.
|
||||
|
||||
## [1.0.1] - 2026-08-19
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "bf7a2e9cc2c7101b900fb987e77a41f5",
|
||||
"packages": [],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": {},
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": "^8.2",
|
||||
"ext-openssl": "*"
|
||||
},
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.9.0"
|
||||
}
|
||||
@@ -217,6 +217,63 @@ class BuildVendorBundleCommandTest extends TestCase
|
||||
])->assertExitCode(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 미설치 확장(활성 디렉토리 없음)도 --check 는 _bundled 의 composer.json 을 기준으로 판정한다.
|
||||
*
|
||||
* 종전에는 활성 디렉토리 부재를 "소스 경로 없음" 으로 보고하고 판정을 건너뛰어, _bundled 에
|
||||
* 외부 의존성이 선언됐는데 번들이 없거나 stale 인 상태가 --check 를 통과했다.
|
||||
*/
|
||||
public function test_module_vendor_bundle_check_judges_bundled_when_extension_not_installed(): void
|
||||
{
|
||||
$identifier = 'test-uninstalled-'.uniqid();
|
||||
$bundledPath = base_path('modules/_bundled/'.$identifier);
|
||||
File::ensureDirectoryExists($bundledPath);
|
||||
File::put($bundledPath.'/composer.json', json_encode([
|
||||
'name' => 'test/uninstalled',
|
||||
'require' => ['php' => '^8.2', 'test/lib' => '^1.0'],
|
||||
]));
|
||||
|
||||
try {
|
||||
$this->assertDirectoryDoesNotExist(base_path('modules/'.$identifier));
|
||||
|
||||
$this->artisan('module:vendor-bundle', [
|
||||
'identifier' => $identifier,
|
||||
'--check' => true,
|
||||
])
|
||||
->doesntExpectOutputToContain('소스 경로 없음')
|
||||
->expectsOutputToContain('STALE')
|
||||
->assertExitCode(1);
|
||||
} finally {
|
||||
File::deleteDirectory($bundledPath);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 미설치 + 외부 의존성 없음은 종전과 같이 SKIPPED (번들 대상 아님).
|
||||
*/
|
||||
public function test_module_vendor_bundle_check_skips_uninstalled_extension_without_external_dependencies(): void
|
||||
{
|
||||
$identifier = 'test-uninstalled-'.uniqid();
|
||||
$bundledPath = base_path('modules/_bundled/'.$identifier);
|
||||
File::ensureDirectoryExists($bundledPath);
|
||||
File::put($bundledPath.'/composer.json', json_encode([
|
||||
'name' => 'test/uninstalled-plain',
|
||||
'require' => ['php' => '^8.2'],
|
||||
]));
|
||||
|
||||
try {
|
||||
$this->artisan('module:vendor-bundle', [
|
||||
'identifier' => $identifier,
|
||||
'--check' => true,
|
||||
])
|
||||
->doesntExpectOutputToContain('소스 경로 없음')
|
||||
->expectsOutputToContain('SKIPPED (외부 composer 의존성 없음)')
|
||||
->assertExitCode(0);
|
||||
} finally {
|
||||
File::deleteDirectory($bundledPath);
|
||||
}
|
||||
}
|
||||
|
||||
public function test_module_vendor_bundle_check_reports_up_to_date_after_build(): void
|
||||
{
|
||||
$this->artisan('module:vendor-bundle', ['identifier' => $this->fakeModuleIdentifier])
|
||||
|
||||
+58
-58
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"generated_at": "2026-08-28T13:27:33+00:00",
|
||||
"generated_at": "2026-09-08T10:12:39+00:00",
|
||||
"generator": "g7 vendor-bundle:build",
|
||||
"target": "core",
|
||||
"composer_json_sha256": "3c7e6e17966f09f12a0282b12b18eba46c5c4f06d63c2355a514a3160af1d77a",
|
||||
"composer_lock_sha256": "46c98077af8fb505bc14f783dd55bcaa65713c2bd7a59e62e808e63c740b5587",
|
||||
"zip_sha256": "7e8fae4dc821a54d9c931761538bf520355db629c884a80224dd63f2f39e03a4",
|
||||
"zip_size": 15281555,
|
||||
"composer_lock_sha256": "281fa66445390c31f404d4d603856bc0f6fce955ac8f6af0384d4839521e0aaa",
|
||||
"zip_sha256": "4f70a6cc30471f445ef7054740c49797e03c01cc1a4ff7b2cfe940a72a54446e",
|
||||
"zip_size": 16024185,
|
||||
"package_count": 106,
|
||||
"php_requirement": "^8.2",
|
||||
"g7_version": "7.0.10",
|
||||
"g7_version": "7.0.11",
|
||||
"packages": [
|
||||
{
|
||||
"name": "aws/aws-crt-php",
|
||||
@@ -18,7 +18,7 @@
|
||||
},
|
||||
{
|
||||
"name": "aws/aws-sdk-php",
|
||||
"version": "3.386.1",
|
||||
"version": "3.394.9",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -28,7 +28,7 @@
|
||||
},
|
||||
{
|
||||
"name": "carbonphp/carbon-doctrine-types",
|
||||
"version": "3.2.0",
|
||||
"version": "3.2.1",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -43,7 +43,7 @@
|
||||
},
|
||||
{
|
||||
"name": "composer/ca-bundle",
|
||||
"version": "1.5.12",
|
||||
"version": "1.5.14",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -88,12 +88,12 @@
|
||||
},
|
||||
{
|
||||
"name": "geoip2/geoip2",
|
||||
"version": "v3.3.0",
|
||||
"version": "v3.4.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "graham-campbell/result-type",
|
||||
"version": "v1.1.4",
|
||||
"version": "v1.2.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -113,42 +113,42 @@
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/uri-template",
|
||||
"version": "v1.0.8",
|
||||
"version": "v1.0.11",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "jaybizzle/crawler-detect",
|
||||
"version": "v1.4.0",
|
||||
"version": "v1.4.1",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v12.62.0",
|
||||
"version": "v12.69.1",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "laravel/prompts",
|
||||
"version": "v0.3.21",
|
||||
"version": "v0.3.24",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "laravel/reverb",
|
||||
"version": "v1.10.2",
|
||||
"version": "v1.11.1",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "laravel/sanctum",
|
||||
"version": "v4.3.2",
|
||||
"version": "v4.3.3",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "laravel/scout",
|
||||
"version": "v11.3.0",
|
||||
"version": "v11.6.1",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "laravel/serializable-closure",
|
||||
"version": "v2.0.13",
|
||||
"version": "v2.0.16",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
{
|
||||
"name": "league/commonmark",
|
||||
"version": "2.10.0",
|
||||
"version": "2.10.1",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -168,22 +168,22 @@
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem",
|
||||
"version": "3.35.1",
|
||||
"version": "3.36.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem-aws-s3-v3",
|
||||
"version": "3.35.2",
|
||||
"version": "3.35.3",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem-local",
|
||||
"version": "3.31.0",
|
||||
"version": "3.35.3",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "league/mime-type-detection",
|
||||
"version": "1.16.0",
|
||||
"version": "1.17.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -208,17 +208,17 @@
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "3.10.0",
|
||||
"version": "3.11.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "mtdowling/jmespath.php",
|
||||
"version": "2.9.1",
|
||||
"version": "2.9.2",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "nesbot/carbon",
|
||||
"version": "3.13.0",
|
||||
"version": "3.13.2",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -233,7 +233,7 @@
|
||||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v5.7.0",
|
||||
"version": "v5.8.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -243,7 +243,7 @@
|
||||
},
|
||||
{
|
||||
"name": "phpoption/phpoption",
|
||||
"version": "1.9.5",
|
||||
"version": "1.10.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -293,12 +293,12 @@
|
||||
},
|
||||
{
|
||||
"name": "psy/psysh",
|
||||
"version": "v0.12.23",
|
||||
"version": "v0.12.24",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "pusher/pusher-php-server",
|
||||
"version": "7.2.8",
|
||||
"version": "7.3.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -363,12 +363,12 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/css-selector",
|
||||
"version": "v7.4.9",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -378,62 +378,62 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/error-handler",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.17",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.17",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher-contracts",
|
||||
"version": "v3.7.0",
|
||||
"version": "v3.7.1",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v7.4.11",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.17",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client-contracts",
|
||||
"version": "v3.7.0",
|
||||
"version": "v3.7.3",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-kernel",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/mailer",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.17",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/mailgun-mailer",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.18",
|
||||
"type": "symfony-mailer-bridge"
|
||||
},
|
||||
{
|
||||
"name": "symfony/mime",
|
||||
"version": "v7.4.13",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -443,17 +443,17 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-grapheme",
|
||||
"version": "v1.38.1",
|
||||
"version": "v1.41.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-idn",
|
||||
"version": "v1.38.1",
|
||||
"version": "v1.42.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-normalizer",
|
||||
"version": "v1.38.0",
|
||||
"version": "v1.42.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -468,7 +468,7 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php83",
|
||||
"version": "v1.38.2",
|
||||
"version": "v1.41.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -478,7 +478,7 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php85",
|
||||
"version": "v1.38.1",
|
||||
"version": "v1.41.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -488,42 +488,42 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v7.4.13",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/routing",
|
||||
"version": "v7.4.13",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
"version": "v3.7.0",
|
||||
"version": "v3.7.3",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v7.4.13",
|
||||
"version": "v7.4.15",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.17",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation-contracts",
|
||||
"version": "v3.7.0",
|
||||
"version": "v3.7.1",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/uid",
|
||||
"version": "v7.4.9",
|
||||
"version": "v7.4.17",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "symfony/var-dumper",
|
||||
"version": "v7.4.14",
|
||||
"version": "v7.4.18",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
@@ -533,7 +533,7 @@
|
||||
},
|
||||
{
|
||||
"name": "vlucas/phpdotenv",
|
||||
"version": "v5.6.3",
|
||||
"version": "v5.7.0",
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user