Repository navigation
Mwoyeo 1.1.5
한국어
렌즈마다 자기 창의 설정으로 번역합니다. 이름과 용어를 앱·창마다 따로 기억하고, 엔진에 힌트로 줄지 원문에서 바로 바꿀지 고를 수 있습니다.
새 기능
- 프로필. 언어, 엔진, 메모, 이름과 용어를 묶어 이름을 붙이고, 어디서 쓸지 조건(앱, 창 제목에 든 문구, 둘 다)을 답니다. 렌즈는 덮은 창에 맞는 프로필을 좁은 것부터 골라 씁니다(자동). 메뉴바에서 모든 렌즈를, 렌즈 메뉴에서 그 렌즈만 한 프로필에 고정할 수도 있습니다. 1.1.4의 앱별 메모리는 그대로 프로필이 됩니다.
- 힌트와 치환. 이름·용어 줄마다 엔진에 힌트로 보낼지(토큰 사용), 번역 전에 원문에서 바꿀지(토큰 0), 둘 다 할지 고릅니다. Apple Translation에 이름을 지키게 하는 방법은 치환뿐이라, Apple이 번역하는 곳에서는 "이름에 권장"이 붙습니다. 1.1.4에서 Apple 스위치를 켰다면, Apple이 번역하던 프로필의 이름은 '둘 다'로, 추가한 엔진을 쓰던 프로필은 지금처럼 힌트로 옮겨집니다. 시험에서 LLM 엔진은 힌트만 줄 때 이름 줄 번역이 더 나았습니다.
- 다시 쓰기 규칙과 스크립트. 번역 전 원문이나 번역 후 결과에서 글자를 찾아 바꾸는 규칙을 프로필마다 32개까지 둡니다(정규식 가능). 더 필요하면 JavaScript로
before(line, ctx)·after(src, dst, ctx)를 씁니다. 스크립트는 네트워크도 파일도 없는 별도 서비스에서 줄마다 50 ms 안에 돌고, 넘기면 꺼집니다. 모두 이 Mac에서 처리되어 토큰이 들지 않습니다. - 탭마다 기본값으로 되돌리기. 설정 탭에서 기본값과 다른 항목이 있을 때만 "기본값으로 되돌리기…"가 보입니다. 무엇이 바뀌고 무엇이 그대로인지(권한 동의, 메모리, 기록) 보여 준 뒤 되돌리고, 바로 실행 취소할 수 있습니다.
- 렌즈마다 자기 창의 설정. 앱 A를 앞에 두고 앱 B 위에 놓은 렌즈는 B의 언어와 엔진으로 번역합니다.
- 렌즈 메뉴의 "<앱> 메모리…" 와 Sent: 줄의 출처("이름 3개(이 앱 2, 모든 앱 1)").
- 에이전트(MCP). Claude Code 같은 에이전트가 프로필을 읽고 고치고 고정하며,
test_rules로 규칙과 스크립트를 엔진 없이 시험하고,reset_settings로 탭을 기본값으로 되돌립니다. - 렌즈 숨기기. 한 번에 모든 렌즈를 화면에서 치웠다가 줄과 함께 되돌립니다. 숨긴 동안은 읽지도 번역하지도 않습니다.
엔진
- Claude 5 엔진이 생각(thinking) 없이 바로 답하고, 구조화된 응답을 씁니다. 1.1.4의 알려진 문제를 고쳤습니다.
- DeepL Free 프리셋. 문맥과 메모리를 DeepL 지시문으로 보냅니다(시험에서 이름 8/8 유지).
- 기록에 실제 번역한 엔진이 남습니다. 엔진이 쉬는 동안 Apple이 번역한 줄은 Apple로 적힙니다.
고친 점
- 문단 중간 줄이 영어로 남던 문제. 글자 인식 모델을 처음 준비할 때 드물게 잘못 준비되면, 특정 폭의 줄을 통째로 읽지 못했습니다. 렌즈 속 문단에서 한두 줄이 번역되지 않고 영어로 남았고, 다시 준비할 때까지 계속 그랬습니다. 이제 준비가 끝나면 여러 폭의 줄로 한 번 확인하고, 빠지는 줄이 있으면 다시 준비합니다.
- 논문의 수식 줄이 번역되던 문제. 따로 떨어진 수식 줄에 "median", "prompt" 같은 단어가 하나 섞여 있으면 문장으로 보고 번역해 수식 위에 덮어 그렸습니다. 이제 본문에서 떨어져 있고 수학 기호가 있는 줄은 원래 모습 그대로 둡니다.
- 손쉬운 사용. 메모리 시트의 "사용자화", "스크립트" 펼치기와 설정의 프로필 행이 VoiceOver와 에이전트의 누르기에 반응하지 않던 문제를 고쳤습니다.
다듬은 화면
- 메뉴바, 설정, 온보딩, 엔진 시트를 Apple 디자인 지침에 맞춰 손봤습니다. 아이콘 버튼은 누르기 쉬운 크기(22 pt)가 되었고, 렌즈가 없을 때 쓸 수 없는 버튼은 흐리게 보입니다. 메뉴바에서 ⌘,와 ⌘Q가 됩니다.
설치와 업데이트
brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · 또는 아래 디스크 이미지를 내려받으세요(서명·공증 완료).
English
Each lens translates with its own window's settings. Names and terms are kept per app and window, and you choose whether they go to the engine as hints or are replaced in the source.
New
- Profiles. Name a set of languages, engine, note, and names and terms, and say where it applies: an app, a phrase in the window title, or both. Each lens picks the profiles that match the window it covers, narrowest first (Auto). You can pin every lens from the menu bar, or one lens from its menu. 1.1.4's per-app memory becomes profiles as is.
- Hints and replacement. Each name or term row goes to the engine as a hint (costs tokens), is written into the source before translation (no tokens), or both. Replacement is the only way to keep a name with Apple Translation, so rows where Apple translates say "recommended for names". If you had the Apple switch on in 1.1.4, names in profiles Apple translated move to both, and profiles on an added engine keep hints: in our test, LLM engines translated name lines better with hints alone.
- Rewrite rules and scripts. Up to 32 find-and-replace rules per profile change the source before translation or the result after it (regular expressions allowed). For more, write
before(line, ctx)andafter(src, dst, ctx)in JavaScript. Scripts run in a separate service with no network and no files, 50 ms a line, and turn off if they take longer. All of it runs on this Mac at no token cost. - Restore Defaults per tab. "Restore Defaults…" appears only on a Settings tab that differs from its defaults. It shows what changes and what is kept (consent, memory, logs), then restores, with Undo right there.
- Each lens, its own window's settings. A lens over app B while app A is in front translates with B's languages and engine.
- "Memory for …" in the lens menu, and the Sent: line says where its names come from ("3 names (2 this app, 1 all apps)").
- Agents (MCP). An agent such as Claude Code reads, edits and pins profiles, tries rules and scripts with
test_ruleswithout an engine, and restores a tab withreset_settings. - Hide Lenses. One action takes every lens off the screen and brings them back with their lines; hidden lenses read nothing.
Engines
- Claude 5 engines answer without thinking and use structured replies; the known issue of 1.1.4 is fixed.
- DeepL Free preset, with context and memory sent as DeepL instructions (8/8 names kept in our test).
- The log names who really translated: a line Apple translated while the engine rested is logged as Apple.
Fixed
- A line in the middle of a paragraph stayed in English. On rare occasions the text recognizer came out of its first preparation unable to read lines of a certain width, so one or two lines of a paragraph under a lens stayed untranslated until it was prepared again. Now it checks itself on lines of every width after preparing, and prepares again if any are missing.
- Equation rows in papers were translated. A displayed equation row with one word in it, such as "median" or "prompt", was read as a sentence, translated and drawn over the equation. A row set apart from the text that holds mathematical signs now stays as it is.
- Accessibility. "Customize" and "Script" in the Memory sheet and the profile rows in Settings now answer a press from VoiceOver and agents.
Polished screens
- The menu bar panel, Settings, onboarding and the engine sheet follow Apple's guidelines more closely: 22 pt icon buttons, buttons that cannot act are dimmed when there is no lens, and ⌘, / ⌘Q work in the menu bar panel.
Install and update
brew install midagedev/tap/mwoyeo · brew upgrade mwoyeo · or download the disk image below (signed and notarized).