fix(core,extensions): 설치 완료 스크롤 + 미인증 화면 테마 버튼 무반응 수정
Modern PHP User Group 2026-09 정기모임 설치 리뷰에서 접수된 제보 2건. 설치 완료·실패·중단·필수파일 안내는 페이지 최상단에 뜨는데, 진행 로그를 보느라 화면이 아래에 머물러 있으면 안내가 눈에 들어오지 않았다. 네 경로 모두 DOM 변경이 끝난 뒤 결과 섹션으로 부드럽게 이동시킨다(모션 최소화 설정 시 즉시 이동). 미인증 3화면의 테마 버튼은 setTheme 을 params.theme 으로 불렀는데 핸들러는 action.target 만 읽는다. 엔진에 상호 폴백이 없어 클릭이 콘솔 경고 한 줄만 남기고 아무 일도 하지 않았다. 로그인 이후 화면은 핸들러를 거치지 않는 ThemeToggle 을 쓰기 때문에 정상이었고, 그래서 이 세 화면에서만 나타났다. 같은 계약 불일치가 편집기 액션 레시피(admin 9·basic 3)와 두 템플릿 문서에도 있어 함께 고쳤다. 편집기로 만든 액션은 생성 즉시 no-op 이 되는데 오류가 남지 않는다. 정적 검사 레지스트리가 오히려 틀린 계약(params.theme 필수)을 강제하고 있어 올바른 형태를 막고 있었으므로 두 미러를 함께 정정했다. 테마를 고치는 과정에서 별개 결함이 드러났다. GDPR 스토리지 인터셉터가 기능 쿠키 미동의 상태에서 필수 목록 밖 저장을 부팅마다 파기하는데, 화면 테마가 그 목록에서 빠져 있었다. 저장소의 setItem 호출을 기계 도출해 대조한 결과 같은 이유로 사라지던 항목이 13건 더 있었다 — 비회원 주문 조회, 결제창 복귀 기록, 본인인증 복귀 기록, 관리자 화면 상태, 자산 주소 형식 캐시. 전량 필수로 분류하고, 동의 안내 문구가 "다크모드는 기능 쿠키" 라고 말하던 부분을 사실에 맞게 정정했다(기설치본의 저장된 문구는 업그레이드 스텝이 정정하며, 운영자가 고친 문구는 건드리지 않는다). 재발 방지는 허용목록을 직접 import 하고 모집단을 디렉토리 순회로 도출하는 커버리지 테스트가 맡는다 — 손으로 열거하지 않으므로 새 저장 키가 등재를 빠뜨리면 붉어진다.
This commit is contained in:
1 parent
92923a5011
commit
8cf829f953
47 files changed
+1424
-282
No files matched your search
@@ -77650,8 +77650,8 @@ HTTP/1.1 200
|
||||
],
|
||||
"build": {
|
||||
"handler": "setState",
|
||||
"target": "local",
|
||||
"params": {
|
||||
"target": "local",
|
||||
"{{key}}": "{{value}}"
|
||||
}
|
||||
}
|
||||
@@ -77723,9 +77723,7 @@ HTTP/1.1 200
|
||||
],
|
||||
"build": {
|
||||
"handler": "setLocale",
|
||||
"params": {
|
||||
"target": "{{target}}"
|
||||
}
|
||||
"target": "{{target}}"
|
||||
}
|
||||
},
|
||||
"setTheme": {
|
||||
@@ -77753,24 +77751,22 @@ HTTP/1.1 200
|
||||
],
|
||||
"build": {
|
||||
"handler": "setTheme",
|
||||
"params": {
|
||||
"target": "{{target}}"
|
||||
}
|
||||
"target": "{{target}}"
|
||||
}
|
||||
},
|
||||
"scrollToSection": {
|
||||
"label": "$t:editor.action.scroll_to_section.label",
|
||||
"params": [
|
||||
{
|
||||
"key": "sectionId",
|
||||
"label": "$t:editor.action.scroll_to_section.param_section_id",
|
||||
"key": "targetId",
|
||||
"label": "$t:editor.action.scroll_to_section.param_target_id",
|
||||
"widget": "text"
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"handler": "scrollToSection",
|
||||
"params": {
|
||||
"sectionId": "{{sectionId}}"
|
||||
"targetId": "{{targetId}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -77795,8 +77791,8 @@ HTTP/1.1 200
|
||||
"label": "$t:editor.action.set_date_range.preset_month"
|
||||
},
|
||||
{
|
||||
"value": "year",
|
||||
"label": "$t:editor.action.set_date_range.preset_year"
|
||||
"value": "1year",
|
||||
"label": "$t:editor.action.set_date_range.preset_1year"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -77812,32 +77808,29 @@ HTTP/1.1 200
|
||||
"label": "$t:editor.action.toggle_filter_visibility.label",
|
||||
"params": [
|
||||
{
|
||||
"key": "filterKey",
|
||||
"label": "$t:editor.action.toggle_filter_visibility.param_filter_key",
|
||||
"key": "storageKey",
|
||||
"label": "$t:editor.action.toggle_filter_visibility.param_storage_key",
|
||||
"widget": "text"
|
||||
},
|
||||
{
|
||||
"key": "filterId",
|
||||
"label": "$t:editor.action.toggle_filter_visibility.param_filter_id",
|
||||
"widget": "text"
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"handler": "toggleFilterVisibility",
|
||||
"params": {
|
||||
"filterKey": "{{filterKey}}"
|
||||
"storageKey": "{{storageKey}}",
|
||||
"filterId": "{{filterId}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"saveMultilingualTag": {
|
||||
"label": "$t:editor.action.save_multilingual_tag.label",
|
||||
"params": [
|
||||
{
|
||||
"key": "tag",
|
||||
"label": "$t:editor.action.save_multilingual_tag.param_tag",
|
||||
"widget": "i18n-text"
|
||||
}
|
||||
],
|
||||
"params": [],
|
||||
"build": {
|
||||
"handler": "saveMultilingualTag",
|
||||
"params": {
|
||||
"tag": "{{tag}}"
|
||||
}
|
||||
"handler": "saveMultilingualTag"
|
||||
}
|
||||
},
|
||||
"initTheme": {
|
||||
@@ -77865,9 +77858,7 @@ HTTP/1.1 200
|
||||
],
|
||||
"build": {
|
||||
"handler": "initTheme",
|
||||
"params": {
|
||||
"target": "{{target}}"
|
||||
}
|
||||
"target": "{{target}}"
|
||||
}
|
||||
},
|
||||
"initMenuFromUrl": {
|
||||
@@ -77879,9 +77870,18 @@ HTTP/1.1 200
|
||||
},
|
||||
"initFilterVisibility": {
|
||||
"label": "$t:editor.action.init_filter_visibility.label",
|
||||
"params": [],
|
||||
"params": [
|
||||
{
|
||||
"key": "storageKey",
|
||||
"label": "$t:editor.action.init_filter_visibility.param_storage_key",
|
||||
"widget": "text"
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"handler": "initFilterVisibility"
|
||||
"handler": "initFilterVisibility",
|
||||
"params": {
|
||||
"storageKey": "{{storageKey}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -173497,8 +173497,8 @@ HTTP/1.1 200
|
||||
],
|
||||
"build": {
|
||||
"handler": "setState",
|
||||
"target": "local",
|
||||
"params": {
|
||||
"target": "local",
|
||||
"{{key}}": "{{value}}"
|
||||
}
|
||||
}
|
||||
@@ -173570,9 +173570,7 @@ HTTP/1.1 200
|
||||
],
|
||||
"build": {
|
||||
"handler": "setLocale",
|
||||
"params": {
|
||||
"target": "{{target}}"
|
||||
}
|
||||
"target": "{{target}}"
|
||||
}
|
||||
},
|
||||
"setTheme": {
|
||||
@@ -173600,24 +173598,22 @@ HTTP/1.1 200
|
||||
],
|
||||
"build": {
|
||||
"handler": "setTheme",
|
||||
"params": {
|
||||
"target": "{{target}}"
|
||||
}
|
||||
"target": "{{target}}"
|
||||
}
|
||||
},
|
||||
"scrollToSection": {
|
||||
"label": "$t:editor.action.scroll_to_section.label",
|
||||
"params": [
|
||||
{
|
||||
"key": "sectionId",
|
||||
"label": "$t:editor.action.scroll_to_section.param_section_id",
|
||||
"key": "targetId",
|
||||
"label": "$t:editor.action.scroll_to_section.param_target_id",
|
||||
"widget": "text"
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"handler": "scrollToSection",
|
||||
"params": {
|
||||
"sectionId": "{{sectionId}}"
|
||||
"targetId": "{{targetId}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -173642,8 +173638,8 @@ HTTP/1.1 200
|
||||
"label": "$t:editor.action.set_date_range.preset_month"
|
||||
},
|
||||
{
|
||||
"value": "year",
|
||||
"label": "$t:editor.action.set_date_range.preset_year"
|
||||
"value": "1year",
|
||||
"label": "$t:editor.action.set_date_range.preset_1year"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -173659,32 +173655,29 @@ HTTP/1.1 200
|
||||
"label": "$t:editor.action.toggle_filter_visibility.label",
|
||||
"params": [
|
||||
{
|
||||
"key": "filterKey",
|
||||
"label": "$t:editor.action.toggle_filter_visibility.param_filter_key",
|
||||
"key": "storageKey",
|
||||
"label": "$t:editor.action.toggle_filter_visibility.param_storage_key",
|
||||
"widget": "text"
|
||||
},
|
||||
{
|
||||
"key": "filterId",
|
||||
"label": "$t:editor.action.toggle_filter_visibility.param_filter_id",
|
||||
"widget": "text"
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"handler": "toggleFilterVisibility",
|
||||
"params": {
|
||||
"filterKey": "{{filterKey}}"
|
||||
"storageKey": "{{storageKey}}",
|
||||
"filterId": "{{filterId}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"saveMultilingualTag": {
|
||||
"label": "$t:editor.action.save_multilingual_tag.label",
|
||||
"params": [
|
||||
{
|
||||
"key": "tag",
|
||||
"label": "$t:editor.action.save_multilingual_tag.param_tag",
|
||||
"widget": "i18n-text"
|
||||
}
|
||||
],
|
||||
"params": [],
|
||||
"build": {
|
||||
"handler": "saveMultilingualTag",
|
||||
"params": {
|
||||
"tag": "{{tag}}"
|
||||
}
|
||||
"handler": "saveMultilingualTag"
|
||||
}
|
||||
},
|
||||
"initTheme": {
|
||||
@@ -173712,9 +173705,7 @@ HTTP/1.1 200
|
||||
],
|
||||
"build": {
|
||||
"handler": "initTheme",
|
||||
"params": {
|
||||
"target": "{{target}}"
|
||||
}
|
||||
"target": "{{target}}"
|
||||
}
|
||||
},
|
||||
"initMenuFromUrl": {
|
||||
@@ -173726,9 +173717,18 @@ HTTP/1.1 200
|
||||
},
|
||||
"initFilterVisibility": {
|
||||
"label": "$t:editor.action.init_filter_visibility.label",
|
||||
"params": [],
|
||||
"params": [
|
||||
{
|
||||
"key": "storageKey",
|
||||
"label": "$t:editor.action.init_filter_visibility.param_storage_key",
|
||||
"widget": "text"
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"handler": "initFilterVisibility"
|
||||
"handler": "initFilterVisibility",
|
||||
"params": {
|
||||
"storageKey": "{{storageKey}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user