Native desktop candidate checks, 2026-09-24¶
This author-operated campaign uses disposable notes and isolated profiles of the unmodified desktop Obsidian application. It is additional regression acceptance, not a production installation or an independent security review.
- Route: an isolated loopback server on the test laptop. There is no TLS terminator on this local route. It does not validate internet or phone TLS.
- Server: 1.1.3 candidate, source
71c6d986bb6872e229796fb8cfa1baf6faf8c271. - Plugin: manually copied 1.1.3 candidate, then enabled through Community
plugins. The checks below used bundle SHA-256
23e2cca2db354493b3160f115ef94dd65da5d770f6cd3be501cc747ef0f7c10c, unless a linked record names its earlier build. - Devices: two isolated desktop profiles, Obsidian 1.13.7, macOS 27.0. Hardware model was not recorded during these checks. These are two application instances on one laptop, not two physical computers.
- Operation: native settings, commands, editors and title fields drove user actions. Filesystem fixtures are identified below. No injected Obsidian JavaScript drove the interface.
Observations¶
| Check | Result and scope |
|---|---|
| Two-way ordinary typing | Pass. A note created in the first editor received another line from the second editor. Both files matched and both status bars became idle. The quickstart's fifth capture records this result. |
| Account re-enrollment, #142 | Pass for retained-key desktop recovery on the earlier bundle specified in its record. All 217 original file hashes survived sole-device revocation and replacement enrollment. Fresh-install phrase recovery is separate. |
| Approval names the claimant's vault, #141 | Pass on the earlier bundle specified in its record. The approver saw the new vault's name and note count before approving; both devices then held identical files. |
| Download ceiling, S31 | Pass for input validation and whole-app restart persistence. 1 MX was refused; 1 MB saved as 1,000,000 bytes, displayed as 977 KiB. A later repeat on bundle e4fa330c… quit the isolated app, verified that its process exited, relaunched the same profile, and confirmed 977 KiB in settings. The limit was then restored to unlimited through the UI. |
| Plugin disabled/enabled during a 1 GiB upload, #181 | Pass in two independent transfers. Both were interrupted after 32 chunk files had appeared on the server, while the source file was still unrecorded locally. One used an immediate UI toggle; the other recorded a 10,650 ms gap. Each destination matched the source SHA-256 and size, both clients tracked it, and no temporary files remained. |
| Reload app during a 1 GiB upload, #181 | Pass in a third transfer. The native Reload app without saving command interrupted an active upload; after reload the status showed an active sync. Both clients eventually held the exact 1 GiB source hash, with no temporary files. |
| Repeated title swaps, #149 | Pass for four complete swaps through Obsidian's inline title field. Both devices ended with exactly the two intended filenames, identical contents, no temporary name or conflict copy, and the second device's visibly verified edit in the final note. |
| Different-line co-typing, #135 | Pass for content preservation: all 300 first-device sentinel characters and the 60-character second-device sentinel survived, files matched, and no copy appeared. Both editors were open. Native automation pauses mean this does not claim the scenario's exact five-character-per-second cadence. |
| Nested vault, #180 | Pass. A subfolder opened as another vault refused a pairing attempt before sending a claim and explained which outer vault to use. The outer vault excluded the nested note; the other device received no nested note and no recursive subfolder appeared. The user guide shows the actual refusal. |
| Older server backup, #145 / S75 | Pass for preservation and convergence. The stopped server's two volumes were cloned, twelve day-work changes were synced, then the older volumes were restored with the newer volumes preserved separately. The first client recovered automatically. The second stayed offline until sixty new notes advanced the restored server beyond its saved sequence. A third, empty vault was then paired through the native UI. All three ended with 290 byte-identical files, all five new day notes and five edits, the intended rename, the intended deletion, and all sixty later notes. A five-minute observation found unchanged file records and no temporary files. |
| Delete versus offline edit, #178 | Pass for native convergence on bundle 7557e642f146659c8dfe3cf0e974f405d8ca904d6364898102ddaf5a92d3efed. The second client was disabled through Community plugins and edited its retained note. The first used Obsidian's Delete current file command and published the tombstone. Re-enabling the second client restored its edited note on both devices, with identical contents and no conflict copy. The automated server regression separately verifies the single current head and retained deletion history. |
| Same-line offline conflict, #135 | Pass on the same 7557e64… bundle: both native editors appended different sentences while the second client's sync was disabled. On reconnection, both devices held exactly the same original and one conflict copy, with both sentences preserved across those two files. This tests a real offline fork; it is separate from a timed online co-typing cadence. The conflict guide shows the two notes. |
The three large sources were generated as random filesystem fixtures before
the native interruption. Their SHA-256 values, in the order above, were
7eeb54d5dea776c85c6562bb0a334716f2320ff5d7c51c3268705bf106941780,
4234078eba677da6d571b3f11bc60cea8458a4da8a300156c390699662ff37d1, and
2e109d05ee30354d3aceb13af00b99a60ed215076a158032a085e9f2e72e7430.
An additional filesystem-only three-rename swap, performed within milliseconds while retaining file metadata, did not automatically reconcile within 90 seconds. Sync now reconciled it by checking contents. That observation is retained here; the native-title result does not establish automatic detection of every external atomic swap.
The backup scenario used filesystem fixtures for the day's creates, edits, rename and deletion; the clients themselves were real desktop Obsidian. Restoration also preserved an older fork of the earlier co-typing note as a copy. Its main note retained both complete sentinels, and that copy remained stable. The quiet check compares file records: the server's journal sequence continues advancing for ordinary non-file events and is not itself a count of newly published note versions. The initial third-vault fixture was placed under an existing synced ancestor and correctly refused; the successful empty vault was created outside that ancestor.
Captures and limits¶
Captures show real native windows with disposable content. The computer tool returned JPEG bytes; published assets were converted to PNG without changing their contents. Some dialogs were cropped to remove surrounding settings. No pairing code, setup token, recovery phrase or vault of the user's appears in them.
The repeated-rewrite run first exposed extra copies and an editor-overlap
failure. The final repaired bundle bd68df43… passed a fresh desktop run:
all twenty characters together in both main notes, exactly one copy, and
five-minute quiet windows during the hold and after Resume. The failures,
repair, exact bundle and matching hashes are retained in
the rewrite-storm record.
This is not a claim that all V/J journeys, all historical scenario-plan rows, or the current candidate on iPhone passed. Community plugins delivered 1.1.1 during the initial phone check; a later manual candidate installation passed installation, pairing, identical first sync, two-way edits, offline restart and automatic recovery on 1.1.2. These desktop results do not establish a production-path 1.1.3 installation, physical multi-device network behavior, or any public internet hosting route.