Commit graph

16352 commits

Author SHA1 Message Date
Dan Stillman
a7d001fc1d Fix stale references to old item tree DOM id
After the item tree refactor, the items tree id became "item-tree-main"
instead of "item-tree-main-default". Update the remaining call sites,
restoring collection highlighting on Ctrl/Option, focusing the item tree
after Add Item by Identifier, and Shift-Tab focus movement from the item
tree to the toolbar (which only still worked due to the native tab
order).
2026-04-29 14:57:02 -04:00
Dan Stillman
36e25d171a Update English strings for Transifex 2026-04-29 14:14:58 -04:00
Dan Stillman
a57cb6276f 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
2026-04-29 14:14:32 -04:00
Dan Stillman
373accce3b Update locales from Transifex 2026-04-29 12:19:13 -04:00
Dan Stillman
66dc97de33 Update English strings for Transifex 2026-04-29 09:44:57 -04:00
Abe Jellinek
03d94060b4 Replace chai-as-promised assertions in server_connector tests
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
2026-04-28 13:33:58 -04:00
Abe Jellinek
13cb8d99b6 Server: Remove /connector/request endpoint
Never used.
2026-04-28 13:05:31 -04:00
Abe Jellinek
82b31574a8 Server: Test new browser detection behavior 2026-04-28 13:05:31 -04:00
Abe Jellinek
bc2ede0459 Server: Close request without response when browser is detected 2026-04-28 13:05:30 -04:00
Abe Jellinek
2e19017d0e Server: Improve browser detection 2026-04-28 13:05:30 -04:00
Abe Jellinek
2f38926da5 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).
2026-04-28 13:05:30 -04:00
Dan Stillman
5dc817db44 Validate Host header in connector server
Restores a check that was originally added in 10ad4c33 but lost in the
June 2024 server rewrite (#5148)
2026-04-28 13:00:40 -04:00
Dan Stillman
fd812070b6 Fix WebDAV download auth for usernames with special characters
HTTP.download() was rewritten in 0fe31b0f04 to use fetch() and build the
Basic auth header itself via btoa(username + ':' + password), but the
username and password come from nsIURI.username/password, which are
percent-encoded. As a result, a username like "user@example.com" was
sent as "user%40example.com", causing a 401 on every WebDAV download for
any user with @, :, space, etc. in their username. Other request types
were unaffected because they go through xmlhttp.open(method, url, true,
username, password), which decodes internally.

Decode username and password in _parseURI() so the values returned can
be used directly for Basic auth (and as a side effect, fix the other
display/use sites that were getting the percent-encoded form).

https://forums.zotero.org/discussion/131174/zotero-10-betas-1-2-3-cant-download-from-webdav-http-401
2026-04-28 13:00:40 -04:00
windingwind
e13e85b2e5
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 `@`.
2026-04-28 12:00:04 -04:00
Dan Stillman
7ca8242a3e Update reader submodule
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
2026-04-27 16:05:48 -04:00
Dan Stillman
a43d6a5d37 Fix erroneous data dir reuse in new profile on Windows
In a newly created profile, we check whether another profile is using
the default data directory, and if so, we create a new data directory
named after the profile (e.g., "Zotero Work"). But on Windows, paths in
prefs.js are stored with escaped backslaches (C:\\Users\\foo\\Zotero),
so searching for the JS string with literal single backslashes
(C:\Users\foo\Zotero) always failed, we would conclude that the default
dir was unused, and we would reuse the existing database.

To fix, escape backslashes in dataDir before the substring check.
Mac/Linux paths have no backslashes so this is a no-op there.
2026-04-27 16:04:52 -04:00
Dan Stillman
1ff2f640eb Remove Zotero for Firefox data directory migration code
The new-install branch in DataDirectory.init() read prefs.js from the
default Firefox profile to detect a pre-2017 dataDir setting, and the
read was unwrapped, making prefs.js access errors fatal at startup [1].
We could add a try/catch, but after nine years, it's probably safe to
just remove the migration. If anyone is returning from >9 years in the
wilderness and they still want old unsynced Zotero data, they can
manually move their data to the default location.

[1] https://forums.zotero.org/discussion/131176/installation-error-accessing-mozillas-pref-js-see-msg-pls
2026-04-27 16:04:52 -04:00
Mi Ramon
462357e49e
"Updating add-ons" → "Updating plugins" (#5893) 2026-04-27 14:50:51 -04:00
Adomas Venčkauskas
777d01b5c2 Item Tree: Column visibility logic improvements
Columns now have properties: `enabledIn`, `disabledIn` and `defaultIn`,
corresponding to column picker availability and default visibility. The
properties now filter based on attached collection view type instead of
visibilityGroup.

Visibility groups are for views where we want distinct column sets to
persist, like the feeds view.

Collection type properties are used to specify which columns are
available for a given type, regardless of whether it's in a different
visibility group or not.
2026-04-27 14:44:39 -04:00
Adomas Venčkauskas
5ca1fbb167 Item tree refactor megacommit
Split ItemTree megaclass into:
- ItemTree - concerned with drawing the virtualized table container and
  column interaction
- ItemTreeRowProvider - provides rows and issues notifications for
  render updates
- ItemTreeRow and subclasses - contains row-specific data and rendering
  logic
- CollectionViewItemTree and its accompanying classes - a version of
  ItemTree that renders items attached to a given Collection or
  CollectionView (CollectionTreeRow).

Various improvements in logic and rendering, separation of concerns.
2026-04-27 14:44:39 -04:00
Dan Stillman
6b42f9f9c0 Update translate submodule
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
2026-04-23 15:34:28 -04:00
Abe Jellinek
d7920e320b cookieContextId -> userContextId 2026-04-23 15:34:28 -04:00
Abe Jellinek
f0474fa250 Add support for clearing challenge in browser during translation 2026-04-23 15:34:28 -04:00
Dan Stillman
df6037ce0a Update Windows build to Firefox 140.10.0esr 2026-04-23 13:43:12 -04:00
Dan Stillman
24e16c0aad extract_xul_dll: Process whichever arch ZIPs are present 2026-04-23 13:38:26 -04:00
Dan Stillman
2d14f33de2 Windows build: Copy custom Firefox ZIP back to app/win/ 2026-04-23 13:38:26 -04:00
Dan Stillman
de69835419 Update Mac and Linux builds to Firefox 140.10.0esr 2026-04-23 11:40:55 -04:00
Dan Stillman
0b15b794e6 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
2026-04-23 11:38:29 -04:00
Adomas Venčkauskas
e7ed0b2881 Update Word for Windows submodule 2026-04-23 09:09:06 +03:00
Dan Stillman
a487dd9eef Rename pdf-worker submodule to document-worker
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
Repo moved to zotero/document-worker on GitHub

After pulling, run:

    git submodule sync
    git submodule update --init document-worker

If an old `pdf-worker/` directory is left behind, it can be removed manually.
2026-04-22 15:50:02 -04:00
Adomas Venčkauskas
9abd13fd22 Fix ZoteroPane tests failing intermittently 2026-04-22 10:16:05 +03:00
Dan Stillman
e1cd83214f CI: Deploy from version branches (9.0, 10.0, etc.)
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
And drop reference to fx128 branch
2026-04-21 14:41:21 -04:00
windingwind
fa9a54b773
Fix plugin prefs.js change not taking effect after update (#5888)
Do not use cache for loading the prefs.js
2026-04-21 10:44:44 -04:00
Abe Jellinek
a835136d3b Update reader submodule
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
2026-04-20 12:00:05 -04:00
Abe Jellinek
89ee4c21c0 Read Aloud: Fix network error string key 2026-04-20 11:08:19 -04:00
Adomas Venčkauskas
26816b03e2 Fix bad utilities submodule commit 2026-04-20 09:35:46 +03:00
Adomas Venčkauskas
07906931c1 Update utilities submodule 2026-04-20 09:31:23 +03:00
Dan Stillman
c52a6151dc Fix ZoteroPane.viewAttachment() tests after HTTP.download() rewrite
Some checks failed
CI / Build, Upload, Test (push) Has been cancelled
2026-04-17 15:36:21 -04:00
Dan Stillman
ce424c6b67 Fix attachment tests after HTTP.download() rewrite
Add a spy on Zotero.HTTP.download and update call-count assertions to
split between request() and download() calls. Previously download()
delegated to request(), so a single requestStub tracked everything.
2026-04-17 15:21:25 -04:00
Abe Jellinek
cc76207a23
Remove CookieSandbox, add new utility for cookie isolation (#5853) 2026-04-17 14:23:04 -04:00
Tom Najdek
32e43cb8f1
Fix tag paste to include existing field text at cursor position (#5873) 2026-04-17 14:20:52 -04:00
Dan Stillman
00ece3db68 Update reader submodule 2026-04-17 14:18:21 -04:00
Dan Stillman
0fe31b0f04 Rewrite HTTP.download() to stream via fetch() + ReadableStream
- Replace XHR-based download with fetch() + response.body streaming,
  writing chunks to disk via IOUtils instead of buffering the entire
  response in memory
- Separate out the retry and URL-parsing logic so it can be reused
  between request() and download()
- Split the ZFS download code into a request() with `followRedirects:
  false` to get the metadata headers and a separate download() to
  download the file

Fixes #5476, Downloading of large files is broken
2026-04-17 14:17:40 -04:00
Dan Stillman
45596e70e9 Work around Fluent issue leaving "{$version}" in post-upgrade banner
Some users see the literal "{$version}" placeholder in the banner,
likely due to some Fluent quirk triggered by plugin localizations.
(Missing localizations? Missing strings?) After translation, check the
version span and substitute manually if needed.

https://forums.zotero.org/discussion/129171/version-variable-is-displayed-in-zotero-8-upgrade-banner/p1
https://forums.zotero.org/discussion/130864/just-upgraded-to-zotero-9-on-debian-through-check-for-updates-and/p1
2026-04-17 11:32:22 -04:00
Dan Stillman
11c75ae6e5 Update reader submodule 2026-04-17 11:14:39 -04:00
Dan Stillman
c2c66795d2 Add some extra asserts to debug test flakiness in CI 2026-04-17 10:47:04 -04:00
windingwind
55672ba933
Fix removal logic for menu added by MenuManager (#5886)
Add the registered main key to menu class list so that they can be found when plugin is removed.
Add test for the fix.
2026-04-17 10:13:36 -04:00
Abe Jellinek
488fd29978 Read Aloud: Handle failure when trying to pause other tab
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
https://forums.zotero.org/discussion/130920/tts-breaks-after-automatic-theme-changes
2026-04-16 16:26:45 -04:00
Dan Stillman
d2d4451165 Fix WebDAV tests for Account pane rename
Some checks are pending
CI / Build, Upload, Test (push) Waiting to run
2026-04-14 23:56:23 -04:00
Dan Stillman
a9fe8e3b62 Fix Account preferences tests
And update suite name
2026-04-14 22:46:37 -04:00