From d185099eaddaff62c72df04671ef44877ffe4f43 Mon Sep 17 00:00:00 2001 From: Olivier Chafik Date: Sat, 21 Feb 2026 16:33:48 -0800 Subject: [PATCH] feat(pdf-server): lazy range-based loading + eager background preloading (#480) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * lazy PDF loading w/ PDFDataRangeTransport * lint * feat: lazy PDF loading via range transport + eager background preloading Replace full-file download with PDFDataRangeTransport so PDF.js fetches byte ranges on demand. First page renders immediately; remaining pages load in background for search. **Range transport (server + client)** - server.ts: add read_pdf_bytes tool returning base64 chunks with offset - mcp-app.ts: AppRangeTransport feeds PDF.js via fetchRange/fetchChunk with parallel sub-requests for large ranges, Promise-based dedup of concurrent requests, and a persistent range cache **Background preloader** - Sequential page 1→N text extraction, pauses during interactive navigation (preloadPaused flag set in goToPage, cleared in renderPage) - Debounced live search refresh (500ms) as pages load - Search UI shows '(loading…)' suffix until all pages processed **Loading indicators** - SVG pie in toolbar: fills as pages load, fades on completion, turns red on errors with tooltip listing failed pages - Debounced page-loading overlay (150ms) for uncached page navigation **Cleanup** - Remove old full-file chunked download and progress bar - Remove extractAllPageText (replaced by preloader) - Remove verbose debug logs (Coverage, RangeReq, cache hit) --- examples/pdf-server/mcp-app.html | 15 +- examples/pdf-server/server.test.ts | 27 ++ examples/pdf-server/server.ts | 19 +- examples/pdf-server/src/mcp-app.css | 92 ++++-- examples/pdf-server/src/mcp-app.ts | 416 ++++++++++++++++++++-------- examples/pdf-server/tsconfig.json | 1 - 6 files changed, 422 insertions(+), 148 deletions(-) diff --git a/examples/pdf-server/mcp-app.html b/examples/pdf-server/mcp-app.html index 8ee8b06..c18345d 100644 --- a/examples/pdf-server/mcp-app.html +++ b/examples/pdf-server/mcp-app.html @@ -11,14 +11,6 @@

Loading PDF...

- -

@@ -33,6 +25,13 @@
Document +