ORBIT ORIGINAL GUIDE
core 릴리스 노트
cms-orbit/core 4.0.0부터 4.7.5까지의 릴리스 노트. 추가·변경·수정 사항과 호스트 영향, 검증 내역.
최종 수정 2026년 10월 10일
cms-orbit/core의 4.x 릴리스를 최신순으로 정리했습니다. 각 항목은 패키지 저장소의 CHANGELOG를 한국어로 다듬은 것이며, 호스트에 영향이 있는 변경은 굵게 표시했습니다. 전체 패키지의 버전 관계는 버전 히스토리를 보세요.
4.7.5 — 2026-10-10
- 프런트엔드 lockfile을 Inertia Core·React 3.9.0으로 갱신했습니다.
- 검증: Laravel 13.35에서 호스트 테스트 381개, core 34개, saas 9개, Chromium 크롭·내보내기 회귀, TypeScript 검사, PHPStan, 프로덕션 빌드 통과. 공개 패키지 7종과 Boost 2.10.3을 올린 새 Laravel 호스트에서 설치·마이그레이션·프런트엔드 동기화·SaaS 라우트 캐시 생성/정리·스타터 테스트·Composer/npm 감사 통과. Testbench Core 11.6.0이 PHPUnit 13.4.1·Pest 5.3.1·ParaTest 7.26.0을 함께 지원하게 되어 독립 검증에서 이전 버전 고정이 더 이상 필요 없습니다.
4.7.4 — 2026-10-09
- 프런트엔드 lockfile을 Vite 8.3.4, Playwright 1.64.0, fast-equals 5.4.4로 갱신했습니다.
- 검증: 4.7.5와 같은 범위. 새 Laravel 스켈레톤이
concurrently10.0.6과shell-quote1.12.0을 해석해 이전 보안 권고가 의존 제거나 override 없이 해소됐습니다.
4.7.3 — 2026-10-08
- 수정: Orbit Boost 가이드를 제거된 Boost 내부 API 대신 Composer의 설치 패키지 메타데이터로 찾습니다. Boost 2.10.2를 올린 새 호스트에서
orbit:install이 다시 동작하며, 가이드라인·스킬만 담은 패키지는 유지하고 무관한 가상 패키지는 제외합니다. - 프런트엔드 lockfile을 Cropper.js 2.3.0과 호환되는 CodeMirror·Babel 런타임으로 갱신했습니다.
4.7.2 — 2026-10-07
- 프런트엔드 lockfile을 Vite 8.3.3, Mantine 9.7.1로 갱신했습니다.
- 검증: Laravel 13.35, Scout 11.9에서 호스트 381개·core 32개 테스트 통과. Laravel 스켈레톤의 Windows 전용
concurrently의존이 취약한shell-quote(GHSA-pqg4-j6r4-53mv)를 고정하고 있어, macOS 검증 호스트에서는 쓰지 않는 그 의존을 제거해 npm 감사를 통과시켰습니다. 의존 override는 적용하지 않았습니다.
4.7.1 — 2026-10-06
- 생성되는 호스트와 패키지의 의존 하한을 Marked 18.1, React Vite 플러그인 6.1.2로 올렸습니다.
- 프런트엔드 lockfile을 Mantine 9.7 등으로 갱신했습니다.
- 검증: Laravel 13.34에서 호스트 381개, core 32개, saas 6개 테스트와 Chromium 크롭·내보내기 회귀 통과. 비공개 saas는 인증된 SSH 소스로 설치했습니다. 호스트의 ESLint 10·TypeScript 7은 상류 플러그인의 peer 제약으로 보류 중이며, Pest 5.3이 PHPUnit을 13.3.6으로 고정합니다. 제약을 우회하지 않았습니다.
4.7.0 — 2026-10-05
추가
- 순정 Laravel 호스트에 React 엔트리, React 플러그인, Wayfinder를 부트스트랩합니다. 호스트가 이미 가진 엔트리는 보존합니다.
- Wayfinder 필수 의존을 선언하고, 일회용 호스트 검증과 릴리스 완료 절차 가이드를 추가했습니다.
- Apple nonce·콜백, 마이그레이션 롤백, 실제 브라우저 크로퍼 회귀 테스트를 추가했습니다.
변경
- BlockNote 0.55, Cropper 2.2, React Vite 플러그인 6.1로 올리고 패키지 타입 검사를 TypeScript 7로 전환했습니다.
- Apple provider 6.1의 POST 콜백을 지원합니다. 브라우저에 묶인 암호화 nonce 쿠키로 검증하며, 잘못된 nonce 콜백은 거부합니다. Apple 로그인은 HTTPS와
socialiteproviders/apple:^6.1이 필요합니다. - Laravel 13.34, Inertia 3, Socialite 5.31을 Guzzle 8과 함께 검증했습니다. Socialite는 계속 선택 의존입니다.
4.6.2 — 2026-09-22
- 수정:
orbit:frontend-sync가index.ts·index.tsx·index.js를 제공하는 패키지의 bare alias도tsconfig.json에 기록합니다.@cms-orbit/core에서 직접 가져오는 커스텀 컴포넌트 등록 코드의 TypeScript 모듈 해석 오류를 수정했습니다 (#9). - 자동 동기화와 수동 안내 블록이 같은 경로 생성 함수를 사용합니다. 4.6.1에서 수동 안내에만 반영됐던 alias를 자동 동기화에도 적용했습니다.
- 4.6.1 릴리스 노트에만 적혀 있던
laravel/octane선택 의존을 실제suggest에 추가했습니다.
4.6.1 — 2026-09-08
laravel/octane을suggest에 추가했습니다.FoundationServiceProvider가RequestReceived이벤트를 클로저 타입으로만 참조하므로 Octane 미설치에서도 정상 동작합니다. 하드 의존이 아니라서require가 아니라suggest가 맞고, 관계가 문서화되지 않았던 것을 채웠습니다.
4.6.0 — 2026-09-08
추가
OrbitAccess라우팅 리졸버 (#1): 관리자 패널의 도메인·URL 접두사·미들웨어를 요청마다 해석하는 클래스를 싱글턴으로 바인딩했습니다. 위성 패키지가 이 바인딩을 서브클래스로 교체해 패널 마운트 지점을 바꿀 수 있습니다. saas가 인스턴스 엔드포인트 아래{endpoint}/settings로 패널을 올리는 것이 첫 용례이며,Orbit::prefix()도 같은 리졸버를 타므로 URL 생성이 함께 따라갑니다.- 패키지 자체 타입 게이트 (#3):
package.json·tsconfig.json·types/를 추가해npm run types:check가 패키지 안에서 돕니다. 도입 직후 실제 결함 4건을 잡았습니다. - GitHub Actions 워크플로: PHP 8.4·8.5에서
composer validate·pint --test·pest를 돌리는ci.yml과 태그 version 일치를 검사하는release-guard.yml. orbit:frontend-sync가tsconfigpaths를 동기화합니다 (#3): Vite는 alias로 페이지 브리지를 찾지만 tsc는 그 매핑을 몰라, 빌드는 통과하는데types:check만 브리지마다 TS2307로 깨졌습니다.@cms-orbit/접두사 키만 관리하므로 호스트의@/*같은 항목은 보존되고, 주석이나 트레일링 콤마가 있는 tsconfig는 건드리지 않고 붙여 넣을 블록을 출력합니다.orbit.host_routes.name_prefix설정 (#8): 호스트routes/orbit.php에도orbit.이름 접두사를 붙이는 opt-in. 기본값false.
수정
- PostgreSQL 호스트에서 관리자 화면이 전부 500 (#4): 브랜드 자산 경로를 첨부 ID로 조회해 트랜잭션이 깨지고 이후 모든 질의가
25P02로 죽었습니다. Model::shouldBeStrict()를 켠 호스트에서 관리자 화면이 죽는 문제 (#5).orbit:install이 OrbitProvider를 등록하지 않아 호스트 엔티티가 조용히 사라지는 문제 (#6).ShareOrbitInertia::safe()가 삼킨 예외를report()로 보고합니다 (#7). 삼키기만 하면 원인과 증상이 분리됩니다. 위 #4·#5가 실제로 이것 때문에 벤더 파일을 뚫어야 원인이 드러났습니다.- 호스트
tsc를 막는 타입 오류 2건과 타입 게이트가 새로 잡은 결함 3건.
변경
pint --test를 CI 게이트로 걸기 위해 143개 파일을 포맷 정규화했습니다. 동작 변경은 없습니다.- 테스트가 3개에서 20개로 늘었습니다.
4.5.0 — 2026-08-31
laravel/framework^11 ‖ ^12 ‖ ^13→^13.0. Pest 5 채택 이후 패키지 테스트가 Laravel 13으로만 해석돼 11·12 호환성을 검증할 수 없었고, 검증되지 않는 지원 범위를 제약에 남기지 않기로 했습니다. Laravel 11·12 사용자는 Laravel 13으로 올리거나 4.4.x에 머물러야 합니다.
4.4.0 — 2026-08-31
- PHP
^8.3→^8.4. Pest 5(require-dev)가 PHP ^8.4를 요구합니다. 운영 의존은 하나도 바뀌지 않았으며, 직접 의존 20개를 대조한 결과 나머지 18개는 이미 PHP 8.3에서 최신을 받고 있었습니다. 장기 정리 목적의 상향입니다. orchestra/testbench^11.0,pestphp/pest^5.0 (require-dev).
4.3.0 — 2026-08-28
intervention/image^3.0→^4.0.MediaLibrary의 호출 4곳을 v4 API(decodeBinary(),encodeUsingPath(),encodeUsingMediaType())로 옮겼습니다. 호스트 코드에서 v3 API를 직접 쓰면 함께 마이그레이션해야 하고, 직접 선언하지 않은 호스트는 영향이 없습니다.- 테스트 기반 도입: core 최초의 자동 테스트.
MediaLibrary이미지 파이프라인 3건(최대 폭 초과 축소, 한계 이하 원본 유지, 파비콘 변형 5종과 webmanifest 생성)을 디스크에 저장된 실제 바이트를 다시 디코딩해 검증합니다.
4.2.0 — 2026-08-28
- Socialite를 선택 의존으로 전환. 새 Laravel 13 프로젝트는 Guzzle 8.1을 고정하는데
laravel/socialite는 당시 Guzzle ^6|^7만 허용해composer require cms-orbit/core가 항상 실패했습니다. 코드는 이미 Socialite를 선택적으로 다루고 있었으므로 매니페스트만 코드보다 강한 제약을 걸고 있던 셈입니다. - 소셜 로그인을 쓰는 호스트는 직접 선언해야 합니다:
composer require laravel/socialite socialiteproviders/manager socialiteproviders/kakao socialiteproviders/apple -W. 선언하지 않으면 소셜 로그인 라우트만 500을 반환하고 나머지 기능은 영향받지 않습니다.
4.1.0 — 2026-08-28
- PHP 제약을
^8.3으로 복구했습니다. main이^8.2로 내려가 있어 PHP 8.2 환경에서 조용히 Laravel 11이 설치될 수 있었습니다. tabuna/breadcrumbs를 존재하지 않던^6.0범위 없이^5.0으로,laravel/pint를^1.30으로 정정했습니다.- 릴리스 파이프라인 도입:
.githooks/pre-push,bin/release. 배경은 버전 히스토리의 릴리스 검증 규칙을 보세요.
4.0.12 — 2026-07-24
- 패키지 커스텀 관리자 컴포넌트 등록:
frontend.json에registrations를 선언하면orbit:frontend-sync가 호스트resources/js/orbit/registrations.ts애그리게이터를 생성하고orbit/screen브리지가 이를 import합니다. 패키지는 호스트 파일 수정 없이registerComponents(...)로 커스텀 필드·스크린을 기여할 수 있습니다. LMS의 이수증 빌더가 이 경로로 등록됩니다.
4.0.11 — 2026-07-23
- 로그인 화면을 공용
ToastProvider로 감쌌습니다. 게스트 인증 흐름에서 서버가 남긴orbit.flash메시지가 관리자 셸과 같은 토스트로 표시됩니다.
4.0.10 — 2026-07-13
- 호스트
entities/런타임 PSR-4 등록:composer.json에 매핑이 없어도 스캔됩니다. SuperAdminPermissionSync: 등록 권한 fingerprint가 바뀌면 시스템 super-admin 역할을 자동 갱신합니다(orbit.permissions.auto_sync_super_admin).orbit:install위성 패키지 선택: 대화형 multiselect 또는--with=announcement,popup,sendgo.orbit.analytics.queue: 페이지뷰 INSERT를RecordPageview잡으로 오프로드(기본 동기).
4.0.9 / 4.0.8 — 2026-07-13
- 4.0.8은
composer.jsonversion 불일치로 Packagist에 게시되지 않았습니다. 기능은 4.0.9로 받으세요. - 각
cms-orbit/*패키지의frontend.json에 npmdependencies·devDependencies를 선언하면orbit:frontend-sync가 호스트package.json에 누락된 항목만 병합합니다. core는 관리자 프런트엔드가 쓰는 모든 npm 패키지를 선언합니다. orbit:install이 프런트 스캐폴딩 동기화 직후npm install→npm run build를 실행합니다(--skip-npm으로 생략).- 순정 호스트에서
react-bootstrap-icons해석 실패로 Vite manifest가 생성되지 않아 관리자 페이지가 500이 나던 문제를 해결했습니다.
4.0.7 ~ 4.0.5 — 2026-07-12 ~ 13
orbit:admin이 계정 생성 후 로그인 식별자와 기본 비밀번호를 명시적으로 출력합니다 (4.0.7).orbit:frontend-sync가 Vite alias 주입 시fileURLToPathimport를 보장해 순정 스타터킷의npm run dev오류를 해결했습니다 (4.0.6).ShareOrbitInertia미들웨어,UserPresenter, 강제 비밀번호 변경 스택을 패키지로 이관해 호스트HandleInertiaRequests수정 없이 관리자 패널이 동작합니다. 관리자 CSS를 패키지가 자체 생성해 호스트app.css수정이 필요 없습니다 (4.0.5).
4.0.4 — 2026-07-06
AnalyticsSchemaConnection확장 지점을 추가하고,AnalyticsTracker가 saas의 클래스를 직접 참조하던 결합을 제거했습니다. core는 saas를 몰라도 동작하며, saas 미설치 호스트의 호환용 shim이 더 이상 필요하지 않습니다.
4.0.2 — 2026-07-06
- 브랜딩 설정의 컬러 프리셋과 Primary/Secondary/Accent 필드를 제거하고 관리자 디자인설정으로 일원화했습니다. 브랜딩 설정은 이름·로고·심볼·기본 테마 모드 중심으로 정리됐습니다.
4.0.1 — 2026-07-05
- Notion형 블록 에디터
RichText필드(BlockNote)를 추가했습니다./슬래시 메뉴, 마크다운 단축키, HTML 저장,RichTextConverter::toMarkdown(). - Breaking:
Quill필드와quillReact 컴포넌트를 제거했습니다.RichText::make()를 사용하고 npmquill의존을 제거하세요.DocumentEntity기본 content 필드도 RichText로 바뀌었습니다.
4.0.0 — 2026-07-05
- 설정 허브를 기본설정·컨텐츠·사용자·API 연동·SaaS 아코디언 섹션으로 그룹화하고(
hubSection), 접힘 상태를 쿠키로 유지합니다. - Google·Kakao·Apple 소셜 로그인을 전용 설정 그룹으로 분리했습니다.
orbit:frontend-sync가 설치된cms-orbit/*패키지의 Inertia 페이지 브리지와 Vite alias를 자동 생성합니다. 각 패키지는resources/orbit/frontend.jsonmanifest로 프런트엔드 연결을 선언합니다.- Laravel Boost v2 자동 감지 형식으로 Orbit 가이드라인·스킬을 배포하며,
orbit:install·orbit:sync가 Boost에 패키지를 등록하고boost:update를 실행합니다. - 마이그레이션을 테이블당 단일
create파일로 통합했습니다. 증분 alter·backfill 마이그레이션을 제거하고migrate:fresh기준 최종 스키마만 유지합니다. - SendGo API 자격 증명 설정을
cms-orbit/sendgo패키지로 이전했습니다. - 접근 제어·분석 화면의 남은 영문 UI와 엔티티 라벨을 한글팩으로 보강했습니다.
4.0.0 이전의 beta2~beta4(2026-07-04)는 브랜딩 자산의 라이트/다크 분리, 파비콘 변형 자동 생성, 감사·분석 화면, 디자인 토큰 통합, 설정 화면 확장 포인트를 도입한 릴리스입니다. 정식 4.0.0에 모두 포함돼 있습니다.