Open 0zd0 opened 1 month ago
Got the same result if the №2 device is Android. I thought there might be some limitations on iOS
Thank you for opening the issue!
On my iPhone I can't copy the log or settings,
I agree that this should be quite hard. Please turn on Write logs into the file
on the Hatch
pane. We can address it calmly.
For security reasons, items that may contain credentials will not be handled automatically or implicitly.
Now returning to the topic, I must apologise for any confusion.
In Device No.1, your appearance.json
is saved as a customisation sync.
(If you have enabled Customisation sync
, operate under that feature unless it is configured as automatic
).
On the other hand, the second Device No.2 appears to handle the file as a part of Hidden file sync. This suggests that customisation sync may be disabled or set to Automatic
.
Would you mind confirming that both devices are configured as the same?
Thanks for the quick response
I agree that this should be quite hard. Please turn on
Write logs into the file
on theHatch
pane. We can address it calmly.
I see that the iOS system is completely closed and I can't access the app files. I can't see the obsidian files through any file manager. So I can do a pool-request for you with buttons and copying to clipboard if you don't mind.
In Device No.1, your appearance.json is saved as a customisation sync. (If you have enabled Customisation sync, operate under that feature unless it is configured as automatic).
I have Hidden files synchronization
enabled and at the same time Enable customization sync
, could this be a problem?
I don't see any documentation on this, so I don't understand if this is supposed to work together?
I apologize about the logs, I didn't notice that he could post it in a note. Device №2:
Abstract
Overwriting hidden files when opening an application on a second device (opened simultaneously work correctly)
Expected behaviour
Actually happened
Reproducing procedure
Report materials
Report from the LiveSync
Report
``` ---- Obsidian info ---- Navigator: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) obsidian/1.6.7 Chrome/124.0.6367.243 Electron/30.5.1 Safari/537.36 FileSystem: sensitive ---- remote config ---- cors: credentials: "true" headers: accept, authorization, content-type, origin, referer max_age: "3600" methods: GET, PUT, POST, HEAD, DELETE origins: app://obsidian.md,capacitor://localhost,http://localhost chttpd: bind_address: any max_http_request_size: "4294967296" port: "5984" require_valid_user: "true" admins: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 vendor: name: The Apache Software Foundation feature_flags: partitioned||*: "true" chttpd_auth: authentication_redirect: /_utils/session.html hash_algorithms: sha256, sha require_valid_user: "true" indexers: couch_mrview: "true" prometheus: additional_port: "false" bind_address: 127.0.0.1 port: "17986" httpd: WWW-Authenticate: Basic realm="couchdb" bind_address: 127.0.0.1 enable_cors: "true" port: "5986" smoosh: state_dir: ./data couch_httpd_auth: authentication_db: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 secret: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 authentication_redirect: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 couchdb_engines: couch: couch_bt_engine couchdb: database_dir: ./data max_document_size: "50000000" single_node: "true" uuid: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 view_index_dir: ./data ---- Plug-in config --- version:0.23.23 remoteType: "" useCustomRequestHandler: false couchDB_URI: self-hosted(HTTPS) couchDB_USER: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 couchDB_PASSWORD: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 couchDB_DBNAME: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 liveSync: true syncOnSave: false syncOnStart: false savingDelay: 200 lessInformationInLog: false gcDelay: 0 versionUpFlash: "" minimumChunkSize: 20 longLineThreshold: 250 showVerboseLog: true suspendFileWatching: false trashInsteadDelete: true periodicReplication: false periodicReplicationInterval: 60 syncOnFileOpen: false encrypt: false passphrase: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 usePathObfuscation: false doNotDeleteFolder: false resolveConflictsByNewerFile: false batchSave: false batchSaveMinimumDelay: 5 batchSaveMaximumDelay: 60 deviceAndVaultName: arch usePluginSettings: false showOwnPlugins: false showStatusOnEditor: true showStatusOnStatusbar: true showOnlyIconsOnEditor: false usePluginSync: true autoSweepPlugins: true autoSweepPluginsPeriodic: true notifyPluginOrSettingUpdated: true checkIntegrityOnSave: false batch_size: 25 batches_limit: 25 useHistory: true disableRequestURI: true skipOlderFilesOnSync: true checkConflictOnlyOnOpen: false showMergeDialogOnlyOnActive: false syncInternalFiles: true syncInternalFilesBeforeReplication: false syncInternalFilesIgnorePatterns: \/node_modules\/, \/\.git\/, \/obsidian-livesync\/, ^\.git\/ syncInternalFilesInterval: 60 additionalSuffixOfDatabaseName: 1be10e65a0191e4d ignoreVersionCheck: false lastReadUpdates: 23 deleteMetadataOfDeletedFiles: false syncIgnoreRegEx: "" syncOnlyRegEx: "" customChunkSize: 50 readChunksOnline: true watchInternalFileChanges: true automaticallyDeleteMetadataOfDeletedFiles: 0 disableMarkdownAutoMerge: false writeDocumentsIfConflicted: false useDynamicIterationCount: false syncAfterMerge: false configPassphraseStore: "" encryptedPassphrase: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 encryptedCouchDBConnection: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 permitEmptyPassphrase: false useIndexedDBAdapter: true useTimeouts: false writeLogToTheFile: false doNotPaceReplication: false hashCacheMaxCount: 300 hashCacheMaxAmount: 50 concurrencyOfReadChunksOnline: 30 minimumIntervalOfReadChunksOnline: 25 hashAlg: xxhash64 suspendParseReplicationResult: false doNotSuspendOnFetching: false useIgnoreFiles: false ignoreFiles: .gitignore syncOnEditorSave: false pluginSyncExtendedSetting: {} syncMaxSizeInMB: 50 settingSyncFile: "" writeCredentialsForSettingSync: false notifyAllSettingSyncFile: false isConfigured: true settingVersion: 10 enableCompression: false accessKey: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 bucket: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷(0 letters) endpoint: Not configured or AWS region: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷(4 letters) secretKey: 𝑅𝐸𝐷𝐴𝐶𝑇𝐸𝐷 useEden: false maxChunksInEden: 10 maxTotalLengthInEden: 1024 maxAgeInEden: 10 disableCheckingConfigMismatch: false displayLanguage: "" enableChunkSplitterV2: false disableWorkerForGeneratingChunks: false processSmallFilesInUIThread: false notifyThresholdOfRemoteStorageSize: 2000 usePluginSyncV2: false usePluginEtc: false handleFilenameCaseSensitive: false doNotUseFixedRevisionForChunks: false showLongerLogInsideEditor: false sendChunksBulk: true sendChunksBulkMaxSize: 40 useSegmenter: false useAdvancedMode: true usePowerUserMode: false useEdgeCaseMode: true configPassphrase: "" preset: "" syncMode: LIVESYNC dummy: 0 ```Obsidian debug info
Device №1
``` 30.09.2024, 04:21:01->Cache initialized 300 / 250000000000 30.09.2024, 04:21:01->loading plugin 30.09.2024, 04:21:01->Self-hosted LiveSync v0.23.23 0.23.23 30.09.2024, 04:21:01->xxhash for plugin initialised 30.09.2024, 04:21:01->Waiting for ready... 30.09.2024, 04:21:01->Cache initialized 10 / 1000000000 30.09.2024, 04:21:01->Cache initialized 300 / 50000000 30.09.2024, 04:21:01->Newer xxhash has been initialised 30.09.2024, 04:21:01->Opening Database... 30.09.2024, 04:21:01->Database info 30.09.2024, 04:21:02->{ "doc_count": 1502, "update_seq": 2573, "db_name": "Main-1be10e65a0191e4d-livesync-v2-indexeddb", "auto_compaction": false, "adapter": "indexeddb" } 30.09.2024, 04:21:02->Database is now ready. 30.09.2024, 04:21:02->Log window opened 30.09.2024, 04:21:02->Opening the key-value database 30.09.2024, 04:21:02->Initialize and checking database files 30.09.2024, 04:21:02->Checking deleted files 30.09.2024, 04:21:02->Collecting local files on the storage 30.09.2024, 04:21:02->Collecting local files on the DB 30.09.2024, 04:21:02->Collecting local files on the DB: 25 30.09.2024, 04:21:02->Total files in the database: 48 30.09.2024, 04:21:02->Total files in the storage: 32 30.09.2024, 04:21:02->Total files: 49 30.09.2024, 04:21:02->Files exist only in storage: 1 30.09.2024, 04:21:02->Files exist only in database: 17 30.09.2024, 04:21:02->Files exist both in storage and database: 31 30.09.2024, 04:21:02->Synchronising... 30.09.2024, 04:21:02->UPDATE DATABASE 30.09.2024, 04:21:02->UPDATE STORAGE 30.09.2024, 04:21:02->SYNC DATABASE AND STORAGE 30.09.2024, 04:21:02->UPDATE DATABASE All done: DONE:1, FAILED:0 30.09.2024, 04:21:02->Initialized, NOW TRACKING! 30.09.2024, 04:21:02->Synchronizing hidden files... 30.09.2024, 04:21:02->Scanning customizations... 30.09.2024, 04:21:02->Scanning customizing files. 30.09.2024, 04:21:02->UPDATE DATABASE All done: DONE:1, FAILED:0 SYNC DATABASE AND STORAGE All done: DONE:31, FAILED:0 30.09.2024, 04:21:02->Scanning hidden files. 30.09.2024, 04:21:02->STORAGE --> DB:ix:arch/CONFIG/app.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:02->STORAGE --> DB:ix:arch/CONFIG/appearance.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:02->STORAGE --> DB:ix:arch/CONFIG/community-plugins.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:02->STORAGE --> DB:ix:arch/CONFIG/core-plugins-migration.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:02->STORAGE --> DB:ix:arch/CONFIG/core-plugins.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:02->Chunks saved (with fixed): doc: arch/CONFIG/workspace.json.md ,chunks: 5 (new:3, recycled:0, cached:2) 30.09.2024, 04:21:02->STORAGE --> DB:ix:arch/CONFIG/workspace.json.md: (config) Done 30.09.2024, 04:21:02->Customization file skipped: .obsidian/core-plugins.json 30.09.2024, 04:21:02->Customization file skipped: .obsidian/core-plugins.json 30.09.2024, 04:21:02->Customization file skipped: .obsidian/core-plugins-migration.json 30.09.2024, 04:21:02->Customization file skipped: .obsidian/core-plugins.json 30.09.2024, 04:21:02->Customization file skipped: .obsidian/core-plugins-migration.json 30.09.2024, 04:21:02->Customization file skipped: .obsidian/core-plugins-migration.json 30.09.2024, 04:21:02->STORAGE --> DB:ix:arch/PLUGIN_DATA/obsidian-icon-folder.md: (config) Skipped (Same content) 30.09.2024, 04:21:03->STORAGE --> DB:ix:arch/PLUGIN_DATA/obsidian-minimal-settings.md: (config) Skipped (Same content) 30.09.2024, 04:21:03->Config: skipped (Possibly is not exist): .obsidian/plugins/obsidian-minimal-settings/styles.css 30.09.2024, 04:21:03->Hidden file skipped: .obsidian/workspace.json is synchronized in customization sync. 30.09.2024, 04:21:03->Customization file skipped: .obsidian/workspace.json 30.09.2024, 04:21:03->Customization file skipped: .obsidian/community-plugins.json 30.09.2024, 04:21:03->Hidden file skipped: .obsidian/workspace.json is synchronized in customization sync. 30.09.2024, 04:21:03->Customization file skipped: .obsidian/workspace.json 30.09.2024, 04:21:03->Scanning customizations : done 30.09.2024, 04:21:03->Customization file skipped: .obsidian/community-plugins.json 30.09.2024, 04:21:03->Hidden file skipped: .obsidian/workspace.json is synchronized in customization sync. 30.09.2024, 04:21:03->Customization file skipped: .obsidian/workspace.json 30.09.2024, 04:21:03->Customization file skipped: .obsidian/community-plugins.json 30.09.2024, 04:21:05->Hidden files scanned: 3 files had been modified 30.09.2024, 04:21:05->Synchronizing hidden files done 30.09.2024, 04:21:05->Cache initialized 300 / 50000000 30.09.2024, 04:21:05->Scanning customizing files. 30.09.2024, 04:21:05->STORAGE --> DB:ix:arch/CONFIG/app.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:05->STORAGE --> DB:ix:arch/CONFIG/appearance.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:05->STORAGE --> DB:ix:arch/CONFIG/community-plugins.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:05->STORAGE --> DB:ix:arch/CONFIG/core-plugins-migration.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:05->STORAGE --> DB:ix:arch/CONFIG/core-plugins.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:05->STORAGE --> DB:ix:arch/CONFIG/workspace.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:05->STORAGE --> DB:ix:arch/PLUGIN_DATA/obsidian-icon-folder.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->STORAGE --> DB:ix:arch/PLUGIN_DATA/obsidian-minimal-settings.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->Config: skipped (Possibly is not exist): .obsidian/plugins/obsidian-minimal-settings/styles.css 30.09.2024, 04:21:06->Scanning customizing files. 30.09.2024, 04:21:06->Scanning hidden files. 30.09.2024, 04:21:06->STORAGE --> DB:ix:arch/CONFIG/app.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->STORAGE --> DB:ix:arch/CONFIG/appearance.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->STORAGE --> DB:ix:arch/CONFIG/community-plugins.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->STORAGE --> DB:ix:arch/CONFIG/core-plugins-migration.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->STORAGE --> DB:ix:arch/CONFIG/core-plugins.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->STORAGE --> DB:ix:arch/CONFIG/workspace.json.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->STORAGE --> DB:ix:arch/PLUGIN_DATA/obsidian-icon-folder.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->STORAGE --> DB:ix:arch/PLUGIN_DATA/obsidian-minimal-settings.md: (config) Skipped (Same content) 30.09.2024, 04:21:06->Config: skipped (Possibly is not exist): .obsidian/plugins/obsidian-minimal-settings/styles.css 30.09.2024, 04:21:09->Hidden files scanned: 3 files had been modified 30.09.2024, 04:21:09->Modifying callback of the save command 30.09.2024, 04:21:09->Additional safety scan.. 30.09.2024, 04:21:09->Checking storage sizes 30.09.2024, 04:21:09->Before LiveSync, start OneShot once... 30.09.2024, 04:21:09->OneShot Sync begin... (pullOnly) 30.09.2024, 04:21:12->Remote storage size: 39.43MB 30.09.2024, 04:21:12->There are no conflicted files 30.09.2024, 04:21:12->Additional safety scan done 30.09.2024, 04:21:13->Bulk sending chunks to remote database... 30.09.2024, 04:21:13->Looking for the point last synchronized point. 30.09.2024, 04:21:13->All changeset has been scanned (Last seq = 2577). 30.09.2024, 04:21:13->Found 9 chunks to check (Since 2562). 30.09.2024, 04:21:14->Queued 3 chunks. (Since 2562). 30.09.2024, 04:21:14->Sending 3 (7024 => 6.86KB in plain) chunks to remote database... 30.09.2024, 04:21:14->↑ Uploading chunks 3/(0 done) 30.09.2024, 04:21:14->↑ Uploading chunks 3/(3 done) 30.09.2024, 04:21:17->Replication paused 30.09.2024, 04:21:17->Replication completed 30.09.2024, 04:21:17->LiveSync begin... 30.09.2024, 04:21:18->Replication activated 30.09.2024, 04:21:19->Replication paused 30.09.2024, 04:21:20->Replication activated 30.09.2024, 04:21:20->Replication paused 30.09.2024, 04:21:39->Customization file skipped: .obsidian/app.json 30.09.2024, 04:21:39->Customization file skipped: .obsidian/app.json 30.09.2024, 04:21:39->Customization file skipped: .obsidian/app.json 30.09.2024, 04:21:39->Chunks saved (with fixed): doc: .obsidian/appearance.json ,chunks: 1 (new:0, recycled:1, cached:0) 30.09.2024, 04:21:39->STORAGE --> DB:.obsidian/appearance.json: (hidden) Done 30.09.2024, 04:21:39->Customization file skipped: .obsidian/appearance.json 30.09.2024, 04:21:39->Replication activated 30.09.2024, 04:21:39->Customization file skipped: .obsidian/appearance.json 30.09.2024, 04:21:39->Customization file skipped: .obsidian/appearance.json 30.09.2024, 04:21:40->Replication paused 30.09.2024, 04:21:59->Replication activated 30.09.2024, 04:21:59->START :Applying hidden 1 files change 30.09.2024, 04:21:59->Scanning hidden files. 30.09.2024, 04:21:59->STORAGE <-- DB:.obsidian/appearance.json: written (hidden, overwrite) 30.09.2024, 04:21:59->Customization file skipped: .obsidian/appearance.json 30.09.2024, 04:21:59->Customization file skipped: .obsidian/appearance.json 30.09.2024, 04:21:59->Customization file skipped: .obsidian/appearance.json 30.09.2024, 04:21:59->Customization file skipped: .obsidian/appearance.json 30.09.2024, 04:21:59->Customization file skipped: .obsidian/appearance.json 30.09.2024, 04:22:00->Replication paused 30.09.2024, 04:22:02->Hidden files scanned: 1 files had been modified 30.09.2024, 04:22:02->DONE :Applying hidden 1 files change 30.09.2024, 04:22:09->Scanning hidden files. 30.09.2024, 04:22:12->Hidden files scanned: 2 files had been modified ```On my iPhone I can't copy the log or settings, you should have added just buttons that copy to clipboard when clicked, not output to console. The settings are basically the same as on PC. I've attached a screenshot showing how the plugin overwrites the new changes with the old ones when the app is first opened
Device №2
![image](https://github.com/user-attachments/assets/242a6fb0-9614-442f-af8e-a6dd830b4f1e)Other information, insights and intuition.
First, I'll describe my usage. CouchDB is hosted on my VPS in Docker. Obsidian is used on two devices: an IPhone and Arch Linux (I'll just call it PC). The №1 device is PC. №2 is an IPhone.
I don't know exactly how the local DB works, but from what I understand, the server shares the DB with hidden files for different devices? It first tries to send all hidden files to the DB and writes “Same content” - at which point the plugin apparently marks it as a new file and so sends it to the shared DB