-
-
Notifications
You must be signed in to change notification settings - Fork 581
Comparing changes
Open a pull request
base repository: edwardkim/rhwp
base: main
head repository: 20UNIVA/UNIVA-rhwp
compare: main
- 16 commits
- 47 files changed
- 3 contributors
Commits on Jun 2, 2026
-
Task #999 : Stage 1 - Document IR JSON 직렬화 뷰 추가
모델 조회용 안정적 IR 뷰 스키마(DocumentIrView) 및 Document::to_ir_view/to_ir_json 구현. SSR 서버의 GET /ir 기반. 수행/구현 계획서 및 Stage 1 완료보고서 포함. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : Stage 2 - EditOperation 양방향 프로토콜 + native 적용기
EditOperation enum(insert/delete/split/merge)과 forward/inverse 적용기를 기존 *_native 경로 재사용으로 구현. TS command.ts에 serialize() 추가하여 클라이언트가 동일 스키마 op 생성 가능. 라운드트립 테스트 4종 통과. TS serialize 타입 클린. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : Stage 3 - SSR 세션 서버(axum) + sqlite 영속
fileId 단위 DocumentCore 세션 서버 신규 crate(server/). POST /sessions, /ops, PUT /snapshot, GET /ir, DELETE 엔드포인트. sqlite로 base+ops+snapshot 영속, 서버 재시작 시 복원. 엔진은 parse_document/set_document/ apply_edit_ops_json/to_ir_json 재사용. store 단위테스트 3종 + 실서버 스모크(세션생성/IR/op) + 재시작 복원 검증 통과. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : Stage 4 - studio 클라이언트 미러링 + iframe fileId 연결
SessionClient(디바운스 배치 op 전송 + 스냅샷 PUT + beforeunload flush) 신규. InputHandler.executeOperation에 미러링 hook(mirrorSink). main.ts에서 fileId(URL query/postMessage) 수신 시 세션 생성 + 미러링 연결. npm/editor loadFile에 fileId 옵션 추가. tsc 변경분 타입 클린. 프로토콜은 Stage 3 실서버 스모크 형식과 일치. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : Stage 5 - export API + 외부 모듈 인터페이스 경계
GET /sessions/{id}/export?fmt=hwp|hwpx 추가 (serialize_document/ serialize_hwpx). 외부 minio 모듈 계약 문서화(다운로드/업로드는 외부, 파싱/편집/영속/export는 서버, 확정 저장 트리거 정의). export 라운드트립 스모크 통과 (편집본 hwp/hwpx 재파싱 시 보존). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> -
Task #999 : Stage 6 - 통합/결정성 검증 + 최종 보고
WASM↔native 결정성 회귀 테스트 추가(op 적용 == native 직접 호출). 전체 lib 1412 passed. 통합 시나리오(편집→close→sqlite 복원→export) PASS. Stage 6 보고서 + 최종 결과보고서 + 오늘할일(20260602) 작성. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : 브라우저 E2E 추가 + 보고서 갱신
Docker WASM 빌드 후 puppeteer headless E2E(ssr-session.test.mjs): 키보드 입력이 디바운스 배치로 서버 IR에 미러링 + DELETE 후 sqlite 복원 유지 실측 PASS. Stage 6/최종 보고서에 브라우저 E2E 결과 반영. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : 재진입 복원 로드 — fileId로 서버 상태를 화면에 복원
버그: ?fileId= 로 재진입해도 파일을 다시 열기 전엔 빈 화면(서버엔 상태 존재). 수정: 부팅 시 restoreSsrSessionIfNeeded()가 GET /export로 서버 현재 상태를 가져와 loadDocument + 미러링 연결(createSession 없이 attach). createSsrSession/ attachSsrMirror 분리로 복원 시 ops 초기화 방지. E2E에 재진입 복원 시나리오 추가 — 7/7 PASS (새 탭에서 파일 없이 복원 + 이전 편집 포함). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : IR 조회 페이지 필터 추가 (GET /ir?page=N)
page 미지정 시 전체, page=N이면 해당 페이지 본문 문단만 반환. 각 문단의 section/para 절대 인덱스와 전체 text 유지 → 페이지 일부만 봐도 편집 op 좌표가 그대로 유효. page_paragraph_set(pagination 순회)+ to_ir_json_paged + to_ir_view_filtered. 21페이지 문서 실서버 검증: 페이지별 다른 문단, 절대좌표 유지, page=5 좌표로 편집 PASS. 미주 전용 페이지는 본문 문단 0(의도). lib 1413 passed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : minio 저장소 프록시 — upload/download 연동
rhwp-server가 외부 minio(UPLOAD_URL/DOWNLOAD_URL)를 대행. POST /documents로 파일 upload→file_id 발급+세션 생성. get_or_restore에 download 폴백 추가 (메모리→sqlite→minio download). reqwest 의존성 추가. 실서버 검증: POST /documents 발급 PASS, download 폴백 PASS, 없는 id 404. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : studio 빈문서 업로드 + 열기 분기 워크플로우
진입 시 fileId 없으면 빈 문서를 POST /documents로 업로드(fileId 발급)+미러링. 로컬 열기 시 직전 빈문서의 편집 여부(dirty)로 분기 — 미편집이면 빈세션 닫고 전환, 편집했으면 서버에 보존 후 새 문서 세션. ssrBootstrap/loadBytes 개편, dev __ssr 상태 노출. E2E(ssr-upload-flow): A(빈문서 발급)/B(미편집 전환)/C(편집보존+전환) 전부 PASS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : fileId 변경 시 주소창 URL 동기화
열기/빈문서 발급 등으로 fileId가 바뀌어도 URL의 ?fileId=가 갱신되지 않던 이슈 수정. syncUrlFileId()가 history.replaceState로 갱신(ssrBase 보존) → 새로고침/공유 시 해당 문서로 복원. E2E에 URL 검증 추가 — 전부 PASS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Commits on Jun 4, 2026
-
Task #999 : 저장(서버 minio 덮어쓰기) — POST /sessions/{id}/save
upload에 file_id 옵션 추가(UploadResult). 같은 file_id로 export 결과를 minio에 덮어쓰는 /save 엔드포인트. studio file:save가 SSR 모드면 saveToServer(서버 저장)로 라우팅, 대기 op flush 후 /save 호출. 서버 검증(편집→저장→타서버 download 반영) + studio E2E(file:save→dirty해제+ 서버반영) 모두 PASS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
Task #999 : VM 배포 최소 패키지 (single-origin) + deploy 가이드
rhwp-server가 RHWP_STUDIO_DIR 지정 시 studio 정적 자산도 같은 포트에서 서빙(ServeDir fallback) → 별도 웹서버·CORS 불필요. deploy/ 에 빌드/패키징/ 실행 스크립트 + README + systemd 유닛 정리. 검증: release 패키지(.tgz) run.sh 기동 → studio/health/POST documents 동작 PASS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Commits on Jun 5, 2026
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...main