Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
354bc3a
Initial commit
LyzardKing Jan 5, 2026
fd27061
Simple working version
LyzardKing Jan 6, 2026
eeab5fc
Working version
LyzardKing Jan 6, 2026
ecaf675
Remove buttons
LyzardKing Jan 6, 2026
2fb0dd4
Update readme
LyzardKing Jan 6, 2026
da5a97c
Remove old commented code
LyzardKing Jan 6, 2026
c14be20
Working on firefox with hidden iframe
LyzardKing Jan 7, 2026
ef5141b
Remove duplicate code
LyzardKing Jan 7, 2026
9d4c789
Refactor and remove unnecessary code.
LyzardKing Jan 13, 2026
d14a597
update readme
LyzardKing Jan 13, 2026
cab5f25
Replace Websocket with HTTP server connection
LyzardKing Jan 15, 2026
86dc1af
Add error log on failure to connect
LyzardKing Jan 15, 2026
1550748
Fix web-ext lint
LyzardKing Jan 15, 2026
1f84f8f
Add documentation readme
LyzardKing Jan 15, 2026
66b6764
Rename repo to JabRef-Browser-Extension
LyzardKing Jan 19, 2026
1bb6998
Fix README title and formatting issues
koppor Jan 19, 2026
1e7fe36
Update Readme, fix exec bit on python script, refine gitignore
Siedlerchr Jan 20, 2026
bd3e38a
Merge pull request #5 from JabRef/fixPython
Siedlerchr Jan 20, 2026
f3e1702
Remove node-fetch dependency
LyzardKing Jan 20, 2026
5236b38
Fix try catch
LyzardKing Jan 20, 2026
7aeb907
Add simple test. Only run arXiv
LyzardKing Jan 20, 2026
c57e47a
Fetch translators in action
LyzardKing Jan 20, 2026
f7ee503
Merge pull request #6 from JabRef/test_isolation
koppor Jan 21, 2026
622adbe
Add dependabot config (#3)
Siedlerchr Jan 21, 2026
c2c41e9
Bump translators/zotero from `c7551c1` to `b91223a` (#7)
dependabot[bot] Jan 22, 2026
2343b3b
Replace jabref icon and descriptions
Siedlerchr Jan 22, 2026
3dda587
Merge pull request #11 from JabRef/logo
Siedlerchr Jan 22, 2026
8cf072a
Updates from 2025 extension (#8)
koppor Jan 23, 2026
f87eb5b
Add a local cache for the tests. (#15)
LyzardKing Jan 23, 2026
9281b03
Collect centrallly at JabRef e.V.
koppor Jan 23, 2026
91fdb44
Full submodule only (#14)
koppor Jan 23, 2026
8bb0afd
Reduce run tests
koppor Jan 23, 2026
e589d34
Change from chrome to promise based browser api (#19)
LyzardKing Jan 23, 2026
30e0d03
Merge remote-tracking branch 'fresh/main' into merge-fresh
tobiasdiez Jan 23, 2026
24f7489
Merge `assets` into `data`
tobiasdiez Jan 23, 2026
43a4404
Remove now unused files
tobiasdiez Jan 23, 2026
fcab44d
chore: add web-ext as dependency and fix its config
tobiasdiez Jan 23, 2026
d43ce81
chore: add `lint` alias
tobiasdiez Jan 23, 2026
28b1d7e
chore: migrate to pnpm
tobiasdiez Jan 23, 2026
6262aaa
chore: migrate to oxlint
tobiasdiez Jan 23, 2026
1598d08
chore: fix linter
tobiasdiez Jan 23, 2026
0189c23
chore: migrate to oxfmt and reformat all files
tobiasdiez Jan 28, 2026
d56f8a9
feat: add http connection check to options page
tobiasdiez Jan 31, 2026
c8a7568
feat: restore translator detection upon website load and toggling of …
tobiasdiez Feb 1, 2026
8e5e6b9
chore: merge old and new popup scripts
tobiasdiez Feb 8, 2026
b0e9811
chore: remove unneeded files
tobiasdiez Feb 8, 2026
e8af95c
chore: remove notion of 'legacy translators'
tobiasdiez Feb 15, 2026
ed16945
Migrate to zotero-translate and zotero-utilities
tobiasdiez Mar 13, 2026
bc0cb7d
remove ris
tobiasdiez Mar 13, 2026
0b12a94
fix: make sure all translators can be imported (and add tests for it)
tobiasdiez Mar 13, 2026
71d61c9
feat: add esm exports for Zotero translators (and corresponding tests)
tobiasdiez Mar 13, 2026
81a0ee8
fix: use DOMParser from browser (and mock it in tests)
tobiasdiez Mar 13, 2026
d3220c9
feat: convert to bibtex code using Zotero exporter
tobiasdiez Mar 13, 2026
0f62c5b
feat: send bibtex to JabRef via HTTP and Native Messaging as fallback
tobiasdiez Mar 14, 2026
087ead9
fix: update browser extension id in manifest.json
tobiasdiez Mar 14, 2026
161805c
chore: fix linter
tobiasdiez Mar 14, 2026
f9b450e
chore: use pnpm in gh
tobiasdiez Mar 14, 2026
e2b9ad1
chore: don't format zotero submodules
tobiasdiez Mar 14, 2026
26d7129
chore: fix submodules
tobiasdiez Mar 14, 2026
81c0407
fix: update zotero-utilities submodule to include custom import fix o…
tobiasdiez Mar 14, 2026
5818e62
chore: remove dead code
tobiasdiez Mar 14, 2026
7c01516
chore: update vscode setting to add cSpell words and chat auto-approve
tobiasdiez Mar 14, 2026
f7935c8
chore: update Zotero submodules
tobiasdiez Mar 14, 2026
4c2aebb
fix: add missing web request interception functionality
tobiasdiez Mar 15, 2026
3256f64
chore: don't run zotero update script in gh tests
tobiasdiez Mar 15, 2026
04113eb
fix: run `detect` step also in the content script
tobiasdiez Mar 15, 2026
1e3ea6c
chore: fix linter
tobiasdiez Mar 16, 2026
c4468c5
chore: skip last failing test until PR is merged
tobiasdiez Mar 16, 2026
f767427
fix: correctly handle special headers (Referer, Origin)
tobiasdiez Mar 16, 2026
c66acb4
chore: fix linter
tobiasdiez Mar 16, 2026
2fa1f4f
feat: add Zotero date initialization
tobiasdiez Mar 16, 2026
8813c4d
fix: expose `exports` from translator in sandbox
tobiasdiez Mar 16, 2026
9c1cc09
chore: remove unused citation-related elements from progress panel
tobiasdiez Mar 19, 2026
6da5e1d
chore: update contributing guidelines and move them to `Contributing.md`
tobiasdiez Mar 19, 2026
bbd7754
fix: use correct method for error handling
tobiasdiez Mar 19, 2026
19557a7
chore: remove unused ESLint dependencies
tobiasdiez Mar 19, 2026
25734e0
chore: remove commented-out import statements
tobiasdiez Mar 19, 2026
84dd999
fix: ensure translator paths are validated and correctly assigned
tobiasdiez Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
github: [tobiasdiez, JabRef]
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LyzardKing based on your previous contributions to the extension and your work now, it would only be fair to list you here as well. For this you would need to setup a github sponsors account. (Disclaimer: don't expect any real money via this channel but maybe someone is so kind and will pay you a coffee ;-))

custom: ['https://github.com/JabRef/jabref/wiki/Donations']
custom: ["https://github.com/JabRef/jabref/wiki/Donations"]
42 changes: 25 additions & 17 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,27 @@
# Basic `dependabot.yml` file with
# minimum configuration for three package managers

version: 2
updates:
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
day: friday
time: "18:00"
open-pull-requests-limit: 10
labels:
- type:dependency
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: weekly
day: friday
time: "18:00"
labels:
- type:dependency
# Enable version updates for npm
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: sunday

# Enable version updates for GitHub Actions
- package-ecosystem: "github-actions"
# Workflow files stored in the default location of `.github/workflows`
# You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.
directory: "/"
schedule:
interval: "weekly"
day: sunday

- package-ecosystem: "gitsubmodule"
directory: "/"
schedule:
interval: weekly
day: sunday
labels: []
2 changes: 1 addition & 1 deletion .github/workflows/automerge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- name: 'Wait for status checks'
- name: "Wait for status checks"
id: waitforstatuschecks
uses: "WyriHaximus/github-action-wait-for-status@v1.8"
with:
Expand Down
37 changes: 28 additions & 9 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,33 @@
name: Lint test
on: [push]
name: Lint

on:
push:
branches:
- main
pull_request:
merge_group:
workflow_dispatch:

jobs:
run:
name: Run
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 'lts/*'
cache: 'npm'
- run: npm install
- run: $(npm bin)/web-ext lint --self-hosted
- uses: actions/checkout@v6
with:
submodules: recursive

- name: Install pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Setup Node.js
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: 24.11.0
cache: "pnpm"

- name: Install dependencies
run: pnpm install

- name: Run linter
run: pnpm lint
33 changes: 33 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Tests

on:
pull_request:
push:
branches:
- main
merge_group:
workflow_dispatch:

jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true

- name: Install pnpm
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.14.0
cache: "pnpm"

- name: Install dependencies
run: pnpm install

- name: Run tests
run: pnpm test
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,6 @@ $RECYCLE.BIN/
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

Expand Down Expand Up @@ -212,3 +209,7 @@ fabric.properties
# Support for Project snippet scope

# End of https://www.toptal.com/developers/gitignore/api/intellij,visualstudiocode

# Temporary files
dist/
test_cache/
9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[submodule "translators/zotero"]
path = translators/zotero
url = https://github.com/tobiasdiez/translators.git
[submodule "sources/zotero-translate"]
path = sources/zotero-translate
url = https://github.com/tobiasdiez/translate.git
[submodule "sources/zotero-utilities"]
path = sources/zotero-utilities
url = https://github.com/tobiasdiez/utilities.git
4 changes: 4 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"ignorePatterns": ["translators/zotero/**", "sources/zotero-*/**"]
}
144 changes: 144 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["unicorn", "typescript", "oxc"],
"categories": {},
"rules": {
"constructor-super": "warn",
"for-direction": "warn",
"no-async-promise-executor": "warn",
"no-caller": "warn",
"no-class-assign": "warn",
"no-compare-neg-zero": "warn",
"no-cond-assign": "warn",
"no-const-assign": "warn",
"no-constant-binary-expression": "warn",
"no-constant-condition": "warn",
"no-control-regex": "warn",
"no-debugger": "warn",
"no-delete-var": "warn",
"no-dupe-class-members": "warn",
"no-dupe-else-if": "warn",
"no-dupe-keys": "warn",
"no-duplicate-case": "warn",
"no-empty-character-class": "warn",
"no-empty-pattern": "warn",
"no-empty-static-block": "warn",
"no-eval": "warn",
"no-ex-assign": "warn",
"no-extra-boolean-cast": "warn",
"no-func-assign": "warn",
"no-global-assign": "warn",
"no-import-assign": "warn",
"no-invalid-regexp": "warn",
"no-irregular-whitespace": "warn",
"no-loss-of-precision": "warn",
"no-new-native-nonconstructor": "warn",
"no-nonoctal-decimal-escape": "warn",
"no-obj-calls": "warn",
"no-self-assign": "warn",
"no-setter-return": "warn",
"no-shadow-restricted-names": "warn",
"no-sparse-arrays": "warn",
"no-this-before-super": "warn",
"no-unassigned-vars": "warn",
"no-unsafe-finally": "warn",
"no-unsafe-negation": "warn",
"no-unsafe-optional-chaining": "warn",
"no-unused-expressions": "warn",
"no-unused-labels": "warn",
"no-unused-private-class-members": "warn",
"no-unused-vars": "warn",
"no-useless-backreference": "warn",
"no-useless-catch": "warn",
"no-useless-escape": "warn",
"no-useless-rename": "warn",
"no-with": "warn",
"require-yield": "warn",
"use-isnan": "warn",
"valid-typeof": "warn",
"oxc/bad-array-method-on-arguments": "warn",
"oxc/bad-char-at-comparison": "warn",
"oxc/bad-comparison-sequence": "warn",
"oxc/bad-min-max-func": "warn",
"oxc/bad-object-literal-comparison": "warn",
"oxc/bad-replace-all-arg": "warn",
"oxc/const-comparisons": "warn",
"oxc/double-comparisons": "warn",
"oxc/erasing-op": "warn",
"oxc/missing-throw": "warn",
"oxc/number-arg-out-of-range": "warn",
"oxc/only-used-in-recursion": "warn",
"oxc/uninvoked-array-callback": "warn",
"typescript/await-thenable": "warn",
"typescript/no-array-delete": "warn",
"typescript/no-base-to-string": "warn",
"typescript/no-duplicate-enum-values": "warn",
"typescript/no-duplicate-type-constituents": "warn",
"typescript/no-extra-non-null-assertion": "warn",
"typescript/no-floating-promises": "warn",
"typescript/no-for-in-array": "warn",
"typescript/no-implied-eval": "warn",
"typescript/no-meaningless-void-operator": "warn",
"typescript/no-misused-new": "warn",
"typescript/no-misused-spread": "warn",
"typescript/no-non-null-asserted-optional-chain": "warn",
"typescript/no-redundant-type-constituents": "warn",
"typescript/no-this-alias": "warn",
"typescript/no-unnecessary-parameter-property-assignment": "warn",
"typescript/no-unsafe-declaration-merging": "warn",
"typescript/no-unsafe-unary-minus": "warn",
"typescript/no-useless-empty-export": "warn",
"typescript/no-wrapper-object-types": "warn",
"typescript/prefer-as-const": "warn",
"typescript/require-array-sort-compare": "warn",
"typescript/restrict-template-expressions": "warn",
"typescript/triple-slash-reference": "warn",
"typescript/unbound-method": "warn",
"unicorn/no-await-in-promise-methods": "warn",
"unicorn/no-empty-file": "warn",
"unicorn/no-invalid-fetch-options": "warn",
"unicorn/no-invalid-remove-event-listener": "warn",
"unicorn/no-new-array": "warn",
"unicorn/no-single-promise-in-promise-methods": "warn",
"unicorn/no-thenable": "warn",
"unicorn/no-unnecessary-await": "warn",
"unicorn/no-useless-fallback-in-spread": "warn",
"unicorn/no-useless-length-check": "warn",
"unicorn/no-useless-spread": "warn",
"unicorn/prefer-set-size": "warn",
"unicorn/prefer-string-starts-ends-with": "warn"
},
"settings": {
"jsx-a11y": {
"polymorphicPropName": null,
"components": {},
"attributes": {}
},
"next": {
"rootDir": []
},
"react": {
"formComponents": [],
"linkComponents": [],
"version": null
},
"jsdoc": {
"ignorePrivate": false,
"ignoreInternal": false,
"ignoreReplacesDocs": true,
"overrideReplacesDocs": true,
"augmentsExtendsReplacesDocs": false,
"implementsReplacesDocs": false,
"exemptDestructuredRootsFromChecks": false,
"tagNamePreference": {}
},
"vitest": {
"typecheck": false
}
},
"env": {
"builtin": true
},
"globals": {},
"ignorePatterns": ["translators/zotero/**"]
}
5 changes: 0 additions & 5 deletions .prettierrc

This file was deleted.

3 changes: 3 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"recommendations": ["oxc.oxc-vscode"]
}
30 changes: 15 additions & 15 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch WebExtension",
"type": "firefox",
"request": "launch",
"reAttach": true,
"reloadOnChange": {
"watch": "${workspaceFolder}/**/*.js",
"ignore": ["**/node_modules/**", "{workspaceFolder}/zotero-connectors/**"]
},
"addonPath": "${workspaceFolder}",
"firefoxArgs": ["https://arxiv.org/a/diez_t_1.html", "about:debugging#/runtime/this-firefox"]
}
]
"version": "0.2.0",
"configurations": [
{
"name": "Launch WebExtension",
"type": "firefox",
"request": "launch",
"reAttach": true,
"reloadOnChange": {
"watch": "${workspaceFolder}/**/*.js",
"ignore": ["**/node_modules/**"]
},
"addonPath": "${workspaceFolder}",
"firefoxArgs": ["https://arxiv.org/a/diez_t_1.html", "about:debugging#/runtime/this-firefox"]
}
]
}
24 changes: 24 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"editor.defaultFormatter": "oxc.oxc-vscode",
"editor.formatOnSave": true,
"editor.formatOnSaveMode": "file",
"[json]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[html]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[css]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"cSpell.words": ["Zotero"],
"chat.tools.terminal.autoApprove": {
"/^python scripts/import_and_patch_translators\\.py$/": {
"approve": true,
"matchCommandLine": true
}
}
}
Loading
Loading