Repository navigation
Releases: mrdhnto/libre-manga-translator
Release list
v1.0.3
🚀 Libre Manga Translator (LMT) v1.0.3
Libre Manga Translator v1.0.3 is the API Mode expansion release: streamlined setup for 8 local LLM runners (Ollama, LM Studio, JAN, Unsloth Desktop, llama.cpp, KoboldCpp, LocalAI, Cherry Studio), detection tiling for tall webtoon/manhwa pages, Firefox wllama download controls, and pipeline hardening across detection, OCR, and Gemini integration. We also rename WebGPU Mode label into Local Mode to reflect the fact that it is not fully GPU mode, see docs/technical.md for more details.
Everything continues to run 100% on-device in WebGPU/WASM mode by default, with Gemini cloud and self-hosted API Mode as flexible alternatives. Zero telemetry, zero external tracking, zero intermediaries.
🌟 Key Highlights
-
API Mode Runner Presets: Dropdown with 8 pre-configured local LLM servers (Ollama, LM Studio, JAN, Unsloth Desktop, llama.cpp, KoboldCpp, LocalAI, Cherry Studio) + Custom option. Each preset auto-fills host/port/schema and shows collapsible markdown setup guides (CORS config, auth requirements, endpoint paths).
-
Detection Tiling for Tall Pages: Sliding-window tiling with IoU-based deduplication for webtoon/manhwa detection — handles 10,000+ pixel tall pages without memory overflow or duplicate boxes at tile seams.
-
Firefox Wllama Download Controls: Pause/Resume/Stop for wllama GGUF model downloads with partial chunk caching and AbortController, plus 2GB streaming limit fix using Blob instead of Uint8Array (resolves Issue #6).
-
Gemini API Key Privacy Fix: Moved Gemini API key from URL query parameter to
x-goog-api-keyHTTP header, preventing key exposure in server/proxy request logs. -
OCR Batch Tracking Standardization: Unified
slotIndextracking across PaddleOCR and Pororo engines, with measured per-cluster inpainting time reporting and finished-patch preservation on fallback. -
Test Infrastructure Expansion: Mock LLM server for deterministic endpoint testing, strict translation validators with schema enforcement, and comprehensive detection tiling test suites.
✨ What's Changed
1. 🔌 API Mode UX Expansion
-
Runner Preset Dropdown: ApiStep now shows 9 options (8 preconfigured runners + Custom). Selecting a runner auto-populates server host, port, schema, model name, and API key requirement.
-
Collapsible Setup Guides: Markdown-rendered instructions per runner.
-
Supported Runners:
- Ollama (
localhost:11434) — CORS environment variable setup for extensions - LM Studio (
localhost:1234) — works out-of-box, no CORS needed - JAN (
localhost:1337) — enable Local API Server in Settings → Extensions - Unsloth Desktop (
localhost:8888) — Generate Access Token in Setting → API - llama.cpp (
localhost:8080/v1) — Can run without--api-keyflag for Bearer auth - KoboldCpp (
localhost:5001/v1) — OpenAI-compatible/v1endpoint - LocalAI (
localhost:8080) — Docker or binary install, drop-in OpenAI replacement - Cherry Studio (user-configured port) — API Gateway setup with key generation
- Ollama (
-
Manual Entry Preserved: All fields stay editable after preset selection; runner choice just pre-fills defaults without persisting runner ID to config.
2. 🖼️ Detection Tiling & Pipeline Hardening
-
Sliding-Window Tiling: RT-DETR detection now tiles tall images (>1500px height) into 1500px overlapping windows (50px stride) to handle webtoon/manhwa without memory overflow. Detected boxes are normalized back to original coordinates before deduplication.
-
IoU-Based Deduplication: Seam-crossing boxes are fused via Intersection-over-Union (IoU > 0.5 threshold) and containment checks (smaller box fully inside larger), eliminating duplicate detections at tile boundaries.
-
Gemini API Key Transport Fix: API key moved from URL query string to
x-goog-api-keyHTTP header per Google's recommendation, preventing key exposure in intermediary proxy/server request logs. -
OCR Batch Tracking: Standardized
slotIndextracking across PaddleOCR and Pororo engines to correlate OCR results with input batch positions. -
Inpaint Time Reporting: Per-cluster inpainting time is now measured and logged, with finished patches preserved on ladder fallback (no re-inpaint of already-clean regions).
-
Image Preprocessing Contract:
scalingImagenow acceptsCanvasImageSourcedirectly (avoids redundant blob encoding when source is already ImageBitmap/HTMLImageElement).
3. 🦊 Firefox Stability & Download Controls
-
2GB Streaming Fix (Issue #6): Switched from Uint8Array accumulation to Blob streaming for wllama downloads, resolving Firefox's 2GB ArrayBuffer limit. Cache size calculation now falls back to
Blob.sizewhencontent-lengthheader is unavailable. -
Partial Chunk Caching: Paused wllama downloads cache completed chunks and resume from the next unfinished chunk (no re-download from start).
4. 🧪 Testing & Reliability
-
Mock LLM Server: Added deterministic mock HTTP server for translation endpoint testing, eliminating flaky network calls in CI.
-
Translation Validators: Strict mode translation schema validators with count-mismatch healing and exact field enforcement (detect missing translations, malformed JSON, incorrect box counts).
-
Detection Tiling Tests: Comprehensive test suites for sliding-window tiling, IoU deduplication, containment fusion, and coordinate normalization.
-
RT-DETR Aspect Ratio Fix: Detection preprocessing now retains original aspect ratio (no squashing), improving box accuracy on non-square images.
🔐 Privacy Policy Update
Last Updated: October 24, 2026
- Gemini API Key Transport: Moved from URL query parameter to
x-goog-api-keyHTTP header (Section 3), preventing key exposure in server/proxy logs. - No New Data Practices: API Mode runner presets are UI-only helpers that pre-fill existing fields. No new data collection or transmission.
Full policy: privacy.md
📦 Installation
Official Webstore
Chrome (Auto update)
Install directly from Chrome Webstore
Firefox (Recommended - Wllama Branch)
Install directly from Mozilla Add-ons (AMO) — persistent, signed, and auto-updating. (Unified WebLLM Branch still in appeal)
Chrome / Chromium-based Browsers (Brave, Edge, Opera, Vivaldi)
-
Download
LMT-v1.0.3-chrome.zipfrom Assets below. -
Extract the downloaded zip file.
-
Navigate to
chrome://extensionsand enable Developer mode (top-right toggle). -
Click Load unpacked and select the extracted folder.
Firefox (Manual / Temporary Add-on)
-
Download
LMT-v1.0.3-firefox.zipfrom Assets below. -
Open
about:debugging#/runtime/this-firefox. -
Click Load Temporary Add-on and select any file inside the extracted folder (or
manifest.json). (Note: Sideloaded builds are temporary per session; use the AMO listing above for permanent installs).
🛠️ Build from Source
Requires Bun (v1.1+).
git clone https://github.com/mrdhnto/libre-manga-translator.git
cd libre-manga-translator
bun install
# Development with hot reload
bun run dev # Chrome
bun run dev:firefox # Firefox
# Production builds
bun run build # Chrome (.output/chrome-mv3)
bun run build:firefox # Firefox (.output/firefox-mv2)Full Changelog: v1.0.2...v1.0.3
v1.0.2
🚀 Libre Manga Translator (LMT) v1.0.2
Libre Manga Translator v1.0.2 bring the download control release and many bug fixes: every model weight is now opt-in with pause/resume everywhere, plus a missing-weights guard for LaMa inpainting, OCR hardening and overlay polish, also 2 new website adapters.
Everything continues to run 100% on-device in WebGPU/WASM mode by default, with Gemini cloud and self-hosted API Mode as flexible alternatives. Zero telemetry, zero external tracking, zero intermediaries.
🌟 Key Highlights
-
Pause & Resume Anywhere: Start a download in the setup wizard, pause it from the popup, resume it from the sidebar — progress follows you across all three, powered by a central background download manager.
-
Opt-In Onboarding: The setup wizard never auto-downloads anymore. Each step waits for your explicit press, with Pause / Resume / Stop on every weight.
-
One-Button Control: Model dropdowns and the LaMa card use a single Download ⇄ Pause / Resume toggle with live progress and paused badges.
-
LaMa Missing-Weights Guard: Translating with Quality selected but weights absent no longer errors or silently re-downloads — it runs the Fast ladder and switches the option back automatically.
-
Cache-Gated Quick Toggles: Popup Home Inpaint/Detector buttons only switch to targets whose weights are actually downloaded, with an inline hint otherwise.
-
WebLLM Engine & Model Updates: Bumped
@mlc-ai/web-llmto v0.2.86 with centralized engine configuration (createLlmEngine). Replaced Gemma3-1B with Llama-3.2-1B (~880 MB) and added ultra-compact Qwen3.5-0.8B (~1.6 GB) to resolve sliding-window configuration conflicts, with automatic normalization for deprecated stored models.
✨ What's Changed
1. ⬇️ Resumable Downloads Everywhere
-
Central Download Manager: All ONNX weight downloads are owned by the background service worker (
DOWNLOAD_START/PAUSE/DISCARD) with liveMODEL_DOWNLOAD_PROGRESSpushed to popup, sidebar, and setup. Starting a new download auto-pauses the active one without losing progress. -
Single-Button UX: Model dropdowns show a Download icon when idle, a Pause icon while downloading, and a Play icon with
Paused N%badge when paused. No Stop button in compact UIs — deleting from Model Storage restarts from scratch. -
Range Resume: Paused partials resume via HTTP
Rangerequests; servers that ignore it restart the file cleanly. Deleting a cached weight rewinds covering jobs and drops partials.
2. 🛡️ Download Integrity Fixes
-
Truncation Guard: Streams ending short of their advertised length are never cached — they keep the partial and report a resumable error instead of a corrupt weight.
-
Pause Icon Fix: The dropdown Pause button now correctly flips to Resume after pausing.
-
Sidebar Progress Fix: Progress broadcasts are fanned out to content-script tabs, so sidebar downloads tick live instead of freezing at 0%.
3. 🎨 Inpainting & Home Gating
-
LaMa Guard: The offscreen inpainting path pre-validates weights before touching the model — absent weights run the Fast ladder (Telea rung included) with zero errors.
-
Manual Quality Opt-In: Selecting Quality inpainting no longer auto-starts the ~207 MB LaMa download; it waits for an explicit press.
4. ⚙️ Reliability & Overlay Polish
-
FIFO Task Runner: The inference queue now uses a FIFO runner with dead-letter isolation, so one failed job never stalls the pipeline.
-
Resource Disposal: Fixed ONNX session/resource disposal and error handling across OCR, detection, and script-gate paths.
-
Pororo Slicing: Improved line slicing for the Korean Pororo OCR model plus overlay click-event isolation fixes.
-
Box Move Handle: Overlay boxes gain a dedicated move handle alongside improved Translate pill behavior.
5. 🧠 Local WebLLM Engine & Model Lineup
- WebLLM v0.2.86 Bump: Updated
@mlc-ai/web-llmtov0.2.86. - Model Lineup Refresh: Replaced Gemma3-1B with
Llama-3.2-1B-Instruct(~880 MB) to resolve upstream WebLLM sliding-window configuration conflicts (WindowSizeConfigurationError), and introduced lightweightQwen3.5-0.8B(~1.6 GB) alongside Qwen3.5-2B and 4B. - Centralized Engine Constructor: Created
createLlmEngine(src/lib/llm-engine.ts) withllmAppConfigto merge chat option overrides onto downloaded MLC configurations, preventing runtime window size errors. - Stored Model Normalization: Added
normalizeLlmModelacross popup, sidebar, and WebLLM translation paths so legacy or deprecated saved model IDs automatically fall back to the active default model instead of crashing inference. - Setup & Model View Resilience: Updated
ModelOnlyView.svelteandLlmStep.svelteto initialize engines viacreateLlmEngineand gracefully retain custom or unlisted model parameters.
📦 Installation
Official Webstore
Chrome (Auto update)
Install directly from Chrome Webstore
Firefox (Recommended - Wllama Branch)
Install directly from Mozilla Add-ons (AMO) — persistent, signed, and auto-updating (Unified WebLLM Branch still in appeal process).
Chrome / Chromium-based Browsers (Brave, Edge, Opera, Vivaldi)
-
Download
LMT-v1.0.2-chrome.zipfrom Assets below. -
Extract the downloaded zip file.
-
Navigate to
chrome://extensionsand enable Developer mode (top-right toggle). -
Click Load unpacked and select the extracted folder.
Firefox (Manual / Temporary Add-on)
-
Download
LMT-v1.0.2-firefox.zipfrom Assets below. -
Open
about:debugging#/runtime/this-firefox. -
Click Load Temporary Add-on and select any file inside the extracted folder (or
manifest.json). (Note: Sideloaded builds are temporary per session; use the AMO listing above for permanent installs).
🛠️ Build from Source
Requires Bun (v1.1+).
git clone https://github.com/mrdhnto/libre-manga-translator.git
cd libre-manga-translator
bun install
# Development with hot reload
bun run dev # Chrome
bun run dev:firefox # Firefox
# Production builds
bun run build # Chrome (.output/chrome-mv3)
bun run build:firefox # Firefox (.output/firefox-mv2)
Full Changelog: v1.0.1...v1.0.2
v1.0.1
🚀 Libre Manga Translator (LMT) v1.0.1
Libre Manga Translator v1.0.1 brings dedicated Korean OCR support (Pororo OCR) for manhwa/webtoons, an interactive Multi-Layer Visual Canvas Editor with inpainting patch/restore tools, an Always Inpaint override, scan caching improvements, and significant translation stability enhancements.
Everything continues to run 100% on-device in WebGPU/WASM mode by default, with Gemini cloud and self-hosted API Mode as flexible alternatives. Zero telemetry, zero external tracking, zero intermediaries.
🌟 Key Highlights
- Dedicated Korean OCR (Pororo): Say goodbye to missed text in Korean manhwa and webtoons. We've integrated Kakao Brain's Pororo OCR (TPS-VGG-BiLSTM ONNX), optimized specifically for vertical and horizontal Korean typography.
- Multi-Layer Visual Canvas Editor: You can now toggle seamlessly between Raw Scan, Cleaned Scan (inpainted background), and Result Scan (translated typesetting) directly on the reader page.
- Inpaint Patch & Restore Tools: Need to clean a missed speech bubble or restore original background art? Use the built-in canvas mark tools to paint additional inpaint patches or restore raw artwork without re-translating.
- Always Inpaint Mode: Force inpainting across all detected speech bubbles even when conservative quality heuristics decline, ensuring no leftover untranslated text remains on complex backgrounds.
- Contextual In-Place Styling: Select any translated bubble to immediately tweak font family, font size, line height, text alignment, and color via an in-canvas floating toolbar.
✨ What's Changed
1. 🇰🇷 Korean OCR Engine (Pororo OCR)
- Pororo BrainOCR Integration: Added on-demand download and execution for Kakao Brain's Pororo OCR model (~74 MB ONNX, TPS-VGG-BiLSTM architecture with a 2,589-character Hangul vocabulary).
- Manhwa & Webtoon Optimization: Drastically improves text recognition accuracy on Korean manhwa compared to generalist multilingual models.
- Smart Engine Picker & Warnings: Selectable in the popup, sidebar Vision tab, and setup wizard, complete with automated language alerts when non-Korean content is processed.
2. 🎨 Multi-Layer Visual Canvas Editor & Patch Tools
- Three-Layer View Switcher: Instant switching between:
- Raw Scan: The untouched original manga/manhwa page.
- Cleaned Scan: The inpaint-cleaned background with text removed.
- Result Scan: The final typeset composite with translated bubbles.
- Interactive Patch Drawing:
add-inpaint: Draw boxes to clean missed text, stray SFX, or watermark areas.restore-raw: Paint over regions to bring back original illustrations and screentones.- Changes are applied incrementally onto the canvas bitmap without re-triggering inference or network requests.
- Contextual Typography Toolbar (
ContextualStyleBar): Adjust font styling (Bangers, Comic Neue, Noto Sans, or custom user fonts), alignment, sizing, and colors per bubble in real-time. - Raw OCR Transcript Pill (
FloatingRawTextPill): Inspect exact raw OCR text extracted from the bubble while reviewing or editing translations. - Multi-Layer Export: Save the active view (translated page, cleaned scan, or raw original) directly to high-resolution JPEG.
3. 🧹 Inpainting Upgrades & Scan Caching
- Always Inpaint Setting: Added a
sync:always-inpainttoggle in popup settings and sidebar Render › Inpainting to bypass decline rollbacks on complex artwork. cleanedSrcCache: Inpainted backgrounds are cached in-memory and in page storage, eliminating redundant inpainting passes when re-styling or adjusting text.- Robust Font Stack Resolution: Refactored typography font-stack resolution for reliable font fallback and smoother canvas text rendering.
4. 🛡️ Translation Stability & Schema Validation
- Empty OCR Box Handling: Filter and sanitize empty or whitespace-only OCR detections before prompting LLM backends, preventing prompt confusion and hallucinated translations.
- Count Mismatch Resilience: Automatically handles and corrects bounding-box count mismatches between backend LLM responses and detected regions.
- Live Geometry Tracking: Overlay positioning updates dynamically to avoid coordinate drift when images resize or adjust during page loading.
- Overlay Event Isolation: Form controls and input fields within the editor remain fully interactive while host reader page navigation events are safely trapped.
5. 📖 Documentation & Privacy Updates
- Cross-Browser Privacy Policy: Refreshed
privacy.mdwith explicit details on Chrome (WebLLM via WebGPU) and Firefox (wllama GGUF via WASM/WebGPU),cleanedSrcscan caching, and zero-telemetry architecture.
📦 Installation
Official Webstore
Chrome (Auto update)
Install directly from Chrome Webstore
Firefox (Recommended)
Install directly from Mozilla Add-ons (AMO) — persistent, signed, and auto-updating.
Chrome / Chromium-based Browsers (Brave, Edge, Opera, Vivaldi)
- Download
LMT-v1.0.1-chrome.zipfrom Assets below. - Extract the downloaded zip file.
- Navigate to
chrome://extensionsand enable Developer mode (top-right toggle). - Click Load unpacked and select the extracted folder.
Firefox (Manual / Temporary Add-on)
- Download
LMT-v1.0.1-firefox.zipfrom Assets below. - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on and select any file inside the extracted folder (or
manifest.json). (Note: Sideloaded builds are temporary per session; use the AMO listing above for permanent installs).
🛠️ Build from Source
Requires Bun (v1.1+).
git clone https://github.com/mrdhnto/libre-manga-translator.git
cd libre-manga-translator
bun install
# Development with hot reload
bun run dev # Chrome
bun run dev:firefox # Firefox
# Production builds
bun run build # Chrome (.output/chrome-mv3)
bun run build:firefox # Firefox (.output/firefox-mv2)Full Changelog: v1.0.0...v1.0.1
v1.0.0 - Stable Release
🚀 Libre Manga Translator (LMT) v1.0.0 Stable
First stable release of Libre Manga Translator - a full rework of the beta series, rebuilt around one goal: reading manga should feel seamless.
The full pipeline - detection, script gate, OCR, translation, inpainting, rendering - runs on-device in WebGPU Mode, with Gemini cloud and self-hosted API Mode as opt-in alternatives. Zero telemetry, zero accounts, zero proxy in-between.
📖 Why this rework: reading first
Beta versions proved the pipeline worked. This stable release is about what happens around it - every change below exists so you spend less time configuring and more time reading:
- No more right-click dance. Hover any page image and a Translate pill appears where your cursor already is. One click, you're reading.
- Chapters translate themselves. Turn on Auto-translate and pages render in your language as you scroll - no per-page clicking through a 40-page chapter.
- Setup that guides you. The first-run wizard now walks you through hardware checks, model downloads, and backend choice in under two minutes, instead of dropping you into a settings maze.
✨ What's Changed
1. 🔒 Privacy & Security Core
- Zero telemetry, permanently. All telemetry pathways, data-sharing toggles, and reporting endpoints are deleted - not disabled. WebGPU Mode transmits zero bytes anywhere.
- SSRF-gated image proxy. The background image proxy allowlists
http(s)only and rejects credentials, loopback, private/link-local IPs, and internal schemes. - Strict translation schemas. Every backend (WebLLM, server, Gemini) validates
translations[]type and exact bbox-count match before anything is painted. - SHA-256 model verification. Downloads are checksummed against a known-hash manifest; mismatches evict the cache entry and abort.
- AGPL-3.0-or-later. From v1.0.0 Stable the program is copyleft: every distributed or network-hosted derivative must keep its complete source available under the same terms. Beta tags remain MIT.
2. 🔍 Detection & OCR
- RT-DETR default. Comic Bubble Detector (bubbles + free text) is now the default; Comic Text Detector with pixel-mask seeding stays selectable. YOLO26 models were removed - old stored selections auto-migrate to the new default.
- 11 PaddleOCR language packs. Latin + Chinese/Japanese ship during onboarding; the rest download on first encounter while the overlay names the model. The script gate auto-switches packs per page under Auto-Detect.
- Three OCR engines. PaddleOCR multilingual (default), PP-OCRv6 Manga (lightweight Japanese fine-tune), Manga-OCR (Japanese flagship for vertical text).
- Script gate. A 3.7 MB on-device model holds back sound effects and wrong-language lettering; every hold-back keeps its recognized text and offers one-click Translate anyway.
3. 🎨 Inpainting: Fast & Quality
- Fast ladder (default, model-free). Fitted text-shaped masks through planar fill → bilateral denoise → Telea, lightest passing rung wins, decline-gated with rollback.
- Quality mode (opt-in). LaMa neural redraw first per region (~207 MB one-time download), automatic Fast fallback wherever LaMa declines - a strict superset of Fast.
- Declined regions are left pixel-identical and flagged, never smeared.
4. 🖱️ Interaction: Pill, Hub & Auto-Translate
- Floating Translate pill. Hover any page image (≥ 260px) and a pill appears at its top-left - right where your eyes already are. No context menus, no toolbar hunting, no leaving the page. After translation it stays put as an action hub: fix a line, nudge a box, compare with the original, export the page.
- Skip bbox refining jumps straight from detection to translation for clean pages; Auto-translate turns whole chapters hands-free, rendering each page as it scrolls into view, one at a time so nothing stutters.
- A strict status registry dedupes repeat triggers across hover, auto-translate, and popup actions - the same page never translates twice.
5. 💾 Models, Backends & GPU
- WebLLM lineup: Gemma3-1B, Qwen3.5-2B, Qwen3.5-4B with real cache probing instead of stale flags.
- Model Storage panel. Every cached weight with size and language badge, per-model delete, full clear, and a manual update checker (per-model auto-update removed).
- GPU controls. Master WebGPU switch plus per-area overrides (LLM, inpaint, OCR) with WASM fallback.
- Secrets stay local. API keys and server settings moved to machine-local storage so they never sync across browser accounts.
6. 🎭 Redesign
- Obsidian Noir dual-theme (dark + light) with four accent colors across popup, sidebar, overlay, and settings.
- Popup simplified to Home + Settings; sidebar consolidated to Translate / Vision / Render / System.
- Overlay decomposed into focused modules; canvas helpers extracted for testability.
7. 📖 Documentation
- New
CHANGELOG.md, refreshedprivacy.md(no telemetry toggle exists - nothing to opt out of), and a website FAQ covering setup paths, the Firefox engine split, and install instructions.
Important Notes
- Firefox: published and signed on Mozilla Add-ons - installs persist across restarts with automatic updates. Only local in-browser translation differs per browser (Chrome: WebLLM; Firefox: wllama/GGUF); Gemini Mode and API Mode work identically everywhere.
- Chrome Web Store: review and listing submission is currently underway - until then, install from the release zip below.
- Upgrading from Beta: stored YOLO model selections migrate automatically; API keys and server settings migrate from sync to local storage on startup.
📦 Installation
Firefox (recommended)
Install from Mozilla Add-ons - signed, persistent, auto-updating.
Chrome / Chromium-based Browsers (Brave, Edge, Opera, Vivaldi)
- Download
LMT-v1.0.0-chrome.zipfrom Assets below. - Extract the zip file.
- Open
chrome://extensionsand enable Developer mode (top right toggle). - Click Load unpacked and select the extracted folder.
Firefox (manual install)
- Download
LMT-v1.0.0-firefox.zipfrom Assets. - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on and select any file inside the extracted folder (or
manifest.json). Note: sideloaded builds are session-only - prefer the AMO listing above.
🛠️ Build from Source
Requires Bun.
git clone https://github.com/mrdhnto/libre-manga-translator.git
cd libre-manga-translator
bun install
# Development with hot reload
bun run dev # Chrome
bun run dev:firefox # Firefox
# Production build
bun run build # Chrome (.output/chrome-mv3)
bun run build:firefox # Firefox (.output/firefox-mv2)Full Changelog: v1.0.0-Beta5...v1.0.0
v1.0.0-Beta5
🚀 Libre Manga Translator (LMT) v1.0.0-Beta5
Beta 5 introduces new detection and OCR model architectures (ComicTextDetector, RT-DETR, Manga-OCR), LaMa ONNX inpainting, in-browser model cache controls, and robust image page indexing.
Firefox Signed: Libre Manga Translator - Beta 4 + Different WebGPU Engine (read notes bellow)
✨ What's Changed
1. 🔍 New Detection & OCR Models
- RT-DETR Detector: Add Apache-2.0 Comic Bubble Detector (comic-bubble) for speech bubbles and isolated text regions.
- ComicTextDetector: Add text line detection and pixel-level segmentation mask support better than RT-DETR Detector for dense vertical japanese text (comic-text-detector, GPL-3.0).
- Manga-OCR Support: Add manga-ocr-onnx engine optimized for vertical Japanese manga typography.
- **PaddleOCR Refinement: Drop minimum confidence threshold to 0.70 and improve crop batching for better multi-language recognition.
- OCR Validation Tool: Add scripts/ocr-selfcheck.ts harness to verify OCR pipelines directly.
2. 🎨 Inpainting Pipeline
- LaMa Inpainting: Integrate LaMa ONNX (lama-manga.onnx) for high-quality background reconstruction and bubble cleanup.
- Ladder Integration: Connect LaMa into automatic fallback ladder (auto method) alongside Telea fast-marching.
- Inpaint Verification: Add scripts/inpaint-selfcheck.ts to test mask generation and inpaint passes.
3. 💾 Model Storage & Cache Management
- Storage Settings Panel: Add dedicated model management tab (ModelStorageSettings.svelte) to inspect cached ONNX models, view disk sizes, and delete unused weights.
- Onboarding Downloader: Expand initial setup wizard (setup/App.svelte) with multi-model downloader and storage progress.
4. ⌛ Content Script & Cache Stability
- Image Index Resolution: Implement resolveImagePageIndex to track accurate comic page numbers across dynamic readers.
- Hash-Based Cache Keys: Add quickHash to derive stable translation cache keys from raw image bytes and page indices.
- Box Scaling & Placement: Fix translation overlays scaling relative to natural vs rendered image dimensions.
- Event Isolation: Isolate overlay keyboard inputs to prevent triggering host page reader shortcuts.
5. 📖 Documentation & Assets
- Refresh README screenshots (docs/images/*) showcasing refined translation overlays and box editors.
- Update local model documentation and setup guides for Ollama (qwen3.5:4b) and LM Studio (tiny-aya-global).
- Move technical architecture reference into docs/technical.md.
Important Notes
- Firefox Add-on Signing: Firefox signed package submission is approved using the firefox-wllama branch. Only local in-browser WebGPU execution is affected by browser engine differences; Gemini Mode and API Mode work identically across both Chrome and Firefox. Users running local models via Ollama or LM Studio are completely unaffected. Github Firefox Release used same WebGPU engine for chromium release.
- Telemetry Opt-In: Telemetry reporting is disabled (false) by default. Data collection is strictly opt-in.
- Chrome Web Store: Extension review and listing submission for Chrome Web Store is currently underway.
📦 Installation
Chrome / Chromium-based Browsers (Brave, Edge, Opera, Vivaldi)
- Download
LMT-v1.0.0-Beta5-chrome.zipfrom Assets below. - Extract the zip file.
- Open
chrome://extensionsand enable Developer mode (top right toggle). - Click Load unpacked and select the extracted folder.
Firefox
- Download
LMT-v1.0.0-Beta5-firefox.zipfrom Assets. - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on and select any file inside the extracted folder (or
manifest.json).
🛠️ Build from Source
Requires Bun.
git clone https://github.com/mrdhnto/libre-manga-translator.git
cd libre-manga-translator
bun install
# Development with hot reload
bun run dev # Chrome
bun run dev:firefox # Firefox
# Production build
bun run build # Chrome (.output/chrome-mv3)
bun run build:firefox # Firefox (.output/firefox-mv2)Full Changelog: v1.0.0-Beta4...v1.0.0-Beta5
v1.0.0-Beta4
🚀 Libre Manga Translator (LMT) v1.0.0-Beta4
Fourth beta release of Libre Manga Translator. Brings a major overhaul to the inpainting pipeline with a multi-stage engine ladder, an intelligent script verification gate, enhanced detection region building, and crucial security fixes for local storage.
✨ What's Changed
1. 🎨 Auto Inpainting Engine Ladder (Major Quality Upgrade)
- Multi-Stage Engine Ladder: Replaced single full-bbox Telea inpainting with an automated ladder architecture (
Automode, now default). It fits a text-shaped ink mask per bubble and uses the lightest engine that passes quality verification:- Planar Fill (Rung 0): Samples surrounding paper tone across flat manga pages with zero hallucination.
- Bilateral Denoise Fill (Rung 1): Eliminates grain and compression artifacts on noisy JPEG / scanned pages.
- Telea Fast-Marching (Rung 2): Fallback for complex textures and tone rebuilds.
- Decline Metric Guard: Every inpaint result is scored against the local surrounding paper. If an engine degrades quality or fails, it escalates to the next rung. Regions that cannot be cleanly inpainted are left untouched and flagged rather than degraded.
- Untouched Non-Text Regions: Only regions with confirmed translated text undergo inpainting. Untranslated regions, failed OCR, or gate skips remain pixel-identical to the original page.
2. 🛡️ Language & Script Verification Gate
- On-Device Script Identification: Integrated a lightweight OSD LSTM model (
ogkalu/image-script-identification, ~3.7 MB, Apache-2.0) running 100% locally via ONNX Runtime Web. - Garbage Translation Prevention: Scans pixel features and Unicode blocks before translation to filter out sound effects (SFX), background lettering, and pre-existing translated/Latin text on CJK pages.
- Interactive Override ("Translate Anyway"): Filtered regions are highlighted with a dashed amber outline and a one-click Translate anyway button so false positives are effortlessly recoverable.
- Dual Policy Modes: Strict enforcement when explicit CJK languages are selected; adaptive page-majority voting under Auto-Detect.
3. 🔍 Detection Box & Region Processing
- Deterministic Box Merging: Automatically merges fragmented YOLO bounding boxes and drops low-confidence speckle noise.
- Reading-Order Stability: Sorts and builds unified masking tiers with directional growth (+right for vertical Japanese).
4. 🔒 Security & Privacy Hardening
- BYOK Storage Isolation: Migrated sensitive API keys (Google Gemini API keys, custom server endpoints, and auth tokens) from
syncstorage to browser-scopedlocalstorage to prevent cross-device leakage via browser account sync. - Automatic Storage Migration: Built-in backward-compatible key migration on startup in popup and sidebar.
5. 🛠️ Developer Tooling & Verification
- Automated Self-Check Suites: Added
bun run check:inpaintandbun run check:gatescripts for instant headless regression verification. - Per-Rung Inpaint Diagnostics: Debug panel and session logs now report detailed per-region ladder telemetry (
fill,denoise,telea,declined). - Updated OCR Model Source: Migrated default PaddleOCR weights to
monkt/paddleocr-onnx.
6. 📖 Documentation & Attribution
- Technique Attribution: Added formal acknowledgments in
README.mdfor architectural concepts inspired by KoMiQ's Manga Cleaner project. - Privacy Policy Update: Reconciled
privacy.mdwith the new on-device OSD model and localized storage practices.
📦 Installation
Chrome / Chromium-based Browsers (Brave, Edge, Opera, Vivaldi)
- Download
LMT-v1.0.0-Beta4-chrome.zipfrom Assets below. - Extract the zip file.
- Open
chrome://extensionsand enable Developer mode (top right toggle). - Click Load unpacked and select the extracted folder.
Firefox
- Download
LMT-v1.0.0-Beta4-firefox.zipfrom Assets. - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on and select any file inside the extracted folder (or
manifest.json).
🛠️ Build from Source
Requires Bun.
git clone https://github.com/mrdhnto/libre-manga-translator.git
cd libre-manga-translator
bun install
# Development with hot reload
bun run dev # Chrome
bun run dev:firefox # Firefox
# Production build
bun run build # Chrome (.output/chrome-mv3)
bun run build:firefox # Firefox (.output/firefox-mv2)Full Changelog: v1.0.0-Beta3...v1.0.0-Beta4
v1.0.0-Beta3
🚀 Libre Manga Translator (LMT) v1.0.0-Beta3
Third beta release of Libre Manga Translator. Brings a critical interaction fix for manga reader sites, plus brand polish and an updated project roadmap.
✨ What's Changed
1. Overlay Interaction Isolation (Compatibility Fix)
- Isolated Overlay Events from Host Page: Clicks, drags, pointer and touch events inside the translation overlay no longer bubble to the underlying manga reader. Previously, readers that bind
click-next-pageor drag-to-scroll on the image/wrapper would flip pages or scroll while you edited a bubble - now those events are trapped (stopPropagation) inside the overlay. - Native Link Navigation Fix: Some readers wrap the image in a native
<a href="next-page">.stopPropagationalone can't cancel native link navigation, so the overlay now also callspreventDefault()on click - box dragging, textarea focus, and button actions still work untouched. - Drag In-Flight Guard: Mouse move/up during box drag/resize is stopped from reaching page-level listeners while a drag is in progress.
2. Branding & Documentation
- Branded README Header: Centered LMT branding header with icon and shields (version, browser support, WebGPU, Svelte 5 + WXT, MIT license).
- Data-Sharing Clarification: Clarify privacy wording - opt-in improvement data only sends the original image URL / site URL along with adjusted coordinates.
- Roadmap & Status Section: Reorganized into Released / In Progress / Known Issues / Planned, reflecting the real current development state.
📦 Installation
Chrome / Chromium-based Browsers (Brave, Edge, Opera, Vivaldi)
- Download
LMT-v1.0.0-beta3-chrome.zipfrom Assets. - Extract zip file.
- Open
chrome://extensions(or browser extension manager) and enable Developer mode (top right). - Click Load unpacked and select extracted folder.
Firefox
- Download
LMT-v1.0.0-beta3-firefox.zipfrom Assets. - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on and select any file inside extracted folder (or manifest).
🛠️ Build from Source
Requires Bun.
git clone https://github.com/mrdhnto/libre-manga-translator.git
cd libre-manga-translator
bun install
Build Chrome MV3
bun run build
Build Firefox MV3
bun run build:firefox
Full Changelog: v1.0.0-Beta2...v1.0.0-Beta3
v1.0.0-Beta2
🚀 Libre Manga Translator (LMT) v1.0.0-Beta2
Second beta release of Libre Manga Translator. Brings UI polish, responsive modal sizing, CSP telemetry fixes, and comprehensive visual documentation.
✨ What's Changed
1. UI & Visual Polish
- Unified Custom Scrollbars: Standardized overlay scrollbar style across Sidebar tabs, language selector, and Debug Panel logs (OCR source & translation lists).
- Expanded Translation Editor Modal: Increased modal viewport padding (p-10) for better spacing and readability on higher-resolution monitors.
- Official Brand Assets: Replaced placeholder UI markers with official LMT branding icon in Sidebar and bundled assets in production build.
- Overlay Refinements: Streamlined bubble box deletion and clear-state controls in interactive canvas editor.
2. Security & Network Reliability
- CSP Telemetry Bypass: Routed telemetry and series-context payloads via background service worker messaging instead of page context to prevent Content Security Policy (CSP) fetch blocking on strict manga sites.
3. Documentation & Visual Showcase
- Added comprehensive visual showcase in README.md including annotated screenshots:
- Setup Wizard onboarding flow
- Live in-page translation editor
- Inpainting comparisons (Telea vs. Fast)
- Raw OCR inspection & Debug panel
Chrome / Chromium-based Browsers (Brave, Edge, Opera, Vivaldi)
Option A: Package / Unpacked (.zip)
- Download
LMT-v1.0.0-beta2-chrome.zipfrom Assets. - Extract zip file.
- Open
chrome://extensions(or browser extension manager) and enable Developer mode (top right). - Click Load unpacked and select extracted folder.
Option B: Packaged Extension (.crx)
- Download
LMT-v1.0.0-beta2.crxfrom Assets. - Open
chrome://extensionswith Developer mode enabled. - Drag and drop
.crxfile onto extensions page to install.
(Note: If browser blocks third-party CRX drag-and-drop due to Web Store policy, use Option A).
Firefox
- Download
LMT-v1.0.0-beta2-firefox.zipfrom Assets. - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on and select any file inside extracted folder (or manifest).
🛠️ Build from Source
Requires Bun.
git clone https://github.com/mrdhnto/libre-manga-translator.git
cd libre-manga-translator
bun install
# Build Chrome MV3
bun run build
# Build Firefox MV3
bun run build:firefoxFull Changelog: v1.0.0-beta1...v1.0.0-Beta2
v1.0.0-Beta1
🚀 Libre Manga Translator (LMT) v1.0.0-Beta1
First public release of Libre Manga Translator. Transitions project from private alpha development into public beta.
LMT lets you translate manga directly in browser with full control over data flow: 100% on-device (WebGPU), direct cloud (Gemini), or self-hosted server (Ollama / LM Studio / OpenAI-compatible).
✨ Key Highlights
1. Three-Way Translation Architecture
- WebGPU Mode (Fully Local): Runs entirely on device. YOLO26 bubble detection + PaddleOCR on CPU/WASM, Qwen3 (4B / 8B) translation accelerated via WebLLM WebGPU. Completely offline after initial weight download.
- Gemini Mode (Cloud, Direct): Sends annotated canvas straight from browser to Google Gemini API (no proxy, no intermediary server).
- API Mode (Self-Hosted): Connects to local or remote LLM backends (Ollama, LM Studio, OpenRouter, DeepSeek). Local PaddleOCR extracts text; sends text-only payloads to your endpoint. Supports standard OpenAI and LM Studio experimental schemas.
2. Pure-JS Telea Inpainting Engine
- Built-in pure JavaScript fast-marching Telea inpainting engine (
src/lib/inpaint/telea.ts). - Fully compliant with Chrome MV3 Content Security Policy (no
'unsafe-eval'required). - Per-source inpainted canvas caching (
inpaintedSrcCache) for instant re-renders during edits. - Toggle between Telea (high quality) and Fast (edge-sample blend) in Appearance settings.
3. OCR Surfacing & Translation Editor
- OCR Text Inspection: View raw extracted PaddleOCR text per bubble.
- In-Place Edit Modal: Modify source or translated text before rendering; live updates canvas.
- Full-Resolution Export: Download translated pages directly as full-res JPEG.
- Interactive Overlay: Drag, resize, re-order, add, or delete bounding boxes with undo/redo support.
4. On-Page Sidebar & Settings
- Floating Sidebar (
lmt-sidebar): Sliding 340px settings panel directly on active page via Shadow DOM. - Shared settings ecosystem across popup launcher and in-page sidebar.
- Custom font loader (TTF/OTF/WOFF) with bundling for Noto Sans, Bangers, and Comic Neue.
5. Anti-Hotlink & Cross-Origin Image Pipeline
- Automatic proxy via background
declarativeNetRequestsession rules to injectRefererheaders for protected manga CDNs (i.sstatic.net,imgsrv5.com,scans.lastation.us). - Magic-byte MIME sniffing (
sniffMime) supporting JPEG, PNG, WebP, GIF, and AVIF decoding.
6. Debugging & Observability
- 50-entry ring-buffer logger (
local:debug-logs) recording OCR text, translations, actual inference backends (webgpuvswasm), and per-step latency without storing heavy image bitmaps. - Export debug sessions to JSON or copy directly to clipboard.
📦 Installation
Chrome / Chromium-based Browsers (Brave, Edge, Opera, Vivaldi)
Option A: Package / Unpacked (.zip)
- Download
LMT-v1.0.0-beta1-chrome.zipfrom Assets. - Extract zip file.
- Open
chrome://extensions(or browser extension manager) and enable Developer mode (top right). - Click Load unpacked and select extracted folder.
Option B: Packaged Extension (.crx)
- Download
LMT-v1.0.0-beta1.crxfrom Assets. - Open
chrome://extensionswith Developer mode enabled. - Drag and drop
.crxfile onto extensions page to install.
(Note: If browser blocks third-party CRX drag-and-drop due to Web Store policy, use Option A).
Firefox
- Download
LMT-v1.0.0-beta1-firefox.zipfrom Assets. - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on and select any file inside extracted folder (or manifest).
🛠️ Build from Source
Requires Bun.
git clone https://github.com/mrdhnto/libre-manga-translator.git
cd libre-manga-translator
bun install
# Build Chrome MV3
bun run build
# Build Firefox MV3
bun run build:firefox🙏 Credits & Acknowledgments
- ComicTL (https://github.com/kiuyha/ComicTL) by Ketut Shridhara - Base foundation, YOLO26 bubble detection model, PaddleOCR pipeline, and core overlay editor.
- Local Manga Translator (https://github.com/mrdhnto/local-manga-translator) proof-of-concept - API Mode concept, multi-backend schema routing, and debug logging architecture.