Commit graph

16774 commits

Author SHA1 Message Date
Dan Stillman
3b17983092 Report more details with build mismatches
Some checks failed
CI / Detect changes (push) Has been cancelled
CI / Utilities Tests (push) Has been cancelled
CI / Build, Upload (push) Has been cancelled
CI / Test () (push) Has been cancelled
CI / Test (macOS NFS) (push) Has been cancelled
Include the build ID, platform version, modification times of the
executable, omni.ja, and application.ini, and the last update from the
update history, to help identify the cause. If the restart doesn't
resolve the mismatch, report it right away, since the regular
repository check won't run.

(cherry picked from commit 55e162ccf0)
2026-11-06 12:13:30 -05:00
Dan Stillman
456b623323 Update version 2026-11-06 11:59:27 -05:00
Dan Stillman
e179576790 Detect code running with resources from a different build
An incompletely applied update can start code from the previous version
with the new version's resources. Record the version in both the code
and a bundled resource file, and on a mismatch at startup, invalidate
caches and restart. If the mismatch remains after the restart, show an
error telling people to reinstall. Also send the versions with the next
repository check so we can try to figure out what's causing this.

https://forums.zotero.org/discussion/134539/error-message-when-opening-zotero

(cherry picked from commit 7ca413236a)
2026-11-06 11:15:37 -05:00
Dan Stillman
60a866e2dc Rerun step 130 for databases that missed it
An incompletely applied update can leave code from an older version of
Zotero running with a newer userdata.sql, which marks the database as
upgraded without running the new steps. Renumber step 130 as 131 so it
runs again for databases already at 130.

https://forums.zotero.org/discussion/134539/error-message-when-opening-zotero

(cherry picked from commit d9bd4404a5)
2026-11-06 11:15:36 -05:00
Dan Stillman
b7eb39d278 Update translators 2026-11-06 10:54:59 -05:00
Tom Najdek
a31bd7f10b Fix incorrect color of the icon in the tag selector
(cherry picked from commit d51b226d4a)
2026-11-06 10:53:38 -05:00
Adomas Venčkauskas
463ddba3ac Fix icons for non-HTML attachments imported from URLs
Discovered while working on something else. Non-HTML direct-attachments
of epub, etc used a generic item icon before.

(cherry picked from commit 1ca9d58c9a)
2026-11-06 10:53:38 -05:00
Abe Jellinek
b7830a04cd ZoteroProtocolHandler: Block deprecated third-party extensions 2026-11-06 10:49:48 -05:00
Dan Stillman
598e71b16b Fix Word plugin installation on macOS 27 since Firefox 140.17
Some checks failed
CI / Detect changes (push) Has been cancelled
CI / Utilities Tests (push) Has been cancelled
CI / Build, Upload (push) Has been cancelled
CI / Test () (push) Has been cancelled
CI / Test (macOS NFS) (push) Has been cancelled
Update Word for Mac submodule and add a string for a missing Word
startup folder.

https://forums.zotero.org/discussion/134463/

(cherry picked from commit b38562adc2)
2026-11-02 22:05:07 -05:00
abaevbog
897f5bd428 citation dlg: fix stuck focus on preview loading (#6085)
Do not wait for preview to load cited items if io is not
ready - show a loading message instead.

Waiting blocks the focus from landing back in bubble-input
when an item is added for the user to be able to keep typing.

https://forums.zotero.org/discussion/134552/zotero-10-broke-keyboard-navigation-of-citation-dialog

(cherry picked from commit 878f4e3bb3)
2026-11-02 14:53:22 -05:00
Dan Stillman
ed9387f54f Leave dragged file attachments out of Quick Copy text
On Windows, Word and Outlook take the text over a plain file drop, so
dragging a PDF into an email inserted a useless citation for the
attachment instead of attaching it. Dragging attachments along with
parent items still adds citations for the parents.

https://forums.zotero.org/discussion/134075/

(cherry picked from commit 8b9961f13b)
2026-11-02 14:49:12 -05:00
Martynas Bagdonas
a891cb0ca5 Update reader to speed up annotation dragging and ink rendering
Some checks failed
CI / Detect changes (push) Has been cancelled
CI / Utilities Tests (push) Has been cancelled
CI / Build, Upload (push) Has been cancelled
CI / Test () (push) Has been cancelled
CI / Test (macOS NFS) (push) Has been cancelled
2026-10-31 13:45:14 +02:00
Dan Stillman
35429ad620 Update translators
Some checks failed
CI / Detect changes (push) Has been cancelled
CI / Utilities Tests (push) Has been cancelled
CI / Build, Upload (push) Has been cancelled
CI / Test () (push) Has been cancelled
CI / Test (macOS NFS) (push) Has been cancelled
2026-10-29 16:14:55 -04:00
Dan Stillman
35d87b4f51 Allow hiding the keystore migration alert for 30 days
Without a usable keystore, credentials saved by older versions can't be
migrated, and the alert about it appeared on every launch with no way to
dismiss it.

https://forums.zotero.org/discussion/133980/

(cherry picked from commit 30e6c4a05c)
2026-10-29 14:21:50 -04:00
Dan Stillman
11080e3e89 Update reader submodule
Fix preview dot position after margin trimming

https://forums.zotero.org/discussion/134085/
2026-10-29 14:04:03 -04:00
Dan Stillman
8420f21b6f Update Word for Windows submodule
Fix "Object has been deleted" error when importing documents

https://forums.zotero.org/discussion/134083/
2026-10-29 14:03:59 -04:00
Dan Stillman
1a6219d64f Mark the first request when using Replace Online Library
Add a restoreToServer=1 query parameter so we can identify restores
server-side if necessary

(cherry picked from commit a69b55ea96)
2026-10-29 14:03:59 -04:00
Dan Stillman
28a422bb7c Update new Read Aloud strings that haven't been localized
We changed a few Read Aloud strings along with the cap updates. For
locales that were still using the English text, update to the new
strings. Strings that were already translated will be slightly outdated,
but that's better than reverting to English.
2026-10-29 12:02:36 -04:00
Dan Stillman
ffbe82445c Read Aloud: Show reset time in daily limit message
(cherry picked from commit 8afdb83fce)
2026-10-29 11:41:15 -04:00
Dan Stillman
e6f818024b Read Aloud: Lowercase "voices" after tier names
(cherry picked from commit 79b9c3a501)
2026-10-29 11:41:14 -04:00
Dan Stillman
f24a4062b3 Read Aloud: Update Premium Voice subscription text
- Remove beta credits bullet
- Use app name for subscription name
- Mention hours of Premium Voice listening

(cherry picked from commit 584cef63b5)
2026-10-29 11:41:10 -04:00
Dan Stillman
a616ac57de Fix missing-value check in SyncedSettings.set()
(cherry picked from commit db41b99fdd)
2026-10-29 11:40:43 -04:00
Dan Stillman
e8d6c72ef4 Fix invalid colored tags not being removed on load
A typo left the fix flag unset, so invalid colored tags were logged as
removed but stayed in the setting unless another fix also applied.

(cherry picked from commit efb40e307c)
2026-10-29 11:40:42 -04:00
Dan Stillman
f79538584e Fix blank reader from invalid custom themes
The AI4Paper plugin wrote a non-array value to the readerCustomThemes
synced setting, which broke attachment opening in the reader. Validate
the value where it's used.

https://forums.zotero.org/discussion/133694/
https://forums.zotero.org/discussion/134248/

(cherry picked from commit 2cc8bf8053)
2026-10-29 11:40:42 -04:00
Dan Stillman
62baf192de Fix item tree column refresh before the table has mounted
Resetting the columns of an item tree that hadn't rendered its table
yet threw inside a forceUpdate() callback before resolving the promise
ItemTree.notify() was waiting on, so the notification never reached
later observers. Regression from 5ca1fbb167, which dropped the
unmounted-tree check from ItemTree.notify().

https://forums.zotero.org/discussion/134185/

(cherry picked from commit f483c80f36)
2026-10-29 11:40:42 -04:00
Dan Stillman
9683534387 Don't open a DB transaction when plugins register or refresh UI elements
The transaction didn't do any database work, but sync and other
transactions had to wait for it to finish, so an observer that never
returned could leave startup sync stuck at "Waiting for other operations
to finish".

https://forums.zotero.org/discussion/134185/

(cherry picked from commit 3378fc94f0)
2026-10-29 11:40:42 -04:00
Dan Stillman
d9df3b8516 Keep reconnecting to the streaming server after a 4429 close
A 4429 (Too Many Requests) close stopped streaming until restart along
with the other 44xx codes. Retry it on the normal backoff schedule.

(cherry picked from commit b0db83d9dc)
2026-10-29 11:40:41 -04:00
Dan Stillman
9956bd7732 Fix startup error after interrupted full-text index rebuild
A rebuild interrupted after fulltextIndexMeta was dropped left the
index at the current version with no meta table, so every startup
failed with "no such table: ftindex.fulltextIndexMeta".

https://forums.zotero.org/discussion/134508/

(cherry picked from commit 5f1a304e52)
2026-10-29 11:32:58 -04:00
Dan Stillman
eeb6511e1a Fix drop-target highlight getting stuck after a fast drag exit
Some checks failed
CI / Detect changes (push) Has been cancelled
CI / Utilities Tests (push) Has been cancelled
CI / Build, Upload (push) Has been cancelled
CI / Test () (push) Has been cancelled
CI / Test (macOS NFS) (push) Has been cancelled
Dragging over a row re-rendered it, replacing the cell under the
pointer, so after a quick exit the row could miss the dragleave and
keep its highlight. Update the drop indicator on the existing row
instead, and also clear it on any dragleave that leaves the tree, since
a fast exit from the window can target the table body rather than the
row.

https://forums.zotero.org/discussion/133039/

(cherry picked from commit ca3261ae7a)
2026-10-26 22:12:43 -04:00
Dan Stillman
d05a84f7ee Clear stuck drag-and-drop row highlight in trees
If a drag ended without the tree receiving a dragleave, drop, or dragend
(e.g., a drag that left the window), the drop-target row kept its
highlight until restart, and, being index-based, could move to other
rows as the view changed.

Clear the indicator on the next mousemove and whenever the rows in
the items list change.

This will hopefully fix https://forums.zotero.org/discussion/133039/,
though I couldn't reproduce it.

(cherry picked from commit 896a3f829a)
2026-10-26 22:09:33 -04:00
Dan Stillman
787144a0a5 Reject synced settings the server won't accept
A plugin writing an arbitrary synced setting caused every settings
upload to fail with a 400, blocking sync. Throw on local writes of
names not allowed by the API, and skip any already stored on upload.

https://forums.zotero.org/discussion/134449/

(cherry picked from commit a6717ad540)
2026-10-26 15:12:30 -04:00
Dan Stillman
78b9a3a1f3 Apply Mozilla's OneCRL certificate revocations
Mozilla sends CRL updates via Remote Settings, which we don't use, so we
continue to trust revoked CA and intermediate certificates, including
the compromised eMudhra intermediates. Fetch the current list from
Mozilla at build time and apply the changes to the list on the first run
of each build.

Updating to the latest 153 ESR will also remove the eMudhra roots, which
will invalidate the intermediates as well, but that won't help Zotero
10, since 140 ESR is EOL, and most revoked intermediates are blocked
only via OneCRL without a root removal.

The test imports the cross-signed certificate into the certificate
database instead of passing it to asyncVerifyCertAtTime(), which
doesn't accept intermediates in Firefox 140.

(cherry picked from commit e470557ff8)
2026-10-26 12:18:47 -04:00
Dan Stillman
fffea9717c Treat dropped download connections as status 0 again
Since HTTP.download() switched to fetch() in 10.0, a connection that
dropped mid-download threw a TypeError ("Error in input stream"), so
ZFS sync no longer retried interrupted S3 downloads and failed the file
sync immediately.

https://forums.zotero.org/discussion/134446/sync-error

(cherry picked from commit d85ec125be)
2026-10-26 11:55:42 -04:00
Dan Stillman
a4b7102b94 Fix "Hide" label sticking on the collection context menu's Delete item
Some checks failed
CI / Detect changes (push) Has been cancelled
CI / Utilities Tests (push) Has been cancelled
CI / Build, Upload (push) Has been cancelled
CI / Test () (push) Has been cancelled
CI / Test (macOS NFS) (push) Has been cancelled
After the menu was built for a hideable row (My Publications, Unfiled
Items, etc.), the Delete Collection/Search item kept showing "Hide" for
collections and saved searches.

Temporary fix for 10.0. Fixed for real by switching the "Hide" label to
Fluent in 59aaf8dfef.

https://forums.zotero.org/discussion/134097/
2026-10-12 23:12:39 -04:00
Dan Stillman
0a12c154ae Update version 2026-10-12 23:12:38 -04:00
Dan Stillman
536244c277 Local API: Decode + as a space in form-encoded requests
Some checks failed
CI / Detect changes (push) Has been cancelled
CI / Utilities Tests (push) Has been cancelled
CI / Build, Upload (push) Has been cancelled
CI / Test () (push) Has been cancelled
CI / Test (macOS NFS) (push) Has been cancelled
File uploads that encoded spaces as + were stored with literal +
characters in the filename.

https://forums.zotero.org/discussion/134038/

(cherry picked from commit 9cbba8c4d2)
2026-10-06 11:34:49 -04:00
Dan Stillman
4d4c2c1412 Clear MDPI's Akamai bot challenge during Find Full Text
MDPI serves a JS proof-of-work interstitial in place of the article
page, so Find Full Text found nothing. Run the challenge in a hidden
browser when a page's meta refresh points to a registered challenge
host, then retry the page.

Also match meta refresh URL= case-insensitively, since MDPI's is
uppercase, and bound meta refreshes by the redirect limit.

https://forums.zotero.org/discussion/132837/
https://forums.zotero.org/discussion/134079/

(cherry picked from commit 09c3c8cd3d)
2026-10-06 10:51:37 -04:00
Martynas Bagdonas
95de6143fb Update reader to fix JPEG2000 PDF rendering stalls
Restore native OpenJPEG WASM decoding on Gecko 140 by updating the reader
to 5802d14a76552e10000124d2431e352e92054f01.

Fixes: https://forums.zotero.org/discussion/comment/518813#Comment_518813
2026-10-06 10:37:44 +01:00
Dan Stillman
7b26a1a3fc Don't stall the Find Full Text queue on a failing download
Some checks are pending
CI / Detect changes (push) Waiting to run
CI / Test () (push) Blocked by required conditions
CI / Test (macOS NFS) (push) Blocked by required conditions
CI / Utilities Tests (push) Waiting to run
CI / Build, Upload (push) Waiting to run
A file URL returning a server error was retried for up to an hour inside
the download, and a 429 or Retry-After was waited out there too. Since
the queue processes one item at a time, that blocked every other
selected item. Throttling now goes to Find Full Text's own per-domain
handling, as it did before 10.0, which also needed to read Retry-After
from a fetch Response and parse HTTP-date values.

https://forums.zotero.org/discussion/133703/

(cherry picked from commit cdf10bf62b)
2026-10-05 15:34:53 -04:00
Dan Stillman
072d4d361c Limit timeout and retries for open-access PDF lookup
This runs during Find Full Text and connector saves, where the default
30-second timeout and hour of 5xx retries are far longer than a user
wants to wait.

(cherry picked from commit d81484d2e8)
2026-10-05 15:34:50 -04:00
Dan Stillman
a72ffd6549 Don't retry failing custom Find Full Text resolvers
A custom resolver returning a 429/5xx inherited Zotero.HTTP's default
retry policy, which could cause the whole queue to stall for up to an
hour -- or indefinitely for a Retry-After -- on a dead resolver, despite
the 5-second timeout on the request.

https://forums.zotero.org/discussion/133642/

(cherry picked from commit 9b769d3987)
2026-10-05 15:34:46 -04:00
Dan Stillman
f590efa63e Send cookies and Referer from HTTP.download()
Since the switch to fetch() in 0fe31b0f04 (Zotero 10.0.0), download
requests didn't use cookies, and the Referer header was silently dropped
as a forbidden header. Sites that check either -- e.g., IEEE Xplore,
which returns a 502 -- failed during Find Full Text.

https://forums.zotero.org/discussion/133703/

(cherry picked from commit 364181f4e7)
2026-10-05 14:19:45 -04:00
Dan Stillman
f6b6643604 Update Windows zotero.exe and updater.exe for Firefox 140.17 ESR
Some checks are pending
CI / Detect changes (push) Waiting to run
CI / Test () (push) Blocked by required conditions
CI / Test (macOS NFS) (push) Blocked by required conditions
CI / Utilities Tests (push) Waiting to run
CI / Build, Upload (push) Waiting to run
The 140.0 zotero.exe crashed at startup after the 140.15 → 140.17 bump.
2026-10-04 00:38:03 -04:00
Dan Stillman
98ca571637 Update Windows build to Firefox 140.17 ESR
Some checks failed
CI / Detect changes (push) Has been cancelled
CI / Utilities Tests (push) Has been cancelled
CI / Build, Upload (push) Has been cancelled
CI / Test () (push) Has been cancelled
CI / Test (macOS NFS) (push) Has been cancelled
2026-10-02 11:16:12 -04:00
Dan Stillman
77a1c03f79 Include custom libmozglue.dylib for Firefox 140.17 (#6056)
Some checks are pending
CI / Detect changes (push) Waiting to run
CI / Test () (push) Blocked by required conditions
CI / Test (macOS NFS) (push) Blocked by required conditions
CI / Utilities Tests (push) Waiting to run
CI / Build, Upload (push) Waiting to run
2026-10-01 16:53:35 -04:00
Dan Stillman
d3b87ca709 Revert "Read Aloud: Disable local voices on macOS 27"
This reverts commit ca61760225.

We're now patching libmozglue to fix this.
2026-10-01 16:46:14 -04:00
Dan Stillman
a8411d11ab Ignore invalid display directories in FilePicker
As of Firefox 140.17/153.4 (Bug 2068406), setting nsIFilePicker's
displayDirectory to a directory that doesn't exist or isn't readable
throws instead of being ignored. This broke callers that pass a saved
path that may be stale (e.g., choosing a PDF/EPUB handler after the old
app's folder was removed, or a missing Scaffold translators directory).

(cherry picked from commit ae50d52589)
2026-10-01 16:45:19 -04:00
Dan Stillman
672bd4255e Update Mac and Linux builds to Firefox 140.17 ESR 2026-10-01 16:44:53 -04:00
Dan Stillman
4b85f1039a Mac build: Resolve Firefox source path to absolute path
build-and-unify changes into a temp directory before unifying, so a
relative path (e.g., `.`) broke the mach and objdir references.

(cherry picked from commit 4118f47bc3)
2026-10-01 15:20:53 -04:00
Dan Stillman
bbfa6b3c73 Mac build: Add Rust targets to the pinned toolchain
`rustup target add` was run before `rustup default`, so targets were
added to the previous default toolchain rather than $RUST_VERSION.

(cherry picked from commit 9e234ee64f)
2026-10-01 15:20:53 -04:00