github mumu-lhl/Ciyue v2.1.0

4 hours ago

Downloads

Android

Architecture Common APK Full APK
Universal (armeabi-v7a, arm64-v8a, x86_64) Download Download
armeabi-v7a (32-bit ARM) Download Download
arm64-v8a (64-bit ARM) Download Download
x86_64 Download Download

Android Common vs Full: Common uses Android's system folder picker and copies selected dictionaries/audio into app-private storage, so it does not require broad storage access. Full requires the "Manage all files" permission on Android 11+ and reads dictionaries/audio directly from the selected external folder, avoiding the extra copy and saving storage.

Windows

Artifact Download
Installer ciyue-installer.exe
Portable bundle ciyue-windows.zip

Linux

Artifact Download
AppImage Ciyue-latest-x86_64.AppImage
Debian package ciyue-x86_64.deb
RPM package ciyue-x86_64.rpm
Portable tarball ciyue-linux.tar.xz
Flatpak ciyue-x86_64.flatpak

macOS

Requires macOS 12 (Monterey) or later. The disk image is a universal build.

Launch at login needs macOS 13 (Ventura) or later; on macOS 12 the toggle has no effect.

The app is ad-hoc signed. If Gatekeeper reports the app as damaged or unverified, remove the quarantine flag with (or right-click the app and choose Open) after moving it to Applications.

Artifact Download
Disk image ciyue-macos.dmg
Portable bundle ciyue-macos.zip

System requirements

Platform Minimum
Windows Windows 10 version 1809 (LTSC 2019) or later
Linux glibc 2.38 or later (Debian 13, Ubuntu 24.04 or later)

Windows: entries are rendered with Microsoft Edge WebView2. Windows 11 and
most Windows 10 installations already have the Evergreen Runtime through Edge
updates; Windows 10 LTSC and images without Edge do not, and need it installed
from https://go.microsoft.com/fwlink/p/?LinkId=2124703 before the first
launch. Ciyue checks for it at startup and shows a prompt when it is missing.

Linux: the bundle ships its own WebKit, which requires glibc 2.38. Debian 12
(glibc 2.36) and Ubuntu 22.04 (glibc 2.35) cannot load it.

What's Changed in 2.1.0

  • chore(release): 2.1.0 by @mumu-lhl
  • docs: clarify the Android caveat on keyboard shortcuts and sync the English page by @mumu-lhl in #815
  • docs(en): follow the revised Chinese keyboard-shortcuts note on Android by @yx-wh
  • docs(zh): tighten the keyboard-shortcut notes for Android and selection by @yx-wh
  • feat(android): give the full-dev build its own name and icon by @mumu-lhl in #814
  • feat(android): give the full-dev build its own name and icon by @yx-wh
  • fix(word display): refresh the not found page when the group changes by @mumu-lhl in #812
  • fix(word display): refresh the not found page when the group changes by @yx-wh
  • feat(settings): let the reader reorder the dictionary groups by @mumu-lhl in #811
  • feat(settings): let the reader reorder the dictionary groups by @yx-wh
  • docs(release): list the minimum Windows and Linux requirements by @mumu-lhl in #810
  • docs: align English keyboard-shortcuts 'Looking up a selection' with the revised Chinese version by @yx-wh
  • docs: document long-press pronunciation controls and Kiwix ZIM sources by @yx-wh
  • docs(release): list the minimum Windows and Linux requirements by @yx-wh
  • fix(windows): prompt to install WebView2 when the runtime is missing by @mumu-lhl in #809
  • chore(i18n): translate the WebView2 prompt into Chinese by @yx-wh
  • fix(windows): prompt to install WebView2 when the runtime is missing by @yx-wh
  • fix(windows): route dictionary entry/sound link clicks through the JS bridge by @mumu-lhl in #808
  • fix(windows): route dictionary entry/sound link clicks through the JS bridge by @yx-wh
  • fix(i18n, setting): keep the UI usable in the languages Flutter does not translate by @mumu-lhl in #807
  • fix(settings): fall back to what fits when the segmented button runs out of room by @yx-wh
  • test(l10n): check that every locale the app ships has Material localizations by @yx-wh
  • fix(settings): name Gothic in Gothic by @yx-wh
  • fix(l10n): give the languages Flutter does not translate a fallback by @yx-wh
  • fix(word): use a plain back button on the word page by @yx-wh
  • fix(settings): keep a long translation from breaking the navigation bar by @yx-wh
  • fix(l10n): shorten the Gothic labels that overflowed their controls by @yx-wh
  • fix(settings): keep the segmented buttons from squeezing the list tile titles by @yx-wh
  • docs(macos): state the macOS 12 floor and the launch-at-login caveat by @mumu-lhl in #806
  • ci(release): derive the macOS requirement from the Xcode project by @yx-wh
  • docs(macos): state the macOS 12 floor and the launch-at-login caveat by @yx-wh
  • chore(macos): update cnativeapi to 0.5.7 for macOS 12 support by @mumu-lhl in #805
  • chore(macos): update cnativeapi to 0.5.7 for macOS 12 support by @yx-wh
  • fix(settings): make the TTS preview text editable by @mumu-lhl in #804
  • feat(settings): make the TTS preview text editable by @yx-wh
  • feat(pronunciation): quick pronunciation settings from the word page by @mumu-lhl in #803
  • feat(settings): let the TTS voices be reordered and show the current one clearly by @yx-wh
  • fix(word): keep the pronunciation sheet clear of the navigation bar by @yx-wh
  • fix(word): make the long press reachable on touch screens by @yx-wh
  • fix(settings): refresh the TTS language list after adding a voice by @yx-wh
  • fix(settings): expand the dropdowns so long voice names do not overflow by @yx-wh
  • feat(word): open pronunciation settings by long-pressing the speaker by @yx-wh
  • feat(settings): keep several TTS voices and pick the active one by @yx-wh
  • docs(guide): publish the keyboard shortcuts page again by @mumu-lhl in #802
  • docs(guide): publish the keyboard shortcuts page again by @yx-wh
  • fix(linux): keep host desktop-stack libraries out of the Linux bundle by @mumu-lhl in #801
  • docs: record the Linux bundle's host-library boundary by @yx-wh
  • fix(linux): take GTK from the host so desktop input methods work by @yx-wh
  • fix(linux): take the GLib and GStreamer stacks from the host by @yx-wh
  • fix(linux): stop bundling host-coupled Wayland libraries by @yx-wh
  • fix(android): resolve SD-card dictionary folders to paths (fallback to SAF copy) by @mumu-lhl
  • build(macos): lower deployment target to 12.0 to support macOS 12 by @mumu-lhl in #799
  • build(macos): lower deployment target to 12.0 to support macOS 12 by @yx-wh
  • feat(shortcuts): desktop keyboard shortcuts, and the focus handling they need on Linux by @mumu-lhl in #798
  • test: cover the content scale script by @yx-wh
  • fix(linux): scale the entry again after a reload on Android by @yx-wh
  • docs: sync the Chinese guide with the search box behaviour by @yx-wh
  • fix(shortcuts): forward the plain PageUp and PageDown keys by @yx-wh
  • fix(shortcuts): land the focus on the search box the reader last used by @yx-wh
  • fix: send a lookup to the entry page that is on screen by @yx-wh
  • fix(linux): keep the keyboard focus on the entry after a click by @yx-wh
  • refactor(shortcuts): keep the desktop focus path lean by @yx-wh
  • fix(shortcuts): give Ctrl+F the same focus hand-off as Esc by @yx-wh
  • feat(shortcuts): keyboard shortcuts for lookup, tabs, groups and zoom by @yx-wh
  • chore: use upstream hotkey_manager at 5a409ac (drop deleted-branch fork; nativeapi/cnativeapi 0.5.6) by @mumu-lhl
  • chore: bump dict_reader pin to e6854b1 (serialize StarDict concurrent reads) by @mumu-lhl
  • fix(linux): render the WebView on VirGL and drop the unused runner template by @mumu-lhl in #797
  • chore(linux): drop the unused runner template by @yx-wh
  • fix(linux): use the software WebView texture on VirGL by @yx-wh
  • feat(settings): use the dictionary-group icon and label for the sidebar toggle by @mumu-lhl in #796
  • feat(settings): update the sidebar group icon label in every locale by @yx-wh
  • feat(settings): rename the sidebar icon setting and use the group icon by @yx-wh
  • feat(linux): wire native TTS into word pronunciation, TtsHelper, and audio settings (voice picker + backend status) by @mumu-lhl
  • feat(linux): native TTS backends - SSIP client (speech-dispatcher) and espeak-ng runner with fake-transport tests by @mumu-lhl
  • feat(web): support dictionary groups, folding, dark mode, and AI explain/translate by @mumu-lhl
  • feat: online pronunciation settings UI (Wiktionary/Forvo toggles, languages, Forvo API key field) by @mumu-lhl
  • feat: online pronunciation via Wiktionary and Forvo (cached, quota-guarded, pack-first chain) by @mumu-lhl
  • feat(web): add local web query service and browser extension by @mumu-lhl
  • chore(l10n): clean up the ARB files, guard them in CI, and complete the German translation by @mumu-lhl in #793
  • chore(ui): show every language name in its own script by @yx-wh
  • chore(l10n): call every prompt a "Prompt" in German by @yx-wh
  • chore(ci): run gen-l10n before the ARB structure check by @yx-wh
  • feat(l10n): complete the German translation by @yx-wh
  • chore(l10n): drop dead keys and add an ARB structure check by @yx-wh
  • feat(word-page): add the dictionary-group switcher to word pages by @mumu-lhl in #792
  • fix(word-page): add the AI chat button to the expansion app bar by @yx-wh
  • fix(word-page): use the book icon for every group switcher by @yx-wh
  • fix(word-page): restore the group-switch fixes and wait for entries by @yx-wh
  • fix(word-page): keep the previous entry while the new group loads by @yx-wh
  • fix(word-page): reset tab controller and cached lookups on group switch by @yx-wh
  • fix(word-page): wait for the group switch before caching empty content by @yx-wh
  • fix(word-page): rebuild entry views after a dictionary-group switch by @yx-wh
  • feat(word-page): show the dictionary-group switcher on word pages by @yx-wh
  • test: rename the duplicated kana test in dictionary_lookup_test.dart by @mumu-lhl
  • chore(deps-dev): bump esbuild from 0.28.0 to 0.28.1 in /docs in the npm_and_yarn group across 1 directory by @mumu-lhl in #744
  • feat(desktop): command line arguments and ciyue:// URL scheme by @mumu-lhl in #791
  • docs(desktop): document command line, ciyue:// links and editor integration by @yx-wh
  • feat(desktop): add command line diagnostics and readable file logs by @yx-wh
  • feat(desktop): add command line arguments and ciyue:// URL scheme by @yx-wh
  • feat(lookup): try full-width and half-width spellings on lookup by @mumu-lhl in #790
  • Merge remote-tracking branch 'fork/feat/lookup-variants' into feat/lookup-variants by @yx-wh
  • Merge branch 'main' into feat/lookup-variants by @mumu-lhl
  • fix(stardict): resolve the headword before reading an entry by @yx-wh
  • fix(lookup): fold width in search suggestions by @yx-wh
  • test(lookup): cover width folding and case×width crossing by @yx-wh
  • feat(lookup): enumerate full-width and half-width spellings on lookup by @yx-wh
  • feat: per-dictionary full-text index management in the properties page (status, size, rebuild, delete) by @mumu-lhl
  • fix: full-text search review fixes (ready-state counts, broken-store recovery, rune-safe truncation, status-row overflow) by @mumu-lhl
  • feat: full-text search over definitions (FTS5 indexes built lazily per dictionary, with UI) by @mumu-lhl
  • fix: ZIM resolveKeys titles via entry titles, bump dict_reader to 1198a8f (file lock, redirect reads, XHTML indexing, version gate) by @mumu-lhl
  • fix(dictionaries): don't hang close() on a never-initialized dictionary by @mumu-lhl
  • refactor(dictionaries): extract BaseLoadedDictionary and unify resource loading by @mumu-lhl
  • feat(dictionaries): add support for ZIM dictionary format by @mumu-lhl
  • ci(check): install Linux dependencies for native assets by @mumu-lhl
  • docs: add a guide to the MDict and StarDict formats by @mumu-lhl in #788
  • Merge branch 'main' into docs/dictionary-formats by @mumu-lhl
  • feat(word-display): offer hiragana long-vowel spellings when nothing matches by @mumu-lhl in #789
  • feat(word-display): offer hiragana long-vowel spellings when nothing matches by @yx-wh
  • fix(stardict): restore audio and video from converter media tags by @mumu-lhl in #787
  • fix(stardict): restore audio and video from converter media tags by @yx-wh
  • fix(linux): show the Ciyue icon in the taskbar and window switcher by @mumu-lhl in #786
  • fix(linux): publish a taskbar icon and map the app to its desktop file by @yx-wh
  • fix(linux): declare assets/icon.png so the desktop tray icon loads by @yx-wh
  • fix(hunspell): make morphology consistent for the first lookup by @mumu-lhl in #785
  • fix(dictionaries): drop cached lookups once the group has loaded by @yx-wh
  • fix(hunspell): wait for the first load before answering queries by @yx-wh
  • feat(word-display): resolve anchors in dictionary entry links by @mumu-lhl in #784
  • test(word-display): cover anchors on bword links by @yx-wh
  • test(dictionaries): space the anchor targets a screenful apart by @yx-wh
  • test(dictionaries): give the anchor fixtures distinct stems by @yx-wh
  • fix(word-display): keep an entry anchor inside the dictionary that owns it by @yx-wh
  • test(browser): cover entry anchors and in-place scrolling by @yx-wh
  • test(dictionaries): add MDict and StarDict entry-anchor fixtures by @yx-wh
  • feat(word-display): resolve entry anchors with a ## escape for literal hashes by @yx-wh
  • docs: add dictionary formats guide and link schemes deep dive by @yx-wh
  • docs: add a guide to the MDict and StarDict formats by @yx-wh
  • fix(word-display): play sound:// links from StarDict dictionaries by @mumu-lhl in #782
  • docs(pronunciation): mention StarDict entry audio by @yx-wh
  • fix(word-display): play sound:// links from StarDict dictionaries by @yx-wh
  • feat(cloud-sync): carry StarDict dictionaries through cloud sync by @mumu-lhl in #781
  • feat(cloud-sync): carry StarDict dictionaries through cloud sync by @yx-wh
  • fix(word-display, word-split): widen the bounds that kept German out of the lookup by @mumu-lhl in #780
  • fix(word-split): raise the bounds so long German compounds split again by @yx-wh
  • fix(word-display): read a phrasal verb out of a sentence limitation changed to suit German better by @yx-wh
  • feat(audio): accept .zip and .zips pronunciation packs by @mumu-lhl in #779
  • feat(audio): accept .zip and .zips pronunciation packs by @yx-wh
  • fix(audio): make pronunciation packs usable by @mumu-lhl in #778
  • fix(audio): make pronunciation packs usable by @yx-wh
  • fix(dictionaries): keep enables made while a group is loading by @mumu-lhl in #777
  • fix(dictionaries): keep enables made while a group is loading by @yx-wh
  • fix(settings): stop deleting StarDict dictionaries that are healthy by @mumu-lhl in #776
  • fix(settings): stop deleting StarDict dictionaries that are healthy by @yx-wh

Full Changelog: v2.0.1...v2.1.0

Don't miss a new Ciyue release

NewReleases is sending notifications on new releases.