Readest is a modern, feature-rich ebook reader designed for avid readers offering seamless cross-platform access, powerful tools, and an intuitive interface to elevate your reading experience.
296 matches across 9 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 24 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 26 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 113 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 115 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 243 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 245 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 274 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 276 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 337 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 339 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 362 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 364 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 379 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 381 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 466 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 468 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 528 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …est-app/extensions/windows-thumbnail/src/extraction.rs | 530 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 38 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 40 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 74 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 76 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 113 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 115 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 268 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 270 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 325 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 327 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 383 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …t-app/extensions/windows-thumbnail/src/com_provider.rs | 385 | // ───────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …gin-native-bridge/ios/Sources/NativeBridgePlugin.swift | 1159 | // ── Sync passphrase keychain ────────────────────────────────────────── |
| MEDIUM | …ive-bridge/android/src/main/java/NativeBridgePlugin.kt | 800 | // ── Sync passphrase keychain ────────────────────────────────────── |
| MEDIUM | …tauri/plugins/tauri-plugin-native-bridge/src/models.rs | 271 | // ── Sync passphrase keychain ──────────────────────────────────────────── |
| MEDIUM | …auri/plugins/tauri-plugin-native-bridge/src/desktop.rs | 196 | // ── Sync passphrase keychain ──────────────────────────────────────── |
| MEDIUM | apps/readest-app/src-tauri/gen/apple/project.yml | 32 | # ---------------------------------- |
| MEDIUM | apps/readest-app/src/utils/bridge.ts | 222 | // ── Sync passphrase keychain ──────────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/utils/warichu.ts | 120 | // ── Core measurement ────────────────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/utils/warichu.ts | 173 | // ── Build nodes ─────────────────────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/utils/warichu.ts | 356 | // ── Helpers ─────────────────────────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/utils/warichu.ts | 472 | // ── HTML slicing helpers ────────────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/utils/event.ts | 65 | // ─── Settled events (one-shot, replay-on-subscribe) ──────────────────── |
| MEDIUM | apps/readest-app/src/__tests__/utils/image.test.ts | 3 | // ── Mock globals for jsdom canvas / Image / fetch ───────────────────── |
| MEDIUM | apps/readest-app/src/__tests__/utils/nav.test.ts | 3 | // ── Module mocks ───────────────────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/__tests__/utils/nav.test.ts | 52 | // ── Helpers ────────────────────────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/__tests__/utils/nav.test.ts | 92 | // ── Tests ──────────────────────────────────────────────────────────── |
| MEDIUM | …__/components/annotation-popup-layout.browser.test.tsx | 18 | // ── Tailwind / DaisyUI styles ─────────────────────────────────────────── |
| MEDIUM | …__/components/annotation-popup-layout.browser.test.tsx | 21 | // ── Per-test state read by mocks ──────────────────────────────────────── |
| MEDIUM | …__/components/annotation-popup-layout.browser.test.tsx | 24 | // ── Mocks (must be before component imports) ──────────────────────────── |
| MEDIUM | …__/components/annotation-popup-layout.browser.test.tsx | 79 | // ── Real component imports ────────────────────────────────────────────── |
| MEDIUM | …__/components/annotation-popup-layout.browser.test.tsx | 84 | // ── Constants ─────────────────────────────────────────────────────────── |
| MEDIUM | …__/components/annotation-popup-layout.browser.test.tsx | 153 | // ── Lifecycle ─────────────────────────────────────────────────────────── |
| MEDIUM | …__/components/annotation-popup-layout.browser.test.tsx | 167 | // ── Tests ─────────────────────────────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/__tests__/helpers/updater.test.ts | 4 | // ── Mocks for Tauri and internal modules ───────────────────────── |
| MEDIUM | apps/readest-app/src/__tests__/helpers/updater.test.ts | 78 | // ── Helper to create a dummy TranslationFunc ───────────────────── |
| MEDIUM | apps/readest-app/src/__tests__/helpers/updater.test.ts | 100 | // ── checkForAppUpdates ───────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/__tests__/helpers/updater.test.ts | 267 | // ── checkAppReleaseNotes ─────────────────────────────────────── |
| MEDIUM | apps/readest-app/src/__tests__/helpers/updater.test.ts | 351 | // ── semver usage validation ──────────────────────────────────── |
| MEDIUM | …ps/readest-app/src/__tests__/helpers/open-with.test.ts | 3 | // ── Mocks ──────────────────────────────────────────────────────── |
| MEDIUM | …ps/readest-app/src/__tests__/helpers/open-with.test.ts | 50 | // ── Web platform ─────────────────────────────────────────────── |
| MEDIUM | …ps/readest-app/src/__tests__/helpers/open-with.test.ts | 61 | // ── Window URL params ────────────────────────────────────────── |
| 108 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .github/workflows/codeql.yml | 1 | # For most projects, this workflow file will not need changing; you simply need |
| LOW | .github/workflows/scorecard.yml | 41 | - name: "Run analysis" |
| LOW | apps/readest-app/vitest.tauri.setup.ts | 1 | // Vitest runs tests inside an iframe, but Tauri injects its plugin internals |
| LOW | apps/readest-app/scripts/sync-release-notes.sh | 1 | #!/bin/bash |
| LOW | apps/readest-app/scripts/worktree-new.ts | 241 | } |
| LOW | …gin-native-bridge/ios/Sources/NativeBridgePlugin.swift | 561 | /// |
| LOW | …gin-native-bridge/ios/Sources/NativeBridgePlugin.swift | 1241 | // views. Two notes: |
| LOW | …gin-native-bridge/ios/Sources/NativeBridgePlugin.swift | 1361 | /// it survives until the user dismisses the picker. `present` |
| LOW | …gin-native-bridge/ios/Sources/NativeBridgePlugin.swift | 1421 | |
| LOW | …gin-native-bridge/ios/Sources/NativeBridgePlugin.swift | 1441 | /// migrated) `URL(resolvingBookmarkData:..., bookmarkDataIsStale:)` |
| LOW | …gin-native-bridge/ios/Sources/NativeBridgePlugin.swift | 1541 | url.stopAccessingSecurityScopedResource() |
| LOW | …gin-native-bridge/ios/Sources/NativeBridgePlugin.swift | 1581 | // returned by the picker that lives outside our sandbox (which is |
| LOW | …ugin-native-bridge/ios/Sources/ClipUrlController.swift | 41 | case .loadFailed(let detail): return "Could not fetch this page: \(detail)" |
| LOW | …-native-bridge/ios/Sources/ContextMenuSuppressor.swift | 1 | import ObjectiveC |
| LOW | …-native-bridge/ios/Sources/ContextMenuSuppressor.swift | 21 | /// a backstop in case WebKit presents without re-querying the delegate. |
| LOW | …tauri/plugins/tauri-plugin-native-bridge/src/models.rs | 221 | pub success: bool, |
| LOW | …tauri/plugins/tauri-plugin-native-bridge/src/models.rs | 301 | /// struct in `clip_url.rs` so the JS caller can pass the same payload |
| LOW | apps/readest-app/src-tauri/gen/apple/project.yml | 41 | # add IAP via Signing & Capabilities is informational only; it |
| LOW | apps/readest-app/src-tauri/gen/apple/project.yml | 141 | # Entitlements referenced via CODE_SIGN_ENTITLEMENTS build setting |
| LOW | …rc-tauri/gen/apple/ShareExtension/AppGroupBridge.swift | 1 | // Shared App Group container schema between the Readest Share Extension and |
| LOW | …uri/gen/apple/ShareExtension/ShareViewController.swift | 1 | // Share Extension for Readest: catches an article URL from any iOS share |
| LOW | …uri/gen/apple/ShareExtension/ShareViewController.swift | 21 | // |
| LOW | apps/readest-app/src-tauri/src/lib.rs | 81 | /// protocol (`RemoteFile`) to read user-selected files. Without this, |
| LOW | apps/readest-app/src-tauri/src/lib.rs | 101 | /// access to the entire user home directory via the asset |
| LOW | apps/readest-app/src-tauri/src/clip_url.rs | 1 | // Spawn a hidden Tauri webview that loads the target URL with the real |
| LOW | apps/readest-app/src-tauri/src/clip_url.rs | 21 | // invoke('clip_url', url) ─┬─▶ bind 127.0.0.1:RANDOM_PORT |
| LOW | apps/readest-app/src-tauri/src/clip_url.rs | 541 | window.__readest_setStatus__(CAPTURING_STATUS); |
| LOW | apps/readest-app/src-tauri/src/clip_url.rs | 581 | // Hard fallback in case `load` never fires (SPA, error state, |
| LOW | apps/readest-app/src-tauri/src/clip_url.rs | 661 | } |
| LOW | apps/readest-app/src-tauri/src/macos/traffic_light.rs | 61 | Err(_) => return, |
| LOW | apps/readest-app/src-tauri/src/macos/traffic_light.rs | 81 | ((header_height - button_height) / 2.0 + button_origin_y).max(0.0) |
| LOW | apps/readest-app/src-tauri/src/macos/traffic_light.rs | 181 | |
| LOW | …s/readest-app/src-tauri/src/macos/system_dictionary.rs | 1 | /// macOS native dictionary "Look Up" HUD bridge. |
| LOW | …s/readest-app/src-tauri/src/macos/system_dictionary.rs | 41 | /// points, which on standard Tauri/macOS already match CSS pixels |
| LOW | …s/readest-app/src-tauri/src/macos/system_dictionary.rs | 201 | if let Some(size) = font_size { |
| LOW | apps/readest-app/workers/send-email/src/index.ts | 61 | const userId = addressRow.user_id as string; |
| LOW | apps/readest-app/src/types/settings.ts | 101 | password: string; |
| LOW | apps/readest-app/src/app/layout.tsx | 81 | // - Android emul.: page at `http://tauri.localhost` → `ws://tauri.localhost/_next/...` |
| LOW | apps/readest-app/src/app/reader/utils/wheelGesture.ts | 1 | // Wheel-to-page-flip gesture detection. |
| LOW | …dest-app/src/app/reader/components/sidebar/TOCView.tsx | 61 | const visibleCenterRef = useRef(0); |
| LOW | apps/readest-app/src/app/reader/hooks/useWebDAVSync.ts | 221 | // targets where streaming PUTs aren't available. |
| LOW | apps/readest-app/src/app/opds/page.tsx | 101 | const [newCatalogName, setNewCatalogName] = useState(''); |
| LOW | apps/readest-app/src/app/opds/page.tsx | 761 | didRestorePubRef.current = true; |
| LOW | apps/readest-app/src/app/library/page.tsx | 301 | // URL cosmetically via window.history.replaceState — Next.js' patched |
| LOW | apps/readest-app/src/app/library/page.tsx | 681 | // named "Books" (e.g. Baidu Netdisk's default `Books/` directory |
| LOW | apps/readest-app/src/app/library/page.tsx | 1081 | * for "virtual" Files-app entries (the "On My iPhone" root, "Recents", |
| LOW | apps/readest-app/src/app/library/page.tsx | 1201 | // come from the persisted "last import folder" in localStorage — |
| LOW | apps/readest-app/src/app/library/page.tsx | 1221 | // didn't authorise — typically the persisted "last import folder" |
| LOW | apps/readest-app/src/app/api/opds/proxy/route.ts | 121 | // Headers that must NOT be forwarded as-is when we proxy the body: |
| LOW | …/readest-app/src/app/api/share/[token]/og.png/route.ts | 1 | import { renderShareOgImage } from './render'; |
| LOW | apps/readest-app/src/utils/sel.ts | 161 | const sy = parts?.[3]; |
| LOW | apps/readest-app/src/utils/serializer.ts | 21 | config = JSON.parse(JSON.stringify(config)); |
| LOW | apps/readest-app/src/utils/event.ts | 61 | } |
| LOW | apps/readest-app/src/components/SegmentedControl.tsx | 21 | size?: 'sm' | 'md'; |
| LOW | apps/readest-app/src/components/Providers.tsx | 161 | applyBackgroundTexture(envConfig, globalViewSettings); |
| LOW | …/components/settings/integrations/WebDAVBrowsePane.tsx | 61 | const { settings: globalSettings } = useSettingsStore(); |
| LOW | …pp/src/components/settings/integrations/WebDAVForm.tsx | 181 | enabled: false, |
| LOW | …pp/src/components/settings/integrations/WebDAVForm.tsx | 301 | loadBookFile: async (book) => { |
| LOW | …dest-app/src/__tests__/database/suites/vector-tests.ts | 241 | // @readest/turso-database-wasm) has vector storage + distance functions |
| LOW | …ests__/document/fixed-layout-overlayer-viewbox.test.ts | 1 | // Regression test for: TTS highlight overlay is off the text boxes in |
| 14 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …extensions/send-to-readest/src/background/offscreen.ts | 119 | export async function clipAndUploadViaOffscreen(opts: { |
| LOW | …/readest-app/src/app/reader/utils/globalAnnotations.ts | 265 | export function expandAllRenderedSections(view: FoliateView | null, note: BookNote): void { |
| LOW | …/readest-app/src/app/reader/utils/globalAnnotations.ts | 304 | export function removeGlobalAnnotationOverlays( |
| LOW | …app/src/app/reader/components/notebook/AIAssistant.tsx | 40 | function convertToExportedMessages( |
| LOW | apps/readest-app/src/app/api/stripe/webhook/route.ts | 83 | async function handleSuccessfulSubscription(session: Stripe.Checkout.Session, userId: string) { |
| LOW | apps/readest-app/src/app/api/stripe/webhook/route.ts | 161 | async function handleSubscriptionUpdated(subscription: Stripe.Subscription) { |
| LOW | apps/readest-app/src/app/api/stripe/webhook/route.ts | 179 | async function handleSubscriptionCancelled(subscription: Stripe.Subscription) { |
| LOW | apps/readest-app/src/libs/payment/iap/apple/server.ts | 28 | export async function createOrUpdateSubscription(userId: string, purchase: VerifiedPurchase) { |
| LOW | apps/readest-app/src/libs/payment/iap/google/server.ts | 39 | export async function createOrUpdateSubscription(userId: string, purchase: VerifiedPurchase) { |
| LOW | …-app/src/__tests__/hooks/useSpatialNavigation.test.tsx | 56 | function simulateKeyboardActivation() { |
| LOW | apps/readest-app/src/hooks/usePullToRefresh.ts | 104 | function updateLoadingSpinnerPosition(el: HTMLDivElement, transform: number, dy: number) { |
| LOW | apps/readest-app/src/services/cloudService.ts | 122 | export async function downloadReplicaFileFromCloud( |
| LOW | apps/readest-app/src/services/cloudService.ts | 141 | export async function deleteReplicaBundleFromCloud( |
| LOW | apps/readest-app/src/services/backupService.ts | 96 | export function sanitizeSettingsForBackup( |
| LOW | apps/readest-app/src/services/bookContent.ts | 26 | async function resolveLegacyManagedSource( |
| LOW | apps/readest-app/src/services/settingsService.ts | 62 | export function migrateHighlightColorPrefs(read: ReadSettings): void { |
| LOW | …adest-app/src/services/translators/providers/yandex.ts | 10 | async function translateSingleTextForService( |
| LOW | …p/src/services/reedy/tools/builtins/createHighlight.ts | 26 | export function createCreateHighlightTool( |
| LOW | …src/services/reedy/tools/builtins/getReadingContext.ts | 14 | export function createGetReadingContextTool( |
| LOW | …t-app/src/services/reedy/tools/builtins/memoryTools.ts | 135 | export function createSearchUserMemoryTool(deps: SearchMemoryToolDeps) { |
| LOW | …t-app/src/services/reedy/tools/builtins/memoryTools.ts | 144 | export function createWriteUserMemoryTool(deps: WriteMemoryToolDeps) { |
| LOW | …t-app/src/services/reedy/tools/builtins/memoryTools.ts | 153 | export function createSearchBookMemoryTool(deps: SearchMemoryToolDeps) { |
| LOW | …t-app/src/services/reedy/tools/builtins/memoryTools.ts | 162 | export function createWriteBookMemoryTool(deps: WriteMemoryToolDeps) { |
| LOW | …t-app/src/services/reedy/tools/builtins/memoryTools.ts | 171 | export function createSearchSessionMemoryTool(deps: SearchMemoryToolDeps) { |
| LOW | …p/src/services/ai/providers/ProxiedGatewayEmbedding.ts | 8 | export function createProxiedEmbeddingModel(options: ProxiedEmbeddingOptions): EmbeddingModel { |
| LOW | …s/readest-app/src/services/ai/adapters/ReedyBackend.ts | 162 | function mapToolEventToMetricEvent( |
| LOW | apps/readest-app/src/store/proofreadStore.ts | 306 | export function validateReplacementRulePattern( |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | apps/readest-app/src/__tests__/reedy/CfiChunker.test.ts | 112 | const paragraph = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. '.repeat(40); |
| LOW | apps/readest-app/src/__tests__/reedy/CfiChunker.test.ts | 112 | const paragraph = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. '.repeat(40); |
| LOW | …/readest-app/src/__tests__/utils/library-utils.test.ts | 43 | expect(parseAuthors('John Smith, Jane Doe')).toEqual(['John Smith', 'Jane Doe']); |
| LOW | …/readest-app/src/__tests__/utils/library-utils.test.ts | 47 | expect(parseAuthors('John Smith & Jane Doe')).toEqual(['John Smith', 'Jane Doe']); |
| LOW | …/readest-app/src/__tests__/utils/library-utils.test.ts | 51 | expect(parseAuthors('John Smith and Jane Doe')).toEqual(['John Smith', 'Jane Doe']); |
| LOW | …/readest-app/src/__tests__/utils/library-utils.test.ts | 57 | 'Jane Doe', |
| LOW | …/readest-app/src/__tests__/utils/library-utils.test.ts | 65 | 'Jane Doe', |
| LOW | …/readest-app/src/__tests__/utils/library-utils.test.ts | 71 | expect(parseAuthors(' John Smith , Jane Doe ')).toEqual(['John Smith', 'Jane Doe']); |
| LOW | …/readest-app/src/__tests__/utils/library-utils.test.ts | 215 | const jane = groups.find((g) => g.name === 'Jane Doe'); |
| LOW | apps/readest-app/src/__tests__/utils/txt-worker.test.ts | 55 | const options = { file, author: 'Jane Doe', language: 'zh' }; |
| LOW | apps/readest-app/src/__tests__/ai/chunker.test.ts | 67 | const longText = 'Lorem ipsum dolor sit amet. '.repeat(50); |
| LOW | apps/readest-app/src/__tests__/ai/chunker.test.ts | 67 | const longText = 'Lorem ipsum dolor sit amet. '.repeat(50); |
| LOW | …c/__tests__/services/send-convert-page-unified.test.ts | 41 | <p>${'lorem ipsum dolor sit amet '.repeat(40)}</p> |
| LOW | …c/__tests__/services/send-convert-page-unified.test.ts | 41 | <p>${'lorem ipsum dolor sit amet '.repeat(40)}</p> |
| LOW | …eadest-app/src/__tests__/services/send-address.test.ts | 20 | expect(slugFromIdentity('Jane Doe')).toBe('janedoe'); |
| LOW | …pp/src/__tests__/services/send-cover-generator.test.ts | 43 | author: 'Jane Doe', |
| LOW | …pp/src/__tests__/services/send-cover-generator.test.ts | 46 | expect(svg).toContain('Jane Doe'); |
| LOW | …pp/src/__tests__/services/send-cover-generator.test.ts | 126 | expect(pickTheme('Jane Doe')).toEqual(pickTheme('Jane Doe')); |
| LOW | …pp/src/__tests__/services/send-cover-generator.test.ts | 131 | const theme = pickTheme('Jane Doe'); |
| LOW | …pp/src/__tests__/services/send-cover-generator.test.ts | 137 | expect(pickTheme(' Jane Doe ')).toEqual(pickTheme('Jane Doe')); |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | …app/extensions/send-to-readest/src/popup/popup.test.ts | 188 | const clipCall = chromeMock.runtime.sendMessage.mock.calls.find((c) => { |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | .github/workflows/codeql.yml | 60 | # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | apps/readest-app/scripts/sync-release-notes.sh | 36 | # Check if required commands are available |
| LOW | apps/readest-app/scripts/sync-release-notes.sh | 64 | # Check if releases key exists |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | apps/readest-app/src/app/api/opds/proxy/route.ts | 5 | async function handleRequest(request: NextRequest, method: 'GET' | 'HEAD') { |
| LOW | apps/readest-app/src/utils/warichu.ts | 367 | function getData(el: HTMLElement) { |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | apps/readest-app/src/services/cloudService.ts | 315 | // some books may not have cover image, so we need to check if the book is downloaded |