Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ jobs:
- name: Install dependencies
if: steps.scope.outputs.package_any == 'true'
run: npm ci --no-audit --no-fund
- name: Verify v2 package
- name: Verify active v2 packages
if: steps.scope.outputs.package_full == 'true'
run: npm run archive:check && npm run verify -w @interactive-os/json-document && npm run standard:check && npm run docs:evaluate
run: npm run archive:check && npm run verify -w @interactive-os/json-document && npm run verify:companions && npm run standard:check && npm run docs:evaluate
- name: Verify package documentation
if: steps.scope.outputs.package_full != 'true' && (steps.scope.outputs.package_docs == 'true' || steps.scope.outputs.package_smoke == 'true')
run: |
Expand All @@ -45,7 +45,9 @@ jobs:
if: steps.scope.outputs.package_full == 'true' || steps.scope.outputs.package_smoke == 'true'
env:
npm_config_cache: ${{ runner.temp }}/npm-cache
run: npm pack -w @interactive-os/json-document --dry-run
run: |
npm run pack:library
npm run pack:companions

lab-extensions:
name: Archive isolation
Expand Down
23 changes: 17 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,17 @@ v2 root는 JSON, JSON Pointer, JSONPath, JSON Patch만 전제로 하며 Zod, Rea
selection, clipboard, history를 필수 계약에 넣지 않습니다.

```txt
Pure Protocol -> Document Projection -> host adapter
Pure Protocol
|-> local provider -----------\
| > same six-member Document Projection
`-> collaboration provider --/ |-> optional history/text authoring
`-> optional DOM/IME lease
```

로컬 전용 사용자는 Core만 설치합니다. 협업으로 전환해도 편집기가 받는
`JSONDocument` 포트는 바뀌지 않고, causal merge와 DOM publication lease만
독립 package로 추가합니다.

공식 사이트: https://developer-1px.github.io/json-document/

## 문서 지도
Expand All @@ -30,14 +38,17 @@ Pure Protocol -> Document Projection -> host adapter
| 위치 | 역할 |
| --- | --- |
| [packages/json-document](packages/json-document) | 배포되는 v2 Kernel |
| [packages/json-document-collaboration](packages/json-document-collaboration) | transport-free causal multi-writer provider |
| [packages/contenteditable-collaboration](packages/contenteditable-collaboration) | collaborative string을 위한 optional DOM/IME publication lease |
| [apps/site](apps/site) | v2 Core 공개 문서 사이트 |
| [archive/v1](archive/v1) | 배포·workspace·검증에서 분리된 1.x 기록 |

이 저장소가 배포하는 package는 `@interactive-os/json-document` 하나입니다.
Selection, history, clipboard, persistence와 DOM lifecycle은 host adapter가
여섯-member `JSONDocument` 위에서 조합합니다. DOM과 Input Events 정규화가
필요한 제품은 별도 수명 주기를 가진 companion `@interactive-os/editable`을
검토할 수 있으며, companion은 이 저장소의 배포물이나 v2 Core API가 아닙니다.
v2 Kernel release는 `@interactive-os/json-document` 하나이며 dependency-free
Core로 남습니다. 두 collaboration package는 독립 version과 release lifecycle을
가진 optional companion입니다. Selection, clipboard, persistence와 제품별 DOM
lifecycle은 host adapter가 여섯-member `JSONDocument` 위에서 조합합니다.
일반 DOM과 Input Events 정규화가 필요한 제품은 별도 수명 주기의
`@interactive-os/editable`도 검토할 수 있습니다.

## 경계

Expand Down
8 changes: 4 additions & 4 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
docs
|-- changelog.md # 사용자 영향 중심 변경 기록
|-- generated
| `-- repo-catalog.json # v2 Core release catalog
| `-- repo-catalog.json # v2 Core와 optional companion catalog
|-- public
| |-- overview.md # 프로젝트 이해
| |-- quickstart.md # 사용 시작
Expand All @@ -34,7 +34,7 @@ language binding입니다. Archive의 1.x 문서는 v2 exact 20-symbol·six-memb
| 위치 | 책임 | 독자 |
| --- | --- | --- |
| `changelog.md` | 사용자 영향 중심 변경 기록 | 외부 사용자, 릴리스 확인자 |
| `generated/` | v2 Core release 표면으로 만든 reference data. 직접 편집하지 않는다. | evaluator |
| `generated/` | v2 Core와 명시적으로 등록한 companion 표면으로 만든 reference data. 직접 편집하지 않는다. | evaluator |
| `public/` | 사용법과 프로젝트 이해를 위한 공식 문서 원천 | 외부 사용자, LLM, 사이트 방문자 |
| `standard/` | v2 root 정본 | 표준화 검토자, 대체 구현 작성자 |

Expand All @@ -45,7 +45,7 @@ language binding입니다. Archive의 1.x 문서는 v2 exact 20-symbol·six-memb
- public 문서는 usage와 프로젝트 이해만 다룬다.
- 릴리스 history, 검토 loop, maintainer-only gate는 public 문서에 쓰지 않는다.
- 내부 구현 경로는 public 문서에 쓰지 않는다.
- generated catalog는 `packages/json-document`만 읽으며 archive, app, sibling
companion을 release package로 추론하지 않는다.
- generated catalog는 Core와 두 collaboration companion의 exact 경로만 읽으며
archive, app, 그 밖의 sibling package를 active package로 추론하지 않는다.
- 새 문서는 기존 책임 폴더 중 하나에 들어가야 한다.
- 새 책임 폴더가 필요하면 먼저 이 파일의 책임 표를 갱신한다.
16 changes: 14 additions & 2 deletions docs/changelog.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,27 @@
# Changelog

All notable changes to the active v2 package are documented here. The complete
All notable changes to the active v2 packages are documented here. The complete
1.x history is preserved under `archive/v1/docs/changelog.md`.

## Unreleased

- Added the independently versioned, transport-free
`@interactive-os/json-document-collaboration` provider. Local and
collaborative runtimes expose the same six-member `JSONDocument` Projection;
causal bundles, conflicts, checkpoints, selective history, and text
authoring remain optional sidecars.
- Added
`@interactive-os/json-document-contenteditable-collaboration`, an optional
publication lease that lets native input and IME composition keep temporary
DOM ownership while the collaborative model continues to ingest changes.
- Kept the Core package dependency-free: local-only consumers install neither
collaboration package, and the Kernel API and 20-symbol public surface do not
change.
- **Breaking (`2.0.0-rc.0`):** Replaced the package root with the
provider-neutral v2 Kernel: exactly 8 runtime values and 12 public types, with
a non-generic six-member `JSONDocument` projection.
- Removed the 1.x `/session` and `/react` entrypoints, React and Zod peer
dependencies, and all non-Core packages from the v2 release scope.
dependencies, and all 1.x non-Core packages from the v2 release scope.
- Archived the 1.x editing session, extensions, labs, demos, and their
documentation. Archive contents are not compiled, tested, cataloged, or
published as v2-compatible packages.
Expand Down
98 changes: 97 additions & 1 deletion docs/generated/repo-catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
"description": "Provider-neutral JSON editing protocol and headless document projection.",
"license": "MIT",
"summary": "문서, 표, 슬라이드, 캔버스, 노트 편집기가 함께 쓸 수 있는 provider-neutral\nJSON 편집 protocol과 headless document projection입니다.",
"entrypoints": [
"."
],
"publicExports": [
"JSONAppliedChange",
"JSONCapabilityResult",
Expand Down Expand Up @@ -49,9 +52,102 @@
"jsonpath",
"protocol"
]
},
{
"path": "packages/json-document-collaboration",
"name": "@interactive-os/json-document-collaboration",
"status": "companion",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "Transport-free causal collaboration provider for @interactive-os/json-document.",
"license": "MIT",
"summary": "Transport-free causal collaboration provider for the six-member\n`@interactive-os/json-document` Projection contract.",
"entrypoints": [
".",
"./history",
"./text"
],
"publicExports": [
"ActorId",
"ArrayPlacement",
"ChangeId",
"CollaborationAcceptance",
"CollaborationBundle",
"CollaborationChange",
"CollaborationCheckpoint",
"CollaborationCheckpointPayload",
"CollaborationCompactionOptions",
"CollaborationCompactionReport",
"CollaborationCompactionResult",
"CollaborationConflict",
"CollaborationControl",
"CollaborationEpoch",
"CollaborationEpochParent",
"CollaborationIngestFailure",
"CollaborationIngestResult",
"CollaborationIngestSuccess",
"CollaborationMember",
"CollaborationMembership",
"CollaborationRestoreOptions",
"CollaborationRestoreResult",
"CollaborationRulesetIdentity",
"CollaborationRuntime",
"CollaborationRuntimeOptions",
"CollaborationSnapshot",
"ContainerNodeId",
"MemberId",
"MemberPlacement",
"ObjectPlacement",
"PendingChange",
"PositionId",
"SemanticOperation",
"SuppressedChange",
"TextAtomId",
"TextNodeId",
"TextSpliceOperation",
"compactCollaborationCheckpoint",
"createCollaborationRuntime",
"restoreCollaborationRuntime"
],
"publicExportCount": 40,
"keywords": []
},
{
"path": "packages/contenteditable-collaboration",
"name": "@interactive-os/json-document-contenteditable-collaboration",
"status": "companion",
"private": false,
"publishable": true,
"version": "0.1.0",
"description": "IME-safe contenteditable publication lease for json-document collaboration text.",
"license": "MIT",
"summary": "IME-safe DOM publication lease for\n`@interactive-os/json-document-collaboration/text`.",
"entrypoints": [
"."
],
"publicExports": [
"CollaborationContentEditableAdapter",
"CollaborationContentEditableOptions",
"CollaborationContentEditableResult",
"CollaborationTextDOM",
"CollaborationTextDOMObservation",
"createCollaborationContentEditableAdapter",
"plainTextCollaborationDOM"
],
"publicExportCount": 7,
"keywords": [
"@interactive-os/json-document",
"collaboration",
"contenteditable",
"ime",
"web"
]
}
],
"totals": {
"packages": 1
"packages": 3,
"core": 1,
"companions": 2
}
}
19 changes: 14 additions & 5 deletions docs/public/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ json-document v2는 문서, 표, 슬라이드, 캔버스, 노트 편집기가
React, selection, clipboard, history를 필수 계약에 넣지 않습니다.

```txt
Pure Protocol -> Document Projection -> host adapter
Pure Protocol
|-> local provider -----------\
| > same six-member Document Projection
`-> collaboration provider --/ |-> optional history/text authoring
`-> optional DOM/IME lease
```

## 배경
Expand Down Expand Up @@ -108,18 +112,23 @@ if (result.ok) {
| 표면 | 상태 | 책임 |
| --- | --- | --- |
| `@interactive-os/json-document` | v2 Kernel | Pure Protocol과 여섯-member Projection |
| `@interactive-os/json-document-collaboration` | optional companion | 같은 Projection 뒤의 transport-free causal merge |
| `@interactive-os/json-document-contenteditable-collaboration` | optional companion | collaborative string의 DOM/IME publication lease |

패키지는 `/session`과 `/react`를 공개하지 않습니다. 구현 간 교환 가능한 코드는
루트 `JSONDocument` 여섯 member에만 의존하고, 편집 UX와 framework lifecycle은
host 또는 별도 adapter가 소유합니다.
host 또는 별도 adapter가 소유합니다. Local-only consumer는 Core만 설치하며,
collaboration provider로 바꿔도 editor가 사용하는 `JSONDocument` API는
변하지 않습니다.

## Host adapter와 companion

Host adapter는 공개 `JSONDocument`만 입력으로 받고 제품 의도를 Pointer와
JSON Patch로 번역합니다. Selection, history, clipboard, persistence, focus와
remote protocol은 Core member를 늘리지 않고 adapter 쪽에 둡니다. Adapter를
별도 package로 배포할 때는 Core와 독립적으로 version과 compatibility를
검증해야 합니다.
remote protocol은 Core member를 늘리지 않고 adapter 쪽에 둡니다.
Collaboration companion도 transport, authentication, presence, persistence를
소유하지 않습니다. Adapter와 companion은 Core와 독립적으로 version과
compatibility를 검증합니다.

`@interactive-os/editable`은 DOM과 Input Events 정규화를 담당하는 별도 companion
예시입니다. `JSONDocument`는 canonical headless JSON state로 남고, editable은
Expand Down
25 changes: 19 additions & 6 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,11 @@ React hook, host service를 추가하지 않는다.
## Pure Protocol과 Projection

```txt
Pure Protocol -> Document Projection -> host adapter
Pure Protocol
|-> local provider -----------\
| > same six-member Document Projection
`-> collaboration provider --/ |-> optional history/text authoring
`-> optional DOM/IME lease
```

Pure Protocol은 JSON value, RFC 6901 JSON Pointer, RFC 9535 JSONPath,
Expand Down Expand Up @@ -191,15 +195,24 @@ Minor release에서 optional diagnostic field와 새 code가 추가될 수 있
introspection, DOM과 framework lifecycle은 host 또는 별도 adapter가
여섯-member `JSONDocument`를 조합해 소유한다.

이 저장소의 v2 release는 Core package 하나만 포함한다. Host adapter는 공개
Root Projection만 입력으로 받고 제품 의도를 Pointer와 JSON Patch로 번역한다.
별도 package로 배포하는 adapter는 독립적으로 version과 compatibility를
검증한다.
v2 Kernel release는 dependency-free Core package 하나다. Local-only consumer는
Core만 설치한다. 이 저장소의
`@interactive-os/json-document-collaboration`은 같은 여섯-member Projection을
제공하는 independently versioned, transport-free provider이고,
`@interactive-os/json-document-contenteditable-collaboration`은 collaborative
string을 위한 optional DOM/IME publication lease다. 두 companion을 사용해도
Core Root API와 editor가 받는 `JSONDocument` port는 바뀌지 않는다.

Host adapter는 공개 Root Projection만 입력으로 받고 제품 의도를 Pointer와
JSON Patch로 번역한다. Collaboration companion은 transport, authentication,
presence, persistence를 소유하지 않는다. 별도 package로 배포하는 adapter와
companion은 Core와 독립적으로 version과 compatibility를 검증한다.

`@interactive-os/editable`은 DOM과 Input Events 정규화를 맡는 별도 companion
예시다. `JSONDocument`는 canonical headless JSON state로 남고, editable은
contenteditable lifecycle을 소유하며, 문서 의미는 adapter가 연결한다.
Companion은 json-document package export나 release catalog의 일부가 아니다.
`@interactive-os/editable`은 json-document package export나 active package
catalog의 일부가 아니다.

## Host 책임

Expand Down
41 changes: 41 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading