This change should improve Firefox startup time. If the Zotero pane is
opened before Zotero has initialized, the pane will be blocked with a
progress bar until it's done. Standalone currently does the same, but it
should be changed to just delay opening the window if possible.
The upgrade wizard has been disabled for schema upgrades, in the hope
that upgrades can be done in a way that won't break compatibility with
earlier versions (or that can at least be done in a way such that we can
put out point releases of the last major version that provide
compatibility during beta/post-upgrade periods).
This patch likely breaks many things, and definitely breaks connector
mode.
This change also removes upgrade steps for databases from Zotero 2.1b2
and earlier. Users with such databases will need to upgrade via Zotero
4.0.x first or delete their data directories and start anew. This should
only affect users who haven't opened Zotero since Nov. 2010.
The cursor effect doesn't work reliably anywhere other than on Linux,
but external files can now be linked instead of stored with
Cmd-Option-drag on OS X and Ctrl-Shift-drag on Win/Linux.
- On manual sync or the first auto-sync of a session, check all files
- During other auto-syncs, check only files previously modified or
opened externally via Zotero (including Show File) within the last 3
hours
- Every 3 hours, do a full check of all files even if it's an auto-sync
- Spin event loop during synchronous file checks to avoid hanging the UI
- Zotero.Sync.Runner.sync() now takes an options object (e.g.,
options.background)
Todo:
- Provide feedback on last full check in sync icon tooltip?
- Auto-sync on app focus, if this speeds up syncs enough?
Avoid ambiguously implying that Linux users should be running Zotero as
root, and tell them to fix the permissions on the Zotero executable instead.
See https://forums.zotero.org/discussion/31020/
OS.File doesn't seem to work reliably before Firefox 23, so older
versions will continue to do mod time checking on the main thread.
Zotero.Sync.Storage.checkForUpdatedFiles() now returns a promise.