Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions extensions/calibre-search/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules/
.DS_Store
raycast-env.d.ts
CLAUDE.md
13 changes: 13 additions & 0 deletions extensions/calibre-search/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Calibre Library Changelog

## [Initial Release] - {PR_MERGE_DATE}

### 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
56 changes: 56 additions & 0 deletions extensions/calibre-search/README.md
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.
Binary file added extensions/calibre-search/assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions extensions/calibre-search/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
const { defineConfig } = require("eslint/config");
const raycastConfig = require("@raycast/eslint-config");

module.exports = defineConfig([...raycastConfig]);
9 changes: 9 additions & 0 deletions extensions/calibre-search/jest.config.js
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",
},
};
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading