Skip to content

feat(wopi): add office document editing - #175

Open
devld wants to merge 1 commit into
masterfrom
feat/wopi
Open

feat(wopi): add office document editing#175
devld wants to merge 1 commit into
masterfrom
feat/wopi

Conversation

@devld

@devld devld commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • add discovery-backed WOPI sessions and the CheckFileInfo, GetFile, PutFile, PutRelativeFile, and lock operations needed for document editing
  • keep WOPI locks process-local and separate from WebDAV and ordinary drive writes, with best-effort external-change conflict detection
  • add an authenticated Office handler that launches the configured editor through a form POST and derives WOPISrc from the current origin for multi-domain deployments
  • document the single-setting configuration, reverse-proxy requirements, lock scope, and compatibility boundary in English and Chinese

Compatibility

  • WOPI is disabled unless wopi.discovery-url is configured
  • the initial supported editor is self-hosted Collabora Online
  • sessions and locks are process-local, so WOPI editing currently requires a single go-drive instance
  • Microsoft proof-key validation and Microsoft 365 CSPP support are out of scope for this version

Validation

  • go test -count=1 ./...
  • go test -race -count=1 ./server
  • npm run lint
  • npm run build-web
  • documentation translation, VitePress, and SEO checks
  • real Collabora CODE 26.04.2.4 open, lock, save, and unlock flow, including verification of the saved DOCX contents

Add discovery-backed WOPI sessions, Collabora-compatible file operations, and process-local WOPI locks with best-effort external-change detection.

Expose an Office handler in the web UI, derive WOPISrc from each request origin for multi-domain deployments, and document the single-instance, Collabora-first compatibility boundary.

Co-Authored-By: codex <codex@openai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant