Skip to content

v0.4.0

Pre-release
Pre-release

Choose a tag to compare

@volfiros volfiros released this 23 Feb 01:36
· 78 commits to main since this release
fc5d05b

What's Changed

Full Changelog: v0.3.0...v0.4.0

Summary

Detection Engine

  • Migrated from YOLOv8m segmentation to RT-DETR-v2 (ogkalu/comic-text-and-bubble-detector) — transformer-based detector with 3 classes: bubble, text_bubble, text_free
  • Overlays now clipped to bubble interiors via intersection logic — no more oversized masking regions
  • Text-free detections (SFX, narration, floating text) are now detected and translated — previously missed entirely
  • Upgraded transformers>=4.50.0 for rt_detr_v2 architecture support
  • YOLO auto-disables after 3 consecutive failures, falls back to Gemini OCR

Overlay & Positioning

  • Fixed scroll drift — overlays stay pinned after scrolling (removed scroll listener, use position: absolute naturally)
  • Fixed masking region width overshooting bubble boundaries
  • Font size scales to rendered box dimensions with a floor of 10px — no more unreadable text

Rate Limit Handling

  • Replaced 5-retry loop with: Flash → Flash Lite → stop
  • Background broadcasts rate limit error directly to popup via chrome.runtime.sendMessage — popup now shows the error toast instead of "Translation complete"
  • Processing stops immediately on rate limit; content script cleans up all overlays

Popup UX

  • Replaced bottom status bar with Sonner toasts at top-center
  • Custom themed toasts matching extension palette — #C15F3C for errors, #4CAF50 for success
  • Interior top-right ✕ close button, colour-matched per toast type
  • Progress panel hides immediately on error or completion
  • Removed unused @radix-ui/react-slot dependency

Auth & Settings

  • Google OAuth now opens in a popup window instead of a new tab
  • Redesigned API key section with read-only display, show/hide, copy, and paste controls

Test Plan

  • Add Gemini API key in Settings, click Translate on a manga page — overlays appear inside speech bubbles
  • Scroll after translation — overlays stay pinned
  • Trigger rate limit — popup shows error toast, not "complete"
  • Click ✕ on a toast to dismiss manually
  • With Python server running, verify SFX / floating text regions are detected
  • Verify /health returns `model_loaded: true