Skip to content

Releases: midagedev/mwoyeo

Mwoyeo 1.1.4

Choose a tag to compare

@github-actions github-actions released this 20 Oct 14:16

한국어

추가한 엔진이 앱마다 문맥과 메모를 알고 번역하고, Claude Code 같은 에이전트가 MCP로 연결해 그 메모리를 대신 정리합니다. 언어 팩 때문에 첫 번역이 막히는 일도 없앴습니다.

새 기능

  • 문맥 번역 (추가한 엔진). 채팅 서버, Anthropic, DeepL 엔진은 번역할 줄과 함께 앞 줄 몇 개와 창 제목을 보낼 수 있습니다. 기본은 꺼져 있고, 설정 › 번역에서 엔진을 열어 문맥 항목에서 엔진마다 켭니다. 무엇이 함께 가는지는 시트의 "보냄:" 줄에 그대로 나옵니다.
  • 앱별 메모리. 앱 프로필의 ⋯ › 메모리…에서 번역가에게 줄 메모, 이름과 용어를 앱마다 적어 둡니다. 엔진이 배운 이름은 흐리게 보이고 한 번 눌러 고정합니다. "배운 것 지우기"와 "새로 시작"으로 비웁니다. 메모리는 문맥을 꺼 둔 엔진에도 함께 가고, 그 사실이 엔진 시트에 적힙니다. Apple 번역에는 "Apple 번역에도 내 이름과 용어 사용"을 켤 때만 갑니다.
  • 에이전트 연결 (MCP). Claude Code 같은 에이전트가 Mwoyeo에 MCP로 연결해 번역 로그를 읽고, 앱마다 메모리를 쓰고, 모든 설정을 읽고 바꿀 수 있습니다. 예를 들어 "번역 로그 보고 이 게임의 이름이랑 용어 정리해줘"라고 하면 줄마다 달라진 이름을 찾아 그 게임의 메모리에 씁니다. 설정 › 일반의 에이전트 연결 (MCP) 을 켜면 연결 명령이 복사 버튼과 함께 나옵니다. 기본은 꺼져 있습니다. 잘못된 값은 거절하고 아무것도 쓰지 않으며, 연결 스위치와 command 엔진은 직접 설정에서만 바꿀 수 있습니다.
  • 막히지 않는 언어 팩. 언어 팩이 없을 때, 받는 중일 때, 받다가 끝나지 않았을 때, 지원하지 않는 언어쌍일 때를 렌즈, 메뉴, 설정 › 번역, 이미지 창이 모두 알려 주고, 그 자리에서 받기·다시 시도·언어 고르기로 이어집니다. 받는 동안 Apple Intelligence가 번역할 수 있으면 그동안 그쪽으로 번역합니다.

고친 점

  • 저장 공간이 부족할 때. 글자 인식 모델을 준비할 공간이 없으면 렌즈가 그렇게 말하고 저장 공간 설정을 엽니다. 준비를 끝없이 다시 시도하며 멈춰 있지 않습니다.
  • 번역 속 영어 단어의 대소문자. 원문 단어의 대소문자를 되돌리다 다른 단어 안까지 바꾸던 문제를 고쳤습니다("Man" → "MAn", "README" → "REaDME" 같은 깨짐).
  • 취소한 뒤 다시 받기. 언어 팩 받기 창을 취소한 뒤 다시 누르면 창 없이 "내려받는 중…"에 멈추던 문제를 고쳤습니다.
  • 일본어·중국어 문장 속 코드. 일본어 문장에 붙어 있는 식별자, 주석 줄, 고정폭 글꼴로 쓴 코드를 더 잘 알아보고 원문 그대로 둡니다.
  • 새 앱 아이콘.

알려진 문제

  • Claude 5 계열 엔진(Haiku 5.5, Sonnet 5.5, Opus 5.5)과 메모리. 이 모델들은 기본으로 생각(thinking)을 켠 채 답해서 응답이 늦습니다. 엔진이 답하는 동안 들어온 줄은 Apple 번역이 대신 번역하는데, 기록에는 엔진 이름으로 남습니다. 그래서 앱 메모리의 이름이 화면에 반영되지 않을 수 있습니다. 다음 업데이트에서 고칩니다.

설치와 업데이트

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · 또는 아래 디스크 이미지를 내려받으세요(서명·공증 완료).


English

Added engines now translate with each app's context and notes, an agent such as Claude Code can keep that memory for you over MCP, and a language pack never leaves the first translation stuck.

New

  • Context translation (added engines). Chat servers, Anthropic and DeepL can receive a few lines before the one being translated and the window title. Off by default; turn it on per engine in its sheet's Context section (Settings › Translation). The sheet's "Sent:" line shows exactly what goes along.
  • Memory per app. From an app profile's ⋯ › Memory…, keep a note to the translator and the names and terms for that app. Names an engine learned show faintly and are pinned with one click; "Forget Learned" and "Start Fresh" clear them. Memory goes to added engines even with Context off, and the engine sheet says so. It reaches Apple Translation only when "Use my names and terms with Apple Translation" is on.
  • Connect an agent (MCP). An agent such as Claude Code connects to Mwoyeo over MCP to read the translation log, write each app's memory, and read and change every setting. Ask it "look at the translation log and sort out this game's names and terms", and it finds the names that changed from line to line and writes them into that game's memory. Turn on Connect an agent (MCP) in Settings › General to see the command, with a Copy button. Off by default. A wrong value is refused and nothing is written; the switch itself and command engines are changed only by you.
  • Language packs that never leave you stuck. A pack that is missing, downloading, did not finish, or a pair with no translation is shown on the lens, the menu, Settings › Translation and the image window, each with its action right there: download, try again, or choose languages. While a pack downloads, Apple Intelligence translates meanwhile where it can.

Fixed

  • Low disk space. When there is no room to prepare the text recognition models, the lens says so and opens Storage settings instead of retrying forever.
  • Letter case of English words in translations. Restoring a source word's case no longer changes letters inside other words ("Man" → "MAn", "README" → "REaDME").
  • Download after Cancel. Asking for a language pack again after cancelling its sheet no longer sticks at "Downloading…" with no sheet.
  • Code inside Japanese and Chinese text. Identifiers glued to a Japanese sentence, comment lines and code set in a fixed-pitch font are recognized better and stay as written.
  • New app icon.

Known issues

  • Claude 5 engines (Haiku 5.5, Sonnet 5.5, Opus 5.5) and memory. These models think before they answer by default, so replies are slow. Lines that come in while the engine works are translated by Apple Translation in its place, and the log names the engine for them. An app's memory may then not show on screen. The next update fixes this.

Install and update

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · or download the disk image below (signed and notarized).

Mwoyeo 1.1.3

Choose a tag to compare

@github-actions github-actions released this 19 Oct 05:39

한국어

처음 켤 때 렌즈가 1분 넘게 멈추던 문제를 없앴습니다. 두 단 논문이 단마다 제자리에 번역되고, 코드는 원문 그대로 남습니다.

새 기능

  • 보내기 전에 묻습니다. 화면 글자를 이 Mac 밖의 엔진으로 보내기 전에 엔진과 주소마다 한 번 허락을 받습니다. 이전 버전에서 쓰던 엔진은 그대로 허락된 상태로 넘어옵니다.
  • 키보드로 렌즈 놓기와 VoiceOver. 화살표로 렌즈를 옮기고 ⇧로 크기를, ⌥로 1 pt씩 조절한 뒤 ↩로 놓습니다. 렌즈는 VoiceOver에서 하나의 요소로 읽히고 위치와 크기를 알려 줍니다. "동작 줄이기"를 켜면 반짝임과 회전이 멈춥니다.

논문과 문서

  • 단을 넘어가는 문단. 아래 단에서 다음 단 위로 이어지는 문단이 페이지만 한 한 덩어리가 되어 번역이 다른 단 위로 넘치던 것을 고쳤습니다. 단마다 나누어 그리고 번역은 한 번만 합니다. 우리 시험 논문에서 단을 넘는 번역 36 → 4, 잘린 블록 27 → 10.
  • 코드는 원문 그대로. 코드, 터미널, 로그, 설정 파일, diff 영역은 지우지도 번역하지도 않습니다(시험 장면 원문 유지 34/60 → 56/60). 둘레의 설명 글은 그대로 번역됩니다.

고친 점

  • 첫 실행 멈춤. 줄 단위 글자 인식도 앱과 분리된 프로세스로 옮겨, 앱이 인식 모델을 직접 준비하느라 멈추는 일이 없습니다. 준비하는 동안 렌즈가 그렇다고 알려 줍니다.
  • "$ 20"으로 시작하는 문장을 터미널로 오인하지 않습니다.

설치와 업데이트

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · 또는 아래 디스크 이미지를 내려받으세요(서명·공증 완료).


English

The first-run freeze is gone. Two-column papers are translated in place, column by column, and code stays as written.

New

  • Asks before sending. Before screen text goes to an engine off this Mac, Mwoyeo asks once per engine and host. Engines you used before are carried over as allowed.
  • Keyboard placement and VoiceOver. Move a lens with the arrow keys, resize with ⇧, step 1 pt with ⌥, place with ↩. The lens is one VoiceOver element that tells its position and size. With Reduce Motion on, the glow and the spinner hold still.

Papers and documents

  • Paragraphs that continue in the next column. Such a paragraph used to become one page-sized block whose translation spilled over the other column. It is now drawn per column and translated once. On our test paper: translations crossing a column 36 → 4, clipped blocks 27 → 10.
  • Code stays as written. Code, terminal, log, config and diff regions are neither erased nor translated (kept on the test scenes 34/60 → 56/60). The prose around them is translated as before.

Fixed

  • First-run freeze. Line recognition also runs in its own process now, so the app never stalls while macOS prepares the recognition models; the lens says so meanwhile.
  • A sentence starting with "$ 20" is no longer taken for a terminal.

Install and update

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · or download the disk image below (signed and notarized).

Mwoyeo 1.1.2

Choose a tag to compare

@github-actions github-actions released this 18 Oct 15:27

한국어

그림이 있는 페이지에서 렌즈가 1분 넘게 멈추던 문제를 고쳤습니다. 렌즈가 왜 번역을 못 하는지 직접 알려 주고, 논문도 훨씬 깔끔하게 읽힙니다.

새 기능

  • 문서 인식이 렌즈를 멈추지 않습니다. 처음 보는 종류의 페이지(그림이 있는 논문 등)를 문서로 읽을 때 macOS가 인식 모델을 1분 넘게 준비하는 동안, 렌즈가 아무것도 보여 주지 않던 문제를 고쳤습니다. 문서 인식을 앱과 분리된 프로세스로 옮겼습니다. 준비하는 동안에는 줄 단위로 읽어 바로 번역하고, 준비가 끝나면 문단 배치로 한 번 다시 읽습니다.
  • 렌즈가 이유를 말합니다. 번역이 아직 안 될 때 렌즈 이름표에 이유와 바로 할 일이 보입니다. 화면 기록 허용(설정 열기), Mwoyeo 다시 시작(누르면 다시 켜지고 렌즈도 그대로 열림), 언어 팩 받기(그 언어 쌍만 한 번에), 처음 한 번 하는 글자 인식 준비, 글자 인식이 응답하지 않음, 번역 엔진이 응답하지 않거나 느림(어느 엔진인지 함께, 추가 엔진이면 번역 설정 열기), 이미 번역할 언어로 된 화면입니다.
  • 잠자기와 모니터 변경 뒤에도 렌즈가 살아납니다. 잠자기에서 깨거나 모니터를 연결·해제하면 렌즈가 다시 읽기 시작합니다. 모니터가 사라지면 렌즈를 주 화면 안으로 옮기고 알려 줍니다. 손볼 렌즈가 있으면 메뉴 막대 아이콘에 작은 점이 붙습니다.
  • 에이전트가 설정 파일을 고치기 쉬워졌습니다. Mwoyeo --settings-schema가 settings.json의 스키마를 출력합니다. Mwoyeo --check-settings는 잘못된 값을 줄 번호와 경로(engines[0].thinking)로 알려 주고, 오타 난 키에는 가장 가까운 이름을 제안합니다. 안내: docs/settings-for-agents.md
  • 바로 받기 링크. 디스크 이미지를 항상 최신 버전으로 받는 고정 주소가 생겼습니다: releases/latest/download/Mwoyeo-arm64.dmg

논문과 문서

  • 수식은 그대로 둡니다. 따로 선 수식 줄(head_i = Attention(QW_i^Q, …))과 기호가 대부분인 문단은 원문 그대로 남습니다.
  • 글자 크기가 고릅니다. 첨자가 있는 줄의 번역이 본문보다 1.5배 크게 그려지던 것을 고쳤습니다.
  • 반쯤 잘린 줄은 건드리지 않습니다. 렌즈 가장자리에 걸린 줄은 반쪽만 읽어 번역하지 않고, 원문 그대로 둡니다.
  • 넘치는 번역은 "…"로 끝납니다. 줄 한가운데가 잘려 보이던 것을 고쳤습니다.
  • 단이 섞이지 않습니다. 저자 목록처럼 나란히 놓인 단이 한 문단으로 합쳐지지 않습니다.
  • 그림 속 세로 글자는 그대로 둡니다. 옆으로 눕힌 그림 라벨을 한 글자씩 번역하지 않습니다.
  • 인용 링크 상자도 지웁니다. PDF와 Safari가 링크 둘레에 그리는 색 테두리가 번역 위에 남지 않습니다.

고친 점

  • 가려진 창 위의 렌즈는 쉽니다. 렌즈가 붙은 창이 가려지거나 닫히면 읽기와 번역을 멈춥니다. 클라우드 엔진을 쓸 때 그 위를 덮은 창의 글자가 나가지 않습니다.
  • 이미지 번역 창. 언어 팩이 없으면 오래 기다리지 않고 바로 알리고, 받기 버튼을 보여 줍니다.
  • 메모리를 덜 씁니다. 원문 지우기 모델을 처음 쓸 때 올리고, 1분 동안 쓰지 않으면 내려놓습니다.
  • 드문 종료 하나를 막았습니다. 화면 밖 영역을 글자 인식기에 넘기던 경우를 막았습니다.

설치와 업데이트

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · 또는 아래 디스크 이미지를 내려받으세요(서명·공증 완료).


English

A lens no longer freezes for a minute on a page with figures. It tells you why it is not translating yet, and papers read much more cleanly.

New

  • Document recognition never stalls the lens. The first time a new kind of page (such as a paper with figures) was read as a document, macOS prepared its recognition models for over a minute and the lens showed nothing. Document recognition now runs in its own process. Meanwhile the lens reads line by line and translates at once, then reads once more with the paragraph layout when it is ready.
  • The lens says why. When it cannot translate yet, the lens label shows the reason and the one thing to do: allow screen recording (opens the pane), restart Mwoyeo (it relaunches and your lenses reopen), download the language pack (just that pair, one click), preparing text recognition (first time only), text recognition not responding, a translation engine not answering or slow (named, with a click to Translation settings for an added engine), or the text is already in your language.
  • Lenses come back after sleep and display changes. Waking the Mac or plugging and unplugging a display restarts reading. A lens whose display is gone moves into the main display and says so. The menu bar icon gets a small dot when a lens needs attention.
  • Settings an agent can edit safely. Mwoyeo --settings-schema prints the schema of settings.json. Mwoyeo --check-settings reports a bad value with its line and path (engines[0].thinking) and suggests the closest name for a mistyped key. Guide: docs/settings-for-agents.md
  • A direct download link that always gives the newest disk image: releases/latest/download/Mwoyeo-arm64.dmg

Papers and documents

  • Formulas stay as written. Display formulas (head_i = Attention(QW_i^Q, …)) and paragraphs that are mostly symbols are left untouched.
  • Even text size. A line with subscripts and superscripts is no longer translated 1.5 times larger than the body.
  • Half-cut lines are left alone. A line cut by the lens edge is not read from its visible half and covered with half a sentence.
  • A translation that does not fit ends in "…" instead of being cut through a line.
  • Columns stay apart. Side-by-side columns, such as an author list, no longer merge into one paragraph.
  • Rotated words in figures stay as they are, instead of being translated letter by letter.
  • Citation link boxes are erased with their text: the coloured frame a PDF viewer or Safari draws around a link no longer sits on the translation.

Fixed

  • A lens over a covered window rests. When the window it follows is covered or closed, the lens stops reading and translating, so with a cloud engine the text of the window on top never leaves your Mac.
  • Image window. Without the language pack it tells you at once and offers the download, instead of waiting.
  • Less memory. The inpainting model loads on first use and is let go after a minute unused.
  • One rare quit prevented. A region outside the picture is no longer handed to text recognition.

Install and update

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · or download the disk image below (signed and notarized).

Mwoyeo 1.1.1

Choose a tag to compare

@midagedev midagedev released this 18 Oct 04:15

한국어

macOS 문서 인식이 돌아왔습니다. 화면에 맞춰 알아서 고릅니다. 웹 페이지, 문서, 슬라이드처럼 단이 나뉜 글은 macOS의 문서 인식으로 문단을 나누고, 자막, 게임 대사, 채팅처럼 줄이 흩어진 화면은 Mwoyeo가 줄을 직접 묶습니다. 렌즈가 읽은 줄의 배치를 보고 고르므로 따로 설정할 것은 없습니다. 특정 앱에서 다른 방식이 낫다면 설정 › 번역의 앱 목록에서 그 앱의 ⋯ 메뉴로 고정할 수 있습니다.

새 기능

  • 문단 나누기 자동 선택. 40장의 화면(논문, 자막, 게임, 채팅, 문서)으로 비교했을 때, 자동 선택이 두 방식 중 어느 하나만 쓸 때보다 문단을 더 정확히 나눴습니다. 한 번 문서 인식으로 정해진 화면은 한 번만 읽어서, 스크롤하는 동안에도 빠릅니다.
  • 추가한 엔진의 ⋯ 버튼. 설정의 엔진 목록에서 각 엔진 오른쪽의 ⋯ 버튼으로 편집, 구성 복사, 삭제를 할 수 있습니다. 오른쪽 클릭도 그대로 됩니다.
  • DeepL 하나로. DeepL Free와 Pro를 따로 고를 필요가 없습니다. 키 끝이 :fx이면 Free 서버로, 아니면 Pro 서버로 보냅니다.
  • 설정이 더 간단해졌습니다. 언어 팩 목록은 지금 쓰는 언어 쌍 한 줄만 보여 주고, 나머지는 모든 언어 안에 접어 두었습니다. 설치된 개수는 그 줄 오른쪽에 보입니다.
  • 렌즈 모양 고르기. 설정 › 모양에서 색 테마 6가지(스펙트럼, 강조 색상, 오션, 선셋, 포레스트, 모노), 네 모서리만 그리는 모서리 스타일, 이름표 표시(자동, 항상, 포인터를 올렸을 때)와 위치(네 모서리)를 고를 수 있습니다.
  • 설정 파일과 번역 로그. 모든 설정이 ~/Library/Application Support/Mwoyeo/settings.json에도 있어서, 직접 고치거나 Claude Code에게 *"렌즈를 은은하게 하고 일본어로 번역하게 해 줘"*처럼 시킬 수 있습니다. 저장하면 바로 적용되고, 잘못 고친 곳은 줄 번호와 함께 알려 줍니다. "transcriptFormats"에 "jsonl"을 더하면 번역된 줄마다 JSON 한 줄씩 기록되어 tail -f로 실시간으로 받아 볼 수 있습니다. 자세한 내용은 README의 설정 파일을 보세요.

고친 점

  • 처음 켤 때 글자 인식 준비를 알립니다. macOS가 인식 모델을 처음 준비하는 데 1분 남짓 걸릴 수 있습니다. 그동안 메뉴 막대 패널의 상태 줄에 "글자 인식 준비 중…"이 보이고, 렌즈는 그동안에도 이전 방식으로 읽습니다. 준비가 끝나지 못하면 다시 시도 버튼이 나옵니다.
  • 렌즈 테두리가 얇고 부드러워졌습니다. macOS 27에서 렌즈의 은은한 빛이 두꺼운 불투명 띠(10pt)로 그려지던 문제를 고쳤습니다. 이제 얇은 링 바깥으로 반투명한 빛이 번지고, 읽는 동안에는 더 밝아집니다.
  • 렌즈 이름표가 차분해졌습니다. 화면을 읽을 때마다 "번역 중…"이 깜박이던 것을 고쳤습니다. 실제로 번역할 때만, 잠깐이 아니라 이어질 때만 표시합니다. 같은 알림은 1분 안에 다시 띄우지 않습니다.
  • macOS 글자 인식의 일시적 오류를 넘깁니다. 무거운 작업 직후 macOS 인식기가 잠깐 준비되지 않았다고 답하면, 몇 초 동안 다른 모델로 읽고 다시 돌아갑니다. 다른 모델이 없는 언어(일본어 등)라도 렌즈가 빈 채로 멈추지 않고 1초 뒤 다시 읽으며, 처음 실행에서 문서 인식이 한 번 늦었다고 오류를 띄우지 않고 다시 준비합니다.
  • 그대로 둘 글자는 그대로 둡니다. 터미널 명령($ npm run build), 시각과 날짜, URL은 번역하지 않습니다. 채팅이나 게임 대화창 위의 한중일 이름도 엉뚱한 낱말로 번역하지 않습니다.
  • 한국어 번역이 낱말 중간에서 줄바꿈되지 않습니다. "노스필/드"처럼 끊기던 것을 고쳤습니다.
  • 문단을 더 정확히 나눕니다. 제목과 본문, 각주와 참고문헌, 글머리표가 한 문단으로 뭉치지 않습니다. 굵게 빛나는 한자 제목을 아이콘으로 잘못 보던 것도 고쳤습니다.
  • 세로쓰기는 건드리지 않습니다. 아직 읽지 못하는 세로쓰기(만화 말풍선 등)를 잘못 읽어 덮는 대신, 그대로 두고 한 번 알립니다.
  • 스크롤하는 동안 번역 순서가 똑똑해졌습니다. 곧 화면 밖으로 나갈 글보다 오래 머물 글을 먼저 번역하고, 늦게 도착할 번역은 미리 접습니다. 채팅 헤더나 입력창처럼 고정된 글은 스크롤 중에도 바로 번역합니다.
  • 문제가 생겨도 덜 보챕니다. 실패와 성공을 오가는 엔진은 조금씩 더 기다렸다가 다시 시도하고, 번역 없이 원문만 돌려주는 엔진에는 같은 글을 계속 보내지 않습니다. 글자 인식이 계속 실패하면 잠깐씩 쉬었다가 다시 읽습니다.

설치와 업데이트

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · 또는 아래 디스크 이미지를 내려받으세요(서명·공증 완료).


English

macOS document recognition is back, and Mwoyeo picks it per screen. Text in columns, such as web pages, documents and
slides, is split into paragraphs by macOS document recognition. Scattered lines, such as subtitles, game dialogue and
chats, are grouped by Mwoyeo itself. The lens chooses from the layout of the lines it reads, so there is nothing to set up.
If one app reads better the other way, pin it from that app's ⋯ menu in Settings › Translation.

New

  • Automatic paragraph reader. On 40 screens (papers, subtitles, games, chats, documents), the automatic choice split
    paragraphs more accurately than either method alone. Once a screen is read with document recognition, it is read only
    once, so scrolling stays fast.
  • ⋯ button on added engines. Each engine in Settings has a ⋯ button for Edit, Copy Setup and Remove.
    Right-click still works.
  • One DeepL. No need to choose DeepL Free or Pro. A key ending in :fx goes to the Free host, any other key to Pro.
  • Simpler settings. The language pack list shows only the pair you use; the rest fold into All Languages, which shows how many are installed.
  • Choose the lens look. Settings › Appearance has six colour themes (Spectrum, Accent, Ocean, Sunset, Forest, Mono), a Corners style, and the name tag's visibility (Automatic, Always, On Hover) and position (any corner).
  • Settings file and translation log. Every setting is also in ~/Library/Application Support/Mwoyeo/settings.json, so you can edit it, or ask Claude Code: "Make the lens subtle and translate into Japanese." Saved changes apply at once; mistakes are reported with the line. Add "jsonl" to "transcriptFormats" to log one JSON line per translated line, ready for tail -f. See Settings file in the README.

Fixed

  • First-launch setup is shown. macOS can take a minute or more to prepare its recognition models the first time. The menu bar panel's status line says "Preparing text recognition…" meanwhile, and lenses keep reading with the older model. If setup cannot finish, a Try Again button appears.
  • A thinner, softer lens border. On macOS 27 the lens glow was drawn as a thick opaque band (10 pt). Now a thin ring has a translucent glow around it that brightens while the lens reads.
  • Calmer lens label. The label no longer flashes "Translating…" on every read. It shows only while a translation is
    really running and lasts. The same notice is not repeated within a minute.
  • Brief macOS recognition errors are bridged. When the recognizer briefly reports it is not ready after heavy work,
    Mwoyeo reads with another model for a few seconds, then returns. In a language with no other model (such as Japanese), a
    still lens no longer stays empty: it reads again a second later. A document read that is slow once on a first run no
    longer shows an error; the model is loaded again.
  • Text that should stay, stays. Terminal commands ($ npm run build), times and dates, and URLs are left as they are. CJK names above chat bubbles and game dialogue are no longer translated into odd words.
  • Korean translations no longer wrap mid-word. Lines like "노스필/드" are fixed.
  • Better paragraphs. Headings and body text, footnotes, references and bullets no longer run together. A bold, glowing CJK title is no longer taken for an icon.
  • Vertical text is left alone. Vertical writing (manga balloons and the like) is not read yet; instead of covering it with a misreading, Mwoyeo leaves it and says so once.
  • Smarter order while scrolling. Text that stays on screen longer is translated first, and a translation that would arrive too late is dropped. Fixed text such as a chat header or input box is translated during the scroll.
  • Less nagging when something fails. An engine that keeps failing and recovering waits longer between tries, an engine that returns text untranslated is not sent the same lines again and again, and failed text recognition pauses briefly before reading again.

Install or update

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · or download the disk image below (signed and notarized).

Mwoyeo 1.1.0

Choose a tag to compare

@midagedev midagedev released this 17 Oct 10:56

한국어

쓰던 번역 엔진을 연결할 수 있습니다. 아무 설정 없이 Apple 온디바이스 번역을 쓰는 것은 그대로입니다. 더 자연스러운 번역이 필요하면 설정 › 번역 › *다른 엔진 추가…*에서 이미 쓰고 있는 엔진을 연결하세요.

  • 이 Mac에서: Ollama, LM Studio. 아무것도 Mac 밖으로 나가지 않습니다.
  • 클라우드: Gemini, OpenAI, Claude, DeepL, DeepSeek, OpenRouter, Groq, Qwen.
  • 내 서버: HTTP 엔드포인트나 명령어라면 무엇이든.

키를 붙여 넣고 모델을 고르면, 예시 번역으로 연결을 확인합니다. 키는 macOS 키체인에만 저장됩니다.

이제 macOS 26에서도 동작합니다. 26.4 이전에서는 언어 팩으로 번역합니다. Apple Intelligence 고품질 모델과 언어 팩 없는 번역은 여전히 26.4 이상이 필요해서, 그 이전 버전에서는 이 선택지가 보이지 않습니다.

새 기능

  • 추가한 엔진. 엔진을 하나 추가하면 메뉴 막대 패널에 엔진 전환 버튼이 생깁니다. 엔진이 실패하거나 답하지 않으면, 조용히 알리고 그동안 Apple로 번역합니다. 클라우드 엔진에는 렌즈가 읽은 글자만 보내고 화면 이미지는 보내지 않습니다. 글자가 어느 서버로 가는지는 엔진 추가 화면에 적혀 있습니다. 구성 복사로 엔진 설정을 다른 사람과 나눌 수 있고, 키는 빠집니다. 엔진별 속도와 품질 측정 결과: tools/engine-bench/RESULTS.md.
  • 렌즈 메뉴. 렌즈 이름표를 오른쪽 클릭하면 원문 복사, 번역 복사, 소리 내어 읽기, 렌즈 이미지 저장이 나옵니다. 각각 설정에서 단축키를 지정할 수도 있습니다.
  • 앱별 언어. 렌즈 메뉴의 〈앱〉에서 이 언어 기억하기를 고르면 지금 언어 쌍이 그 앱에 묶입니다. 그 앱이 앞으로 나오면 언어가 자동으로 바뀝니다.
  • 이미지 번역. 패널의 사진 버튼을 누르면 창이 열립니다. 그림을 끌어다 놓거나 ⌘V로 붙여 넣은 뒤, 결과를 복사하거나 저장하세요.
  • 기록 저장. 설정 › 일반 › 저장에서 켜면, 렌즈가 읽은 글과 번역을 Markdown과 SRT 파일로 남깁니다.
  • 속도 한눈에 보기. 설정의 엔진 목록 아래에 첫 결과가 나오기까지 걸린 시간과, 그중 기억해 둔 번역에서 바로 나온 비율이 보입니다.

고친 점

  • macOS 글자 인식이 느리거나 멈춰도 계속 읽습니다. 바쁜 Mac에서는 macOS가 글자 인식 모델을 준비하는 데 몇 분이 걸리거나, 끝내 마치지 못하기도 합니다. 이제 Mwoyeo는 켜지자마자 모델을 준비하고, 준비되는 동안 이전 모델로 읽습니다. 모델이 답하면 다시 그 모델로 돌아가고, 어떤 모델도 그 언어를 읽지 못할 때만 알립니다. 줄을 문단으로 묶는 일도 Mwoyeo가 직접 하므로, macOS의 한 부분이 느려도 나머지가 함께 멈추지 않습니다.
  • 렌즈가 "번역 중…"에서 멈추지 않습니다. 모든 번역에 시간 제한을 두었습니다. 멈추거나 실패한 요청은 렌즈를 붙잡지 않고 조금 뒤에 다시 시도합니다. 계속 실패하는 글은 무언가 바뀔 때까지 다시 시도하지 않습니다. 번역 중에 언어를 바꿔도 이전 언어가 되살아나지 않습니다.
  • 외곽선 자막의 모양이 유지됩니다. 외곽선이 있는 자막은 글자 색과 외곽선을 모두 유지하고, 가운데 정렬된 줄은 가운데에 그대로 있습니다.

나아진 점

  • 고품질 모드가 대가를 알려 줍니다. 설명이 "가장 자연스럽지만 가장 느려요, 한 줄에 1초 안팎"으로 바뀌었습니다. 언어 팩이 설치되어 있으면 자동이 가장 빠릅니다.

고마운 분

  • @neulketing 님이 외곽선 자막 수정을 보내 주셨습니다(#1). Mwoyeo에 들어온 첫 외부 기여입니다. 고맙습니다!

설치와 업데이트

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · 또는 아래 디스크 이미지를 내려받으세요(서명·공증 완료).


English

Bring your own translation engine. Apple's on-device translation still works out of the box, with nothing to set up. When you want more natural translations, open Settings › Translation › Add another engine… and connect the one you already use:

  • On this Mac: Ollama or LM Studio. Nothing leaves your Mac.
  • In the cloud: Gemini, OpenAI, Claude, DeepL, DeepSeek, OpenRouter, Groq or Qwen.
  • Your own server: any HTTP endpoint or command.

Paste a key, pick a model, and a sample translation checks the connection. Keys are stored only in the macOS Keychain.

Mwoyeo now runs on macOS 26. Before 26.4 it translates with the language pack. Apple Intelligence's high-fidelity model, and translating without a pack, still need 26.4 or later, so those choices are hidden on older versions.

New

  • Added engines. Once you add one, a switcher appears in the menu bar panel. If an engine fails or stops answering, Mwoyeo quietly says so and translates with Apple in the meantime. A cloud engine receives only the text a lens reads, never the screen image, and the add sheet names the host the text goes to. Copy Setup shares an engine with someone else, without its key. How fast and how good each engine was in our tests: tools/engine-bench/RESULTS.md.
  • Lens menu. Right-click a lens's name tag for Copy Original Text, Copy Translation, Read Aloud and Save Lens Image. Each one can also have a keyboard shortcut in Settings.
  • Languages per app. Remember Languages for … in the lens menu ties the current language pair to that app. Mwoyeo switches to it whenever the app comes to the front.
  • Translate an image. The photo button in the panel opens a window. Drop in a picture or press ⌘V, then copy or save the result.
  • Transcripts. Settings › General › Saving writes what each lens reads, and its translation, to Markdown and SRT files.
  • Speed at a glance. Below the engine list, Settings shows how fast the first result arrives and how much came from memory.

Fixed

  • Reading keeps working when macOS's text recognizer is slow or stuck. On a busy Mac, macOS can take minutes to prepare its text recognition model, or never finish. Mwoyeo now prepares the model as soon as it starts and reads with an older model until it is ready. It switches back once the model answers, and only says something when no model can read your language. Mwoyeo now groups lines into paragraphs itself, so one slow part of macOS can no longer hold up everything else.
  • The lens no longer gets stuck on "Translating…". Every translation now has a time limit. A call that stalls or fails is retried a little later instead of holding up the lens, and text that keeps failing is not retried until something changes. Changing languages during a translation no longer brings back the old language.
  • Outlined subtitles keep their look. Subtitles drawn with an outline keep both their fill and their outline, and centred lines stay centred.

Better

  • High fidelity says what it costs. Its description now reads "the most natural and the slowest, about 1 s a line". Automatic is the fastest when a language pack is installed.

Thanks

  • @neulketing sent the fix for outlined subtitles (#1), the first contribution to Mwoyeo from outside. Thank you!

Install or update

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · or download the disk image below (signed and notarized).

Mwoyeo 1.0.4

Choose a tag to compare

@github-actions github-actions released this 15 Oct 23:38

Heads-up: the lens ring no longer turns. It keeps its colours and holds still, and while the lens reads and translates, its glow breathes. The turning gradient was redrawn on every display frame, so one idle lens kept the window server busy (about 60 % of a CPU core). That was also what made dragging a lens stutter.

Better

  • Dragging a lens is smooth. macOS now moves the lens itself, in step with the pointer, and the translations follow it frame by frame. Before, the lens could stop for half a second while you dragged, then jump to catch up.
  • Lighter on the system: with a lens open, the window server uses less than half the CPU it did in 1.0.3.
  • About now has an email address and an X account for feedback, next to the GitHub, release notes and issue tracker links.

Install or update

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · or download the disk image below (signed and notarized).

Mwoyeo 1.0.3

Choose a tag to compare

@github-actions github-actions released this 15 Oct 21:05

Heads-up: the update check now counts installs. 1.0.2 only asked GitHub for the latest version number. From 1.0.3 the check downloads a small file attached to the release, and two more files: one once ever, one once a month. GitHub's download counts for those files are the install and monthly-use numbers. Nothing that could identify your Mac is sent, and it runs only while the update check is on (Settings › About).

Better

  • Animated emoji, typing indicators and spinners no longer keep a lens busy. Anything that keeps changing in place is left alone. The lens reads it once, after it has been still for three seconds. On a Discord-style chat full of animated emoji, Mwoyeo went from about 100 % of a CPU core to about 5 %. Lenses whose margins reach a menu bar meter calm down the same way. The seamless look now settles even while something on the page is moving.
  • Scrolling: a translation follows the scroll by where its text starts. Before, a long line could be left behind or pop in again when only part of a column was seen to scroll.
  • Show Original (⌃⌥O) is easier to see: the lens ring turns grey, the name tag says Original, and a sweep marks the switch each way.

Install or update

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · or download the disk image below (signed and notarized).

Mwoyeo 1.0.2

Choose a tag to compare

@github-actions github-actions released this 15 Oct 15:08

Heads-up: Add Lens is now ⌃⌥L (it was ⌃⌥T, which Rectangle and Magnet use for "last two thirds"). Pause and Translate Again no longer have a default shortcut; they are in the menu, and you can give any action your own keys in Settings › Shortcuts.

New

  • Window lenses and screen lenses. A lens placed on a window follows it and hides while the window is covered or minimized. Hold ⌥ while placing it to pin it to the screen instead, where it translates whatever is under it. The icon on the lens's name tag shows which kind it is, and clicking it switches.
  • Lens styles (Settings › Appearance): Glow, Subtle (glows only while reading) or Minimal (a faint line; the name tag appears on hover).
  • Shortcuts you can record (Settings › Shortcuts): click a shortcut and press new keys. ⌫ removes it, and esc cancels.
  • Translation memory (Settings › Translation): keep up to 1,000, 5,000 or 20,000 translations for reuse, see how many are held, and clear them. It stays in memory only and is never written to disk.
  • Update check (Settings › About): once a day Mwoyeo asks GitHub for the latest version number, and nothing else. A banner in the menu says when a new version is out. You can turn the check off there. About also links to the repository, the release notes and the issue tracker.

Better

  • Scrolling: the first scroll over a new lens is predicted, so you no longer need a warm-up scroll. A fixed message box at the bottom of a chat no longer drags the translations along while the log scrolls.
  • Fewer repeat translations: switching language, engine or glossary and back reuses earlier translations instead of translating again. Changing the font or box opacity redraws without reading the screen again.
  • Window lenses: when the followed app relaunches, the lens finds its window again. When you close the window it follows, the lens stays hidden rather than jumping to another window of the same app.

Install or update

brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · or download the disk image below (signed and notarized).

Mwoyeo 1.0.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 13:53