mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-07-23 04:52:58 +00:00
Prepare concise 1.0 beta notes and fix release rotation
This commit is contained in:
+19
-45
@@ -2,74 +2,48 @@
|
||||
|
||||
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 real-device testing tools. These now form a coherent [Kit](https://github.com/vrtmrz/fancy-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.
|
||||
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](https://github.com/vrtmrz/fancy-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](https://openai.com/form/codex-for-oss/). 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](https://github.com/vrtmrz/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 [0.25 release history](docs/releases/0.25.md) and the [legacy release history](docs/releases/legacy.md).
|
||||
Earlier releases remain available in the [0.25 release history](https://github.com/vrtmrz/obsidian-livesync/blob/1.0.0-beta.0/docs/releases/0.25.md) and the [legacy release history](https://github.com/vrtmrz/obsidian-livesync/blob/1.0.0-beta.0/docs/releases/legacy.md).
|
||||
|
||||
## Unreleased
|
||||
|
||||
### Important
|
||||
|
||||
- This is an opt-in 1.0 integration preview for BRAT and real-Vault validation. It does not replace the latest stable release. Use it with a current backup, and update every participating device before resuming synchronisation.
|
||||
- This is an opt-in 1.0 integration preview for BRAT and testing with existing Vaults. It does not replace the latest stable release. Use it with a current backup, and update every participating device before resuming synchronisation.
|
||||
- An upgraded, copied, or restored Vault may pause replication for an explicit compatibility review. The review preserves the existing automatic synchronisation choices and resumes them only after the decision has been saved successfully.
|
||||
|
||||
### Improved
|
||||
|
||||
- Clarified the 1.0 maturity of optional features. P2P and Hidden File Sync are supported opt-in features; JWT, ignore files, automatic newer-file conflict resolution, and Garbage Collection V3 remain previews; and legacy database-format settings remain compatibility paths rather than recommendations.
|
||||
- Re-evaluated Data Compression. It provides a modest but measurable reduction in stored and transferred chunk data, with workload-dependent benefits and costs. See the [Data Compression specification](docs/specs_data_compression.md) for its behaviour, measurements, compatibility, and 1.0 default-setting decision.
|
||||
- Classified Customisation Sync as a supported advanced workflow, backed by its maintained two-Vault real-Obsidian regression, without changing its synchronisation behaviour.
|
||||
- Serialised the initial compatibility review and Config Doctor so that their update dialogues no longer overlap. Database readiness remains available while Config Doctor waits for the compatibility decision.
|
||||
- Wizard-driven new-device and existing-device setup now reserves Rebuild or Fetch before enabling imported settings, preventing ordinary start-up work from running ahead of the selected initialisation.
|
||||
- Manual onboarding now creates and selects CouchDB, Object Storage, and P2P remote profiles directly while preserving existing profiles. Current Setup URIs retain profile names and selections, while older flat settings remain supported through compatibility migration.
|
||||
- P2P panes and explicit rebuild actions now use the current transport after settings or database replacement. Disconnecting leaves the LiveSync room and closes signalling relay sockets without destroying Trystero-owned shared peers.
|
||||
- Self-hosted CouchDB provisioning and Setup URI generation now consume the immutable Commonlib registry package. New database provisioning records the package-owned database version, and generated CouchDB, Object Storage, and random-room P2P URIs use current new-Vault defaults and selected remote profiles instead of legacy embedded settings.
|
||||
- Removed the ineffective 'Use the trash bin' toggle from the settings interface. Remote deletions continue to follow Obsidian's deletion preference, while the legacy setting key remains accepted for compatibility.
|
||||
- Kept content-derived chunk revisions permanently enabled, as they have been since 0.25.6, and removed the obsolete stored key from recommendations, database-maintenance prerequisites, and review tooling.
|
||||
- Aligned new-Vault, full-reset, and CLI-generated settings with the 1.0 recommendations. New Vaults use cross-platform case-insensitive file-name handling. Existing Vaults preserve an explicit choice, while a missing legacy value is saved as case-insensitive to retain its earlier effective behaviour.
|
||||
- Improved P2P restart and settings-reapplication handling by serialising transport start and stop, keeping event handlers bound to the active replicator, and using one package-owned Trystero transport generation.
|
||||
- Kept the release history available in the settings while removing automatic unread-version tracking and redirection. Release versions are no longer treated as a data-compatibility signal.
|
||||
- Internal database and settings compatibility reviews now use a dedicated explanation and an explicit resume action. They block replication without rewriting the user's automatic synchronisation choices, and older installations cannot dismiss state created by a newer version.
|
||||
- Stacked confirmation and compatibility-review actions vertically, and kept persistent review reminders clear of mobile close controls. Long setup dialogues now keep their action area inside the mobile safe area while their content remains scrollable. A configured Vault with no device-local acknowledgement now explains that it may have been copied, restored, or opened in a new profile instead of trying to infer safety from an empty local database.
|
||||
- Combined Hidden File Sync plug-in reload and Obsidian restart notifications into one mobile-safe message with clearly labelled actions, avoiding the stacked notifications reported in [issue #555](https://github.com/vrtmrz/obsidian-livesync/issues/555). A group dismissed by the user no longer reappears with its previously acknowledged rows when a later change arrives.
|
||||
- Replaced remote-size decision prompts shown during startup with long-lived, clickable notices. The detailed choices now open only when requested and no longer select an answer automatically after a timeout.
|
||||
- Removed the obsolete prompt and automatic bulk chunk pre-send from initial and rebuild uploads. These operations retain the standard two-pass replication used to converge follow-up writes and conflict resolution.
|
||||
- An unconfigured installation now waits for you to start setup. A long-lived Notice offers the setup action, and **Open onboarding wizard** remains available from the command palette instead of the dialogue opening automatically.
|
||||
- The setup wizard now creates named remote profiles for CouchDB, Object Storage, and P2P. Current Setup URIs preserve their profile names and selections, and the wizard reserves Rebuild or Fetch before the ordinary start-up scan begins.
|
||||
- Peer-to-Peer Synchronisation (P2P) and Hidden File Sync are supported opt-in features. JWT authentication, ignore files, automatic newer-file conflict resolution, and Garbage Collection V3 remain previews. Customisation Sync remains a supported advanced workflow.
|
||||
- Data Compression remains available after measurement showed a modest, workload-dependent reduction in stored and transferred chunk data. Its benefits, costs, and reason for remaining disabled by default in 1.0 are described in the [Data Compression specification](https://github.com/vrtmrz/obsidian-livesync/blob/1.0.0-beta.0/docs/specs_data_compression.md).
|
||||
- Compatibility review now runs before Config Doctor without overlapping it. Existing Vaults retain their automatic synchronisation choices and explicit file-name case setting. For installations created by earlier releases, LiveSync preserves whether setup had been completed and saves a missing legacy case setting as case-insensitive.
|
||||
- P2P connections now restart reliably after settings are reapplied or the local database is reset. Setup on an additional device asks you to select the source device once. Disconnecting leaves the LiveSync room and closes its signalling relay connections so that reconnecting can establish a new room.
|
||||
- Action buttons are stacked vertically, long setup dialogues keep their controls reachable on mobile screens, and persistent Notices no longer cover close controls. Hidden File Sync reload and restart requests are grouped into one message, including the case reported in [issue #555](https://github.com/vrtmrz/obsidian-livesync/issues/555).
|
||||
- Warnings about estimated remote storage size now appear as long-lived clickable Notices instead of timed dialogues. Initial uploads and Rebuild operations no longer prompt to send every chunk in advance; ordinary replication completes the transfer.
|
||||
- Removed the obsolete **Use the trash bin** control and the setting for fixed chunk revisions. Remote deletion still follows Obsidian's preference, and chunk revisions remain content-derived. The Change Log remains available but no longer opens automatically or tracks unread versions.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Existing Vaults with no stored file-name case value now persist the case-insensitive behaviour used by earlier releases, without presenting a spurious compatibility review or requiring a database rebuild.
|
||||
- Legacy settings without an explicit configured-state flag retain the 0.25.83 inference: default-equivalent settings remain unconfigured, non-default settings remain configured, and either result is persisted during migration. An unconfigured Vault stays in onboarding without a misleading compatibility pause; its missing acknowledgement remains pending for any later configured start.
|
||||
- Changing normal-file reflection criteria now re-evaluates documents which were received and checkpointed while excluded, so broadening a selector, ignore rule, size limit, modification-time limit, or file-name case policy can reflect those documents without requiring another remote revision.
|
||||
- P2P first-device setup no longer attempts central-remote reset or upload operations which do not exist for a peer-to-peer destination. Its initialisation confirmations now describe the local database preparation instead of warning about overwriting a central server.
|
||||
- Importing a P2P Setup URI on an additional device now asks for the source peer once and completes one finite Fetch before reflecting the Vault, instead of opening the peer-selection dialogue twice.
|
||||
- Config Doctor now limits the V3 chunk-size recommendation to self-hosted CouchDB and no longer offers the CouchDB-specific change for Object Storage or P2P profiles.
|
||||
- The optional Custom HTTP Handler used by Object Storage now sends the correct byte range from binary request bodies and reports unsupported body types instead of silently sending an empty request.
|
||||
- When selectors, ignore files, size limits, modification-time limits, or file-name case settings are broadened, LiveSync now rechecks previously received files without requiring another remote update.
|
||||
- P2P setup on the first device no longer displays reset or upload steps for a central database, and Config Doctor now offers its chunk size recommendation for CouchDB only when a CouchDB remote profile is selected.
|
||||
|
||||
### Security
|
||||
|
||||
- Fly.io setup now generates CouchDB and Vault encryption secrets from cryptographically secure randomness instead of short word combinations.
|
||||
- Updated the glob expansion used by Commonlib path matching and CLI ignore rules to prevent pathological brace patterns from consuming excessive CPU.
|
||||
- Updated Markdown link detection to avoid excessive work on maliciously structured `mailto:` links.
|
||||
- Hardened CLI Vault path handling by rejecting traversal paths and symbolic-link components detected before reads, writes, discovery, deletion, and atomic renames.
|
||||
- Fly.io setup now generates CouchDB and Vault encryption secrets with cryptographically secure randomness. Dependency updates prevent excessive CPU use from specially crafted path patterns and `mailto:` links. The CLI rejects path traversal and symbolic-link components detected before Vault operations.
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
- Replaced the embedded Commonlib source and generated fallback declarations with a locked compiled package, reducing duplicated release and repository-scanner inputs without changing synchronisation behaviour.
|
||||
- Moved the multilingual catalogue and its generation tools to Self-hosted LiveSync. Commonlib now publishes only its typed canonical English fallback and accepts an optional host translator, so other consumers receive meaningful English without carrying every LiveSync language.
|
||||
- This means that translation contributions can now be made directly to the Self-hosted LiveSync repository.
|
||||
- Moved CLI standard input, prompting, and protocol output behind a host-injected Commonlib contract, and routed adapter diagnostics through the service logging API, without changing command output formats.
|
||||
- Routed Webapp, WebPeer, and plug-in diagnostics through their application-owned log paths instead of writing directly to the browser console.
|
||||
- Split the release history into the current 1.x line, the 0.25 line, and a legacy archive while preserving the previous `updates_old.md` link as a compatibility index.
|
||||
- Prepared release automation for immutable pre-release plug-in tags, optional CLI publication, and supported Obsidian release assets only. Pre-release CLI images no longer advance stable moving tags.
|
||||
- Self-hosted LiveSync now owns its translation catalogue. Commonlib provides English messages to other applications, and translation contributions can be made directly to the Self-hosted LiveSync repository.
|
||||
- Detailed architecture, compatibility, and verification notes are available in [pull request #1033](https://github.com/vrtmrz/obsidian-livesync/pull/1033) and its linked specifications and decisions.
|
||||
|
||||
### Testing
|
||||
|
||||
- Retired the obsolete mocked browser Harness, its root-level P2P relay helpers, and its manually dispatched `harness-ci` workflow. Unit and integration suites, the CLI two-Vault and Compose P2P scenarios, and real Obsidian E2E now own the maintained verification paths.
|
||||
- Added packed-package and downstream checks for Commonlib entry points, including isolated Node and browser File System Access API storage implementations.
|
||||
- Added reusable Context result contracts for Obsidian, CLI, and Webapp compositions, including a real-Obsidian smoke assertion that every service retains the host-provided Context.
|
||||
- Added Commonlib stream-contract tests and downstream CLI unit and Deno E2E coverage for injected text, binary, prompt, and error channels.
|
||||
- Added a dependency-ownership regression and verified the package-owned P2P transport through Compose CLI synchronisation, real-Obsidian startup and Context checks, representative desktop and mobile dialogues, and the settings pane.
|
||||
- Added visible two-device Setup URI workflows for CouchDB, Object Storage, and P2P. Each workflow generates the additional-device URI on the working first device, verifies synchronisation in both directions, and checks owned fixture cleanup.
|
||||
- Made the typed Svelte and Community lint gates deterministic across machines by disabling ESLint file-level concurrency for these repository-wide checks.
|
||||
- Expanded automated testing in Obsidian for upgrades, synchronisation between two devices, CouchDB, Object Storage, P2P, Hidden File Sync, mobile dialogues, and clean-up after failures.
|
||||
|
||||
Reference in New Issue
Block a user