Repository navigation
Releases: puritysb/ViewLingo
Release list
ViewLingo 2.5.4 - Updated Store previews and screenshots
ViewLingo 2.5.4 is available on the Mac App Store (October 9, 2026 KST).
- Updated App Store previews to show area selection, translation and Live updates at real speed.
- Added before/after screenshots and restored document, selection and Live-subtitle examples.
This release updates the Store media. App behavior, translation, OCR and privacy are unchanged from 2.5.3.
The long-sleep translation failure in #24 remains under investigation; this release does not claim to resolve it.
This tag identifies public website/release documentation, not the private app source or a downloadable app binary.
ViewLingo 2.5.3 - Russian interface and clearer setup
- Added Russian interface, permission text and App Store localization
- Improved language settings, localized history, translation-style previews and support links
- Made the first-translation guide clearer and gave Quick Start keyboard focus
- Fixed opening Settings from the menu bar; kept the capture shortcut on one line
- Quick Start and the optional rating link are in Settings > General
- Improved eligibility for review requests while retaining frequency limits and avoiding interruptions
Translation, OCR, Live mode and privacy behavior are unchanged from 2.5.2.
The long-sleep translation failure in #24 remains under investigation.
ViewLingo 2.5.2 - Steadier Live, compact controls
Steadier Live translation, a compact control bar that never covers your text, and better recognition of tables and Japanese/Korean text.
Live Mode & Display
- Live translations stay perfectly still while the screen doesn't change, and swap cleanly the moment it does.
- The Live button is shown in every viewfinder from the start.
- A compact control bar with Live, Retry and Close sits just outside the viewfinder, so it never covers the text you are reading (#27). Live turns red while it is running.
- Long translations keep their paragraph layout, and previous text is fully cleared on every update.
- Move freely between displays: Live stays aligned on screens with different resolutions.
- Long, busy Live sessions stay well within their memory limit.
Recognition
- Tables, menus and label-and-value layouts are translated cell by cell.
- Sharper Japanese and Korean recognition on macOS 27.
- Malay text is recognized and translated reliably.
Setup & Settings
- Step-by-step help for Screen Recording, and the Quick Start guide opens right under the menu bar on Macs with a crowded menu bar.
- Translation history follows the 7-day retention shown in Settings. If you never changed this setting, entries older than 7 days are now removed; choose "Unlimited" to keep everything.
- New "Rate ViewLingo…" menu item. The app may occasionally ask for a rating after you close a viewfinder.
The long-sleep translation failure in #24 is still under investigation.
Available on the Mac App Store.
ViewLingo 2.5.0 - Language search, cleaner Live text
Finding languages faster, and cleaner Live translation.
Languages
- Search languages in Settings by their name in your app language, their own name, or their code, and add them straight from the results.
- Your chosen regional English target (for example British English) is kept instead of falling back to a default.
- Fewer duplicate source choices. Regional variants that recognize text the same way are shown once; Simplified and Traditional Chinese stay separate.
- Clearer guidance for choosing screen languages and downloading language packs.
Live Mode & Display
- When the original text changes, the previous Live translation is removed instead of being reused for the new text.
- Translucent translated text is drawn once, with a cleaner outline, so letters no longer look doubled.
Available on the Mac App Store.
ViewLingo 2.4.4 - Controls that stay within reach
Reliability for the controls around the viewfinder and first-run setup.
- Close, Retry and Live stay available when a selected area contains no text.
- More reliable switching between Live translation, Retry and resizing.
- Settings, permission prompts and language-pack downloads stay reachable while a translation window is open.
- Setup restores your progress and language choices, including after a cancelled download.
Available on the Mac App Store.
ViewLingo 2.4.3 - Cleaner Live, easier Quick Start
Live cleanup and easier setup.
- Fixed removed text sometimes remaining visible during Live translation.
- Target-language regional variants are organized into submenus, keeping every supported choice.
- New shortcut test, and a way to reopen Quick Start without resetting settings.
- Quick Start can start a translation directly, with clearer Screen Recording permission guidance.
Available on the Mac App Store.
ViewLingo 2.4.2 - Small and vertical text, steadier overlays
A hardening release driven by real-world captures, including a recorded street scene with vertical signs.
Recognition
- Improved recognition of small and vertical text in wide selections. Vision's default minimum text height can hide a small vertical sign in a wide capture; the recovery pass now runs with an explicit lower bound and overlapping tiles so a column near the middle of the frame survives.
- Fixed Escape cancellation when selecting a screen region. The borderless selection window can now take keyboard focus, so Esc cancels and a new selection can start on another display.
Display
- Fixed an issue where translated text could become unnecessarily small even when enough space was available. Text that already fits is no longer shrunk to the readability expansion limit.
- Improved text contrast on translucent overlays, including smaller text. Glyph edges are strengthened while filled strokes, custom colors, and your background opacity settings are preserved.
- Improved consistency when text changes during Live translation. Capture timeouts honor the configured recovery interval and results from a replaced Live session can no longer clear or overwrite the current one.
Available on the Mac App Store.
ViewLingo 2.4.1 - Dark screens, retained results, optional masking
A maintenance release centered on readability in the places people actually read: dark video, changing backgrounds, and long text.
Readability
- Improved readability on dark screens and when the background changes during Live translation. Live overlays now sample the content behind each segment instead of judging the whole frame, so a bright subtitle on a mostly dark scene no longer gets a black band over it.
- Added optional original-text masking while preserving your transparency settings. Off by default; when you need a clean separation from the original, turn it on and the translation background becomes opaque.
Correctness
- Fixed old translations remaining visible after text disappears from the screen. A confirmed empty recognition is a new scene, not an OCR failure, and the overlay now clears.
- Fixed automatically detected languages being translated repeatedly without keeping the result. With auto-detect on, a language outside your priority list used to be translated, dropped at display, and translated again on every frame. The before-and-after filters now agree, so the result is kept and the repeat requests stop.
- Improved paragraph wrapping and full-text access for longer translations.
Responsiveness
- Reduced waiting when the translation service stops responding, with an automatic retry. Timeouts now match measured behavior instead of waiting half a minute, and recovery retries quietly.
Available on the Mac App Store.
ViewLingo 2.4.0 - The viewfinder gets out of your way
This update is about the viewfinder getting out of your way. Most of it comes straight from an App Store review — thank you.
Viewfinder
- Lock mode. Lock the viewfinder from the menu bar and every click and drag passes through to the app underneath — scroll the page or use video controls while Live translation keeps running on top. Press Esc once to unlock, twice to close.
- Resizing now only happens in a narrow band along the border. Previously up to a third of the viewfinder's area acted as a resize handle, which is why trying to move it so often resized it instead.
- The viewfinder no longer sits over the menu bar, so your menu bar icons stay reachable.
Languages
- The language-pack download sheet no longer reappears for every language the text recognizer thinks it saw. It only asks about languages on your list, and it remembers when you decline.
- Japanese text is no longer mistaken for Traditional Chinese. Characters like 確 and 認 are everyday Japanese kanji; treating them as Chinese meant some Japanese text was translated and then dropped from the overlay.
- Language lists show each language's name in your own language, and the source list shows one row per language instead of every regional variant.
Setup
First-run setup no longer blocks until every language pack is installed — you can start with what you already have and download packs right inside the app.
Live Mode
- Fixed a case where a translation that had just finished was discarded instead of shown — one cause of missed subtitle updates on video.
- Overlays adapt to dark content: on dark video or dark-mode pages, the translation band renders dark with light text instead of a light band with black text.
Speed
- Your first translation after launch is much faster. The translation model warms up as the app starts, cutting a first translation from several seconds to about one.
- Results appear as each part finishes instead of all at once, so a text-heavy screen fills in progressively.
Available on the Mac App Store.
v2.3.0 - Language visibility & progressive translation
ViewLingo 2.3.0
This release is mostly about two things: making language support visible, and making a text-heavy screen feel like it's doing something while it translates.
Languages
- Language names appear in your own language. Lists now show a language's own name followed by its name in your app language — "ไทย (Thai)" rather than just "ไทย" — so you can tell what you're picking.
- Fixed: the app could show fewer languages than your Mac supports. An empty answer from the translation framework at launch pinned a hardcoded fallback list for a full hour, while the Mac itself supported far more. If a language you needed looked missing, this was probably why. ViewLingo supports every language macOS can translate, and picks up new ones without an app update.
- One row per language in the source list. It previously showed a separate row for every regional variant the framework reports — nine rows for English alone — which looked nothing like the list in System Settings. Choosing a source language says what might appear on your screen, where the region makes no difference. Simplified and Traditional Chinese stay separate. The target-language picker is unchanged, and existing settings are migrated.
- Japanese is no longer mistaken for Traditional Chinese. The detector scored 確, 認, 問, 題, 運 and 業 as Chinese indicators, but these are everyday Japanese kanji — 確認 is one of the most common Japanese words. Affected text was translated and then dropped at display time for not being a language you'd selected, so it appeared and then vanished. A Chinese variant is now only returned if you actually list Chinese as a source language.
- Language packs are detected as soon as you come back. Installed-language state is re-checked when the app becomes active — exactly when you return from System Settings after downloading a pack.
A fallback when a language pack is missing
macOS translates on-device and needs a language pack downloaded once before it can work offline. Normally macOS presents its own download prompt when a pack is missing, and installs it in place. But reviewers on macOS 26 described the other outcome — a capture that comes back empty with no explanation, which reads as the app being broken.
For that case, ViewLingo now checks whether a missing pack is the cause and, if so, names the languages needed and offers to open the settings. It asks once per language pair per launch.
Speed and responsiveness
-
The first translation after launch is much faster. Model prewarming previously started when a viewfinder was created, but people capture a second or two later, so the real request still paid the cold-start cost. It now starts at app launch. Measured cold, a first translation ran anywhere from under two seconds to nearly ten; warmed, it settles at about one.
-
Results appear as they finish. A dense screen used to sit blank until everything was translated. Translation is now split into chunks that render the moment each one completes, so the screen fills in progressively.
On the honest framing of this: the total time is unchanged. On-device translation costs roughly 8ms per character plus a fixed ~180ms per text segment, and no way of invoking it — batched, concurrent, or sequential — moves that number. What changed is when you start seeing results.
-
Live Mode is steadier on video. On sustained high-change content the capture interval now has a floor instead of racing toward 0.05s, which was causing flicker, heat, and unstable overlays.
Fixes
- Loading indicators no longer vanish while a large translation is still running.
- Live Mode recovers automatically when a translation gets stuck.
- Live Mode no longer redraws the overlay every frame on a static screen.
- The rating prompt no longer appears on top of the translation it's asking about; it waits until the next time you open the viewfinder.
- Translation history no longer corrupts its own file when a capture writes many entries at once.
Requires macOS 15.0 or later. Optimized for Apple Silicon — it runs on Intel Macs, but translation and text recognition are noticeably slower there.
Translation runs entirely on your device — no network requests, and nothing on your screen leaves your Mac.
Full technical changelog: CHANGELOG.md