Ceylan — Changelog ================== 1.4.0 — 2026-06-12 ------------------ Two ways to look at the same passage from more than one angle. Added - Translate alternatives. A small wand button sits above each target paragraph in Review mode (and on every MLX/Ollama column in Compare). Click it and Ceylan re-translates that one paragraph three ways at three temperatures — faithful (0.2), balanced (0.5), creative (0.8). Each card has a "Try again" button if you want a fresh take on just that variant, and "Use this" drops the picked translation back into your paragraph. Apple Translation is deterministic, so the button is hidden when Apple is the active engine. - Compare with a second MLX model. A new "+ Add MLX model" button in Compare mode lets you load any other installed MLX model into its own column. MLX runs one model at a time, so adding the new one swaps it in and translates against the same source — but the previously-loaded column keeps the translation it already produced, read-only. Up to four columns total: Apple + two MLX models + Ollama. Fixed - The first two alternative variants used to fail with "Engine is not ready" the first time you opened the sheet right after a model swap; "Try again" worked around it. Ceylan now retries a few times under the hood, so the sheet just works on first open. Other - Dutch and Turkish translations for all the new strings. 1.3.0 — 2026-06-07 ------------------ A bigger release with two new core features, a friendlier first run, and a fresh face. Added - Compare mode. A new "Compare" toggle in the toolbar runs Apple Translation, your MLX model, and Ollama in parallel on the same source, side by side. Columns scroll in lockstep, paragraph by paragraph. A Draft pane underneath shows what you're building — pick paragraphs with "Use this paragraph" or take a whole column with one click. Apple Translation auto-starts since it's instant; MLX and Ollama wait for an explicit Translate click. If only one engine is available, a banner offers a one-click route to the Models window so you can add another. - First-launch wizard. Replaces the old single-screen welcome with a five-step guided setup: privacy intro → pick your languages → choose Apple Translation or download an MLX model sized to your Mac's RAM → optional download with progress → a try-it-out step that drops a short sample sentence into the source pane in your chosen language. Existing users won't see it. - Language coverage per model in the Models window. Each recommended model now shows the languages it officially supports (Llama-3.2, for instance, only covers six of Ceylan's sixteen), so you can spot a misfit before you download. - A new app icon — a gazelle silhouette with a moon — replacing the antelope. Also a nod to the moon easter egg. Fixed - Compare mode could show Apple Translation twice when Apple was the active engine. The duplicate column is gone. - The Review toolbar button's label wasn't translated. Now it is, in Dutch and Turkish. Other - Dutch and Turkish translations for all the new strings: wizard copy, Compare column buttons, Draft pane, the "Add another engine" banner, the four Review toggle labels, and the language-coverage subtitle. 1.2.2 — 2026-06-07 ------------------ A handful of improvements around picking and downloading MLX models: Added - More pre-tested models in the Models window: Llama-3.2-3B, Mistral-Nemo Instruct, alongside the existing TranslateGemma 4B/12B and Qwen 4B/7B picks. - The Models window now splits its suggestions into two sections: "Recommended for this Mac" (models that fit in your RAM) and "Larger than this Mac's RAM" (visible but flagged), so you can see what's available without scrolling past unusable options. Fixed - Pre-flight check before download. Ceylan now reads just a few KB of the model's config.json from Hugging Face before pulling any weights, and refuses to download models whose architecture the MLX runner can't load. Stops you from spending bandwidth on multi-gigabyte downloads that will only fail at first use. Other - Dutch and Turkish translations for the new menu items and section headings. 1.2.1 — 2026-06-07 ------------------ Small follow-up to 1.2.0: - Dutch ("Zoek naar updates…") and Turkish ("Güncellemeleri Denetle…") translations for the Check for Updates menu item. 1.2.0 — 2026-06-07 ------------------ The big news this release: Ceylan can now update itself. Once you're on 1.2.0, future versions arrive in the background and a friendly panel asks before installing. Along with that, a handful of small improvements to language selection. Added - Automatic updates via Sparkle. A "Check for Updates…" menu item lives under the app menu, and Ceylan also looks for new versions in the background once a day. Updates are cryptographically verified before they're installed. - Regional English variants in the language pickers: English (USA), English (UK), English (AU), and English (CA), alongside the existing generic English. Apple Translation uses the right regional model; MLX and Ollama prompts say "American English", "British English", etc. Glossaries are kept separately per variant. - Source and target language are now remembered between launches. On a fresh install Ceylan picks your macOS preferred language for the source and a sensible counterpart for the target instead of defaulting to Turkish for everyone. - Language detection on paste and typing. The same blue "detected" pill that appears on file import now also pops up when you paste or type a substantial passage in a different language, and switches the source picker for you. Only kicks in on fresh entries — loading a saved translation never overrides its stored language. - The Translate button is now styled as the primary action: filled with the accent colour when there's text to translate, dimmed when there isn't. Fixed - It's no longer possible to pick the same base language on both sides. Combinations like English → British English, which Apple Translation refuses, are hidden from the pickers, and any previously-saved bad pair is healed on launch. 1.1.0 — 2026-05-15 ------------------ Following the first round of real-world testing, this release addresses the most-visible issues we ran into and adds a few small comforts. Fixed - Apple Translation: the translator could only translate once per launch and required restarting the app. It now correctly re-arms on every click for any language pair. - MLX models: translation stopped after the first chunk and never advanced to the next. The engine now correctly transitions back to .ready before the user is told the stream finished. - MLX (translategemma family): the model would run away producing pages of nonsense output ("Happy hour" pretexts, advertising copy, etc.). Two underlying causes addressed: a broken Jinja chat template now has a manual Gemma chat-template fallback so the model knows when to stop, and our stop-sequence detector now fires on the first marker (previously needed two occurrences and never fired). - Loading indicator: selecting an MLX model showed no feedback even though loading takes several seconds. The bottom bar now shows "Loading …" with a live progress bar from the moment a model is chosen until it's ready. - Window layout: the bottom bar was overlapping the editor area, hiding the last lines of source/translation as well as the per-pane word and character counts. The detail layout was restructured so the bottom bar takes its own slice and never covers content. - Models dropdown: installed MLX models were missing from the main- window dropdown until the Models window had been opened. The disk scan now runs on launch. - Apple Translation: localized translategemma's chat template fallback with the same anti-injection guard as the main prompt so titles like "Happy hour" are no longer interpreted as instructions. - Ollama: silenced IPv6 connection-refused noise in the Xcode console by binding directly to 127.0.0.1. Added - Clear button in the source pane (⌘⌫) to wipe both panes and any lingering error in one click. - Review mode now hides the continuous source pane entirely and gives the paragraph-aligned source/translation columns the full window width — three equal columns at default zoom. - Default window size bumped to 1280 × 820 so long literary passages have room to breathe. - Translate button is disabled during model loading so accidental clicks no longer happen. Other - Models dropdown shows installed local models the moment the app launches. - Console output is much cleaner for support sessions. 1.0.0 — 2026-05-14 ------------------ Initial release. Ceylan is a macOS app for translating literary work entirely on-device. Made first for one translator in Amsterdam, then opened up. Engines - Apple Translation (macOS 14.4+) — built-in, instant, offline once language packs are downloaded. - MLX models — Apple Silicon-optimized translation models such as translategemma-4b/12b and Qwen running locally via Apple's MLX. - Ollama — optional integration for users running their own local Ollama instance with models such as aya-expanse:8b. Languages - Sixteen languages, pairable in any direction: Turkish, English, Dutch, French, German, Spanish, Italian, Portuguese, Polish, Russian, Greek, Arabic, Hebrew, Japanese, Korean, Chinese. Workflow - Side-by-side source / translation editors with live word and character counts. - Review mode for paragraph-aligned editing: refine each translated paragraph next to its source. - Glossary per language pair — character names and recurring terms rendered consistently across every chunk. - History sidebar — every translation kept locally, searchable, never synced. - Import: .txt, .md, .rtf, .docx, .doc, .html, .htm, .odt, .pages (drag-and-drop or file picker). - Export: .txt, .md, .docx, .rtf, .pages. Localization - Full Dutch and Turkish translations; system-language aware. Privacy - All translations happen on the user's Mac. No analytics, no telemetry, no accounts, no internet calls during translation. Model downloads (one-time) go directly to Hugging Face or Ollama's registry. Other niceties - Drag-and-drop files onto the source pane. - ⇧⌘Y to swap languages. - ⌘+ / ⌘− to adjust editor font size; ⌘0 to reset. - ⌘R to toggle Review. - ⌘C to copy translation, with a brief "Copied!" confirmation. - A small moon for Ahu. Made with love in Amsterdam Noord.