변경 로그 및 버전 관리
ObjectOS의 버전 관리 방식, 릴리스 간 변경 사항, 그리고 지원 범위.
변경 로그 및 버전 관리
버전 관리 정책
ObjectOS는 **유의적 버전(Semantic Versioning)**을 따릅니다: MAJOR.MINOR.PATCH.
| 버전 증가 | 의미 | 해야 할 일 |
|---|---|---|
패치 (9.7.0 → 9.7.1) | 버그 수정, 동작 변경 없음 | 그대로 업데이트, 앱 변경 불필요 |
마이너 (9.6 → 9.7) | 새 기능, 하위 호환 | 그대로 업데이트, 필요 시 새 기능 도입 |
메이저 (8 → 9) | 릴리스 노트에 문서화된 호환성 깨짐 변경 | 업그레이드 전에 마이그레이션 가이드를 읽으세요 |
모든 @objectstack/* 패키지는 동기화된 버전 번호로 함께 릴리스됩니다 —
개별적으로가 아니라 매트릭스로 테스트됩니다.
호환성 매트릭스
| 구성 요소 | 호환성 규칙 |
|---|---|
| ObjectOS 이미지 ↔ 컴파일된 아티팩트 | 동일한 마이너 버전. 9.7.x 이미지는 9.7.x 아티팩트를 실행하며, 9.7 아티팩트는 9.6 이미지에서 사용할 수 없는 기능을 사용할 수 있습니다. |
| ObjectOS ↔ CLI | 동일한 마이너 버전 권장. npm i -g로 설치한 CLI는 자체 버전에 고정된 스캐폴드를 작성합니다. |
| ObjectOS ↔ 데이터베이스 드라이버 | 드라이버는 이미지 빌드에 고정됨; Postgres ≥ 13 / MongoDB ≥ 5 / Turso(현재 버전) 확인. |
| Node.js | 20 LTS 이상. 새 배포에는 22 LTS 권장. |
지원 기간
| 브랜치 | 상태 | 종료 시점 |
|---|---|---|
| 9.x (현재) | 활발한 개발; 새 기능 및 수정 | 10.0 출시 후 최소 12개월 |
| 8.x | 보안 수정만 | 10.0 릴리스 시 EOL |
| ≤ 7.x | 지원 종료 | 이미 EOL |
중대한 보안 수정은 현재 및 이전 메이저 버전에 백포트됩니다. 그 외 모든 것은
main에 반영됩니다.
릴리스 노트
릴리스된 ObjectOS 버전과 해당 CHANGELOG 항목은 다음에서 게시됩니다:
- npm:
@objectstack/runtime - GitHub: github.com/objectstack-ai/objectos/releases
- 소스 CHANGELOG:
CHANGELOG.md - 상세 릴리스 노트:
RELEASE_NOTES.md
알림을 받으려면 GitHub에서 릴리스를 구독하세요.
주요 변경 사항
9.x — 현재 릴리스 트레인
ObjectOS One과 번들 서버는 이제 @objectstack 9.7.0 기반으로 동작합니다.
런타임 부트 계약은 8.0과 동일합니다 — createStandaloneStack은 여전히 동일한
아티팩트, 환경, 데이터베이스 설정을 받으므로 8.0 배포는 구성 변경 없이 그대로
업데이트됩니다. 바뀐 것은 작성자(author)가 마주하는 표면입니다:
- 분석 데이터셋이 유일한 작성자 표면이 되었습니다 (9.0, 호환성 깨짐) —
대시보드 위젯, 보고서, 리스트 차트는 이제 의미 기반
dataset(defineDataset(...))에 바인딩하고 차원/측정값을 이름으로 선택합니다. 기존의 인라인 쿼리 필드(위젯의object/valueField/aggregate, 보고서의objectName/columns/groupingsDown, 리스트 차트의xAxisField/yAxisFields)는 제거되었습니다. 마이그레이션: 인라인 쿼리를defineDataset으로 옮기고 이름으로 참조하세요.ChartTypeSchema도 기본형으로만 렌더링되던 8개의 변형 타입을 삭제했습니다(stacked-bar→bar,spline→line,bubble→scatter, …). - 더 엄격한 빌드 타임 검증 (9.6–9.7) —
os compile은 이제 단독 필드 참조 (record.amount대신amount), 알 수 없는 CEL 함수, 잘못된 플로우 값 보간 구문에 대해 각각 did-you-mean 힌트와 함께 실패합니다. 이전에는 "빌드는 되지만 조용히 잘못되던" 스택이 이제 큰 소리로 실패합니다 — 업그레이드 후os compile을 다시 실행하고 플래그된 항목을 수정하세요. - 숫자 필드 수식이 혼합 산술을 계산합니다 (9.7) —
record.amount / 100과record.price * 2가 이제 조용히null을 내놓는 대신 평가됩니다./ 100.0부동 소수점 리터럴 우회법은 더 이상 필요하지 않습니다. - 객체 단위 REST 게이팅, 이제 강제됨 (ADR-0049) — 객체의
apiEnabled: false는 해당 객체를 REST 표면에서 제거하고,apiMethods화이트리스트는 어떤 작업에 도달할 수 있는지를 제한합니다. 이전에는 파싱은 되었지만 강제되지 않았습니다. - 패키지 문서를 메타데이터로 +
book내비게이션 (9.3–9.6) —src/docs/*.md가doc메타데이터로 등록됩니다.book요소(ADR-0046)는 파생 멤버십 내비게이션 척추를 선언하며, 청중 게이팅과 함께GET /api/v1/meta/book/:name/tree에서 제공됩니다. os package install(9.3) — 카탈로그 id 또는 인라인 에어갭 아티팩트로부터 실행 중인 런타임에 패키지를 설치하며,--email/--password로 인증합니다.- 승인(Approvals) (9.3) — 수정 요청 반려(
maxRevisions, 기본값 3), 잡 기반 SLA 자동 에스컬레이션, 리스트 검색/페이지네이션, 세션 없는 이중 언어 승인/거부 확인 링크. - 인바운드 웹훅 플로우 트리거 (9.3) —
type: 'api'플로우는 HMAC 검증된POST /api/v1/automation/hooks/:flowName/:hookId엔드포인트를 멱등적이고 큐 기반인 수집과 함께 마운트합니다. - 알림 보존 기본값 켜짐 (9.5) — 알림 기록이 90일에 자동으로 정리됩니다.
기록을 영구 보관하려면 메시징
retentionDays: 0을 설정하세요. - CLI가 AI 제공자 SDK를 번들합니다 (9.0) — OpenAI 호환 제공자(DeepSeek, DashScope, SiliconFlow, OpenRouter, Cloudflare)가 전역 설치된 CLI에서 별도 설정 없이 동작합니다.
주목할 플로우 작성 동작 변경 하나: create_record 노드의 outputVariable는 이제
(단순 id가 아니라) 생성된 레코드 객체를 담으므로, id를 기대하던 {var} 참조를
{var.id}로 업데이트하세요.
8.0.x
ObjectOS One과 번들 서버는 @objectstack 8.0.1 기반으로 동작했습니다.
- MCP over Streamable HTTP — 모든 배포가 네트워크로 접근 가능한
Model Context Protocol 서버로 동작할 수 있습니다.
OS_MCP_SERVER_ENABLED=true로 활성화하면 엔드포인트가/api/v1/mcp에서 제공되며 fail-closed 인증(익명 요청 거부)이 적용됩니다. 플러그인은@objectstack/plugin-mcp-server에서@objectstack/mcp로 이름이 변경되었습니다. - 셀프 서비스 API 키 —
POST /api/v1/keys는 한 번만 표시되는sys_api_key를 발급합니다. REST 데이터 및 메타데이터 API(/api/v1/data,/api/v1/meta)는 이제 MCP와 동일한 검증기로 API 키를 인증하며, 키 소유자의 권한과 레코드 수준 보안 아래에서 실행됩니다. - 필드 단위 조건 규칙 —
visibleWhen,readonlyWhen,requiredWhen이 폼 UI뿐 아니라 ObjectQL에 의해 서버 측에서 강제됩니다. - 재사용 가능한 RLS 읽기 필터 —
security.getReadFilter(object, context)가 레코드 접근의 읽기 범위를 노출합니다. 분석 데이터셋, 대시보드, 보고서가 여기에 브리지되며 범위를 안전하게 적용할 수 없으면 fail closed 됩니다. - 독립형 host 스택 — 런타임은 단일 테넌트
createStandaloneStackhost를 제공합니다. 7.x의 클라우드 연결·호스트명 라우팅 방식createObjectOSStack래퍼는 제거되었습니다. 클라우드 배포는 이제OS_ARTIFACT_FILE을 게시된 artifact URL로 지정합니다.
5.0 — project → environment 이름 변경 (출시됨)
이전에 Project라고 불리던 런타임 개념이 전반에 걸쳐 Environment로 이름이 변경되었습니다. 영향 범위:
- CLI 플래그:
--environment/-e - HTTP 경로:
/api/v1/environments/:environmentId/... - 헤더:
X-Environment-Id - 환경 변수:
OS_ENVIRONMENT_ID(OS_PROJECT_ID는 사용 중단된 별칭으로 유지됨) - DB 컬럼:
environment_id - JSON 스키마:
EnvironmentArtifact
업그레이드
실제 작업 단계는 업그레이드 및 롤백을 참고하세요. 사전 점검:
- 현재 버전과 대상 버전 사이의 모든 마이너에 대한 CHANGELOG 항목을 읽으세요.
os diff <old-artifact> <new-artifact>를 실행하여 호환성을 깨는 스키마 변경을 드러내세요.- 대상 버전에 대해
os doctor를 실행하세요. - 전체 플릿에 적용하기 전에 카나리 인스턴스 하나를 먼저 띄우세요.
- 이미지 태그와 아티팩트 버전 모두에 대한 롤백 계획을 마련하세요(둘은 독립적으로 롤백됩니다).
회귀 보고
패치 또는 마이너 버전이 이전에 정상 작동하던 것을 망가뜨린 경우, 업그레이드 전/후 버전과 함께 github.com/objectstack-ai/objectos/issues에 버그를 등록하세요. 회귀는 가장 높은 우선순위의 버그로 처리합니다.