diff --git a/README.md b/README.md
index cd6b4a89..e271736a 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ A **highly extensible** Markdown editor, designed for productivity. **[Download]
[](https://apps.apple.com/cn/app/yank-note/id1551528618) [Not recommended](https://github.com/purocean/yn/issues/65#issuecomment-1065799677)
-English | [中文说明](./README_ZH-CN.md)
+English | [中文说明](./README_ZH-CN.md) | [Русский](./README_RU.md)
[toc]{level: [2]}
@@ -76,12 +76,17 @@ For more information on how to use the following functions, please see [characte
## Changelogs
-### [v3.75.4](https://github.com/purocean/yn/releases/tag/v3.75.4) 2024-08-06
+### [v3.76.1](https://github.com/purocean/yn/releases/tag/v3.76.1) 2024-09-06
-[Windows](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-win-x64-3.75.4.exe) | [macOS arm64](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-mac-arm64-3.75.4.dmg) | [macOS x64](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-mac-x64-3.75.4.dmg) | [Linux AppImage](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-linux-x86_64-3.75.4.AppImage) | [Linux deb](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-linux-amd64-3.75.4.deb)
+[Windows](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-win-x64-3.76.1.exe) | [macOS arm64](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-mac-arm64-3.76.1.dmg) | [macOS x64](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-mac-x64-3.76.1.dmg) | [Linux AppImage](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-linux-x86_64-3.76.1.AppImage) | [Linux deb](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-linux-amd64-3.76.1.deb)
-1. fix: Correct the error in detecting supported file types.
-2. fix: Resolve the issue where the shortcut key triggers an accent key and inserts additional characters in the editor on macOS.
+1. feat: Added support for the Russian language
+2. feat: Added an entry point for usage guidance
+3. feat: Optimized the completion of ordered list numbers
+4. feat: Added `{docHash}` placeholder to the image save directory configuration
+5. fix: Fixed an issue where the input box might not be focusable on Windows
+6. fix: Fixed the issue of incorrect read-only status in the editor under certain conditions
+7. fix: Fixed the issue of incorrect size calculation for Mermaid rendering under certain conditions
[More release notes](https://github.com/purocean/yn/releases)
diff --git a/README_RU.md b/README_RU.md
new file mode 100644
index 00000000..9a447b86
--- /dev/null
+++ b/README_RU.md
@@ -0,0 +1,82 @@
+# Yank Note
+
+**Гибкий, расширяемый** редактор Markdown, создан для повышения производительности. **[Скачать](https://github.com/purocean/yn/releases)** | **[Попробовать онлайн >>>](https://demo.yank-note.com/)**
+
+
+[](https://apps.apple.com/cn/app/yank-note/id1551528618) [Не рекомендуется](https://github.com/purocean/yn/issues/65#issuecomment-1065799677)
+
+[English](./README.md) | [中文说明](./README_ZH-CN.md) | Русский
+
+[toc]{level: [2]}
+
+
+
+## Особенности
+
+- **Простота использования:** Используется ядро *Monaco*, оптимизированное для редактирования в формате Markdown, и возможности редактирования такие же, как у VSCode.
+- **Мощный:** Поддержка контроля версий; в документ можно встраивать апплеты, запускаемые блоки кода, таблицы, PlantUML, Drawio, макрозамены и т.д.; поддержка автодополнения [OpenAI](https://openai.com).
+- **Высокая совместимость:** Данные сохраняются в виде локальных файлов Markdown, а функции расширения реализованы в оригинальном синтаксисе Markdown, насколько это возможно.
+- **Расширение плагинов:** Поддержка пользователей в написании собственных плагинов для расширения функциональности редактора.
+- **Поддержка шифрования:** Используйте шифрование для сохранения приватных файлов, таких как номер счета, а пароль может быть установлен отдельно для каждого файла.
+
+## Внимание
+
+- Ради большей расширяемости Yank Note жертвует защитой безопасности (выполнение команд, произвольное чтение и запись файлов). Если вы хотите использовать его для открытия постороннего файла Markdown, ⚠️**убедитесь, что содержимое файла заслуживает доверия**⚠️.
+- Шифрование и дешифрование зашифрованных файлов выполняется на клиентской стороне. Пожалуйста, **убедитесь, что вы помните свой пароль**. Если пароль утерян, его можно только взломать.
+
+## Основнве функции
+
+Более подробную информацию об использовании следующих функций см. в разделе [описание основных функций](./help/FEATURES.md)
+
+- **Синхронная прокрутка:** область редактирования и область предварительного просмотра прокручиваются синхронно, а область предварительного просмотра можно прокручивать независимо
+- **Конспект:** быстрый переход к соответствующему месту документа через конспект в области предварительного просмотра
+- **Управление версиями:** поддержка истории документа
+- **Шифрование:** файлы, заканчивающиеся на `.c.md`, обрабатываются как зашифрованные
+- **Автосохранение:** автоматическое сохранение файлов после редактирования с напоминанием в строке заголовка для несохраненных файлов (зашифрованные документы не сохраняются автоматически)
+- **Редактирование:** автоматическое заполнение списка
+- **Вставка изображений:** вы можете быстро вставлять изображения из буфера обмена и вставлять их как файлы или Base64
+- **Вложения:** вы можете добавлять вложения в документ и открывать их в операционной системе щелчком мыши
+- **Выполнение кода:** поддержка запуска JavaScript, PHP, nodejs, Python, кода bash
+- **Список задач:** поддержка отображения хода выполнения задач в документе. Щелкните, чтобы быстро переключить статус задачи
+- **Быстрое открытие:** вы можете использовать сочетание клавиш для открытия панели переключения файлов, чтобы быстро открывать файлы, помеченные файлы и выполнять полнотекстовый поиск по содержимому файлов
+- **Интегрированный терминал:** поддержка открытия терминала в редакторе для быстрого переключения текущего рабочего каталога
+- **Katex:** поддержка выражений katex
+- **Стили:** Markdown использует стили и функции GitHub
+- **Репозиторий:** можно определить несколько расположений данных для организации документов
+- **Преобразование внешних ссылок:** преобразование внешних ссылок или изображений Base64 в локальные изображения
+- **Разрешение HTML:** вы можете использовать HTML-код непосредственно в документе или использовать сочетания клавиш для копирования и вставки HTML в Markdown
+- **Экспорт в несколько форматов:** backend использует pandoc в качестве конвертера
+- **TOC:** напишите `[toc]{type:** "ol", level:** [1,2,3]}` для генерации TOC (Table Of Content, оглавление), где вам нужно сгенерировать его
+- **Изменить ячейку таблицы:** дважды щелкните ячейку таблицы для быстрого редактирования
+- **Копирование ссылки на заголовок:** копирование пути ссылки на заголовок в буфер обмена для легкой вставки в другие файлы
+- **Встроенные апплеты:** документ поддерживает встроенные HTML-аплеты
+- **Встроенная графика PlantUML:** документ поддерживает встроенную графику plantUML
+- **Встроенная графика drawio:** документ поддерживает встроенную графику drawio
+- **Встроенная графика ECharts:** документ поддерживает встроенную графику Echarts
+- **Встроенная графика Mermaid:** документ поддерживает встроенную графику Mermaid
+- **Встроенные таблицы Luckysheet:** документ поддерживает встроенные таблицы Luckysheet
+- **Mind map:** вложенный список может быть отображен в виде интеллект-карты
+- **Запись атрибутов элемента:** любой атрибут элемента может быть настроен
+- **Улучшение таблиц:** поддержка заголовка таблицы с несколькими строками текста, списка и других функций
+- **Ссылка на документ:** поддержка ссылок на другие документы в документе и перехода друг к другу
+- **Сноска:** поддержка написания сносок в документе
+- **Пользовательский контейнер:** поддержка пользовательских контейнеров, аналогичных VuePress по умолчанию темы
+- **Макросы:** поддержка встроенных выражений JavaScript для динамической замены содержимого документа
+- **Служба хостинга изображений:** поддержка службы хостинга изображений [PicGo](https://picgo.github.io/PicGo-Doc/)
+- **OpenAI:** поддержка автодополнения [OpenAI](https://openai.com)
+- **Пользовательские плагины:** поддержка написания плагинов JavaScript для расширения функциональности редактора. Плагин находится в `home directory/plugins`. См. [руководство по разработке плагинов](./help/PLUGIN.md)
+
+## Скриншоты
+
+
+
+
+
+
+
+
+## Поддержка
+
+Wechat Group
+
+
diff --git a/README_ZH-CN.md b/README_ZH-CN.md
index d63ea7dd..b0911d91 100644
--- a/README_ZH-CN.md
+++ b/README_ZH-CN.md
@@ -4,7 +4,7 @@
[](https://apps.apple.com/cn/app/yank-note/id1551528618) [Mac App Store 版本说明](https://github.com/purocean/yn/issues/65#issuecomment-1065799677)
-[English](./README.md) | 中文说明
+[English](./README.md) | 中文说明 | [Русский](./README_RU.md)
[toc]{level: [2]}
@@ -76,12 +76,17 @@
## 更新日志
-### [v3.75.4](https://github.com/purocean/yn/releases/tag/v3.75.4) 2024-08-06
+### [v3.76.1](https://github.com/purocean/yn/releases/tag/v3.76.1) 2024-09-06
-[Windows](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-win-x64-3.75.4.exe) | [macOS arm64](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-mac-arm64-3.75.4.dmg) | [macOS x64](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-mac-x64-3.75.4.dmg) | [Linux AppImage](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-linux-x86_64-3.75.4.AppImage) | [Linux deb](https://github.com/purocean/yn/releases/download/v3.75.4/Yank-Note-linux-amd64-3.75.4.deb)
+[Windows](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-win-x64-3.76.1.exe) | [macOS arm64](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-mac-arm64-3.76.1.dmg) | [macOS x64](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-mac-x64-3.76.1.dmg) | [Linux AppImage](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-linux-x86_64-3.76.1.AppImage) | [Linux deb](https://github.com/purocean/yn/releases/download/v3.76.1/Yank-Note-linux-amd64-3.76.1.deb)
-1. fix: 修复支持的文件类型检测错误
-2. fix: 修复 macOS 上快捷键触发重音键会在编辑器插入额外字符问题
+1. feat: 增加俄语语言支持
+2. feat: 增加使用指引帮助入口
+3. feat: 优化有序列表序号补全
+4. feat: 图片保存目录配置增加 `{docHash}` 占位符
+5. fix: 修复 Windows 上可能出现输入框无法聚焦的问题
+6. fix: 修复某些情况下编辑器只读不正确问题
+7. fix: 修复某些情况下 Mermaid 渲染尺寸计算不正确问题
[更多发布说明](https://github.com/purocean/yn/releases)
diff --git a/package.json b/package.json
index fd9f30b4..a8871a2c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "yank.note",
- "version": "3.75.4",
+ "version": "3.76.1",
"description": "Yank Note: A highly extensible Markdown editor, designed for productivity.",
"main": "dist/main/app.js",
"license": "AGPL-3.0",
diff --git a/scripts/copy-assets.js b/scripts/copy-assets.js
index 43d894a8..0ce7015d 100644
--- a/scripts/copy-assets.js
+++ b/scripts/copy-assets.js
@@ -21,3 +21,8 @@ fs.writeFileSync(path.join(__dirname, '..', './help/README.md'), md)
readme = path.join(__dirname, '..', 'README_ZH-CN.md')
md = fs.readFileSync(readme).toString('UTF-8').replace(/\]\(\.\/help\//ig, '](./').replace(/src="\.\/help\//ig, 'src="./')
fs.writeFileSync(path.join(__dirname, '..', './help/README_ZH-CN.md'), md)
+
+// copy README_RU.md
+readme = path.join(__dirname, '..', 'README_RU.md')
+md = fs.readFileSync(readme).toString('UTF-8').replace(/\]\(\.\/help\//ig, '](./').replace(/src="\.\/help\//ig, 'src="./')
+fs.writeFileSync(path.join(__dirname, '..', './help/README_RU.md'), md)
diff --git a/src/main/app.ts b/src/main/app.ts
index 1b4616c3..2a5e0b7f 100644
--- a/src/main/app.ts
+++ b/src/main/app.ts
@@ -603,6 +603,37 @@ if (!gotTheLock) {
app.on('web-contents-created', (_, webContents) => {
electronRemote.enable(webContents)
+ // fix focus issue after dialog show on Windows.
+ webContents.on('frame-created', (_, { frame }) => {
+ frame.on('dom-ready', () => {
+ frame.executeJavaScript(`if ('ctx' in window && ctx?.env?.isWindows) {
+ window._FIX_ELECTRON_DIALOG_FOCUS ??= function () {
+ setTimeout(() => {
+ ctx.env.getElectronRemote().getCurrentWindow().blur();
+ ctx.env.getElectronRemote().getCurrentWindow().focus();
+ }, 0);
+ };
+
+ if (!window._ORIGIN_ALERT) {
+ window._ORIGIN_ALERT = window.alert;
+ window.alert = function (...args) {
+ window._ORIGIN_ALERT(...args);
+ window._FIX_ELECTRON_DIALOG_FOCUS();
+ };
+ }
+
+ if (!window._ORIGIN_CONFIRM) {
+ window._ORIGIN_CONFIRM = window.confirm;
+ window.confirm = function (...args) {
+ const res = window._ORIGIN_CONFIRM(...args);
+ window._FIX_ELECTRON_DIALOG_FOCUS();
+ return res;
+ };
+ }
+ }`)
+ })
+ })
+
webContents.setWindowOpenHandler(({ url }) => {
if (url.includes('__allow-open-window__')) {
return { action: 'allow' }
diff --git a/src/main/server/index.ts b/src/main/server/index.ts
index dda4fa38..0825e7cd 100644
--- a/src/main/server/index.ts
+++ b/src/main/server/index.ts
@@ -759,7 +759,7 @@ const server = (port = 3000) => {
}
})
- const host = config.get('server.host', 'localhost')
+ const host = config.get('server.host', '127.0.0.1')
server.listen(port, host)
console.log(`Address: http://${host}:${port}`)
diff --git a/src/renderer/components/DefaultEditor.vue b/src/renderer/components/DefaultEditor.vue
index 6432cf21..6cfb2de0 100644
--- a/src/renderer/components/DefaultEditor.vue
+++ b/src/renderer/components/DefaultEditor.vue
@@ -101,17 +101,19 @@ export default defineComponent({
return
}
+ const readOnly = FLAG_READONLY || !current || !current.plain || current.writeable === false
+ const editor = getEditor()
+
// change content only
if (current && previous && isSameFile(current, previous)) {
+ editor.updateOptions({ readOnly })
setValue(current.content ?? '\n')
} else {
getMonacoEditor().createModel(toUri(current), current?.content ?? '\n')
}
await nextTick()
- getEditor().updateOptions({
- readOnly: FLAG_READONLY || !current || !current.plain || current.writeable === false
- })
+ editor.updateOptions({ readOnly })
if (isDefault()) {
await nextTick()
diff --git a/src/renderer/components/GetStarted.vue b/src/renderer/components/GetStarted.vue
index 6f157215..bb979c0d 100644
--- a/src/renderer/components/GetStarted.vue
+++ b/src/renderer/components/GetStarted.vue
@@ -31,15 +31,15 @@