fix(release): 7.0.7 릴리즈 검증 발견 결함 전수 처리 및 출시일 8/18 정렬
7.0.7 페이로드 전수 검증에서 발견된 error 4건·warn 14건을 릴리즈 전에 처리했다. 미출시 분량의 자체 결함(회원 통합검색 500, 관리자 스코프 403 의 500 위장 등)이므로 페이로드에 합류시키고, 출시 대상 26개 CHANGELOG 의 버전 섹션 날짜를 2026-08-18 로 정렬했다. - 통합검색 import 복원 + 이커머스 관리자 typed 403 catch 대칭(테스트 동반) - admin 판정 스니핑 사설 사본 전수 수렴(BoardResource) + 조건 스캔 테스트 - 스케줄 인터프리터 변형 표기(확장자·버전 접미사) 정규화 차단 - ckeditor5 참조 판정 배치화·fail-safe, 결제 플러그인 진단 페이로드 대칭 - 템플릿 다크 대비·상태 Select value-제어 + --production 재빌드 - Upgrade_7_0_7 잔존 중복 색인 정리 스텝, API 문서·i18n(ko/en/ja) 동기
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)를 따르며,
|
||||
[Semantic Versioning](https://semver.org/lang/ko/)을 준수합니다.
|
||||
|
||||
## [1.0.5] - 2026-08-17
|
||||
## [1.0.5] - 2026-08-18
|
||||
|
||||
### Added
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
### Fixed
|
||||
|
||||
- 회원 등록 화면의 상태 선택란이 기본값(활성) 없이 빈 칸으로 표시되던 문제를 수정했습니다. 표시만 비어 있었을 뿐 저장 시에는 '활성' 으로 등록되어, 화면 표시와 실제 저장값이 어긋나 보였습니다.
|
||||
- 파일 업로더 썸네일의 업로드 진행률 막대와 오류 표시가 다크 모드에서 대비가 낮아 잘 보이지 않던 부분을 보완했습니다.
|
||||
- 언어팩 재활성화 안내 창의 아이콘이 의도한 크기와 다르게 보이던 문제를 수정했습니다.
|
||||
- 표 하단 합계 영역의 값이 계산되지 않고 표현식 원문 그대로 표시되던 문제를 다시 수정했습니다. 1.0.4 에 수록 예정이던 수정이 빌드 산출물에 반영되지 않은 채 배포되어, 주문 상세의 합계 행에서 수량·적립금·배송비 자리에 값 대신 알 수 없는 문자열이 보였습니다. (#98 @hwaryeon1234 님께서 제보해주셨습니다.)
|
||||
- 회원 정보 수정 화면에서 회원 정보가 화면에 채워지기 전에 저장을 누르면 "이름은 필수입니다" 같은 오류로 저장이 거절되던 문제를 수정했습니다. 이제 회원 정보를 불러오는 동안에는 저장 버튼이 잠시 비활성화됩니다.
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -80,7 +80,7 @@
|
||||
"handler": "toast",
|
||||
"params": {
|
||||
"type": "error",
|
||||
"message": "{{error.message}}"
|
||||
"message": "{{error.message ?? '$t:common.error_occurred'}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -851,14 +851,25 @@
|
||||
"text": "$t:admin.users.form.fields.status"
|
||||
},
|
||||
{
|
||||
"comment": "커스텀 Select 는 value-제어 전용 — defaultValue 는 렌더되지 않아 create 모드 표시가 비었다. 미전송 시 서버(CreateUserRequest)가 active 로 보정하므로 표시 기본값과 서버 기본값이 일치한다.",
|
||||
"type": "composite",
|
||||
"name": "Select",
|
||||
"props": {
|
||||
"name": "status",
|
||||
"className": "w-full",
|
||||
"defaultValue": "active",
|
||||
"value": "{{_local.form?.status ?? 'active'}}",
|
||||
"options": "{{route?.id ? [{label: '$t:admin.users.form.status_options.active', value: 'active'}, {label: '$t:admin.users.form.status_options.inactive', value: 'inactive'}, {label: '$t:admin.users.form.status_options.blocked', value: 'blocked'}, {label: '$t:admin.users.form.status_options.withdrawn', value: 'withdrawn'}] : [{label: '$t:admin.users.form.status_options.active', value: 'active'}, {label: '$t:admin.users.form.status_options.inactive', value: 'inactive'}, {label: '$t:admin.users.form.status_options.blocked', value: 'blocked'}] ?? []}}"
|
||||
}
|
||||
},
|
||||
"actions": [
|
||||
{
|
||||
"type": "change",
|
||||
"handler": "setState",
|
||||
"params": {
|
||||
"target": "local",
|
||||
"form.status": "{{$event.target.value}}"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1551,7 +1562,7 @@
|
||||
"handler": "toast",
|
||||
"params": {
|
||||
"type": "error",
|
||||
"message": "{{error.message}}"
|
||||
"message": "{{error.message ?? '$t:common.error_occurred'}}"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -1571,7 +1582,7 @@
|
||||
"handler": "toast",
|
||||
"params": {
|
||||
"type": "error",
|
||||
"message": "{{error.message}}"
|
||||
"message": "{{error.message ?? '$t:common.error_occurred'}}"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -1862,7 +1873,7 @@
|
||||
"handler": "toast",
|
||||
"params": {
|
||||
"type": "error",
|
||||
"message": "{{error.message}}"
|
||||
"message": "{{error.message ?? '$t:common.error_occurred'}}"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -1882,7 +1893,7 @@
|
||||
"handler": "toast",
|
||||
"params": {
|
||||
"type": "error",
|
||||
"message": "{{error.message}}"
|
||||
"message": "{{error.message ?? '$t:common.error_occurred'}}"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
+3
-3
@@ -166,9 +166,9 @@ export const SortableThumbnailItem: React.FC<SortableThumbnailItemProps> = ({
|
||||
{/* 업로드/압축 진행률 오버레이 */}
|
||||
{(isUploading || isCompressing) && (
|
||||
<Div className="absolute inset-0 bg-black/50 flex flex-col items-center justify-center">
|
||||
<Div className="w-3/4 h-2 bg-gray-700 rounded-full overflow-hidden">
|
||||
<Div className="w-3/4 h-2 bg-gray-700 dark:bg-gray-600 rounded-full overflow-hidden">
|
||||
<Div
|
||||
className="h-full bg-blue-500 transition-all"
|
||||
className="h-full bg-blue-500 dark:bg-blue-400 transition-all"
|
||||
style={{ width: `${progress}%` }}
|
||||
/>
|
||||
</Div>
|
||||
@@ -178,7 +178,7 @@ export const SortableThumbnailItem: React.FC<SortableThumbnailItemProps> = ({
|
||||
|
||||
{/* 에러 오버레이 */}
|
||||
{hasError && (
|
||||
<Div className="absolute inset-0 bg-red-500/50 flex items-center justify-center">
|
||||
<Div className="absolute inset-0 bg-red-500/50 dark:bg-red-600/50 flex items-center justify-center">
|
||||
<I className="fa-solid fa-exclamation-triangle text-2xl text-white" />
|
||||
</Div>
|
||||
)}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -4,7 +4,7 @@
|
||||
형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)를 따르며,
|
||||
[Semantic Versioning](https://semver.org/lang/ko/)을 준수합니다.
|
||||
|
||||
## [1.1.1] - 2026-08-17
|
||||
## [1.1.1] - 2026-08-18
|
||||
|
||||
### Added
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
### Fixed
|
||||
|
||||
- 파일 업로더 썸네일의 업로드 진행률 막대와 오류 표시가 다크 모드에서 대비가 낮아 잘 보이지 않던 부분을 보완했습니다.
|
||||
- 장바구니를 처음 열었을 때 "전체 선택" 옆 개수가 `(/27)` 처럼 선택 개수 없이 표시되던 문제를 수정했습니다. 이제 진입·새로고침·다른 화면에서 돌아온 경우 모두 `(27/27)` 로 바로 표시되며, 체크박스 상태 및 주문 요약의 "선택 상품 N / M개" 와 항상 같은 값을 가리킵니다. (#92 @koojunho 님께서 제보해주셨습니다.)
|
||||
- 장바구니 옵션변경 모달의 재고 안내와 마이페이지 프로필의 입력 오류 메시지가, 표시할 값이 아직 준비되지 않은 순간에도 빈칸으로 남지 않도록 보완했습니다. 값이 준비된 뒤의 표시는 종전과 동일합니다.
|
||||
- 마이페이지 게시판 알림 수신 설정(댓글·답글 등 4개 항목)의 체크 상태가 저장값과 어긋날 수 있던 가능성을 차단했습니다. 저장된 값이 어떤 형태든 화면의 체크 표시와 저장 결과가 항상 일치합니다.
|
||||
|
||||
File diff suppressed because one or more lines are too long
+13
-14
File diff suppressed because one or more lines are too long
+1
-1
@@ -58,5 +58,5 @@ export interface AvatarUploaderProps {
|
||||
/** 레이아웃 편집기 주입 속성 (편집 모드 전용, 루트에 spread) */
|
||||
editorAttrs?: EditorAttrs;
|
||||
}
|
||||
export declare function AvatarUploader({ src, fallbackText, size, uploadEndpoint, deleteEndpoint, onUploadSuccess, onUploadError, onDeleteSuccess, onDeleteError, showDeleteButton, accept, maxSize, className, uploadButtonText, deleteButtonText, readOnly, confirmDelete, deleteConfirmMessage, confirmUpload, uploadConfirmMessage, uploadSuccessActions, uploadErrorActions, deleteSuccessActions, deleteErrorActions, id, editorAttrs, }: AvatarUploaderProps): import("react").JSX.Element;
|
||||
export declare function AvatarUploader({ src, fallbackText, size, uploadEndpoint, deleteEndpoint, onUploadSuccess, onUploadError, onDeleteSuccess, onDeleteError, showDeleteButton, accept, maxSize, className, uploadButtonText, deleteButtonText, readOnly, confirmDelete, deleteConfirmMessage, confirmUpload, uploadConfirmMessage, uploadSuccessActions, uploadErrorActions, deleteSuccessActions, deleteErrorActions, id, editorAttrs, }: AvatarUploaderProps): import("react/jsx-runtime").JSX.Element;
|
||||
export default AvatarUploader;
|
||||
|
||||
+3
-3
@@ -156,9 +156,9 @@ export const SortableThumbnailItem: React.FC<SortableThumbnailItemProps> = ({
|
||||
{/* 업로드/압축 진행률 오버레이 */}
|
||||
{(isUploading || isCompressing) && (
|
||||
<Div className="absolute inset-0 bg-black/50 flex flex-col items-center justify-center">
|
||||
<Div className="w-3/4 h-2 bg-gray-700 rounded-full overflow-hidden">
|
||||
<Div className="w-3/4 h-2 bg-gray-700 dark:bg-gray-600 rounded-full overflow-hidden">
|
||||
<Div
|
||||
className="h-full bg-blue-500 transition-all"
|
||||
className="h-full bg-blue-500 dark:bg-blue-400 transition-all"
|
||||
style={{ width: `${progress}%` }}
|
||||
/>
|
||||
</Div>
|
||||
@@ -168,7 +168,7 @@ export const SortableThumbnailItem: React.FC<SortableThumbnailItemProps> = ({
|
||||
|
||||
{/* 에러 오버레이 */}
|
||||
{hasError && (
|
||||
<Div className="absolute inset-0 bg-red-500/50 flex items-center justify-center">
|
||||
<Div className="absolute inset-0 bg-red-500/50 dark:bg-red-600/50 flex items-center justify-center">
|
||||
<I className="fa-solid fa-exclamation-triangle text-2xl text-white" />
|
||||
</Div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user