Skip to content

bateman/dblp-search-ext

Repository files navigation

dblp Search

Chrome Web Store Version Chrome Web Store Users Chrome Web Store Chrome Web Store Chrome Release

Edge Add-on Version Edge Add-on Users Edge Add-on Rating Edge Add-on Stars Edge Release

Mozilla Add-on Version Mozilla Add-on Users Mozilla Add-on Downloads Mozilla Add-on Rating Mozilla Add-on Stars Firefox Release

GitHub manifest version GitHub Release

GitHub code size in bytes GitHub language count GitHub top language CodeFactor Grade Codacy grade GitHub License

A simple cross-browser extension to ease the process of searching publications on dblp.org and copying or downloading their BibTeX entries.

Avaliable in the Chrome Web Store Avaliable as a Firefox Add-on Avaliable in the Microsoft Edge Add-ons Store

Features

  • Search Papers: Enter the paper's title in the input field or highlight any text on the current web page, then click the search button. The extension will search dblp.org for matching publications and display the results.
  • Copy BibTeX Entries: Next to each search result, there's a 'Copy BibTeX' button. Click this button to copy the BibTeX entry for the corresponding publication to your clipboard.
  • Download BibTeX Entries: Next to the copy button, a 'Download BibTeX' button saves the entry as a .bib file named after its citation key.
  • Sort & Filter Results: Click the Authors, Year, or Venue column headers to sort, the Title header to restore the default order, and the Type header to filter results by publication type.
  • Color-Coded Entries: Results are color-coded by publication type (proceedings, books, journals, etc.), matching the dblp.org scheme.
  • Keyboard Navigation: Use ↑/↓ to move between results, and C to copy BibTeX, D to download BibTeX, B to open the dblp page, and O to open the DOI for the selected result.
  • Context Menu: Right-click selected text on any page to "Search highlighted text on dblp" or "Resolve DOI".
  • Customizable BibTeX Citation Keys: Replace dblp default citation keys with a custom format. Use the drag-and-drop builder in Options to arrange fields (Author, Year, Venue, Title) and separators (dash, underscore) in any order. Additional formatting options include capitalizing the author's name and uppercasing the venue (e.g., Calefato2023ESEM, calefato_2023_esem).
  • Results Count: The extension shows the number of search results found. The extension automatically filters out useless CoRR Abs entries.
  • Pagination: Navigate through search results using Previous/Next buttons. Page info shows the current page, total pages, and result count. Pagination state persists across browser sessions.
  • Save Search State: The content of the input text field and results are saved in the local storage. This allows you to leave the page and come back later without losing your search results.
  • Configurable Popup Width: Set the default popup width (500-800 px) in Options; narrower widths automatically hide some table columns.
  • Configurable Result Limit: Set the maximum number of results per query in Options (default 30, capped at 1000).
  • API: Versions 2+ are faster and more reliable as they rely on the official DBLP.org API to execute the queries.
  • Remove duplicates: Useless, duplicated CoRR abs entries are filtered out.
  • Remove BibTeX fields: When copying or downloading BibTeX entries, the extension can remove the timestamp, bibsource, biburl, and url fields.

Usage

  1. Install the extension to your Chromium browser (e.g., Chrome, Edge, ...), Firefox, or Safari.
  2. Click on the extension icon to open the pop-up.
  3. Enter the title of the paper you want to search for in the input field. Alternatively, highlight some text on the current web page.
  4. Click the 'Search' button to start the search.
  5. The search results will be displayed in the pop-up. Next to each result, click the 'Copy BibTeX' button to copy its BibTeX entry to your clipboard, or the 'Download BibTeX' button to save it as a .bib file.

Contributions

Contributions are welcome! Please submit a pull request or create an issue to contribute to this project.

Build Commands

make build             # Build all extensions (alias for build/all)
make build/chrome      # Build Chrome extension ZIP
make build/firefox     # Build Firefox XPI addon and sources
make build/safari      # Build Safari app-extension (macOS + Xcode required)
make build/edge        # Build Edge extension (same as Chrome)
make build/all         # Build all extensions
make build/clean       # Clean build directory and stamps
make test              # Run the unit-test suite

Note

Safari build will start only on macOS if Xcode is installed.

Manual installation

Google Chrome

  1. Open Google Chrome and navigate to chrome://extensions.

  2. Enable Developer mode by clicking the toggle switch next to "Developer mode".

  3. Click "Load unpacked" and select the build/chrome directory in your project folder.

Edge

Same as above, the only difference is that you need to navigate to edge://extensions.

Firefox

  1. Open Firefox and navigate to about:debugging.

  2. Click "This Firefox" and "Load Temporary Add-on...".

  3. Navigate to the build/firefox directory in your project folder and select it.

Development Commands

make run/chrome        # Launch Chrome with extension loaded (dev mode)
make run/firefox       # Launch Firefox Dev Edition with extension
make run/safari        # Launch Safari with extension
make run/edge          # Launch Edge with extension
make info              # Show development environment info

Use DEFAULT_URL="https://example.com" to set the opening page for run commands.

Note

  • Browser must not be running before executing make run/* commands
  • Unlike Chrome, Edge does not run in development mode
  • For Firefox, the script assumes you have Firefox Developer Edition installed. You can easily change the name to Firefox in the make script; it also requires web-ext to be installed.

Release Workflow

To release a new version:

make release/check     # 1. Check if commits exist since last tag
make bump/patch        # 2. Bump version (or bump/minor, bump/major)
git add -A && git commit -m "Bump version to X.Y.Z"  # 3. Commit changes
make release           # 4. Push commits and tag (triggers CI/CD)

Available commands:

make release/check     # Check if a new release is needed
make bump/patch        # Bump patch version (1.0.0 -> 1.0.1)
make bump/minor        # Bump minor version (1.0.0 -> 1.1.0)
make bump/major        # Bump major version (1.0.0 -> 2.0.0)
make tag/apply         # Create local tag from manifest version
make release           # Push commits and tag to origin (alias: tag/push)
make tag/delete        # Delete the tag for the current version

Version is stored in manifest.json, manifest.firefox.json, and package.json (all three are kept in sync by make bump/*).

Testing

The project has an automated unit-test suite (Vitest) covering the model, controller, and the BibTeX, DOI, and validation utilities:

make test              # Run the unit tests once
make test/watch        # Run the unit tests in watch mode

Tests live in tests/unit/. Dependencies are installed automatically on first run (npm install).

Manual testing in the browser is still recommended for UI changes:

  1. Run make run/chrome (or firefox/safari/edge)
  2. Test the modified functionality in the browser
  3. Check the browser console for errors (pop-up and background service worker)

Debugging

Popup console: Right-click extension icon → Inspect popup

Background service worker:

  • Chrome: chrome://extensions → Find extension → "Service worker" link
  • Firefox: about:debugging → This Firefox → Inspect

Storage inspection: In console, run browser.storage.local.get(null, console.log)

Donations

License

This project is licensed under the MIT license, see the LICENSE file.

Credits

Developed by Fabio Calefato (@bateman).