Files
obsidian-livesync/updates.md
T
2026-10-16 14:53:43 +00:00

10 KiB

1.0

Well then, everyone: it has been roughly a year since I declared the 0.25 beta. During that time, we have concentrated mainly on fixing defects and completing the features that the project needed.

Version 1.0 has been in mind for some time. We have now brought together the work intended to make it possible: stronger CI, more detailed tests, an E2E runner suited to synchronisation, and testing tools for physical devices. These now form a coherent Kit rather than a collection of isolated pieces. With those foundations in place, it seems that the time has finally come to reshape the structure of this repository.

None of this would have been possible without your issue reports, pull requests, sponsorship, and the support provided through OpenAI's Codex for Open Source. I would like to express my gratitude once again. As with every pull request contributed to the project, code produced with Codex and similar tools is reviewed and audited by me, vrtmrz. Anyone interested in how I manage that process can refer to my dotfiles.

This will call for your help once again. I would be very grateful for your co-operation as we build a sounder foundation for the project and its future development.

Earlier releases remain available in the 1.0 release history, the 1.0 preview history, the 0.25 release history, and the legacy release history.

Unreleased

1.0.37

16th October, 2026

Security

  • Fixed an issue where synchronised changes could reach files outside the intended synchronisation scope under certain conditions. Updating is recommended.

CLI

Fixed

  • We can edit files through the CLI without resetting their creation time where the filesystem supplies it. (#1243)
    • Filesystems without birth-time support retain the existing change-time fallback. File replacement and restoration of a synchronised creation time remain subject to filesystem limitations.
  • p2p-host restores configured P2P automatic synchronisation, following, and change announcements after initialisation. (#1247)
    • Headless peer acceptance follows the configured policy. Single-operation commands retain their automatic synchronisation suspension.
  • We can select CLI-only Docker patches by their full release tag, such as 1.0.36-patch1-cli, while keeping the Obsidian plug-in version.
    • Patch and RC images receive version and SHA-qualified tags. The latest and major-minor tags remain reserved for ordinary stable releases.

Acknowledgements

Thank you for your contributions!

  • @kimjansheden, for reporting the issue and contributing the fix and regression tests.

1.0.36

13th October, 2026

Configuration Encryption

Fixed

  • We can change the protection of sensitive configuration with Apply and keep our saved settings readable after a restart. (#1238, #1245)
    • The selected protection mode and passphrase are saved together. If Apply fails, our edits remain available to retry.
  • We can enter a missing or unusable custom configuration passphrase at start-up to unlock our protected settings. (#1239, #1245)
    • Cancelling the recovery dialogue preserves the encrypted configuration and stops that start-up attempt. Headless command-line start-up cannot complete the dialogue when recovery input is required.

Localisation

Fixed

  • We can read more settings, maintenance controls, and Fast Setup instructions in Spanish. (#1213, #1214)
    • Remote database lock warnings now use the existing translations consistently.
    • Fast Setup follows the selected display language while preserving saved choices across restarts and language changes.
  • We can read more settings, setup instructions, and messages in Simplified Chinese. (#1242)

Maintenance

  • Development tooling now uses compatible dependency versions with available security fixes. (#1245)
    • Repository-owned build and import alias helpers remove the vulnerable braces dependency.

Acknowledgements

Thank you for your contributions!

  • @zeedif (#1213, #1214)
  • @lingting0 (#1242)

1.0.35

5th October, 2026

Synchronisation

Fixed

  • We can continue synchronising after rebuilding an encrypted CouchDB remote, including when Hidden File Sync and Customisation Sync are enabled. (#1234)
    • This plug-in reads the rebuilt data without reusing HTTP responses encrypted with the previous Security Seed.

Customisation Sync

Fixed

  • Customisation Sync now waits until this plug-in is ready before handling configuration file events, and applying settings while synchronisation is suspended no longer scans configuration files. (#1220)
    • Resuming synchronisation scans once and restarts the periodic scan when enabled.

Acknowledgements

Thank you for your contributions!

  • @kimjansheden (#1220)

1.0.34

2nd October, 2026

Security

  • Fixed an issue where sensitive information could be included in exported configuration data under certain conditions. Updating is recommended. (refs #1218)
  • Improved configuration persistence and JSON conflict handling.

Acknowledgements

Thank you for your contributions!

  • @kimjansheden (#1218)

1.0.33

1st October, 2026

This has turned into quite a substantial release, and I think it brings meaningful improvements to the core of Self-hosted LiveSync. If you notice anything, please feel free to let me know.

Privacy and compatibility

New Feature

  • An optional saved ID key can generate encrypted Chunk IDs and obfuscated Metadata document IDs independently of the current E2EE passphrase.

    • New Vaults use a random key by default; existing Vaults keep their current ID configuration by default. You can also derive a key from the current E2EE passphrase, enter a separate source, or import a recovery code. The source is not retained; the saved key can be revealed locally as a recovery code.
    • The saved key stays in place when the E2EE passphrase changes or E2EE is turned off. Share it with another device through a protected Setup URI. Changing document IDs on an existing remote requires the usual Rebuild and Fetch procedure.
  • We can now keep the file properties used by Hidden File Sync and Customisation Sync private in CouchDB.

    • Encrypt internal file Properties extends E2EE V2 and Property Encryption to their paths, times, sizes, and Chunk references.
    • Existing configurations keep this preference disabled. New Vaults enable it for use when the required encryption settings are active.
    • Update every synchronising device before enabling it. It protects future writes; a manual remote Rebuild is strongly recommended to protect existing properties.
  • We can now see which unsupported feature prevents a client from synchronising with CouchDB.

    • Clients check the features required by the remote before transferring data or resetting the local database for Fast Fetch. Receiving an unsupported requirement also stops active replication.
  • We can now compare ID generation performance on a desktop or mobile device through Open review harness, available with the developers' debug tools enabled.

    • The copied report includes legacy and independent ID timings and, where available, approximate JavaScript heap samples. The measurement uses fixed test data and keeps our Vault and settings unchanged.

Fixed

  • Updated brace-expansion and markdown-it to include upstream security fixes.
  • We can now keep using an E2EE passphrase beginning with % after restarting Obsidian. (#1221)
    • This plug-in encrypts it before saving the settings. If an earlier version saved it in plain text, re-enter the passphrase used to encrypt the existing data after updating. Treat that passphrase as exposed if the affected data.json was shared.
  • A receiving device now retries an unavailable CouchDB Chunk when file Metadata arrives before that Chunk is visible, helping rapid edits reach the Vault after an initial on-demand lookup misses it. (#1224)
    • Retries start after two seconds and continue with increasing delays while finite replication is active. When it ends, this plug-in checks locally and makes a final lookup if needed, without waiting out the remaining retry delay.
  • We can now distinguish initial on-demand Chunk requests (🛄) from retries (🔁) in the status bar. These replace 🧩; each pending Chunk appears in one category, including while a retry is waiting.

Synchronisation and storage

Fixed

  • Received changes held during start-up or a fetch are applied when this plug-in becomes ready, without waiting for another change or a settings save. Suspend database reflecting continues to hold changes (#1200).
  • Customisation Sync now compares full millisecond timestamps, so the freshness labels and Select All Shiny no longer mistake an older copy for a newer one because of timestamp truncation. (#1194)
  • Hide not applicable items now hides identical Customisation Sync items and refreshes the list when toggled. Items with applicable differences stay visible. (#1193)

Interface and translation

Improved

  • More settings and messages are now available in Russian. (#1187)
    • Dialogues show generated QR codes, key pairs, and database sizes again.
  • We can now use updated Spanish translations for settings and messages. (#1212)

Setup

New Feature

  • We can now share a Setup URI with a displayed time limit, or choose Compatible for reuse without a time limit.
    • Time-bound uses the current fixed seven-day UTC window, so the displayed end may be less than seven days away. Compatible retains the existing URI format; receiving devices still need to support the shared settings.
    • The time condition applies when opening the URI. It does not revoke imported credentials or prevent reuse after rolling the device clock back.

Improved

  • We can now distinguish the three Setup URI and QR code choices by their short labels and icons: initialise or overwrite the remote, join this device, or apply settings only.

Fixed

  • We can now add a device or open a copied Vault without a compatibility pause solely because its device-local version record is absent.
    • Existing version or settings incompatibilities still require review. A pause already saved by an earlier release still needs one explicit resume action.

Acknowledgements

Thank you for your contributions!

  • @kimjansheden (#1219)
  • @Immick (#1195, #1196)
  • @bolikcraft (#1187)
  • @speedy-axolotl (#1212)

Issue replies

I am a little behind on replying to issues, but I am reading them and will respond as I work through them. I have had little uninterrupted time recently, and that should improve soon.