diff --git a/README.md b/README.md index 779fea9..80a4e49 100644 --- a/README.md +++ b/README.md @@ -1,115 +1,41 @@ # ZeroQ QoL Modules -Модульный плагин для **Obsidian** с набором QoL-функций, которые можно включать и отключать в настройках. +A modular **Obsidian** plugin with toggleable QoL (quality-of-life) modules. Each module can be independently enabled or disabled in the settings. -Modular **Obsidian** plugin with toggleable QoL modules in settings. +### Modules -## Установка / Installation +- **Attachment Clean Paste** — Replaces `![[embed]]` with `[[path/file|name]]` for specified file extensions on paste/drop +- **Preserve Link Aliases** — Preserves original link aliases when files are renamed -1. Скачайте `main.js`, `manifest.json` и `styles.css` из [релизов](https://github.com/your/repo/releases) -2. Поместите их в папку `.obsidian/plugins/zeroq-qol-modules/` вашего хранилища -3. В Obsidian: **Настройки** → **Community plugins** → **Включить** -4. Активируйте плагин **ZeroQ QoL Modules** - -## Язык / Language - -Язык плагина синхронизируется с **языком интерфейса Obsidian** (Settings → About → Language). - -- Obsidian на русском → плагин на русском -- Obsidian на другом языке → плагин на английском - -The plugin language syncs with **Obsidian's UI language** setting. - -- Obsidian in English → plugin in English -- Obsidian in any other language → falls back to English - -## Модули / Modules - -- **Attachment Clean Paste** — Заменяет `![[embed]]` на `[[path/file|name]]` для файлов с указанными расширениями при вставке/перетаскивании - -Каждый модуль включается/отключается в настройках плагина. - -## Разработка / Development - -### Архитектура / Architecture - -``` -src/ -├── main.ts # точка входа, Plugin class -├── settings.ts # общая панель настроек -├── types.ts # базовые типы -├── locales/ -│ ├── en.ts # тип Locale + EN-словарь -│ ├── ru.ts # RU-словарь -│ └── index.ts # авто-определение языка -└── modules/ - ├── index.ts # реестр модулей (статический импорт) - ├── base-module.ts # абстрактный класс модуля - └── attachment-clean-paste/ - └── index.ts # реализация модуля -``` - -**Принцип работы:** -- `main.ts` загружает настройки, итерирует `MODULES` и вызывает `onload()` для включённых -- Каждый модуль через `registerCleanup()` регистрирует функции очистки, которые вызываются при выключении модуля или выгрузке плагина -- В настройках отображаются все модули с чекбоксами вкл/выкл - -### Добавление нового модуля / Adding a module - -1. Создайте папку `src/modules/my-module/` -2. Создайте класс, унаследованный от `BaseModule`: - -```typescript -import { BaseModule } from '../base-module'; -import { locale } from '../../locales'; - -export class MyModule extends BaseModule { - id = 'my-module'; - name = locale.modules['my-module'].name; - description = locale.modules['my-module'].description; - - get defaultSettings() { - return { /* настройки по умолчанию */ }; - } - - onload(plugin, moduleSettings) { - // инициализация: регистрация событий, команд, настроек - } - - onunload(plugin) { - // очистка (cleanup происходит автоматически через registerCleanup) - } -} -``` - -3. Добавьте переводы в `src/locales/en.ts` и `src/locales/ru.ts` -4. Зарегистрируйте модуль в `src/modules/index.ts`: - -```typescript -import { MyModule } from './my-module'; - -export const MODULES: QoLModule[] = [ - new AttachmentCleanPasteModule(), - new MyModule(), -]; -``` - -### Добавление нового языка / Adding a language - -1. Создайте `src/locales/de.ts` со структурой `Locale` -2. Импортируйте и добавьте в словарь в `src/locales/index.ts`: -```typescript -import { de } from './de'; -const locales: Record = { en, ru, de }; -``` - -### Сборка / Build +### Build ```bash -npm run build # production-сборка -npm run dev # dev-сборка с sourcemap +npm run build # production +npm run dev # dev with sourcemaps ``` -## Лицензия / License +### License + +MIT + +--- + +# ZeroQ QoL Modules + +Модульный плагин для **Obsidian** с набором QoL-функций, которые можно независимо включать и отключать в настройках. + +### Модули + +- **Attachment Clean Paste** — заменяет `![[вложение]]` на `[[путь/файл|имя]]` для указанных расширений при вставке/перетаскивании +- **Preserve Link Aliases** — сохраняет оригинальные алиасы ссылок при переименовании файлов + +### Сборка + +```bash +npm run build # production +npm run dev # dev со sourcemap +``` + +### Лицензия MIT diff --git a/review.md b/review.md index 95d85d7..1e7e193 100644 --- a/review.md +++ b/review.md @@ -6,7 +6,8 @@ Obsidian plugin with a **modular architecture**. Each feature is a separate modu **Plugin ID:** `zeroq-qol-modules` **Entry point:** `src/main.ts` → compiles to `main.js` (esbuild) -**Version source:** `package.json` → auto-synced to `manifest.json` on build +**Version source:** `package.json` → auto-synced to `manifest.json` on build +**Current modules (2):** `attachment-clean-paste`, `preserve-link-aliases` ## Stack @@ -29,8 +30,10 @@ src/ └── modules/ ├── index.ts # Static registry: array of all module instances ├── base-module.ts # BaseModule abstract class - └── attachment-clean-paste/ - └── index.ts # Concrete module implementation + ├── attachment-clean-paste/ + │ └── index.ts # Handles paste/drop — replaces ![[embed]] → [[path|name]] + └── preserve-link-aliases/ + └── index.ts # Preserves aliases on vault rename events ``` ## Architecture