Commit graph

16307 commits

Author SHA1 Message Date
Dan Stillman
7132587c2d Update version
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
2026-07-07 11:05:29 -04:00
Adomas Venčkauskas
a6b508065c Update LibreOffice submodule
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
(cherry picked from commit 9cffc1c7c2)
2026-07-06 13:06:19 -04:00
Dan Stillman
94f69371d0 Citation dialog: Handle citation processor errors during sort gracefully
If io.sort() fails during accept, log and continue unsorted -- the
insert runs the same processor operation, so a real failure triggers the
document-update error dialog instead of a stuck progress window.
Skipping the sort doesn't affect the inserted citation, which the
processor sorts itself. It only determines the stored item order, and
with it the initial bubble order if the citation is edited later -- the
reopened dialog re-sorts once cited data has loaded.

The preview-handling part of the original commit doesn't apply, since
9.0 doesn't have the citation preview.

(cherry picked from commit e2db3c7966)
2026-07-06 13:05:56 -04:00
Dan Stillman
8a81fe98ca Update citeproc.js to include Juris-M/citeproc-js#281
Fixes HTML appearing in citations after an error during citation preview

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

(cherry picked from commit cddf0ea237)
2026-07-06 13:05:56 -04:00
Abe Jellinek
855e2f3837 Preferences: Trim search term
Fixes #5975

(cherry picked from commit 9a4317daa7)
2026-07-06 13:05:56 -04:00
Dan Stillman
dc3ef9fea1 Don't crash on unbalanced {{endif}} in template engine
An {{endif}} without a matching {{if}} popped the base level off the
stack, leaving it empty and throwing "level is undefined" on the next
part. A malformed filename format template could therefore break file
attaching entirely.

https://forums.zotero.org/discussion/132296/pdfs-have-stopped-attaching-after-upgrade-to-zotero-9
(cherry picked from commit 4a318617d6)
2026-07-06 13:05:56 -04:00
Bogdan Abaev
3db89ca0c4 Citation dialog: allow accepting while details popup is open
- allow to accept the dialog via cmd/ctrl+Enter from
inside of a panel
- enable click-through on item details panel, so
one can click on the "Accept" button without having
to close the popup first

These two measures allow one to add a bubble, modify
the citation via item details popup, and accept it
with one less step (without having to close the popup first)

(cherry picked from commit 40f949ba94)
2026-07-06 13:05:55 -04:00
Dan Stillman
48ae229199 Fix corrupted-login-manager warning never appearing
The once-per-minute rate limit from e40fff6a7d (5.0.91) was inverted,
and the last-error time was never initialized, so the alert hasn't
appeared since 2020.

(cherry picked from commit 632f11db74)
2026-07-06 13:05:55 -04:00
Dan Stillman
a50c15bfdc Fix file-change detection in all libraries after the first one synced
The local-file-change watcher added in f21e1b2d32 accumulated changed
item keys globally but was drained separately by each library's storage
engine, with the drained keys filtered to that library. The first
library to file-sync (normally My Library) consumed all pending events,
and keys belonging to other libraries were silently discarded, so files
modified on disk in group libraries were never marked for upload. The
initial and periodic full-scan fallbacks on Windows and Linux were
likewise global, so only the first library ever received them, and
changes made in other libraries while Zotero was closed were never
detected at all.

The sync runner now drains the watcher once per sync session and
immediately runs the modification check on the changed items across all
libraries, recording any changes in the database, and the per-library
storage engines skip the check entirely unless the watcher reports that
the library needs a full scan:

- On all platforms, a library that has never been scanned gets one full
  scan, which also gives libraries one recovery scan for changes dropped
  by affected releases.
- On Windows/Linux, where the watchers only capture events while Zotero
  is running, each library gets a full scan on its first file sync of
  the session, on every manual sync, and daily during background syncs
  (instead of the previous 3-hour interval, which dated from when scans
  were the primary detection mechanism).
- On macOS, libraries scanned since the last FSEvents journal
  discontinuity are tracked in a pref, since the journal -- and
  therefore the validity of previous scans -- survives restarts.

Also:

- Check FSEvents event flags and fall back to full scans when events
  were dropped or coalesced (MustScanSubDirs/UserDropped/KernelDropped/
  EventIdsWrapped), and skip HistoryDone sentinel events
- Disable the watcher for the session and fall back to legacy scanning
  on backend errors, including when the inotify watch limit is reached,
  instead of continuing with silently incomplete coverage
- Prune scan records for deleted libraries, since SQLite can reuse a
  deleted library's libraryID

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

(cherry picked from commit 06e16c297c)
2026-07-06 13:05:55 -04:00
Christopher Holmes
3ab1abf59c Abbreviate Atmospheric as Atmos. (#5938)
example:
"Atmospheric Chemistry and Physics" is currently incorrectly abbreviated as "Atmospheric Chem. Phys." should be abbreviated "Atmos. Chem. Phys."

(cherry picked from commit 31b3ead557)
2026-07-06 13:05:55 -04:00
Dan Stillman
733a122369 Disable locale selector when parent style specifies default-locale
For a dependent CSL style with no default-locale of its own, citeproc-js
parses the parent's XML and silently uses the parent's default-locale
over any user-selected locale, making the locale dropdown a no-op. Add
a Zotero.Style.effectiveLocale getter that falls back to the parent's
locale, and use it in updateLocaleList and the locale-selector custom
element to disable the dropdown in that case.

https://forums.zotero.org/discussion/comment/512891/#Comment_512891

(cherry picked from commit cfd5596814)
2026-07-06 13:05:55 -04:00
Dan Stillman
c95a4ec79d Update builds to Firefox 140.12.0esr 2026-07-06 13:05:55 -04:00
Tom Najdek
a95dc2ee62
Fix stale itemType in _previousData (#5964)
This fixes a problem where, on subsequent item type changes, a stale itemType is reported and the filename is not updated.
2026-07-06 18:45:44 +02:00
Tom Najdek
78a89a3531
Fix auto-renaming not triggering when parent item type changes 2026-07-06 18:24:06 +02:00
Abe Jellinek
3242a3dd75 Preferences: Fix search not filtering and not highlighting results
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
1. 0ff3ec6a1 moved strings referenced in data-search-strings to a new
   FTL file (fileRenaming.ftl) but didn't add a <link> to it, so
   document.l10n.formatMessages() returned nothing. It fell back to
   Zotero.getString(), which threw an error due to a missing string in
   en-US. We didn't catch that, so the entire search process aborted
   every time.
2. message.attributes is an optional array of { name, value } objects,
   not an object itself, so we were never successfully adding FTL .title
   and .label attributes to the parsed strings.

This fixes the 0ff3ec6a1 regression, and makes search match FTL
attributes as it was always intended to.

Fixes #5947
2026-06-15 14:08:38 -04:00
Dan Stillman
0e7f01a549 Update Word for Windows submodule
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
2026-06-12 12:58:39 -04:00
Dan Stillman
f0bcd5ae13 Update version
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
2026-06-10 08:13:04 -04:00
Dan Stillman
9f81d899b5 Update Word for Windows submodule 2026-06-10 08:11:31 -04:00
Dan Stillman
74a3617e7e Fix full-text indexing failing silently after periodic vacuum or backup
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
vacuum() and the APFS-cloning offline backup path both close and
reopen the SQLite connection, which drops all ATTACHed databases --
including the in-memory "indexing" alias used for the fulltextWords
scratch table set up in Fulltext.init(). Once the connection is
reopened, indexing queries fail with "no such table:
indexing.fulltextWords", and indexItems()'s ignoreErrors path
routes the error to logError(), so indexing silently stops working
for the rest of the session.

Add an onConnect() hook on Zotero.DBConnection for per-connection
state that doesn't persist across reopens, and use it from
Fulltext.init() to re-attach the indexing DB on each reconnect.

Regression sources:

- 67288047f3 ("Use APFS cloning for file copies on macOS") flips
  online idle backups to offline-with-clone on APFS, so every idle
  backup interval (24h default) closes and reopens the connection.
  Affects Mac users on APFS.
- b27c4cb023 ("Enable SQLite WAL mode and add periodic VACUUM
  INTO") adds the vacuum path, which closes and reopens on the
  first idle period in a session that passes the freelist/time
  gates. Affects all users with sufficient DB churn, roughly once
  per 14 days.

https://forums.zotero.org/discussion/131576/debug-id-d848621212-indexing-of-pdfs-fail-zotero-9-0-3
https://forums.zotero.org/discussion/131718/possible-bug-regression-report-search-unusable-on-macos-zotero-9-0-3-with-large-library
(cherry picked from commit 70c4cadab1)
2026-05-22 11:00:03 -04:00
Dan Stillman
6881089b1b Update translators
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
2026-05-21 10:23:14 -04:00
Dan Stillman
c828f3405a Update reader submodule 2026-05-21 10:22:44 -04:00
Dan Stillman
841efcb5c6 Don't mark group attachment as unsynced when opened
For group items, attachmentLastRead is stored in a synced setting in My
Library rather than on the item itself, but since we didn't pass
skipSyncedUpdate, the item was being marked as needing sync, resulting
in a permission-denied error in read-only libraries.

https://forums.zotero.org/discussion/131717/opening-pdf-in-read-only-group-library-triggers-permission-denied-on-sync
(cherry picked from commit d2631cc614)
2026-05-21 10:08:07 -04:00
abaevbog
b5517e92c1 citation dlg: sort libraries by cited count (#5925)
In list mode, sort libraries by the count of their items
cited in the current document, falling back to alphabetic sorting
when counts are equal, with "My Library" always getting
priority over other groups.

Fixes: #5924
(cherry picked from commit 8f44172342)
2026-05-21 10:07:52 -04:00
Abe Jellinek
2a1779f5c1 Suppress Crash Reports and RemoteSettings console spam
(cherry picked from commit 714d4416f8)
2026-05-21 10:06:39 -04:00
Dan Stillman
3c131037da Close advanced search window in collectionViewItemTree notify() test
The test opened an advanced search window but never closed it, which
likely caused the intermittent failures in the ZoteroPane focus() test
"should shift-tab across the zotero pane".

(cherry picked from commit 504447de41)
2026-05-21 10:06:05 -04:00
Dan Stillman
d0168f91d4 Update version 2026-05-21 10:05:31 -04:00
Dan Stillman
451d96a824 Update version
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
2026-05-06 10:58:46 -04:00
Dan Stillman
75b55a5f06 Update Windows builds with Word template compatibility fix from #5904
(cherry picked from commit ddf2419e78)
2026-05-06 10:58:46 -04:00
Abe Jellinek
adacbb4010 Fix Find Full Text captcha loop on ScienceDirect (#5902)
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
2026-05-05 09:51:23 -04:00
Dan Stillman
df6efbfd8d Update translate submodule 2026-05-05 09:51:04 -04:00
Abe Jellinek
de5bc7c5c5 cookieContextId -> userContextId 2026-05-05 09:51:04 -04:00
Abe Jellinek
5ebe8ea15f Add support for clearing challenge in browser during translation 2026-05-05 09:51:03 -04:00
Abe Jellinek
b8611db419 Remove CookieSandbox, add new utility for cookie isolation (#5853) 2026-05-05 09:49:42 -04:00
Dan Stillman
5af27a0194 Update translators
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
2026-04-30 12:43:37 -04:00
Dan Stillman
bb832f1152 Update reader submodule 2026-04-30 12:19:27 -04:00
Dan Stillman
86ae532c37 Prefs: Localize "Data Directory:" label in Advanced pane
Hard-coded as "Data directory:" in the original commit. Move to Fluent
and fix the dara-dir-label typo on the id (and the matching
aria-describedby) while we're here.

https://forums.zotero.org/discussion/130868/untranslated-string-data-directory
https://forums.zotero.org/discussion/131212/translation-not-reflected
(cherry picked from commit a57cb6276f)
2026-04-30 12:19:00 -04:00
Abe Jellinek
08d43a512a Replace chai-as-promised assertions in server_connector tests
(cherry picked from commit 03d94060b4)
2026-04-30 12:18:49 -04:00
Abe Jellinek
33e6601a2e Server: Remove /connector/request endpoint
Never used.

(cherry picked from commit 13cb8d99b6)
2026-04-30 12:18:45 -04:00
Abe Jellinek
a50052a055 Server: Test new browser detection behavior
(cherry picked from commit 82b31574a8)
2026-04-30 12:18:42 -04:00
Abe Jellinek
9db626c929 Server: Close request without response when browser is detected
(cherry picked from commit bc2ede0459)
2026-04-30 12:18:38 -04:00
Abe Jellinek
8579339cde Server: Improve browser detection
(cherry picked from commit 2e19017d0e)
2026-04-30 12:18:35 -04:00
Abe Jellinek
094eb92f37 CasePreservingHeaders: Fix some Headers instances not being recognized
I guess the Headers class accessible from test code is different from
the Headers class in http.js (for the purposes of instanceof, at least).

(cherry picked from commit 2f38926da5)
2026-04-30 12:18:31 -04:00
Dan Stillman
ed5418b8f8 Validate Host header in connector server
Restores a check that was originally added in 10ad4c33 but lost in the
June 2024 server rewrite (#5148)

(cherry picked from commit 5dc817db44)
2026-04-30 12:18:28 -04:00
windingwind
5a745fcc9a Fix plugin FTL registration (#5896)
Use one registry to avoid competing of language detect between plugins,
as resources declared as optional is identical to resource missing and thus fails the check and returns null for the string (https://searchfox.org/mozilla-esr140/source/intl/l10n/rust/l10nregistry-rs/src/registry/asynchronous.rs#140)
Register the plugin FTL for all languages Zotero supports with proper fallback logic so that even resources are declared as required, the check doesn't fail when plugin doesn't provide the resource.
Fix Zotero.File.getResourceAsync to use NetUtil channel to handle jar: url with `@`.

(cherry picked from commit e13e85b2e5)
2026-04-30 12:18:03 -04:00
Mi Ramon
0ead864103 "Updating add-ons" → "Updating plugins" (#5893)
(cherry picked from commit 462357e49e)
2026-04-30 12:15:20 -04:00
Dan Stillman
fcebbb3798 Update Windows build to Firefox 140.10.0esr
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
(cherry picked from commit df6037ce0a)
2026-04-23 22:19:40 -04:00
Dan Stillman
b0459f7668 Update Mac and Linux builds to Firefox 140.10.0esr
(cherry picked from commit de69835419)
2026-04-23 22:19:33 -04:00
Dan Stillman
d27da1173a Offer to reset data directory on SQLite I/O error at startup
When a custom data directory is on a network share or in a cloud storage
folder, SQLite can fail to open with NS_ERROR_STORAGE_IOERR and the user
previously had to manually edit prefs.js to recover. Show a "Use Default
Location" button in the startup error dialog that resets the data
directory pref and restarts.

Addresses #4860

(cherry picked from commit 0b15b794e6)
2026-04-23 22:19:26 -04:00
Adomas Venčkauskas
3290ce2182 Update Word for Windows submodule
(cherry picked from commit e7ed0b2881)
2026-04-23 22:17:54 -04:00
Dan Stillman
28ae0ff644 Update version 2026-04-23 22:17:43 -04:00