cozy-desktop

File Synchronisation for Cozy on Desktop and Laptop

AGPL-3.0 License

Downloads
34
Stars
99
Committers
31
cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • The recent change we introduced to fix the propagation of remote Cozy Notes
    changes to the local filesystem brought some new timing issues. These can
    result in invalid metadata being sent to the remote Cozy after propagating an
    update. In case the note was in a shared directory, the metadata change is in
    turn propagated via the sharing to other Cozies and we can end up with a
    desynchronized note.
    This new issue comes from the fact we have to add write permissions on the
    local note file to let the client write the new markdown export. The read-only
    protection was added to prevent local changes that would break the actual note
    on the remote Cozy. Since we're now managing those changes within the
    synchronization process (i.e. with the creation of a conflict) we can remove
    the read-only limitation altogether and avoid the new timing issues.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • Remote changes resulting in an MergeMissingParentError do not block the
    synchronization process since v3.21.0-beta.1 but the changes from the affected
    batch and the ones coming after will be fetched over and over again until the
    errors are resolved, which might never come.
    We've identified a few sources of those errors that should be fixed really
    soon and believe we should not encounter solvable missing parent issues
    anymore so we've decided to mark them as processed anyway and rely on the next
    changes to resolve those missing parents issues.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • The client would not detect the correct mime type for .cozy-note files when
    detected on the local filesystem. This would change the saved mime type of
    notes moved on the local filesystem and not show the correct icon in the
    Recent changes list in our main window.
    We've switched to a custom mime detector for those files to detect our custom
    mime type.
  • Since propagating a local file update to a remote Cozy Note would break this
    note (i.e. it would not be detected as such and we would lose its actual
    content while still keeping its markdown export within the associated Cozy
    file), we've decided to prevent all local note updates to be propagated to the
    remote Cozy.
  • In order to still synchronize your local updates to notes with your remote
    Cozy, we're now using the conflict mechanism to rename the original note on
    the remote Cozy before upload your new content to the appropriate location.
    This way, you have both your updated content and the original note that can
    still be edited within the Cozy Notes application.
  • We've found that when renaming a folder while another folder within the same
    parent starts with the renamed folder's original name (e.g. renaming cozy to
    cozy cloud while you have cozy company in the same parent) would lead to
    the incorrect movement of the content of the other folder (i.e. the content of
    cozy compnany in our example).
    We've fixed the algorithm that lists the content of a folder so that it looks
    only within the exact given location and not similar locations.
  • In some situations, locally creating a folder within a moved or renamed parent
    could lead to the creation of a new parent folder on the remote Cozy at the
    target location, thus making the parent movement impossible since a document
    would already exist at the target location. This situation was caused by some
    logic we implemented to help create complex hierarchies in any order. We would
    create a missing parent folder when creating a new folder on the remote Cozy.
    We've now stopped doing this and will not synchronize the creation of a folder
    if its parent does not exist. In case the parent location would be created
    later by the client (e.g. when propagating the parent movement), the new
    folder will eventually be synchronized.

Improvements for Windows users:

  • To emphasize the fact that Cozy Notes should not be edited on your local
    filesystem we mark the local note files as read-only. This does not prevent us
    from overwriting them with new remote updates on Linux and macOS but it does
    on Windows in some cases. In those cases, the local file content does not
    reflect the remote content anymore and it can even lead to the remote Note
    being broken after a Desktop client restart.
    We're now adding write permissions the local file when we want to update it
    with new content coming from the remote Cozy and switch it back to a read-only
    mode afterwards.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • We missed a spot when introducing the deletion marker in the previous beta
    release which could lead to remote restorations being handled as movements if
    the previous deletion was merged into the local PouchDB database but not
    propagated to the local filesystem.
    We haven't identified visible issues coming from this yet though.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • Moving a document to an ignored location (see
    https://github.com/cozy-labs/cozy-desktop/blob/master/core/config/.cozyignore
    and your local .cozyignore rules file) after another move would result in
    the first move being propagated to the remote Cozy and the document being
    desynchronized after that.
    From now on, the second move to the ignored location will cancel the first
    move and the client will correctly propagate a deletion to the remote Cozy.
  • Deleting a file on your Cozy while moving it on your local filesystem with
    your client stopped would lead to the desynchronisation of the file. It would
    be deleted on your Cozy but would still exist on your local filesystem and all
    later modifications would not be propagated.
    We're now refusing the deletion because we believe the movement indicates a
    desire to keep the file and it seems easier for the user to understand and fix
    the situation if that was not the expected behavior. The file move will then
    be propagated to the remote Cozy and kept in sync.
  • In some situations we can detect changes made on your remote Cozy on documents
    of which we haven't yet received the parent folders. We can't process orphaned
    documents so we require the parents of all documents before we allow
    processing those and if we don't have them, we'll issue an error that results
    in the "Synchronization incomplete" status message, literally blocking the
    synchronization process.
    We believe that most of those issues could resolve themselves by merely
    refusing the orphan change and synchronizing the other changes so we've
    decided not to block the synchronization process anymore when we encounter
    orphan changes.
  • We detected that the remote watcher whose role is to detect, fetch and analyze
    changes coming from your remote Cozy could fail without the synchronization
    process stopping and alerting you. This means that in such cases, the changes
    made on your local filesystem would still be detected and potentially
    propagated to your remote Cozy but the changes made remotely would not be
    applied locally until a client restart.
    We've refactored the life-cycle management of the whole synchronization
    process and the remote watcher and we made sure that errors coming from the
    remote watcher are caught by the synchronization process which will in turn
    alert you and stop itself and both local and remote watchers.

See also known issues.

Happy syncing!

cozy-desktop - Overwriting is underrated

Published by taratatach over 4 years ago

Improvements for all users:

  • In some situations, when moving a file or folder and overwriting an existing
    document, the local file system can fire a move event without firing a
    deletion event for the document that's being overwritten. We were very
    conservative in the way to we treat changes that could erase content so we
    would generate a conflict for those moves.
    Now that we have file versioning on the Cozy, we feel comfortable accepting
    those changes and will thus delete the overwritten document but will keep its
    existing references (e.g. photos album, bills…) and add them to the document
    being moved.
  • We've found out that the synchronization process could be started more than
    once. Although this should have no effect (i.e. one start replacing the
    previous one) we've made sure we only start the process once. This should
    avoid wasting some resources in an extraneous start.
  • Following some feedback on the app updater window which could give the feeling
    that the update was not going to complete, we've made a small redesign of this
    window, replacing the indeterminate progress bar with a spinner and adding
    emphasizing the text asking you to be patient until the download is complete.

Improvements for Windows and macOS users:

  • To avoid synchronizing temporary documents generated by some software when
    saving a new version of a document, we maintain a list of file name patterns
    that should not be synchronized. We had some patterns for the Microsoft Office
    suite files but we did not account for temporary files generated for all the
    file types those can open like Open Documents.
    We've widened the pattern used to match those files those that all temporary
    files created by the MS Office software should be matched and thus not be
    synchronized.

Improvements for Linux and Windows users:

  • During the initial scan of your local synchronization folder, we emit deletion
    events when we detect a know document is not present anymore (i.e. we assume
    you've deleted it while the client was not running). The order in which we
    emit those events is important because it will be the order in which those
    actions will be synchronized and if we try to synchronize the deletion of a
    directory before the deletion of its content, the folder will end up in your
    Cozy trash bin instead of being completely removed.
    This is not a big issue but to avoid any confusion as to why we'd put those
    files and directories in your trash, we've modified our algorithm to emit
    events for children of deleted directories before the event for the directory
    itself.

Improvements for Windows users:

  • We found that in some situations, the order in which local file system events
    are received by our local changes watcher was not as expected, resulting in
    some movements not being detected as such. We would then delete the source
    documents and recreate them at the destination, losing in the process some
    important metadata like sharings.
    Our Windows movement detector is now more resilient to the order of events and
    should detect all movements as such.
  • We've got reports from users experiencing app crashes. In at least some of
    those cases, the anti-virus seems to be involved.
    We've implemented some mitigations as found in the Electron documentation and
    hope to see those issues resolved.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • The updater window was smaller than anticipated when bringing the window
    redesign to life so all the content would not fit inside, especially with
    French text. The spinner has been shrinked down to leave more room for the
    text and the French translation modified so that the first sentence would fit
    in one line.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Nothing to see here. This release let's us test the previous redesign of the updater window.

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • Following some feedback on the app updater window which could give the feeling
    that the update was not going to complete, we've made a small redesign of this
    window, replacing the indeterminate progress bar with a spinner and adding
    emphasizing the text asking you to be patient until the download is complete.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • This release fixes a small typo that prevented the overwriting moves to
    function properly.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • We've found out that the synchronization process could be started more than
    once. Although this should have no effect (i.e. one start replacing the
    previous one) we've made sure we only start the process once. This should
    avoid wasting some resources in an extraneous start.
  • In some situations, when moving a file or folder and overwriting an existing
    document, the local file system can fire a move event without firing a
    deletion event for the document that's being overwritten. We were very
    conservative in the way to we treat changes that could erase content so we
    would generate a conflict for those moves.
    Now that we have file versioning on the Cozy, we feel comfortable accepting
    those changes and will thus delete the overwritten document but will keep its
    existing references (e.g. photos album, bills…) and add them to the document
    being moved.

Improvements for Windows and macOS users:

  • To avoid synchronizing temporary documents generated by some software when
    saving a new version of a document, we maintain a list of file name patterns
    that should not be synchronized. We had some patterns for the Microsoft Office
    suite files but we did not account for temporary files generated for all the
    file types those can open like Open Documents.
    We've enlarged the pattern used to match those files those that all temporary
    files created by the MS Office software should be matched and thus not be
    synchronized.

Improvements for Windows users:

  • We've got reports from users experiencing app crashes. In at least some of
    those cases, the anti-virus seems to be involved.
    We've implemented some mitigations as found in the Electron documentation and
    hope to see those issues resolved.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • In an attempt to avoid losing your data, we were very cautious when we
    detected movements that would overwrite documents we were aware of and would
    create a conflict document instead. There are a number of situations where
    this is not ideal because you actually wanted to overwrite this destination
    document (e.g. saving a file from an office software which uses a temporary
    file, overwriting a directory on purpose).
    With all the safeties we have in place today (i.e. trash bins on both your
    computer and your Cozy plus file versioning on your Cozy) we decided to accept
    more overwriting movements when we did not detect un-synchronized changes that
    would be overwritten by this. This should mean a lot less conflicts when using
    Microsoft Office softwares and the possibility to overwrite both files and
    directories.

Improvements for Linux and Windows users:

  • During the initial scan of your local synchronization folder, we emit deletion
    events when we detect a know document is not present anymore (i.e. we assume
    you've deleted it while the client was not running). The order in which we
    emit those events is important because it will be the order in which those
    actions will be synchronized and if we try to synchronize the deletion of a
    directory before the deletion of its content, the folder will end up in your
    Cozy trash bin instead of being completely removed.
    This is not a big issue but to avoid any confusion as to why we'd put those
    files and directories in your trash, we've modified our algorithm to emit
    events for children of deleted directories before the event for the directory
    itself.

Improvements for Windows users:

  • We found that in some situations, the order in which local file system events
    are received by our local changes watcher was not as expected, resulting in
    some movements not being detected as such. We would then delete the source
    documents and recreate them at the destination, losing in the process some
    important metadata like sharings.
    Our Windows movement detector is now more resilient to the order of events and
    should detect all movements as such.

See also known issues.

Happy syncing!

cozy-desktop - Duly noted!

Published by taratatach over 4 years ago

Improvements for all users:

  • We found out that revoking your device from the Connected Devices page in your
    Cozy Settings would trigger an error in the Cozy Desktop application
    preventing it from finishing the disconnection.
    From now on, when you choose to disconnect the application following the
    device revocation (i.e. choosing Disconnect in the modal window that shows
    up when the application detects it's been revoked) will bring you back to the
    on-boarding process so you can reconnect it if you want.
    NB: On Windows, another issue is still preventing you from disconnecting the
    application completely.
  • A new Cozy Notes application was released recently, allowing you to create
    cozy-note documents. Those are automatically exported to a markdown format
    and stored in your Drive so that it can be synchronized with all your devices.
    Those files cannot be modified directly as it would break their format. To
    allow you to easily open and modify them we've set Cozy Desktop as the default
    application to open them. Opening a cozy-note file locally with Cozy Desktop
    installed (or run at least once on Linux) will open in the Cozy Notes web
    application in your browser even if it's a note that was shared with you. If
    you're not connected to the Internet or we cannot find the note on its owner's
    Cozy, we'll show its content in a downgraded rendered markdown form.
  • A regression was introduced in version 3.18.0 which leads to errors when
    moving files after they've been updated. From what we've seen the
    modifications are not lost and the file ends up at the expected location but
    this could be the base for issues further down the road.
    We've made sure that the regression was fixed and added a data migration to do
    some cleanup in your local databases.

Improvements for MacOS users:

  • MacOS users who synchronize a folder on an HFS+ volume could see errors by
    adding files with accentuated names via Cozy Drive Web to a folder with an
    accentuated name that was created on their local volume. This is because HFS+
    volumes automatically rename files and folders with utf-8 characters so that
    they follow the NFD norm while most of the time those are originally follow
    the NFC norm. We were expecting the whole path to follow the same norm but in
    this situation, the remotely added files were not following the same norm as
    their parent folder and we would wrongly view this as a movement.
    We're now dealing with each part of a file or folder path separately so that
    we can manage different utf-8 norms.

Improvements for Linux and Windows users:

  • We found out that system errors triggered while trying to read the content of
    one of your directories during the application start would not be caught and
    would prevent the application from discovering all the files and directories
    within your synced folder and thus prevent their synchronization. This would
    also prevent the module that watches for changes on your Cozy from being
    started so we were also missing remote changes in this situation.
    We're now catching those errors and ignoring those that don't relate to the
    synced directory itself. The content of those directories will not be
    synchronized but the other directories and files will.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • We found out that revoking your device from the Connected Devices page in your
    Cozy Settings would trigger an error in the Cozy Desktop application
    preventing it from finishing the disconnection.
    From now on, when you choose to disconnect the application following the
    device revocation (i.e. choosing Disconnect in the modal window that shows
    up when the application detects it's been revoked) will bring you back to the
    on-boarding process so you can reconnect it if you want.
    NB: On Windows, another issue is still preventing you from disconnecting the
    application completely.

Improvements for Linux and Windows users:

  • We found out that system errors triggered while trying to read the content of
    one of your directories during the application start would not be caught and
    would prevent the application from discovering all the files and directories
    within your synced folder and thus prevent their synchronization. This would
    also prevent the module that watches for changes on your Cozy from being
    started so we were also missing remote changes in this situation.
    We're now catching those errors and ignoring those that don't relate to the
    synced directory itself. The content of those directories will not be
    synchronized but the other directories and files will.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • We introduced a regression around auto-updates with the opening of notes. The
    application would not be restarted after the update was downloaded and
    installed.
    This is now fixed and updates are now fully applied again.
  • On macOS, opening a note while the application was already started and syncing
    would close it and closing one of multiple markdown viewer windows would close
    all of them. Also the synchronization process would be started even when
    launching the app just to open a note.
    The behavior is now the same as on the other two OSes. Opening a note while
    the app is not started will not start the synchronization, opening it while
    the app is started will not close it and closing one markdown viewer window
    will not close all of them if more than one are opened.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • A regression was introduced in version 3.18.0 which leads to errors when
    moving files after they've been updated. From what we've seen the
    modifications are not lost and the file ends up at the expected location but
    this could be the base for issues further down the road.
    We've made sure that the regression was fixed and added a data migration to do
    some cleanup in your local databases.
  • The first beta version of v3.19.0 changed the order in which we initialize the
    different parts of the application to be able to lookup notes and open them
    without starting the file synchronization process. This change unexpectedly
    prevented users to go through the on-boarding process and the end to start the
    application if the client was not already connected to their Cozy.
    We've reorganized the initial steps so that they're applied in order even when
    a client configuration does not exist yet.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach over 4 years ago

Improvements for all users:

  • A new Cozy Notes application was released recently, allowing you to create
    cozy-note documents. Those are automatically exported to a markdown format
    and stored in your Drive so that it can be synchronized with all your devices.
    Those files cannot be modified directly as it would break their format. To
    allow you to easily open and modify them we've set Cozy Desktop as the default
    application to open them. Opening a cozy-note file locally with Cozy Desktop
    installed (or run at least once on Linux) will open in the Cozy Notes web
    application in your browser even if it's a note that was shared with you. If
    you're not connected to the Internet or we cannot find the note on its owner's
    Cozy, we'll show its content in a downgraded rendered markdown form.

Improvements for MacOS users:

  • MacOS users who synchronize a folder on an HFS+ volume could see errors by
    adding files with accentuated names via Cozy Drive Web to a folder with an
    accentuated name that was created on their local volume. This is because HFS+
    volumes automatically rename files and folders with utf-8 characters so that
    they follow the NFD norm while most of the time those are originally follow
    the NFC norm. We were expecting the whole path to follow the same norm but in
    this situation, the remotely added files were not following the same norm as
    their parent folder and we would wrongly view this as a movement.
    We're now dealing with each part of a file or folder path separately so that
    we can manage different utf-8 norms.

See also known issues.

Happy syncing!

cozy-desktop - Going all the way

Published by taratatach almost 5 years ago

Improvements for all users:

  • We've completely changed our sorting algorithm for changes coming from the
    Cozy. We may not receive changes in the order they were made and this can make
    their application on the local file system impossible. To mitigate this
    situation we sort the changes to make their application possible. It is a
    difficult task and we've made a lot of changes in the past to try and fix bugs
    in different situations.
    We've yet again seen new problematic situations recently and decided to try a
    new approach with a completely new algorithm, focusing more on essential
    changes that need to happen first rather than trying to recreate the very
    specific order in which changes were made.
  • We've noticed that when requesting a manual synchronization, the button is not
    disabled right away but only when the synchronization actually starts. This
    means that, in the meantime, you can potentially click multiple times on the
    button (e.g. you think that your request was not taken into account) thus
    piling up synchronization requests.
    We believe that multiple synchronization requests can lead to unexpected
    behavior and have decided to disable the button right after your click so
    we'll be sure only one request will be made until the requested
    synchronization is complete.
  • As a follow-up to the manual synchronization button changes, we've worked on
    the underlying synchronization stop requests to make sure every component
    involved in the synchronization process is stopped prior to starting a new
    process.
    This means that we should not see problems coming from manual synchronizations
    anymore but also that some actions that involve stopping or deleting the
    PouchDB database will wait for the completion of the current synchronization
    and thus may take longer. This does not affect stopping the client.
  • Since the introduction of the new Cozy Notes application, we've started
    synchronizing .cozy-note files with Cozy Desktop. Those files contain a
    markdown export of your Notes, written using the remote application. Those
    files are not meant to be modified as they're only exports. They only exist so
    you can read them without going to the remote application and later as an
    entrypoint to the application.
    As a hint, we've decided to make those files read-only so you will be less
    likely to modify them outside the Cozy Notes application and thus possibly
    lose content.
  • We've found out that some remote file updates (i.e. pushed by another client)
    may be lost during a client restart (actually they can now be recovered via
    the versions management) if they were detected by the client but not
    propagated to the file system prior to the restart. In this situation, the
    file was renamed with a -conflict-… suffix and its local version was pushed
    to the Cozy thus overwriting the remote update.
    We've decided to keep the remote changes in this situation and forcibly
    propagate it to the local file system. Since there could be a legitimate file
    update on the file system as well, we'll create a backup copy of the local
    file before overwriting it. This backup copy will have the .bck extension
    and will be trashed for a cleaner experience.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach almost 5 years ago

Improvements for all users:

  • As a follow-up to the manual synchronization button changes, we've worked on
    the underlying synchronization stop requests to make sure every component
    involved in the synchronization process is stopped prior to starting a new
    process.
    This means that we should not see problems coming from manual synchronizations
    anymore but also that some actions that involve stopping or deleting the
    PouchDB database will wait for the completion of the current synchronization
    and thus may take longer. This does not affect stopping the client.
  • We've found out that some remote file updates (i.e. pushed by another client)
    may be lost during a client restart (actually they can now be recovered via
    the versions management) if they were detected by the client but not
    propagated to the file system prior to the restart. In this situation, the
    file was renamed with a -conflict-… suffix and its local version was pushed
    to the Cozy thus overwriting the remote update.
    We've decided to keep the remote changes in this situation and forcibly
    propagate it to the local file system. Since there could be a legitimate file
    update on the file system as well, we'll create a backup copy of the local
    file before overwriting it. This backup copy will have the .bck extension
    and will be trashed for a cleaner experience.

See also known issues.

Happy syncing!

cozy-desktop -

Published by taratatach almost 5 years ago

Improvements for all users:

  • We've completely changed our sorting algorithm for changes coming from the
    Cozy. We may not receive changes in the order they were made and this can make
    their application on the local file system impossible. To mitigate this
    situation we sort the changes to make their application possible. It is a
    difficult task and we've made a lot of changes in the past to try and fix bugs
    in different situations.
    We've yet again seen new problematic situations recently and decided to try a
    new approach with a completely new algorithm, focusing more on essential
    changes that need to happen first rather than trying to recreate the very
    specific order in which changes were made.
  • We've noticed that when requesting a manual synchronization, the button is not
    disabled right away but only when the synchronization actually starts. This
    means that, in the meantime, you can potentially click multiple times on the
    button (e.g. you think that your request was not taken into account) thus
    piling up synchronization requests.
    We believe that multiple synchronization requests can lead to unexpected
    behavior and have decided to disable the button right after your click so
    we'll be sure only one request will be made until the requested
    synchronization is complete.
  • Since the introduction of the new Cozy Notes application, we've started
    synchronizing .cozy-note files with Cozy Desktop. Those files contain a
    markdown export of your Notes, written using the remote application. Those
    files are not meant to be modified as they're only exports. They only exist so
    you can read them without going to the remote application and later as an
    entry point to the application.
    As a hint, we've decided to make those files read-only so you will be less
    likely to modify them outside the Cozy Notes application and thus possibly
    lose content.

See also known issues.

Happy syncing!

Package Rankings
Top 11.63% on Npmjs.org
Badges
Extracted from project README
Latest release Licence Windows build Linux & macOS build Code climate Coverage
Related Projects