Update for Zotero 8

115 views
Skip to first unread message

maie...@gmail.com

unread,
Feb 3, 2026, 9:56:19 AMFeb 3
to zotero-dev
Hi everyone,

I'm a bit behind with the update process for plugin. Is there an outline available summarizing the most important changes I have to make?

Best,
Denis

Dan Stillman

unread,
Feb 3, 2026, 9:58:10 AMFeb 3
to zoter...@googlegroups.com
On 2/3/26 9:56 AM, maie...@gmail.com wrote:
> I'm a bit behind with the update process for plugin. Is there an
> outline available summarizing the most important changes I have to make?

https://www.zotero.org/support/dev/zotero_8_for_developers

maie...@gmail.com

unread,
Feb 3, 2026, 10:05:59 AMFeb 3
to zotero-dev

Thanks. Am I understanding this correctly that the main change for me is how menu items are registered?

Dan Stillman

unread,
Feb 3, 2026, 2:17:51 PMFeb 3
to zoter...@googlegroups.com
On 2/3/26 10:05 AM, maie...@gmail.com wrote:
>
> Am I understanding this correctly that the main change for me is how
> menu items are registered?
>

That's a new API, but the main changes would be in the Platform Changes
section:

https://www.zotero.org/support/dev/zotero_8_for_developers#platform_changes

They may or may not apply to your plugin.

maie...@gmail.com

unread,
Feb 4, 2026, 9:48:22 AMFeb 4
to zotero-dev
Is there a way to install Zotero 8 in a way that won't affect my regular Zotero 7 installation? (I will only be able to switch to the new version once I've confirmed the plugin works there, so I need to keep the old version as a fallback in the meantime.)

Dan Stillman

unread,
Feb 4, 2026, 9:56:41 AMFeb 4
to zoter...@googlegroups.com
On 2/4/26 9:48 AM, maie...@gmail.com wrote:
> Is there a way to install Zotero 8 in a way that won't affect my
> regular Zotero 7 installation? (I will only be able to switch to the
> new version once I've confirmed the plugin works there, so I need to
> keep the old version as a fallback in the meantime.)

You can just run it.

If this is Windows, you can use the ZIP build.

maie...@gmail.com

unread,
Feb 4, 2026, 10:14:53 AMFeb 4
to zotero-dev
Ok, but it won't mess up the database?

Dan Stillman

unread,
Feb 4, 2026, 10:27:19 AMFeb 4
to zoter...@googlegroups.com
On 2/4/26 10:14 AM, maie...@gmail.com wrote:
> Ok, but it won't mess up the database?

It will not.

maie...@gmail.com

unread,
Feb 10, 2026, 9:26:13 AMFeb 10
to zotero-dev
Ok, thanks. I've tried now, and the plugin stil seems to run. I could use an existing profile and the plugin showed up and it was working.

But, then I've also tried this method to start my dev-profile:
....\zotero.exe -P plugin-dev -purgecaches -ZoteroDebugText -jsconsole -debugger -purgecaches

And now, in the plugin manager it says that plugin is not compatible with this version of Zotero.

In manifest.json I have these values:

"strict_min_version": "6.999",
"strict_max_version": "8.0.*"

What would be reasonable values here?

XY Wong

unread,
Feb 10, 2026, 9:30:28 AMFeb 10
to zotero-dev
What's the Zotero version you are using?

maie...@gmail.com

unread,
Feb 10, 2026, 9:36:25 AMFeb 10
to zotero-dev
8.0.2-beta.5+c35d7f21e (64-bit)

XY Wong

unread,
Feb 10, 2026, 10:43:40 AMFeb 10
to zotero-dev
Please check the pref `extensions.checkUpdateSecurity`  in your current profile. If you have an invalid update manifest provided (e.g. incompatible), then it fails the check.

XY Wong

unread,
Feb 10, 2026, 10:44:46 AMFeb 10
to zotero-dev
I mean, plugins should always provide a valid update manifest; for development, you can set that flag to temporarily skip this check.

maie...@gmail.com

unread,
Feb 11, 2026, 5:56:02 AMFeb 11
to zotero-dev
Thanks, I've had a look and added that key (with false). However, it still flags the plugin as incompatible. As I've said, I can run Zotero 8 with another profile (where the plugin is already installed, which, ironically, in fact should be incompatible), and it seems to work without any issues.

XY Wong

unread,
Feb 11, 2026, 5:58:42 AMFeb 11
to zotero-dev
It would be helpful if you would share the manifest.json of the plugin along with the prefs.js of the profile you are experiencing issues with.

maie...@gmail.com

unread,
Feb 11, 2026, 6:28:17 AMFeb 11
to zotero-dev
Sure. By the way. I've noticed that Zotero doesn't seem to pick up the version change. (It still shows 0.2.13 in the plugin dialog.)

Manifest:

{
  "manifest_version": 2,
  "name": "Swisscovery UB Bern Locations",
  "version": "0.3",
  "description": "Zotero/Jurism-Plugin zur Bestandsabfrage im Swisscovery UB Bern",
  "author": "Denis Maier",
  "icons": {
    "48": "glass_48.png",
    "96": "glass_96.png"
  },
  "applications": {
    "zotero": {
      "id": "zoteroswisscover...@ubbe.org",
      "update_url": "https://raw.githubusercontent.com/ub-unibe-ch/zotero-swissbib-bb-locations/master/updates.json",
      "strict_min_version": "7.0.*",
      "strict_max_version": "8.0.*"
    }
  }
}



Prefs:
// Mozilla User Preferences

// DO NOT EDIT THIS FILE.
//
// If you make changes to this file while the application is running,
// the changes will be overwritten when the application exits.
//
// To change a preference value, you can either:
// - modify it via the UI (e.g. via about:config in the browser); or
// - set it within a user.js file in your profile.

user_pref("app.update.download.attempts", 0);
user_pref("app.update.elevate.attempts", 0);
user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1770727728);
user_pref("app.update.lastUpdateTime.background-update-timer", 1770806593);
user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1718963917);
user_pref("app.update.lastUpdateTime.search-engine-update-timer", 1718964037);
user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1770730466);
user_pref("app.update.migrated.updateDir3.870E6256E46BD5B6", true);
user_pref("app.update.migrated.updateDir3.A88A7A0EE6B236CF", true);
user_pref("app.update.migrated.updateDir3.F100510F95A7CE3B", true);
user_pref("browser.cache.disk.capacity", 358400);
user_pref("browser.cache.disk.filesystem_reported", 1);
user_pref("browser.laterrun.bookkeeping.profileCreationTime", 1716549350);
user_pref("browser.laterrun.bookkeeping.sessionCount", 51);
user_pref("browser.launcherProcess.enabled", true);
user_pref("browser.rights.3.shown", true);
user_pref("browser.startup.homepage_override.buildID", "20260122154123");
user_pref("browser.startup.homepage_override.mstone", "140.7.0");
user_pref("devtools.browserconsole.filter.css", true);
user_pref("devtools.browserconsole.input.editor", true);
user_pref("devtools.webconsole.input.editorOnboarding", false);
user_pref("extensions.blocklist.pingCountVersion", 0);
user_pref("extensions.checkUpdateSecurity", false);
user_pref("extensions.databaseSchema", 37);
user_pref("extensions.lastAppBuildId", "20260209203729");
user_pref("extensions.lastAppVersion", "8.0.2-beta.5+c35d7f21e");
user_pref("extensions.lastPlatformVersion", "140.7.0");
user_pref("extensions.make-it-red.intensity", 900);
user_pref("extensions.pendingOperations", false);
user_pref("extensions.signatureCheckpoint", 1);
user_pref("extensions.sul.apikey", "");
user_pref("extensions.swisscoveryubbernlocations.apikey", "");
user_pref("extensions.systemAddonSet", "{\"schema\":1,\"addons\":{}}");
user_pref("extensions.ui.dictionary.hidden", true);
user_pref("extensions.ui.locale.hidden", true);
user_pref("extensions.ui.plugin.hidden", false);
user_pref("extensions.ui.sitepermission.hidden", true);
user_pref("extensions.webextensions.uuids", "{\"make-...@example.com\":\"700eefae-8e08-41e6-b6f2-a26c8ad6cbe6\",\"te...@denismaier.com\":\"74abfb51-eed2-441b-b988-9051353c14f9\",\"zoter...@bib.uni-mannheim.de\":\"92593fef-720f-436b-8074-28b67e861a91\",\"zoteroswisscover...@ubbe.org\":\"cca9a323-55cc-4f3b-8cce-622e6ad53eba\",\"swisscoveryub...@ubbern.org\":\"e5d11ae9-5b6b-46e6-8023-dbc52f180557\",\"alma-holdi...@zb.uzh.ch\":\"c02f9d7c-a7e5-4242-b7b7-e14fbe492e66\"}");
user_pref("extensions.zotero.autoRenameFiles.bannerDisplayTime", "1770730468614");
user_pref("extensions.zotero.autoRenameFiles.bannerShown", false);
user_pref("extensions.zotero.dataDir", "C:\\Users\\denis\\zotero-plugin-dev");
user_pref("extensions.zotero.firstRun.skipFirefoxProfileAccessCheck", true);
user_pref("extensions.zotero.firstRun2", false);
user_pref("extensions.zotero.ignoreLegacyDataDir.auto", true);
user_pref("extensions.zotero.itemPaneHeader", "titleCreatorYear");
user_pref("extensions.zotero.lastSelectedPrefPane", "zotero-prefpane-advanced");
user_pref("extensions.zotero.lastViewedFolder", "L5");
user_pref("extensions.zotero.pane.persist", "{\"zotero-reader-sidebar-pane\":{\"collapsed\":\"true\"},\"zotero-layout-switcher\":{\"orient\":\"horizontal\"},\"zotero-items-splitter\":{\"orient\":\"horizontal\"},\"zotero-item-pane\":{\"width\":\"469\",\"height\":\"205\"},\"zotero-context-splitter\":{\"state\":\"collapsed\"},\"zotero-context-splitter-stacked\":{\"state\":\"open\"}}");
user_pref("extensions.zotero.panes.abstract.open", true);
user_pref("extensions.zotero.panes.attachment-annotations.open", true);
user_pref("extensions.zotero.panes.attachment-info.open", true);
user_pref("extensions.zotero.panes.attachments.open", true);
user_pref("extensions.zotero.panes.info.open", true);
user_pref("extensions.zotero.panes.libraries-collections.open", true);
user_pref("extensions.zotero.panes.note-info.open", true);
user_pref("extensions.zotero.panes.notes.open", false);
user_pref("extensions.zotero.panes.related.open", true);
user_pref("extensions.zotero.panes.tags.open", true);
user_pref("extensions.zotero.prefVersion", 20);
user_pref("extensions.zotero.purge.tags", true);
user_pref("extensions.zotero.retractedLibraries", "{}");
user_pref("extensions.zotero.sidebarState", "{\"library\":{\"width\":240,\"open\":false}}");
user_pref("extensions.zotero.sourceList.persist", "{\"L1\":true,\"P1\":false,\"L6\":false,\"L11\":true,\"L5\":false,\"L12\":false,\"L9\":true,\"L13\":true,\"L7\":true,\"L10\":true,\"L8\":true,\"L2\":false,\"L3\":false,\"L4\":false}");
user_pref("extensions.zotero.sync.librariesToSkip", "[\"L1\",\"G2443978\",\"G2504886\",\"G2227813\",\"G4943619\",\"G2319948\",\"G2459426\",\"G2487389\",\"G2205533\",\"G254407\",\"G2238835\",\"G4409595\",\"G5001096\",\"G2504881\"]");
user_pref("extensions.zotero.sync.server.username", "maier.de");
user_pref("extensions.zotero.useDataDir", true);
user_pref("extensions.zoteroOpenOfficeIntegration.lastAttemptedVersion", "7.0.0.SOURCE");
user_pref("extensions.zoteroOpenOfficeIntegration.skipInstallation", true);
user_pref("extensions.zoteroWinWordIntegration.installed", true);
user_pref("extensions.zoteroWinWordIntegration.lastAttemptedVersion", "7.0.5.SOURCE");
user_pref("extensions.zoteroWinWordIntegration.version", "7.0.5.SOURCE");
user_pref("gecko.handlerService.defaultHandlersVersion", 1);
user_pref("gecko.handlerService.migrated", true);
user_pref("gfx-shader-check.build-version", "20260122154123");
user_pref("gfx-shader-check.device-id", "0x1681");
user_pref("gfx-shader-check.driver-version", "32.0.11030.10004");
user_pref("gfx-shader-check.ptr-size", 8);
user_pref("gfx.crash-guard.d3d11layers.appVersion", "60.9.0");
user_pref("gfx.crash-guard.d3d11layers.deviceID", "0x1681");
user_pref("gfx.crash-guard.d3d11layers.driverVersion", "31.0.21024.5005");
user_pref("gfx.crash-guard.d3d11layers.feature-d2d", true);
user_pref("gfx.crash-guard.d3d11layers.feature-d3d11", true);
user_pref("gfx.crash-guard.status.d3d11layers", 2);
user_pref("gfx.crash-guard.status.wmfvpxvideo", 2);
user_pref("gfx.crash-guard.wmfvpxvideo.appVersion", "60.9.0");
user_pref("gfx.crash-guard.wmfvpxvideo.deviceID", "0x1681");
user_pref("gfx.crash-guard.wmfvpxvideo.driverVersion", "31.0.21024.5005");
user_pref("idle.lastDailyNotification", 1718889308);
user_pref("intl.accept_languages", "de, en-US, en");
user_pref("layers.mlgpu.sanity-test-failed", false);
user_pref("media.gmp-gmpopenh264.abi", "x86_64-msvc-x64");
user_pref("media.gmp-gmpopenh264.hashValue", "77991110c1d195616e936d27151d02e4d957be6c20a4f3b3511567868b5ddffc6abbfdc668d17672f5d681f12b20237c7905f9b0daaa6d71dcdac4b38f2448b2");
user_pref("media.gmp-gmpopenh264.lastDownload", 1770808070);
user_pref("media.gmp-gmpopenh264.lastInstallStart", 1770808069);
user_pref("media.gmp-gmpopenh264.lastUpdate", 1770808070);
user_pref("media.gmp-gmpopenh264.version", "2.6.0");
user_pref("media.gmp-widevinecdm.abi", "x86_64-msvc-x64");
user_pref("media.gmp-widevinecdm.hashValue", "d94483deaae98bf9212699f1ab0bd913f6151a63e65ebc1ea644ab98d5e3ebd74ecaa08f70aca31e11a5d2c64d1504b723817af35bbe9d7b05c758dd6945d484");
user_pref("media.gmp-widevinecdm.lastDownload", 1770808072);
user_pref("media.gmp-widevinecdm.lastInstallStart", 1770808069);
user_pref("media.gmp-widevinecdm.lastUpdate", 1770808072);
user_pref("media.gmp-widevinecdm.version", "4.10.2891.0");
user_pref("media.gmp.storage.version.observed", 1);
user_pref("media.hardware-video-decoding.failed", false);
user_pref("network.cookie.prefsMigrated", true);
user_pref("places.database.lastMaintenance", 1718363278);
user_pref("places.history.expiration.transient_current_max_pages", 104858);
user_pref("privacy.bounceTrackingProtection.hasMigratedUserActivationData", true);
user_pref("privacy.purge_trackers.date_in_cookie_database", "0");
user_pref("privacy.purge_trackers.last_purge", "1718714125664");
user_pref("sanity-test.advanced-layers", true);
user_pref("sanity-test.device-id", "0x1681");
user_pref("sanity-test.driver-version", "32.0.11030.10004");
user_pref("sanity-test.running", false);
user_pref("sanity-test.version", "20260122154123");
user_pref("signon.importedFromSqlite", true);
user_pref("storage.vacuum.last.index", 1);
user_pref("storage.vacuum.last.places.sqlite", 1716371925);
user_pref("toolkit.startup.last_success", 1770808913);
user_pref("ui.osk.debug.keyboardDisplayReason", "IKPOS: Touch screen not found.");

XY Wong

unread,
Feb 11, 2026, 7:16:53 AMFeb 11
to zotero-dev
Thanks for the share.

> I've noticed that Zotero doesn't seem to pick up the version change

I'm a bit confused here.

Based on the command you started Zotero, it seems like you are loading plugin from source code (https://www.zotero.org/support/dev/client_coding/plugin_development#setting_up_a_plugin_development_environment). But if you have another installation of the same plugin already installed, I don't think loading from source code would work.

Otherwise, it could be that your current plugin xpi is not compatible, and there is another compatible version available from your update manifest. If that's the case, when you install the incompatible version of the plugin, it will automatically update to the version from your update manifest.

maie...@gmail.com

unread,
Feb 11, 2026, 7:29:32 AMFeb 11
to zotero-dev
Yes, exactly. That's what I'm trying to achieve. I have one profile where I use the plugin for my work. For development I have a development environment in another profile.

I think with Zotero 7 that used to work exactly like that. I have just checked, and when I start Zotero 7 with that command and profile it will pick up any change of the version number on the next start.

I have also made a build and installed the plugin using another (fresh) profile using Zotero 8 -> also successfully. But interestingly,  "strict_min_version": "7.0.*", gave me an error. But it works with  "strict_min_version": "6.999". A bit weird, right?
Only when I try to use the dev profile with Zotero 8 it refuses to pick up the changes.

XY Wong

unread,
Feb 11, 2026, 7:29:36 AMFeb 11
to zotero-dev
For the specific manifest you provided: the strict_min_version with `*` is not allowed [1].


maie...@gmail.com

unread,
Feb 11, 2026, 7:33:00 AMFeb 11
to zotero-dev
Ok, that might explain why 6.999 works but, 7.0.* doesn't.

maie...@gmail.com

unread,
Feb 11, 2026, 9:30:34 AMFeb 11
to zotero-dev
Another attempt:

made a new profile, set up the environment as needed. Plugin is loaded from source, and it works. But after that changes seem to be ignored. Not sure if that's related, but the browser console tells me that -purgecaches is not valid anymore.

Maybe it boils down to this: how should you set up the development environment these days?

Xiangyu Wang

unread,
Feb 11, 2026, 10:02:20 AMFeb 11
to zoter...@googlegroups.com
I myself is using this lib for my plugin development: 

--
You received this message because you are subscribed to the Google Groups "zotero-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to zotero-dev+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/zotero-dev/8d0f502d-7a33-4525-98da-2d7e72b670d5n%40googlegroups.com.

maie...@gmail.com

unread,
Feb 12, 2026, 6:03:44 AMFeb 12
to zotero-dev
Thanks for the hint. I will try is.
Reply all
Reply to author
Forward
0 new messages