md update
This commit is contained in:
@@ -1,115 +1,41 @@
|
|||||||
# ZeroQ QoL Modules
|
# 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)
|
### Build
|
||||||
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<string, Locale> = { en, ru, de };
|
|
||||||
```
|
|
||||||
|
|
||||||
### Сборка / Build
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run build # production-сборка
|
npm run build # production
|
||||||
npm run dev # dev-сборка с sourcemap
|
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
|
MIT
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ Obsidian plugin with a **modular architecture**. Each feature is a separate modu
|
|||||||
|
|
||||||
**Plugin ID:** `zeroq-qol-modules`
|
**Plugin ID:** `zeroq-qol-modules`
|
||||||
**Entry point:** `src/main.ts` → compiles to `main.js` (esbuild)
|
**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
|
## Stack
|
||||||
|
|
||||||
@@ -29,8 +30,10 @@ src/
|
|||||||
└── modules/
|
└── modules/
|
||||||
├── index.ts # Static registry: array of all module instances
|
├── index.ts # Static registry: array of all module instances
|
||||||
├── base-module.ts # BaseModule abstract class
|
├── base-module.ts # BaseModule abstract class
|
||||||
└── attachment-clean-paste/
|
├── attachment-clean-paste/
|
||||||
└── index.ts # Concrete module implementation
|
│ └── index.ts # Handles paste/drop — replaces ![[embed]] → [[path|name]]
|
||||||
|
└── preserve-link-aliases/
|
||||||
|
└── index.ts # Preserves aliases on vault rename events
|
||||||
```
|
```
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|||||||
Reference in New Issue
Block a user