Report ID: 674557569 Intermittent Auto-Move Failure and "PDF" Title Fallback on iCloud Shared Folder

[Proposed Technical Fix for Developer]
Problem: The current trigger relies on a static delay. This fails when Zotero 8's background indexing (especially for Korean/NFD) takes longer than the delay.

The Bug: If the move fails once due to an iCloud file-lock, ZotMoov doesn't retry, leading to a permanent "PDF" title and broken link.

Solution Suggestion: Instead of a static delay, implement a "File-Ready Check" or a "Retry Loop" that waits until the file is actually unlocked and renamed by Zotero before attempting the move.

### Environment
- Zotero: 8.0.3 Mac - Win
- Plugin: ZotMoov (Latest)
- Storage: iCloud Drive (Family Shared Folder)
- Special Condition: Parent items already containing long Korean/English abstracts.

### Summary of the Issue
Even with default settings (`delay: 5000`, `rename_title: true`), ZotMoov fails to move files to the cloud or breaks the DB link (showing "PDF" as the title) when adding attachments to items with heavy metadata.

### Technical Findings
1. Race Condition: Zotero 8's async indexing (especially Korean NFD) and iCloud's aggressive file-locking conflict with ZotMoov's move trigger.

2. Asynchronous Truncation: Differences in metadata (Abstract presence) cause Zotero to finalize filenames at different speeds, leading to "PDF" fallback if ZotMoov triggers before the DB update.

3. Current Workaround: Increasing `auto_process_delay` to 10,000ms and reducing `truncate` in renaming rules to match iCloud's path limits helps, but a robust "Retry" mechanism is needed for Zotero 8.


[Zotero 8 Log on Mac]

1771579367081 addons.xpi WARN Force scan SCOPE_APPLICATION (app-builtin-addons location missing from XPIStates)

[JavaScript Error: "Error: Failed to load resource://services-settings/remote-settings.sys.mjs"]

While creating services from category 'profile-after-change', could not create service for entry 'RemotePermissionService', contract ID '@mozilla.org/remote-permission-service;1'

[JavaScript Error: "Error: Failed to load resource://services-settings/remote-settings.sys.mjs" {file: "resource://gre/modules/EssentialDomainsRemoteSettings.sys.mjs" line: 41}]

[JavaScript Error: "Error: Failed to load resource://services-settings/remote-settings.sys.mjs" {file: "resource://gre/modules/SimpleURIUnknownSchemesRemoteObserver.sys.mjs" line: 45}]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "ChromeUtils.import() has been removed. Use importESModule():
ChromeUtils.importESModule("resource://gre/modules/Console.sys.mjs");"]

[JavaScript Error: "TypeError: this.ownerGlobal.gBrowser.getTabForBrowser is not a function" {file: "chrome://global/content/elements/browser-custom-element.mjs" line: 932}]
getTabBrowser@chrome://global/content/elements/browser-custom-element.mjs:932:54
onPageHide@chrome://global/content/elements/browser-custom-element.mjs:958:27


appName => Zotero, version => 8.0.3 (x64), os => macOS 13.7.8, locale => ko-KR, extensions => ZotMoov (1.2.26, extension), Actions and Tags for Zotero (2.4.0, extension), Translate for Zotero (2.4.2, extension), Sci-PDF (8.0.3, extension)
Sign In or Register to comment.