nextcloud / nextcloud/text

Persistent change tracking

Open
#1,354 0 comments 9 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
JavaScript
Stars
659
Forks
133
Avg merge
1d 20h
Merged PRs (30d)
110

Description

One limitation of https://github.com/nextcloud/text/pull/1296 is that we cannot persist changes when an editing session is ended (all users close the file) or if the file gets changed externally.

  • See if we can merge outside changes into an existing editing session
    • We would need to generate a diff of the two documents and convert that into a proper prosemirror transaction that we can apply on top of our existing steps
    • This would also resolve having a dedicated conflict resolution dialog
  • If we decide to keep steps forever (for persistent annotation purposes for example) we need to find a way to reduce the amount of steps, either by compressing the steps into only those handled by different authors or by somehow storing the author information in the document tree.
  • Ideally all that should happen in the backend rather than the frontend, however this would require having a PHP rewrite of prosemirror-transform and schema handling for being able to work with documents and the transformation steps.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review pull request 1296 first, then trace how editing sessions, external file changes, and transformation steps are currently handled. Evaluate the proposed ProseMirror transaction path against a backend PHP approach using prosemirror-transform and schema handling. Done means the persistence and outside-change behavior has a defined, implementable design.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, php
Domain
backend-api-design, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.