-
Notifications
You must be signed in to change notification settings - Fork 6k
Add calibre-search extension #27295
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Add calibre-search extension #27295
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| node_modules/ | ||
| .DS_Store | ||
| raycast-env.d.ts | ||
| CLAUDE.md |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| # Calibre Library Changelog | ||
|
|
||
| ## [1.0.0] - 2026-04-20 | ||
|
|
||
| ### Added | ||
|
|
||
| - **Search Calibre** command: browse and search your entire Calibre library by title or author | ||
| - Book detail panel with cover image, metadata (author, year, publisher, series, formats), and synopsis | ||
| - Actions: Open in Calibre, Open File Directly, Show Synopsis, Copy Title & Author, Show in Finder | ||
| - **Add to Calibre Library** command: scan configured folders for ebook files and add them to your library | ||
| - Cover thumbnails in Add to Library (extracted from EPUB files; Quick Look previews for PDF and others) | ||
| - Support for multiple scan directories (up to 3 configurable folders) | ||
| - Supported formats: EPUB, MOBI, PDF, AZW, AZW3, KEPUB, LIT, DJVU | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| # Calibre Library | ||
|
|
||
| A [Raycast](https://raycast.com) extension for [Calibre](https://calibre-ebook.com) — search your ebook library and add new books, without leaving the keyboard. | ||
|
|
||
| ## Commands | ||
|
|
||
| ### Search Calibre | ||
|
|
||
| Browse and search your entire Calibre library by title or author. Select a book to see its cover, metadata, and available formats in the detail panel. | ||
|
|
||
| **Actions:** | ||
| - **Open in Calibre** — opens Calibre and navigates directly to the book | ||
| - **Open File Directly** (`⌘O`) — opens the best available format in its default app | ||
| - **Show Synopsis** (`⌘S`) — displays the book description | ||
| - **Copy Title & Author** (`⌘C`) | ||
| - **Show in Finder** (`⌘⇧F`) | ||
|
|
||
| ### Add to Calibre Library | ||
|
|
||
| Scan configured folders for ebook files and add them to your Calibre library with one keystroke. Displays cover thumbnails (extracted from EPUB files; Quick Look previews for PDF and others) alongside format, size, and modification date. | ||
|
|
||
| **Actions:** | ||
| - **Add to Calibre Library** — adds the book via `calibredb`; if Calibre is already open, hands off to the running instance automatically | ||
| - **Show in Finder** (`⌘F`) | ||
|
|
||
| ## Requirements | ||
|
|
||
| - [Calibre](https://calibre-ebook.com/download) installed at `/Applications/calibre.app` | ||
| - Raycast 1.50+ | ||
|
|
||
| ## Configuration | ||
|
|
||
| Open **Raycast Settings → Extensions → Calibre Library** to configure: | ||
|
|
||
| | Preference | Description | | ||
| |---|---| | ||
| | **Library Path** | Path to your Calibre library folder (the one containing `metadata.db`) | | ||
| | **Add books** | Primary folder to scan for ebook files (default: `~/Downloads`) | | ||
| | **Add books (optional)** | Additional folders to scan (up to 2 extra) | | ||
|
|
||
| ## Supported Formats | ||
|
|
||
| EPUB · MOBI · PDF · AZW · AZW3 · KEPUB · LIT · DJVU | ||
|
|
||
| ## Installation | ||
|
|
||
| This extension is not yet published to the Raycast Store. To install manually: | ||
|
|
||
| ```bash | ||
| git clone https://github.com/BrunoMiguelMonteiro/calibre-raycast.git | ||
| cd calibre-raycast | ||
| npm install | ||
| npm run dev | ||
| ``` | ||
|
|
||
| Then import the extension from Raycast's extension settings. |
| Original file line number | Diff line number | Diff line change | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1 @@ | ||||||||||||
| module.exports = require("@raycast/eslint-config").flat(); | ||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The current pattern manually calls
Suggested change
Rule Used: What: Enforce importing Prompt To Fix With AIThis is a comment left during a code review.
Path: extensions/calibre-search/eslint.config.js
Line: 1
Comment:
**Use `defineConfig` from `eslint/config` subpath**
The current pattern manually calls `.flat()` instead of using the canonical ESLint v9 helper. The preferred pattern is:
```suggestion
const { defineConfig } = require("eslint/config");
const raycastConfig = require("@raycast/eslint-config");
module.exports = defineConfig([...raycastConfig]);
```
**Rule Used:** What: Enforce importing `defineConfig` from `"esli... ([source](https://app.greptile.com/review/custom-context?memory=645a7150-4078-490e-a70c-d6aad94e0cf5))
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time! |
||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| module.exports = { | ||
| preset: "ts-jest", | ||
| testEnvironment: "node", | ||
| testMatch: ["**/__tests__/**/*.test.ts"], | ||
| moduleNameMapper: { | ||
| "^@raycast/api$": "<rootDir>/src/__mocks__/raycast-api.ts", | ||
| "^@raycast/utils$": "<rootDir>/src/__mocks__/raycast-utils.ts", | ||
| }, | ||
| }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
{PR_MERGE_DATE}placeholderThe Raycast convention is to use the
{PR_MERGE_DATE}template variable for initial release entries; the merge date is substituted automatically when the PR lands.Rule Used: What: In Raycast extension changelogs, `{PR_MERGE_... (source)
Prompt To Fix With AI
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!