Skip to content

Add configurable contact versioning with field-level comparison and selective restoration #5680

Description

@Roh8i

Is your feature request related to a problem? Please describe.

The Activity reports that a contact has been modified, but it is not possible to determine what exactly changed. The previous values are not shown, and there is no way to restore the contact to its previous state.

This is especially problematic when an address book is shared over a group and contacts are synchronized across multiple devices or edited accidentally. A phone number, email address, postal address, note, contact photo, or another property may be overwritten without any way to identify or recover the previous value.

This request is not only about recording that a contact was modified. It specifically requires contact-content versioning, field-by-field comparison, and selective restoration of individual contact properties.

Describe the solution you'd like

Proposed solution

Implement configurable versioning for contacts, similar to versioning in Nextcloud Files.

Whenever a contact is changed, a new version should be created automatically. The version history should contain the complete previous vCard data and allow users to inspect changes at field level.

Users should be able to:

  1. View the complete version history of a contact.
  2. See when each version was created.
  3. Compare a previous version with the current contact.
  4. See which individual fields changed.
  5. Restore the complete contact to a previous version.
  6. Restore only one or more selected fields from a previous version.
  7. Preview the result before applying a restoration.
  8. Export a previous version as a .vcf file.

Configurable version retention

Version retention should work similarly to versioning in Nextcloud Files.

The number of retained previous versions should be configurable. The configuration should support:

  • enabling or disabling contact versioning.
  • setting the maximum number of previous versions retained per contact.
  • automatically deleting the oldest versions when the configured limit is exceeded.
  • a global administrator setting.
  • optionally, a user-level setting if supported by the application.
  • preventing unlimited growth of database and file storage.

Field-level comparison

The comparison view should show changes per field.

For every changed property, the history should show:

  • the field or property name.
  • the previous value.
  • the new value.
  • the date and time of the change.
  • and, if available, the client or source that made the change.

Selective restoration

The restoration interface should provide at least the following options:

  • restore the complete previous contact version.
  • restore one selected field.
  • restore multiple selected fields.
  • preview the resulting contact before applying the restoration.

Describe alternatives you've considered

No response

Additional context

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    1. to developAccepted and waiting to be taken care ofenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions