Skip to content

Releases

0.6.0

Choose a tag to compare

@solidDoWant solidDoWant released this 03 Nov 00:34
bdcf41a

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release lets an admin restore a vault from the plaintext export into a new vault. The plugin has no changes from 0.4.10, except its version number. To install the server, use the server image ghcr.io/soliddowant/vault-sync:0.6.0 or the Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.6.0). Install the plugin with BRAT from the GitHub releases of this repository. There is no 0.5.0, because the work for that version was postponed.

Upgrade notes for admins

  • You do not have to do anything. This release has no database migration, no change to the API and no new setting, so you can upgrade a 0.4.10 server one replica at a time.

Server and deployment

  • The new restore brings back a vault from an export. Run vault-sync-server import -from-export EXPORT_DIR -source-vault VAULT_ID SERVER_URL TARGET_VAULT_ID. It creates each file of the exported vault again, at its path, in a new, empty vault. Use it when the server lost the files of a vault and you have an export. A restore brings back only the current version of each file. It does not bring back the history, the members, the devices or the settings of the vault. The runbook in Backup and restore gives all the steps. (#1499, #1505, #1507, #1509)
  • Before the restore creates a file, it makes sure that the export is complete and not damaged. It compares the size and the SHA-256 of each file with the manifest of the export. If a check fails, it creates nothing and lists each failure. With -allow-partial, it restores the files that pass the checks and lists the others. (#1507)
  • The restore writes one line of JSON as its report, with the status ok, partial or failed. If a path is not valid on the server, or two paths collide, the file goes into the folder Restored files, and the report lists it under fallback. (#1507)

Security

  • An end-to-end encrypted vault is restored only into a vault that is also end-to-end encrypted, so its files never reach the server in plaintext. The restore unlocks the vault with your passphrase, your private key or the escrow identity, as the Markdown import does. (#1507)

Sync

  • After a restore, each user connects their devices to the new vault. A device keeps all its files. It uploads its edits that are newer than the export, and it makes a conflict copy if a file is different. Nothing is deleted or overwritten. The troubleshooting page of the user guide gives the steps. (#1508, #1509)

Internal work: acceptance tests and a scoreboard for the restore, end-to-end tests of a device that connects to a restored vault, and design documents for live editing, which is postponed (#1490, #1497, #1498, #1506).

Known issues

  • The screenshots of the settings in the user guide still show the text from 0.4.4.
  • Live editing (Phase 5) is postponed. It is not in this release.

0.4.10

Choose a tag to compare

@solidDoWant solidDoWant released this 02 Nov 02:03
1f6cb07

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release changes only the plugin. It fixes Revert this change and Restore this version in the history window for several kinds of change. Install the plugin with BRAT from the GitHub releases of this repository. The server image ghcr.io/soliddowant/vault-sync:0.4.10 and the Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.4.10) have no changes from 0.4.9, so you do not have to upgrade the server.

Fixes

  • Revert this change on a version that moved a file now moves the file back. Before, it did nothing. Links to the file follow it, as when you move the file yourself. If the file was moved again later, the later move stays. If another file is now at the old place, the plugin does not revert, and a notice says why. A moved image or another file that is not text can now be moved back too. (#1488)
  • Revert this change on a canvas or a base merges the file as sync does, so the file stays valid. Before, it merged the file line by line, which could break it. (#1488)
  • Revert this change first saves the file if it is open in an editor, so text that you typed just before is not lost. (#1488)
  • Revert this change now shows also for a version whose previous version was not loaded yet. (#1488)
  • Restore this version no longer shows when the chosen version has the same content as the current one. A restore keeps the file at its current place, so it changed nothing and only added a version to the history. (#1488)

Known issues

  • The screenshots of the settings in the user guide still show the text from 0.4.4.

0.4.9

Choose a tag to compare

@solidDoWant solidDoWant released this 01 Nov 23:53
f3282c1

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release changes only the plugin, and only the name of one item in a file's menu. Install the plugin with BRAT from the GitHub releases of this repository. The server image ghcr.io/soliddowant/vault-sync:0.4.9 and the Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.4.9) have no changes from 0.4.8, so you do not have to upgrade the server.

Plugin

  • In a file's menu, the item that opens the history of vault-sync is now Show Vault Sync history. Before, it was Show sync history, next to the item Open version history of Obsidian Sync, with the same icon. That item of Obsidian Sync shows "Unable to retrieve version history" in a vault that does not use Obsidian Sync. The troubleshooting page of the user guide explains this message. (#1486)

Known issues

  • The screenshots of the settings in the user guide still show the text from 0.4.4.

0.4.8

Choose a tag to compare

@solidDoWant solidDoWant released this 01 Nov 22:54
0c40eeb

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release changes only the plugin. It makes the history window easier to read, and it fixes a warning about Obsidian Sync that showed in every vault. Install the plugin with BRAT from the GitHub releases of this repository. The server image ghcr.io/soliddowant/vault-sync:0.4.8 and the Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.4.8) have no changes from 0.4.7, so you do not have to upgrade the server.

Fixes

  • The warning "Obsidian Sync is also on" no longer shows in a vault that does not use Obsidian Sync. The Sync core plugin of Obsidian is on by default in every vault, and 0.4.7 showed the warning whenever that core plugin was on. Now the warning shows only when Obsidian Sync is set up for the vault. (#1481)

Plugin

  • The title of the history window shows the path of the file as Obsidian shows it above a note. Click a folder in the path to show the folder in the list of files, or click the file's name to show the file. (#1484)
  • The list of files is a tree of folders, like the file explorer of Obsidian, and it fills the left side of the window. The folders around the chosen file are open. While you type in the search field, the list shows only the files that match. (#1482, #1484)
  • Each version in the list shows three lines: how long ago it was made (hold the pointer over it to see the exact date and time), what changed, and who made it on which device, for example alice via Phone. Your own device shows as this device. A move shows where the file was moved from. The list no longer shows the size of the file. (#1482, #1483)
  • Show changes marks the words that changed inside a changed line, so you can see, for example, that words were added at the end of a line. (#1482)
  • The oldest version in the list is named Oldest kept version. It is the version that created the file, unless the server already removed older versions. (#1483)

Known issues

  • The screenshots of the settings in the user guide still show the text from 0.4.4.

0.4.7

Choose a tag to compare

@solidDoWant solidDoWant released this 01 Nov 21:36
b78830c

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release changes only the plugin. It has a new history window, where you can search the synced files, see the changes of each version, and copy, restore or revert a version. Install the plugin with BRAT from the GitHub releases of this repository. The server image ghcr.io/soliddowant/vault-sync:0.4.7 and the Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.4.7) have no changes from 0.4.6, so you do not have to upgrade the server.

Plugin

  • The history window is new, and it looks like the File recovery window of Obsidian. It shows the synced files with a search, the versions of the chosen file, and the chosen version. Deleted files are in the list too, so you can restore them. The new command Vault Sync: Browse sync history opens the window with no file chosen. (#1479)
  • Show changes shows what a version changed from the version before it. Added lines are green, and removed lines are red. Side by side shows the two versions next to each other. Long runs of unchanged lines are folded. (#1479)
  • Copy copies the text of a version. Revert this change undoes only the changes of one version, and keeps the changes made after it. If a later change touches the same lines, the plugin does not revert, and a notice says why. Restore this version works as before. Viewers can copy, but they cannot restore or revert. (#1479)
  • The command palette shows Vault Sync: Sign in only while you are signed out, and Vault Sync: Sign out only while you are signed in. (#1478)
  • If the Sync core plugin of Obsidian is also on in the vault, the Sync section of the settings shows a warning. Two sync services on one vault upload every change twice and can make extra conflict copies. The warning says how to turn off Obsidian Sync. (#1477)

Known issues

  • The screenshots of the settings in the user guide still show the text from 0.4.4.

0.4.6

Choose a tag to compare

@solidDoWant solidDoWant released this 01 Nov 20:03
77a4ad7

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release shows each user's name instead of user and the start of their user ID, when the identity provider sends the name. It also makes the plugin's Sharing section offer either Leave vault or Delete vault, and fixes a dashboard panel that counted normal client errors as failures. Install the plugin with BRAT from the GitHub releases of this repository. To install the server, use the server image ghcr.io/soliddowant/vault-sync:0.4.6 or the Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.4.6). It has no database migration and no new setting, so you can upgrade a 0.4.5 server one replica at a time.

Upgrade notes for admins

  • The plugin and the import subcommand now ask the identity provider for the profile scope. Most providers then add the user's name to the access token, and the members list, the history and the names of conflict copies show it. In Authentik, select the profile mapping among the scopes of the vault-sync provider. A user who signed in before this release must sign out and sign in again in the plugin to get their name, because a refreshed token keeps the scopes of the first sign-in. (#1475)

Plugin

  • The Sharing section shows either Leave vault or Delete vault, never both. The last owner of a vault cannot leave it, so they see Delete vault, with a note that says why. Everyone else sees Leave vault, also an owner who shares ownership. To delete a vault that has more than one owner, the other owners must first leave, or you must change their role. (#1474)
  • The settings tab asks the server for the state of your encryption key once each time it opens, not twice. (#1473)

Server and deployment

  • The RPC error ratio (5m) panel on the vault-sync / Overview dashboard counts only server errors (internal, unavailable and unknown), the same errors as the VaultSyncRPCErrorRatioHigh alert. Before, it also counted client errors that are part of normal use, for example the not_found that GetUserKeyParams answers for a user without end-to-end encryption. The RPC errors by code and Query errors panels now say which errors are expected. (#1472)

Known issues

  • The screenshots of the settings in the user guide still show the text from 0.4.4.

0.4.5

Choose a tag to compare

@solidDoWant solidDoWant released this 01 Nov 19:03
59d9286

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release changes the settings tab of the plugin, and the runbook links of the Helm chart. The settings are shorter and easier to read, and the plugin now tells you about a problem when you make a choice, not after it. Install the plugin with BRAT from the GitHub releases of this repository. The server image ghcr.io/soliddowant/vault-sync:0.4.5 has no changes from 0.4.4. The Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.4.5) changes only the links in its alerts. It has no database migration and no new setting, so you can upgrade a 0.4.4 server one replica at a time.

Plugin

  • The text under each setting is shorter and in plain English. The details are in the user guide. (#1469)
  • The Device name setting shows the name that the device uses. Until you set a name, this is the name of the platform, for example Mac or Android. Before, the setting was empty. (#1469)
  • If you type a device name that the server does not accept, an error shows under the setting, and the plugin keeps the previous name until you fix it. A name is not accepted if it has hidden characters, such as a line break or a combined emoji, or if it is longer than 256 bytes. Before, the plugin removed these characters or cut the name without telling you. (#1469)
  • When you create a vault, you can turn on End-to-end encryption only when your encryption key is unlocked on this device. Until then, the setting is greyed out and tells you what to do first. Before, the vault was not created, and a notice showed the error. (#1469)
  • When you create a vault, the Escrow setting shows only after you turn on End-to-end encryption, because escrow applies only to encrypted vaults. (#1469)

Server and deployment

  • The runbook_url of each alert now links to the runbook of the release that you run, not to the newest runbook on master. The default of config.alerts.runbookUrlBase now contains {{ .Chart.AppVersion }}, and the chart replaces it with its app version, for example 0.4.5. A value that you set yourself can use it too. A value without it works as before. (#1471)

Known issues

  • The screenshots of the settings in the user guide still show the text from 0.4.4.

0.4.4

Choose a tag to compare

@solidDoWant solidDoWant released this 01 Nov 09:14
297c106

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release changes only the server, and only how it connects to S3. It fixes a server that cannot reach S3 when a proxy or gateway that offers HTTP/2 sits in front of the S3 endpoint. To install it, use the server image ghcr.io/soliddowant/vault-sync:0.4.4 or the Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.4.4). It has no database migration and no new setting, so you can upgrade a 0.4.3 server one replica at a time. The plugin has no changes.

Fixes

  • The server no longer fails its S3 requests when a proxy or gateway in front of S3 offers HTTP/2, for example an Envoy or Istio gateway. Before, the server's start-up check failed with HeadBucket ... EOF, and the server restarted in a loop. The server talks to S3 only over HTTP/1.1, but its TLS handshake still offered HTTP/2. A proxy that supports HTTP/2 chose it, got an HTTP/1.1 request, and closed the connection. The handshake now offers only HTTP/1.1, both with and without VAULT_SYNC_S3_TLS_CA_FILE. An S3 endpoint that does not offer HTTP/2 was not affected. The problem started in 0.3.0. (#1467)

Known issues

  • None known.

0.4.3

Choose a tag to compare

@solidDoWant solidDoWant released this 31 Oct 01:32
6714914

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release makes escrow safer. Escrow lets the admin's backup read an encrypted vault. Your devices now remember the escrow key of the server, and they show you its fingerprint. A fingerprint is a short code that identifies a key. If the escrow key changes without a signature from the old key, the plugin asks you before it uses the new key. The release also rewrites the documentation in plain English, with separate pages for users, admins and developers. It also fixes one sync defect with folder renames. To install it, use the server image ghcr.io/soliddowant/vault-sync:0.4.3 or the Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.4.3). Install the plugin with BRAT from the GitHub releases of this repository. You can upgrade a 0.4.2 server one replica at a time. Upgrade the server before the plugin.

Upgrade notes for admins

  • Remove config.export.escrow.signingKeysKey from your Helm values before you upgrade the chart. The chart no longer has this value, and the chart refuses to render when it is set. The escrow signing key must stay offline, not in a Secret on the cluster. Devices trust a new escrow key only when the old signing key signed the change, so a signing key on the cluster gives less protection. The chart now also refuses to render when a controller gets VAULT_SYNC_ESCROW_SIGNING_KEY_FILE or runs export rotate-escrow. Run a rotation from your own machine or as a one-off pod. The admin guide gives the commands for both. (#1419)
  • Upgrade every server replica and the plugin on every device to 0.4.3 before you run export reset-escrow. A 0.4.2 server does not start on an escrow chain with a reset point. A 0.4.2 plugin cannot read the membership log of a vault after an owner accepts a reset. (#1442, #1454)
  • The new migration 0029 adds one column to the escrow chain table and replaces one check on it. A 0.4.2 replica keeps working during the rollout.

Security

  • The plugin shows the escrow fingerprint under the Escrow toggle when you create a vault, and in the Fingerprints line of the Sharing section of a vault with escrow. Your device remembers the escrow key that it saw first on the server, and shows the fingerprint of that key. Compare it with the fingerprint that your admin publishes before you turn on escrow. (#1429)
  • Admins print the escrow fingerprint with the new command vault-sync-server escrow fingerprint. The command needs no database, no network and no private key. (#1420)
  • If the escrow key changes and the old key did not sign the change, the plugin opens the window The server's escrow key changed. The window shows the previous and the new fingerprint. To accept, you type the last four characters of the new fingerprint. If you decline, escrow keeps the previous key and your notes keep syncing. You cannot create a vault with escrow until you accept. (#1433)
  • When an owner accepts a new escrow key, the device of the owner moves each vault that the owner owns to the new key at its next sync. Other members see the notice "An owner of this vault accepted a new escrow key", with the name of the owner and both fingerprints. (#1456, #1454)
  • Admins can start the escrow chain again from a new key with the new command vault-sync-server export reset-escrow. Use it only when you lost the old signing key, or when somebody stole it. Devices do not accept a reset on their own: each user must accept it in the plugin. (#1442)

Server and deployment

  • The documentation has new pages for each reader. The user guide is in docs/user/, the admin guide is in docs/admin/, and the developer pages are in docs/dev/. The admin guide adds pages for install, backup and restore, encryption, history and retention, monitoring, security and troubleshooting, and a glossary. The metrics reference, the configuration reference and the chart values page are now made from the code, so they always match the release. The old pages, for example docs/deployment.md, now only link to the new pages. (#1424, #1425, #1426, #1427, #1431, #1436, #1448, #1451, #1452, #1453, #1455, #1459)
  • The links to the alert runbooks in the chart's alerting rules point to the new page docs/admin/alerts.md. (#1424)
  • SPEC.md is rewritten in plain English. No rule of sync, storage or encryption changed. (#1457, #1460, #1461, #1462, #1463, #1464, #1465)

Fixes

  • A folder rename no longer leaves the old folder behind. Before, a device sometimes received the rename of a folder before the moves of the files in it. Then that device kept the old folder and sent it back to the server, so every device had both folders. Now the old folder goes away when its last file moves out. (#1443)

Internal work: CI checks the links in the documentation and checks that the generated reference pages are current, make lint reports every failure at once, an end-to-end test covers the escrow reset, the design pages were shortened, and the agent instructions were updated (#1421, #1422, #1428, #1432, #1435, #1437, #1441, #1444, #1445, #1446, #1447, #1449, #1450, #1458, #1459).

Known issues

  • None known. No bug is open, and no item of this release was deferred.

0.4.2

Choose a tag to compare

@solidDoWant solidDoWant released this 30 Oct 20:04
b8fdff0

vault-sync is a self-hosted replacement for Obsidian Sync. It has two parts: an Obsidian plugin, and a sync server that stores its data in PostgreSQL and S3. This release changes only the plugin. When two devices change the same file, the plugin can now combine more kinds of files: Obsidian Bases (.base) files, canvases, JSON files and plain-text files. The server, the protocol and the stored data did not change. To install it, use the server image ghcr.io/soliddowant/vault-sync:0.4.2 or the Helm chart oci://ghcr.io/soliddowant/charts/vault-sync (version 0.4.2). Install the plugin with BRAT from the GitHub releases of this repository. If you run 0.4.1, you do not have to upgrade the server. You can upgrade a 0.4.1 server one replica at a time.

Conflicts and history

  • Obsidian Bases (.base) files merge. A merge combines the edits that two devices made to one file, so you get no conflict copy. Edits to different views, formulas or properties combine. Filter conditions that either device added or removed all apply. Before the plugin writes a merged base, it makes sure that the result is a valid Bases file. A merged base is written again as plain YAML in the same key order, so comments in it are lost. If only one device changed the base, the plugin keeps that version exactly, comments included. (#1400)

  • Canvas (.canvas) files merge card by card and connection by connection. If two devices add cards, the canvas keeps all of them. If one device moves a card and the other device changes its color, the canvas gets both changes. (#1409)

  • JSON (.json) files merge key by key. A list is one value, so two different changes to the same list are a conflict. (#1409)

  • Plain-text files up to 1 MiB merge line by line, as notes do. This applies to .txt, .csv, .tsv, .css, .js, .ts, .py, .sh, .html, .xml, .tex, .org, .rst, .yaml, .yml and .toml files. Edits to the same line or to lines next to each other do not merge. (#1409)

  • No edit is lost when a merge is not possible. In each of these cases, the plugin does what it did before: the newer version stays at the path, and the other version becomes a conflict copy next to it:

    • The two devices made changes that conflict. For example, both devices moved the same card, or both changed the limit of the same view.
    • One device deleted something that the other device changed or used. For example, one device deleted a card that the other device connected.
    • A version or the merged result does not parse or is not valid. For example, a base uses newer Bases syntax, or a merged YAML file is not valid YAML.
    • A device reordered the cards of a canvas, for example to bring a card to the front.

    The plugin never writes conflict markers into a file. docs/plugin.md describes the rules for each type of file. (#1400, #1409)

Internal work: the documentation now has one page set for each type of reader (users, admins and developers), and the agent instructions require plain English for text that people read (#1407, #1408).

Known issues

  • None known. No bug is open, and no item of this release was deferred.